Skip to main content

treesitter_types_python/
generated.rs

1#[derive(Debug, Clone, PartialEq, Eq)]
2pub enum CompoundStatement<'tree> {
3    ClassDefinition(::std::boxed::Box<ClassDefinition<'tree>>),
4    DecoratedDefinition(::std::boxed::Box<DecoratedDefinition<'tree>>),
5    ForStatement(::std::boxed::Box<ForStatement<'tree>>),
6    FunctionDefinition(::std::boxed::Box<FunctionDefinition<'tree>>),
7    IfStatement(::std::boxed::Box<IfStatement<'tree>>),
8    MatchStatement(::std::boxed::Box<MatchStatement<'tree>>),
9    TryStatement(::std::boxed::Box<TryStatement<'tree>>),
10    WhileStatement(::std::boxed::Box<WhileStatement<'tree>>),
11    WithStatement(::std::boxed::Box<WithStatement<'tree>>),
12}
13impl<'tree> ::treesitter_types::FromNode<'tree> for CompoundStatement<'tree> {
14    #[allow(clippy::collapsible_else_if)]
15    fn from_node(
16        node: ::treesitter_types::tree_sitter::Node<'tree>,
17        src: &'tree [u8],
18    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
19        match node.kind() {
20            "class_definition" => Ok(Self::ClassDefinition(::std::boxed::Box::new(
21                ::treesitter_types::runtime::maybe_grow_stack(|| {
22                    <ClassDefinition as ::treesitter_types::FromNode>::from_node(node, src)
23                })?,
24            ))),
25            "decorated_definition" => Ok(Self::DecoratedDefinition(::std::boxed::Box::new(
26                ::treesitter_types::runtime::maybe_grow_stack(|| {
27                    <DecoratedDefinition as ::treesitter_types::FromNode>::from_node(node, src)
28                })?,
29            ))),
30            "for_statement" => Ok(Self::ForStatement(::std::boxed::Box::new(
31                ::treesitter_types::runtime::maybe_grow_stack(|| {
32                    <ForStatement as ::treesitter_types::FromNode>::from_node(node, src)
33                })?,
34            ))),
35            "function_definition" => Ok(Self::FunctionDefinition(::std::boxed::Box::new(
36                ::treesitter_types::runtime::maybe_grow_stack(|| {
37                    <FunctionDefinition as ::treesitter_types::FromNode>::from_node(node, src)
38                })?,
39            ))),
40            "if_statement" => Ok(Self::IfStatement(::std::boxed::Box::new(
41                ::treesitter_types::runtime::maybe_grow_stack(|| {
42                    <IfStatement as ::treesitter_types::FromNode>::from_node(node, src)
43                })?,
44            ))),
45            "match_statement" => Ok(Self::MatchStatement(::std::boxed::Box::new(
46                ::treesitter_types::runtime::maybe_grow_stack(|| {
47                    <MatchStatement as ::treesitter_types::FromNode>::from_node(node, src)
48                })?,
49            ))),
50            "try_statement" => Ok(Self::TryStatement(::std::boxed::Box::new(
51                ::treesitter_types::runtime::maybe_grow_stack(|| {
52                    <TryStatement as ::treesitter_types::FromNode>::from_node(node, src)
53                })?,
54            ))),
55            "while_statement" => Ok(Self::WhileStatement(::std::boxed::Box::new(
56                ::treesitter_types::runtime::maybe_grow_stack(|| {
57                    <WhileStatement as ::treesitter_types::FromNode>::from_node(node, src)
58                })?,
59            ))),
60            "with_statement" => Ok(Self::WithStatement(::std::boxed::Box::new(
61                ::treesitter_types::runtime::maybe_grow_stack(|| {
62                    <WithStatement as ::treesitter_types::FromNode>::from_node(node, src)
63                })?,
64            ))),
65            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
66        }
67    }
68}
69impl ::treesitter_types::Spanned for CompoundStatement<'_> {
70    fn span(&self) -> ::treesitter_types::Span {
71        match self {
72            Self::ClassDefinition(inner) => inner.span(),
73            Self::DecoratedDefinition(inner) => inner.span(),
74            Self::ForStatement(inner) => inner.span(),
75            Self::FunctionDefinition(inner) => inner.span(),
76            Self::IfStatement(inner) => inner.span(),
77            Self::MatchStatement(inner) => inner.span(),
78            Self::TryStatement(inner) => inner.span(),
79            Self::WhileStatement(inner) => inner.span(),
80            Self::WithStatement(inner) => inner.span(),
81        }
82    }
83}
84#[derive(Debug, Clone, PartialEq, Eq)]
85pub enum SimpleStatement<'tree> {
86    AssertStatement(::std::boxed::Box<AssertStatement<'tree>>),
87    BreakStatement(::std::boxed::Box<BreakStatement<'tree>>),
88    ContinueStatement(::std::boxed::Box<ContinueStatement<'tree>>),
89    DeleteStatement(::std::boxed::Box<DeleteStatement<'tree>>),
90    ExecStatement(::std::boxed::Box<ExecStatement<'tree>>),
91    ExpressionStatement(::std::boxed::Box<ExpressionStatement<'tree>>),
92    FutureImportStatement(::std::boxed::Box<FutureImportStatement<'tree>>),
93    GlobalStatement(::std::boxed::Box<GlobalStatement<'tree>>),
94    ImportFromStatement(::std::boxed::Box<ImportFromStatement<'tree>>),
95    ImportStatement(::std::boxed::Box<ImportStatement<'tree>>),
96    NonlocalStatement(::std::boxed::Box<NonlocalStatement<'tree>>),
97    PassStatement(::std::boxed::Box<PassStatement<'tree>>),
98    PrintStatement(::std::boxed::Box<PrintStatement<'tree>>),
99    RaiseStatement(::std::boxed::Box<RaiseStatement<'tree>>),
100    ReturnStatement(::std::boxed::Box<ReturnStatement<'tree>>),
101    TypeAliasStatement(::std::boxed::Box<TypeAliasStatement<'tree>>),
102}
103impl<'tree> ::treesitter_types::FromNode<'tree> for SimpleStatement<'tree> {
104    #[allow(clippy::collapsible_else_if)]
105    fn from_node(
106        node: ::treesitter_types::tree_sitter::Node<'tree>,
107        src: &'tree [u8],
108    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
109        match node.kind() {
110            "assert_statement" => Ok(Self::AssertStatement(::std::boxed::Box::new(
111                ::treesitter_types::runtime::maybe_grow_stack(|| {
112                    <AssertStatement as ::treesitter_types::FromNode>::from_node(node, src)
113                })?,
114            ))),
115            "break_statement" => Ok(Self::BreakStatement(::std::boxed::Box::new(
116                ::treesitter_types::runtime::maybe_grow_stack(|| {
117                    <BreakStatement as ::treesitter_types::FromNode>::from_node(node, src)
118                })?,
119            ))),
120            "continue_statement" => Ok(Self::ContinueStatement(::std::boxed::Box::new(
121                ::treesitter_types::runtime::maybe_grow_stack(|| {
122                    <ContinueStatement as ::treesitter_types::FromNode>::from_node(node, src)
123                })?,
124            ))),
125            "delete_statement" => Ok(Self::DeleteStatement(::std::boxed::Box::new(
126                ::treesitter_types::runtime::maybe_grow_stack(|| {
127                    <DeleteStatement as ::treesitter_types::FromNode>::from_node(node, src)
128                })?,
129            ))),
130            "exec_statement" => Ok(Self::ExecStatement(::std::boxed::Box::new(
131                ::treesitter_types::runtime::maybe_grow_stack(|| {
132                    <ExecStatement as ::treesitter_types::FromNode>::from_node(node, src)
133                })?,
134            ))),
135            "expression_statement" => Ok(Self::ExpressionStatement(::std::boxed::Box::new(
136                ::treesitter_types::runtime::maybe_grow_stack(|| {
137                    <ExpressionStatement as ::treesitter_types::FromNode>::from_node(node, src)
138                })?,
139            ))),
140            "future_import_statement" => Ok(Self::FutureImportStatement(::std::boxed::Box::new(
141                ::treesitter_types::runtime::maybe_grow_stack(|| {
142                    <FutureImportStatement as ::treesitter_types::FromNode>::from_node(node, src)
143                })?,
144            ))),
145            "global_statement" => Ok(Self::GlobalStatement(::std::boxed::Box::new(
146                ::treesitter_types::runtime::maybe_grow_stack(|| {
147                    <GlobalStatement as ::treesitter_types::FromNode>::from_node(node, src)
148                })?,
149            ))),
150            "import_from_statement" => Ok(Self::ImportFromStatement(::std::boxed::Box::new(
151                ::treesitter_types::runtime::maybe_grow_stack(|| {
152                    <ImportFromStatement as ::treesitter_types::FromNode>::from_node(node, src)
153                })?,
154            ))),
155            "import_statement" => Ok(Self::ImportStatement(::std::boxed::Box::new(
156                ::treesitter_types::runtime::maybe_grow_stack(|| {
157                    <ImportStatement as ::treesitter_types::FromNode>::from_node(node, src)
158                })?,
159            ))),
160            "nonlocal_statement" => Ok(Self::NonlocalStatement(::std::boxed::Box::new(
161                ::treesitter_types::runtime::maybe_grow_stack(|| {
162                    <NonlocalStatement as ::treesitter_types::FromNode>::from_node(node, src)
163                })?,
164            ))),
165            "pass_statement" => Ok(Self::PassStatement(::std::boxed::Box::new(
166                ::treesitter_types::runtime::maybe_grow_stack(|| {
167                    <PassStatement as ::treesitter_types::FromNode>::from_node(node, src)
168                })?,
169            ))),
170            "print_statement" => Ok(Self::PrintStatement(::std::boxed::Box::new(
171                ::treesitter_types::runtime::maybe_grow_stack(|| {
172                    <PrintStatement as ::treesitter_types::FromNode>::from_node(node, src)
173                })?,
174            ))),
175            "raise_statement" => Ok(Self::RaiseStatement(::std::boxed::Box::new(
176                ::treesitter_types::runtime::maybe_grow_stack(|| {
177                    <RaiseStatement as ::treesitter_types::FromNode>::from_node(node, src)
178                })?,
179            ))),
180            "return_statement" => Ok(Self::ReturnStatement(::std::boxed::Box::new(
181                ::treesitter_types::runtime::maybe_grow_stack(|| {
182                    <ReturnStatement as ::treesitter_types::FromNode>::from_node(node, src)
183                })?,
184            ))),
185            "type_alias_statement" => Ok(Self::TypeAliasStatement(::std::boxed::Box::new(
186                ::treesitter_types::runtime::maybe_grow_stack(|| {
187                    <TypeAliasStatement as ::treesitter_types::FromNode>::from_node(node, src)
188                })?,
189            ))),
190            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
191        }
192    }
193}
194impl ::treesitter_types::Spanned for SimpleStatement<'_> {
195    fn span(&self) -> ::treesitter_types::Span {
196        match self {
197            Self::AssertStatement(inner) => inner.span(),
198            Self::BreakStatement(inner) => inner.span(),
199            Self::ContinueStatement(inner) => inner.span(),
200            Self::DeleteStatement(inner) => inner.span(),
201            Self::ExecStatement(inner) => inner.span(),
202            Self::ExpressionStatement(inner) => inner.span(),
203            Self::FutureImportStatement(inner) => inner.span(),
204            Self::GlobalStatement(inner) => inner.span(),
205            Self::ImportFromStatement(inner) => inner.span(),
206            Self::ImportStatement(inner) => inner.span(),
207            Self::NonlocalStatement(inner) => inner.span(),
208            Self::PassStatement(inner) => inner.span(),
209            Self::PrintStatement(inner) => inner.span(),
210            Self::RaiseStatement(inner) => inner.span(),
211            Self::ReturnStatement(inner) => inner.span(),
212            Self::TypeAliasStatement(inner) => inner.span(),
213        }
214    }
215}
216#[derive(Debug, Clone, PartialEq, Eq)]
217pub enum Expression<'tree> {
218    AsPattern(::std::boxed::Box<AsPattern<'tree>>),
219    BooleanOperator(::std::boxed::Box<BooleanOperator<'tree>>),
220    ComparisonOperator(::std::boxed::Box<ComparisonOperator<'tree>>),
221    ConditionalExpression(::std::boxed::Box<ConditionalExpression<'tree>>),
222    Lambda(::std::boxed::Box<Lambda<'tree>>),
223    NamedExpression(::std::boxed::Box<NamedExpression<'tree>>),
224    NotOperator(::std::boxed::Box<NotOperator<'tree>>),
225    PrimaryExpression(::std::boxed::Box<PrimaryExpression<'tree>>),
226}
227impl<'tree> ::treesitter_types::FromNode<'tree> for Expression<'tree> {
228    #[allow(clippy::collapsible_else_if)]
229    fn from_node(
230        node: ::treesitter_types::tree_sitter::Node<'tree>,
231        src: &'tree [u8],
232    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
233        match node.kind() {
234            "as_pattern" => Ok(Self::AsPattern(::std::boxed::Box::new(
235                ::treesitter_types::runtime::maybe_grow_stack(|| {
236                    <AsPattern as ::treesitter_types::FromNode>::from_node(node, src)
237                })?,
238            ))),
239            "boolean_operator" => Ok(Self::BooleanOperator(::std::boxed::Box::new(
240                ::treesitter_types::runtime::maybe_grow_stack(|| {
241                    <BooleanOperator as ::treesitter_types::FromNode>::from_node(node, src)
242                })?,
243            ))),
244            "comparison_operator" => Ok(Self::ComparisonOperator(::std::boxed::Box::new(
245                ::treesitter_types::runtime::maybe_grow_stack(|| {
246                    <ComparisonOperator as ::treesitter_types::FromNode>::from_node(node, src)
247                })?,
248            ))),
249            "conditional_expression" => Ok(Self::ConditionalExpression(::std::boxed::Box::new(
250                ::treesitter_types::runtime::maybe_grow_stack(|| {
251                    <ConditionalExpression as ::treesitter_types::FromNode>::from_node(node, src)
252                })?,
253            ))),
254            "lambda" => Ok(Self::Lambda(::std::boxed::Box::new(
255                ::treesitter_types::runtime::maybe_grow_stack(|| {
256                    <Lambda as ::treesitter_types::FromNode>::from_node(node, src)
257                })?,
258            ))),
259            "named_expression" => Ok(Self::NamedExpression(::std::boxed::Box::new(
260                ::treesitter_types::runtime::maybe_grow_stack(|| {
261                    <NamedExpression as ::treesitter_types::FromNode>::from_node(node, src)
262                })?,
263            ))),
264            "not_operator" => Ok(Self::NotOperator(::std::boxed::Box::new(
265                ::treesitter_types::runtime::maybe_grow_stack(|| {
266                    <NotOperator as ::treesitter_types::FromNode>::from_node(node, src)
267                })?,
268            ))),
269            _other => {
270                if let Ok(v) = ::treesitter_types::runtime::maybe_grow_stack(|| {
271                    <PrimaryExpression as ::treesitter_types::FromNode>::from_node(node, src)
272                }) {
273                    Ok(Self::PrimaryExpression(::std::boxed::Box::new(v)))
274                } else {
275                    Err(::treesitter_types::ParseError::unexpected_kind(
276                        _other, node,
277                    ))
278                }
279            }
280        }
281    }
282}
283impl ::treesitter_types::Spanned for Expression<'_> {
284    fn span(&self) -> ::treesitter_types::Span {
285        match self {
286            Self::AsPattern(inner) => inner.span(),
287            Self::BooleanOperator(inner) => inner.span(),
288            Self::ComparisonOperator(inner) => inner.span(),
289            Self::ConditionalExpression(inner) => inner.span(),
290            Self::Lambda(inner) => inner.span(),
291            Self::NamedExpression(inner) => inner.span(),
292            Self::NotOperator(inner) => inner.span(),
293            Self::PrimaryExpression(inner) => inner.span(),
294        }
295    }
296}
297#[derive(Debug, Clone, PartialEq, Eq)]
298pub enum Parameter<'tree> {
299    DefaultParameter(::std::boxed::Box<DefaultParameter<'tree>>),
300    DictionarySplatPattern(::std::boxed::Box<DictionarySplatPattern<'tree>>),
301    Identifier(::std::boxed::Box<Identifier<'tree>>),
302    KeywordSeparator(::std::boxed::Box<KeywordSeparator<'tree>>),
303    ListSplatPattern(::std::boxed::Box<ListSplatPattern<'tree>>),
304    PositionalSeparator(::std::boxed::Box<PositionalSeparator<'tree>>),
305    TuplePattern(::std::boxed::Box<TuplePattern<'tree>>),
306    TypedDefaultParameter(::std::boxed::Box<TypedDefaultParameter<'tree>>),
307    TypedParameter(::std::boxed::Box<TypedParameter<'tree>>),
308}
309impl<'tree> ::treesitter_types::FromNode<'tree> for Parameter<'tree> {
310    #[allow(clippy::collapsible_else_if)]
311    fn from_node(
312        node: ::treesitter_types::tree_sitter::Node<'tree>,
313        src: &'tree [u8],
314    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
315        match node.kind() {
316            "default_parameter" => Ok(Self::DefaultParameter(::std::boxed::Box::new(
317                ::treesitter_types::runtime::maybe_grow_stack(|| {
318                    <DefaultParameter as ::treesitter_types::FromNode>::from_node(node, src)
319                })?,
320            ))),
321            "dictionary_splat_pattern" => Ok(Self::DictionarySplatPattern(::std::boxed::Box::new(
322                ::treesitter_types::runtime::maybe_grow_stack(|| {
323                    <DictionarySplatPattern as ::treesitter_types::FromNode>::from_node(node, src)
324                })?,
325            ))),
326            "identifier" => Ok(Self::Identifier(::std::boxed::Box::new(
327                ::treesitter_types::runtime::maybe_grow_stack(|| {
328                    <Identifier as ::treesitter_types::FromNode>::from_node(node, src)
329                })?,
330            ))),
331            "keyword_separator" => Ok(Self::KeywordSeparator(::std::boxed::Box::new(
332                ::treesitter_types::runtime::maybe_grow_stack(|| {
333                    <KeywordSeparator as ::treesitter_types::FromNode>::from_node(node, src)
334                })?,
335            ))),
336            "list_splat_pattern" => Ok(Self::ListSplatPattern(::std::boxed::Box::new(
337                ::treesitter_types::runtime::maybe_grow_stack(|| {
338                    <ListSplatPattern as ::treesitter_types::FromNode>::from_node(node, src)
339                })?,
340            ))),
341            "positional_separator" => Ok(Self::PositionalSeparator(::std::boxed::Box::new(
342                ::treesitter_types::runtime::maybe_grow_stack(|| {
343                    <PositionalSeparator as ::treesitter_types::FromNode>::from_node(node, src)
344                })?,
345            ))),
346            "tuple_pattern" => Ok(Self::TuplePattern(::std::boxed::Box::new(
347                ::treesitter_types::runtime::maybe_grow_stack(|| {
348                    <TuplePattern as ::treesitter_types::FromNode>::from_node(node, src)
349                })?,
350            ))),
351            "typed_default_parameter" => Ok(Self::TypedDefaultParameter(::std::boxed::Box::new(
352                ::treesitter_types::runtime::maybe_grow_stack(|| {
353                    <TypedDefaultParameter as ::treesitter_types::FromNode>::from_node(node, src)
354                })?,
355            ))),
356            "typed_parameter" => Ok(Self::TypedParameter(::std::boxed::Box::new(
357                ::treesitter_types::runtime::maybe_grow_stack(|| {
358                    <TypedParameter as ::treesitter_types::FromNode>::from_node(node, src)
359                })?,
360            ))),
361            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
362        }
363    }
364}
365impl ::treesitter_types::Spanned for Parameter<'_> {
366    fn span(&self) -> ::treesitter_types::Span {
367        match self {
368            Self::DefaultParameter(inner) => inner.span(),
369            Self::DictionarySplatPattern(inner) => inner.span(),
370            Self::Identifier(inner) => inner.span(),
371            Self::KeywordSeparator(inner) => inner.span(),
372            Self::ListSplatPattern(inner) => inner.span(),
373            Self::PositionalSeparator(inner) => inner.span(),
374            Self::TuplePattern(inner) => inner.span(),
375            Self::TypedDefaultParameter(inner) => inner.span(),
376            Self::TypedParameter(inner) => inner.span(),
377        }
378    }
379}
380#[derive(Debug, Clone, PartialEq, Eq)]
381pub enum Pattern<'tree> {
382    Attribute(::std::boxed::Box<Attribute<'tree>>),
383    Identifier(::std::boxed::Box<Identifier<'tree>>),
384    ListPattern(::std::boxed::Box<ListPattern<'tree>>),
385    ListSplatPattern(::std::boxed::Box<ListSplatPattern<'tree>>),
386    Subscript(::std::boxed::Box<Subscript<'tree>>),
387    TuplePattern(::std::boxed::Box<TuplePattern<'tree>>),
388}
389impl<'tree> ::treesitter_types::FromNode<'tree> for Pattern<'tree> {
390    #[allow(clippy::collapsible_else_if)]
391    fn from_node(
392        node: ::treesitter_types::tree_sitter::Node<'tree>,
393        src: &'tree [u8],
394    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
395        match node.kind() {
396            "attribute" => Ok(Self::Attribute(::std::boxed::Box::new(
397                ::treesitter_types::runtime::maybe_grow_stack(|| {
398                    <Attribute as ::treesitter_types::FromNode>::from_node(node, src)
399                })?,
400            ))),
401            "identifier" => Ok(Self::Identifier(::std::boxed::Box::new(
402                ::treesitter_types::runtime::maybe_grow_stack(|| {
403                    <Identifier as ::treesitter_types::FromNode>::from_node(node, src)
404                })?,
405            ))),
406            "list_pattern" => Ok(Self::ListPattern(::std::boxed::Box::new(
407                ::treesitter_types::runtime::maybe_grow_stack(|| {
408                    <ListPattern as ::treesitter_types::FromNode>::from_node(node, src)
409                })?,
410            ))),
411            "list_splat_pattern" => Ok(Self::ListSplatPattern(::std::boxed::Box::new(
412                ::treesitter_types::runtime::maybe_grow_stack(|| {
413                    <ListSplatPattern as ::treesitter_types::FromNode>::from_node(node, src)
414                })?,
415            ))),
416            "subscript" => Ok(Self::Subscript(::std::boxed::Box::new(
417                ::treesitter_types::runtime::maybe_grow_stack(|| {
418                    <Subscript as ::treesitter_types::FromNode>::from_node(node, src)
419                })?,
420            ))),
421            "tuple_pattern" => Ok(Self::TuplePattern(::std::boxed::Box::new(
422                ::treesitter_types::runtime::maybe_grow_stack(|| {
423                    <TuplePattern as ::treesitter_types::FromNode>::from_node(node, src)
424                })?,
425            ))),
426            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
427        }
428    }
429}
430impl ::treesitter_types::Spanned for Pattern<'_> {
431    fn span(&self) -> ::treesitter_types::Span {
432        match self {
433            Self::Attribute(inner) => inner.span(),
434            Self::Identifier(inner) => inner.span(),
435            Self::ListPattern(inner) => inner.span(),
436            Self::ListSplatPattern(inner) => inner.span(),
437            Self::Subscript(inner) => inner.span(),
438            Self::TuplePattern(inner) => inner.span(),
439        }
440    }
441}
442#[derive(Debug, Clone, PartialEq, Eq)]
443pub enum PrimaryExpression<'tree> {
444    Attribute(::std::boxed::Box<Attribute<'tree>>),
445    Await(::std::boxed::Box<Await<'tree>>),
446    BinaryOperator(::std::boxed::Box<BinaryOperator<'tree>>),
447    Call(::std::boxed::Box<Call<'tree>>),
448    ConcatenatedString(::std::boxed::Box<ConcatenatedString<'tree>>),
449    Dictionary(::std::boxed::Box<Dictionary<'tree>>),
450    DictionaryComprehension(::std::boxed::Box<DictionaryComprehension<'tree>>),
451    Ellipsis(::std::boxed::Box<Ellipsis<'tree>>),
452    False(::std::boxed::Box<False<'tree>>),
453    Float(::std::boxed::Box<Float<'tree>>),
454    GeneratorExpression(::std::boxed::Box<GeneratorExpression<'tree>>),
455    Identifier(::std::boxed::Box<Identifier<'tree>>),
456    Integer(::std::boxed::Box<Integer<'tree>>),
457    List(::std::boxed::Box<List<'tree>>),
458    ListComprehension(::std::boxed::Box<ListComprehension<'tree>>),
459    ListSplat(::std::boxed::Box<ListSplat<'tree>>),
460    None(::std::boxed::Box<None<'tree>>),
461    ParenthesizedExpression(::std::boxed::Box<ParenthesizedExpression<'tree>>),
462    Set(::std::boxed::Box<Set<'tree>>),
463    SetComprehension(::std::boxed::Box<SetComprehension<'tree>>),
464    String(::std::boxed::Box<String<'tree>>),
465    Subscript(::std::boxed::Box<Subscript<'tree>>),
466    True(::std::boxed::Box<True<'tree>>),
467    Tuple(::std::boxed::Box<Tuple<'tree>>),
468    UnaryOperator(::std::boxed::Box<UnaryOperator<'tree>>),
469}
470impl<'tree> ::treesitter_types::FromNode<'tree> for PrimaryExpression<'tree> {
471    #[allow(clippy::collapsible_else_if)]
472    fn from_node(
473        node: ::treesitter_types::tree_sitter::Node<'tree>,
474        src: &'tree [u8],
475    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
476        match node.kind() {
477            "attribute" => Ok(Self::Attribute(::std::boxed::Box::new(
478                ::treesitter_types::runtime::maybe_grow_stack(|| {
479                    <Attribute as ::treesitter_types::FromNode>::from_node(node, src)
480                })?,
481            ))),
482            "await" => Ok(Self::Await(::std::boxed::Box::new(
483                ::treesitter_types::runtime::maybe_grow_stack(|| {
484                    <Await as ::treesitter_types::FromNode>::from_node(node, src)
485                })?,
486            ))),
487            "binary_operator" => Ok(Self::BinaryOperator(::std::boxed::Box::new(
488                ::treesitter_types::runtime::maybe_grow_stack(|| {
489                    <BinaryOperator as ::treesitter_types::FromNode>::from_node(node, src)
490                })?,
491            ))),
492            "call" => Ok(Self::Call(::std::boxed::Box::new(
493                ::treesitter_types::runtime::maybe_grow_stack(|| {
494                    <Call as ::treesitter_types::FromNode>::from_node(node, src)
495                })?,
496            ))),
497            "concatenated_string" => Ok(Self::ConcatenatedString(::std::boxed::Box::new(
498                ::treesitter_types::runtime::maybe_grow_stack(|| {
499                    <ConcatenatedString as ::treesitter_types::FromNode>::from_node(node, src)
500                })?,
501            ))),
502            "dictionary" => Ok(Self::Dictionary(::std::boxed::Box::new(
503                ::treesitter_types::runtime::maybe_grow_stack(|| {
504                    <Dictionary as ::treesitter_types::FromNode>::from_node(node, src)
505                })?,
506            ))),
507            "dictionary_comprehension" => Ok(Self::DictionaryComprehension(
508                ::std::boxed::Box::new(::treesitter_types::runtime::maybe_grow_stack(|| {
509                    <DictionaryComprehension as ::treesitter_types::FromNode>::from_node(node, src)
510                })?),
511            )),
512            "ellipsis" => Ok(Self::Ellipsis(::std::boxed::Box::new(
513                ::treesitter_types::runtime::maybe_grow_stack(|| {
514                    <Ellipsis as ::treesitter_types::FromNode>::from_node(node, src)
515                })?,
516            ))),
517            "false" => Ok(Self::False(::std::boxed::Box::new(
518                ::treesitter_types::runtime::maybe_grow_stack(|| {
519                    <False as ::treesitter_types::FromNode>::from_node(node, src)
520                })?,
521            ))),
522            "float" => Ok(Self::Float(::std::boxed::Box::new(
523                ::treesitter_types::runtime::maybe_grow_stack(|| {
524                    <Float as ::treesitter_types::FromNode>::from_node(node, src)
525                })?,
526            ))),
527            "generator_expression" => Ok(Self::GeneratorExpression(::std::boxed::Box::new(
528                ::treesitter_types::runtime::maybe_grow_stack(|| {
529                    <GeneratorExpression as ::treesitter_types::FromNode>::from_node(node, src)
530                })?,
531            ))),
532            "identifier" => Ok(Self::Identifier(::std::boxed::Box::new(
533                ::treesitter_types::runtime::maybe_grow_stack(|| {
534                    <Identifier as ::treesitter_types::FromNode>::from_node(node, src)
535                })?,
536            ))),
537            "integer" => Ok(Self::Integer(::std::boxed::Box::new(
538                ::treesitter_types::runtime::maybe_grow_stack(|| {
539                    <Integer as ::treesitter_types::FromNode>::from_node(node, src)
540                })?,
541            ))),
542            "list" => Ok(Self::List(::std::boxed::Box::new(
543                ::treesitter_types::runtime::maybe_grow_stack(|| {
544                    <List as ::treesitter_types::FromNode>::from_node(node, src)
545                })?,
546            ))),
547            "list_comprehension" => Ok(Self::ListComprehension(::std::boxed::Box::new(
548                ::treesitter_types::runtime::maybe_grow_stack(|| {
549                    <ListComprehension as ::treesitter_types::FromNode>::from_node(node, src)
550                })?,
551            ))),
552            "list_splat" => Ok(Self::ListSplat(::std::boxed::Box::new(
553                ::treesitter_types::runtime::maybe_grow_stack(|| {
554                    <ListSplat as ::treesitter_types::FromNode>::from_node(node, src)
555                })?,
556            ))),
557            "none" => Ok(Self::None(::std::boxed::Box::new(
558                ::treesitter_types::runtime::maybe_grow_stack(|| {
559                    <None as ::treesitter_types::FromNode>::from_node(node, src)
560                })?,
561            ))),
562            "parenthesized_expression" => Ok(Self::ParenthesizedExpression(
563                ::std::boxed::Box::new(::treesitter_types::runtime::maybe_grow_stack(|| {
564                    <ParenthesizedExpression as ::treesitter_types::FromNode>::from_node(node, src)
565                })?),
566            )),
567            "set" => Ok(Self::Set(::std::boxed::Box::new(
568                ::treesitter_types::runtime::maybe_grow_stack(|| {
569                    <Set as ::treesitter_types::FromNode>::from_node(node, src)
570                })?,
571            ))),
572            "set_comprehension" => Ok(Self::SetComprehension(::std::boxed::Box::new(
573                ::treesitter_types::runtime::maybe_grow_stack(|| {
574                    <SetComprehension as ::treesitter_types::FromNode>::from_node(node, src)
575                })?,
576            ))),
577            "string" => Ok(Self::String(::std::boxed::Box::new(
578                ::treesitter_types::runtime::maybe_grow_stack(|| {
579                    <String as ::treesitter_types::FromNode>::from_node(node, src)
580                })?,
581            ))),
582            "subscript" => Ok(Self::Subscript(::std::boxed::Box::new(
583                ::treesitter_types::runtime::maybe_grow_stack(|| {
584                    <Subscript as ::treesitter_types::FromNode>::from_node(node, src)
585                })?,
586            ))),
587            "true" => Ok(Self::True(::std::boxed::Box::new(
588                ::treesitter_types::runtime::maybe_grow_stack(|| {
589                    <True as ::treesitter_types::FromNode>::from_node(node, src)
590                })?,
591            ))),
592            "tuple" => Ok(Self::Tuple(::std::boxed::Box::new(
593                ::treesitter_types::runtime::maybe_grow_stack(|| {
594                    <Tuple as ::treesitter_types::FromNode>::from_node(node, src)
595                })?,
596            ))),
597            "unary_operator" => Ok(Self::UnaryOperator(::std::boxed::Box::new(
598                ::treesitter_types::runtime::maybe_grow_stack(|| {
599                    <UnaryOperator as ::treesitter_types::FromNode>::from_node(node, src)
600                })?,
601            ))),
602            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
603        }
604    }
605}
606impl ::treesitter_types::Spanned for PrimaryExpression<'_> {
607    fn span(&self) -> ::treesitter_types::Span {
608        match self {
609            Self::Attribute(inner) => inner.span(),
610            Self::Await(inner) => inner.span(),
611            Self::BinaryOperator(inner) => inner.span(),
612            Self::Call(inner) => inner.span(),
613            Self::ConcatenatedString(inner) => inner.span(),
614            Self::Dictionary(inner) => inner.span(),
615            Self::DictionaryComprehension(inner) => inner.span(),
616            Self::Ellipsis(inner) => inner.span(),
617            Self::False(inner) => inner.span(),
618            Self::Float(inner) => inner.span(),
619            Self::GeneratorExpression(inner) => inner.span(),
620            Self::Identifier(inner) => inner.span(),
621            Self::Integer(inner) => inner.span(),
622            Self::List(inner) => inner.span(),
623            Self::ListComprehension(inner) => inner.span(),
624            Self::ListSplat(inner) => inner.span(),
625            Self::None(inner) => inner.span(),
626            Self::ParenthesizedExpression(inner) => inner.span(),
627            Self::Set(inner) => inner.span(),
628            Self::SetComprehension(inner) => inner.span(),
629            Self::String(inner) => inner.span(),
630            Self::Subscript(inner) => inner.span(),
631            Self::True(inner) => inner.span(),
632            Self::Tuple(inner) => inner.span(),
633            Self::UnaryOperator(inner) => inner.span(),
634        }
635    }
636}
637#[derive(Debug, Clone, PartialEq, Eq)]
638pub struct AliasedImport<'tree> {
639    pub span: ::treesitter_types::Span,
640    pub alias: Identifier<'tree>,
641    pub name: DottedName<'tree>,
642}
643impl<'tree> ::treesitter_types::FromNode<'tree> for AliasedImport<'tree> {
644    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
645    fn from_node(
646        node: ::treesitter_types::tree_sitter::Node<'tree>,
647        src: &'tree [u8],
648    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
649        debug_assert_eq!(node.kind(), "aliased_import");
650        Ok(Self {
651            span: ::treesitter_types::Span::from(node),
652            alias: {
653                let child = node
654                    .child_by_field_name("alias")
655                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("alias", node))?;
656                ::treesitter_types::runtime::maybe_grow_stack(|| {
657                    <Identifier as ::treesitter_types::FromNode>::from_node(child, src)
658                })?
659            },
660            name: {
661                let child = node
662                    .child_by_field_name("name")
663                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("name", node))?;
664                ::treesitter_types::runtime::maybe_grow_stack(|| {
665                    <DottedName as ::treesitter_types::FromNode>::from_node(child, src)
666                })?
667            },
668        })
669    }
670}
671impl ::treesitter_types::Spanned for AliasedImport<'_> {
672    fn span(&self) -> ::treesitter_types::Span {
673        self.span
674    }
675}
676#[derive(Debug, Clone, PartialEq, Eq)]
677pub struct ArgumentList<'tree> {
678    pub span: ::treesitter_types::Span,
679    pub children: ::std::vec::Vec<ArgumentListChildren<'tree>>,
680}
681impl<'tree> ::treesitter_types::FromNode<'tree> for ArgumentList<'tree> {
682    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
683    fn from_node(
684        node: ::treesitter_types::tree_sitter::Node<'tree>,
685        src: &'tree [u8],
686    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
687        debug_assert_eq!(node.kind(), "argument_list");
688        Ok(Self {
689            span: ::treesitter_types::Span::from(node),
690            children: {
691                #[allow(clippy::suspicious_else_formatting)]
692                let non_field_children = {
693                    let mut cursor = node.walk();
694                    let mut result = ::std::vec::Vec::new();
695                    if cursor.goto_first_child() {
696                        loop {
697                            if cursor.field_name().is_none()
698                                && cursor.node().is_named()
699                                && !cursor.node().is_extra()
700                            {
701                                result.push(cursor.node());
702                            }
703                            if !cursor.goto_next_sibling() {
704                                break;
705                            }
706                        }
707                    }
708                    result
709                };
710                let mut items = ::std::vec::Vec::new();
711                for child in non_field_children {
712                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
713                        <ArgumentListChildren as ::treesitter_types::FromNode>::from_node(
714                            child, src,
715                        )
716                    })?);
717                }
718                items
719            },
720        })
721    }
722}
723impl ::treesitter_types::Spanned for ArgumentList<'_> {
724    fn span(&self) -> ::treesitter_types::Span {
725        self.span
726    }
727}
728#[derive(Debug, Clone, PartialEq, Eq)]
729pub struct AsPattern<'tree> {
730    pub span: ::treesitter_types::Span,
731    pub alias: ::core::option::Option<AsPatternTarget<'tree>>,
732    pub children: ::std::vec::Vec<AsPatternChildren<'tree>>,
733}
734impl<'tree> ::treesitter_types::FromNode<'tree> for AsPattern<'tree> {
735    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
736    fn from_node(
737        node: ::treesitter_types::tree_sitter::Node<'tree>,
738        src: &'tree [u8],
739    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
740        debug_assert_eq!(node.kind(), "as_pattern");
741        Ok(Self {
742            span: ::treesitter_types::Span::from(node),
743            alias: match node.child_by_field_name("alias") {
744                Some(child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
745                    <AsPatternTarget as ::treesitter_types::FromNode>::from_node(child, src)
746                })?),
747                None => None,
748            },
749            children: {
750                #[allow(clippy::suspicious_else_formatting)]
751                let non_field_children = {
752                    let mut cursor = node.walk();
753                    let mut result = ::std::vec::Vec::new();
754                    if cursor.goto_first_child() {
755                        loop {
756                            if cursor.field_name().is_none()
757                                && cursor.node().is_named()
758                                && !cursor.node().is_extra()
759                            {
760                                result.push(cursor.node());
761                            }
762                            if !cursor.goto_next_sibling() {
763                                break;
764                            }
765                        }
766                    }
767                    result
768                };
769                let mut items = ::std::vec::Vec::new();
770                for child in non_field_children {
771                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
772                        <AsPatternChildren as ::treesitter_types::FromNode>::from_node(child, src)
773                    })?);
774                }
775                items
776            },
777        })
778    }
779}
780impl ::treesitter_types::Spanned for AsPattern<'_> {
781    fn span(&self) -> ::treesitter_types::Span {
782        self.span
783    }
784}
785#[derive(Debug, Clone, PartialEq, Eq)]
786pub struct AssertStatement<'tree> {
787    pub span: ::treesitter_types::Span,
788    pub children: ::std::vec::Vec<Expression<'tree>>,
789}
790impl<'tree> ::treesitter_types::FromNode<'tree> for AssertStatement<'tree> {
791    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
792    fn from_node(
793        node: ::treesitter_types::tree_sitter::Node<'tree>,
794        src: &'tree [u8],
795    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
796        debug_assert_eq!(node.kind(), "assert_statement");
797        Ok(Self {
798            span: ::treesitter_types::Span::from(node),
799            children: {
800                #[allow(clippy::suspicious_else_formatting)]
801                let non_field_children = {
802                    let mut cursor = node.walk();
803                    let mut result = ::std::vec::Vec::new();
804                    if cursor.goto_first_child() {
805                        loop {
806                            if cursor.field_name().is_none()
807                                && cursor.node().is_named()
808                                && !cursor.node().is_extra()
809                            {
810                                result.push(cursor.node());
811                            }
812                            if !cursor.goto_next_sibling() {
813                                break;
814                            }
815                        }
816                    }
817                    result
818                };
819                let mut items = ::std::vec::Vec::new();
820                for child in non_field_children {
821                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
822                        <Expression as ::treesitter_types::FromNode>::from_node(child, src)
823                    })?);
824                }
825                items
826            },
827        })
828    }
829}
830impl ::treesitter_types::Spanned for AssertStatement<'_> {
831    fn span(&self) -> ::treesitter_types::Span {
832        self.span
833    }
834}
835#[derive(Debug, Clone, PartialEq, Eq)]
836pub struct Assignment<'tree> {
837    pub span: ::treesitter_types::Span,
838    pub left: AssignmentLeft<'tree>,
839    pub right: ::core::option::Option<AssignmentRight<'tree>>,
840    pub r#type: ::core::option::Option<Type<'tree>>,
841}
842impl<'tree> ::treesitter_types::FromNode<'tree> for Assignment<'tree> {
843    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
844    fn from_node(
845        node: ::treesitter_types::tree_sitter::Node<'tree>,
846        src: &'tree [u8],
847    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
848        debug_assert_eq!(node.kind(), "assignment");
849        Ok(Self {
850            span: ::treesitter_types::Span::from(node),
851            left: {
852                let child = node
853                    .child_by_field_name("left")
854                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("left", node))?;
855                ::treesitter_types::runtime::maybe_grow_stack(|| {
856                    <AssignmentLeft as ::treesitter_types::FromNode>::from_node(child, src)
857                })?
858            },
859            right: match node.child_by_field_name("right") {
860                Some(child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
861                    <AssignmentRight as ::treesitter_types::FromNode>::from_node(child, src)
862                })?),
863                None => None,
864            },
865            r#type: match node.child_by_field_name("type") {
866                Some(child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
867                    <Type as ::treesitter_types::FromNode>::from_node(child, src)
868                })?),
869                None => None,
870            },
871        })
872    }
873}
874impl ::treesitter_types::Spanned for Assignment<'_> {
875    fn span(&self) -> ::treesitter_types::Span {
876        self.span
877    }
878}
879#[derive(Debug, Clone, PartialEq, Eq)]
880pub struct Attribute<'tree> {
881    pub span: ::treesitter_types::Span,
882    pub attribute: Identifier<'tree>,
883    pub object: PrimaryExpression<'tree>,
884}
885impl<'tree> ::treesitter_types::FromNode<'tree> for Attribute<'tree> {
886    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
887    fn from_node(
888        node: ::treesitter_types::tree_sitter::Node<'tree>,
889        src: &'tree [u8],
890    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
891        debug_assert_eq!(node.kind(), "attribute");
892        Ok(Self {
893            span: ::treesitter_types::Span::from(node),
894            attribute: {
895                let child = node.child_by_field_name("attribute").ok_or_else(|| {
896                    ::treesitter_types::ParseError::missing_field("attribute", node)
897                })?;
898                ::treesitter_types::runtime::maybe_grow_stack(|| {
899                    <Identifier as ::treesitter_types::FromNode>::from_node(child, src)
900                })?
901            },
902            object: {
903                let child = node
904                    .child_by_field_name("object")
905                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("object", node))?;
906                ::treesitter_types::runtime::maybe_grow_stack(|| {
907                    <PrimaryExpression as ::treesitter_types::FromNode>::from_node(child, src)
908                })?
909            },
910        })
911    }
912}
913impl ::treesitter_types::Spanned for Attribute<'_> {
914    fn span(&self) -> ::treesitter_types::Span {
915        self.span
916    }
917}
918#[derive(Debug, Clone, PartialEq, Eq)]
919pub struct AugmentedAssignment<'tree> {
920    pub span: ::treesitter_types::Span,
921    pub left: AugmentedAssignmentLeft<'tree>,
922    pub operator: AugmentedAssignmentOperator,
923    pub right: AugmentedAssignmentRight<'tree>,
924}
925impl<'tree> ::treesitter_types::FromNode<'tree> for AugmentedAssignment<'tree> {
926    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
927    fn from_node(
928        node: ::treesitter_types::tree_sitter::Node<'tree>,
929        src: &'tree [u8],
930    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
931        debug_assert_eq!(node.kind(), "augmented_assignment");
932        Ok(Self {
933            span: ::treesitter_types::Span::from(node),
934            left: {
935                let child = node
936                    .child_by_field_name("left")
937                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("left", node))?;
938                ::treesitter_types::runtime::maybe_grow_stack(|| {
939                    <AugmentedAssignmentLeft as ::treesitter_types::FromNode>::from_node(child, src)
940                })?
941            },
942            operator: {
943                let child = node.child_by_field_name("operator").ok_or_else(|| {
944                    ::treesitter_types::ParseError::missing_field("operator", node)
945                })?;
946                ::treesitter_types::runtime::maybe_grow_stack(|| {
947                    <AugmentedAssignmentOperator as ::treesitter_types::FromNode>::from_node(
948                        child, src,
949                    )
950                })?
951            },
952            right: {
953                let child = node
954                    .child_by_field_name("right")
955                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("right", node))?;
956                ::treesitter_types::runtime::maybe_grow_stack(|| {
957                    <AugmentedAssignmentRight as ::treesitter_types::FromNode>::from_node(
958                        child, src,
959                    )
960                })?
961            },
962        })
963    }
964}
965impl ::treesitter_types::Spanned for AugmentedAssignment<'_> {
966    fn span(&self) -> ::treesitter_types::Span {
967        self.span
968    }
969}
970#[derive(Debug, Clone, PartialEq, Eq)]
971pub struct Await<'tree> {
972    pub span: ::treesitter_types::Span,
973    pub children: PrimaryExpression<'tree>,
974}
975impl<'tree> ::treesitter_types::FromNode<'tree> for Await<'tree> {
976    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
977    fn from_node(
978        node: ::treesitter_types::tree_sitter::Node<'tree>,
979        src: &'tree [u8],
980    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
981        debug_assert_eq!(node.kind(), "await");
982        Ok(Self {
983            span: ::treesitter_types::Span::from(node),
984            children: {
985                #[allow(clippy::suspicious_else_formatting)]
986                let non_field_children = {
987                    let mut cursor = node.walk();
988                    let mut result = ::std::vec::Vec::new();
989                    if cursor.goto_first_child() {
990                        loop {
991                            if cursor.field_name().is_none()
992                                && cursor.node().is_named()
993                                && !cursor.node().is_extra()
994                            {
995                                result.push(cursor.node());
996                            }
997                            if !cursor.goto_next_sibling() {
998                                break;
999                            }
1000                        }
1001                    }
1002                    result
1003                };
1004                let child = if let Some(&c) = non_field_children.first() {
1005                    c
1006                } else {
1007                    let mut fallback_cursor = node.walk();
1008                    let mut fallback_child = None;
1009                    if fallback_cursor.goto_first_child() {
1010                        loop {
1011                            if fallback_cursor.field_name().is_none()
1012                                && !fallback_cursor.node().is_extra()
1013                            {
1014                                let candidate = fallback_cursor.node();
1015                                #[allow(clippy::needless_question_mark)]
1016                                if (|| -> ::core::result::Result<
1017                                    _,
1018                                    ::treesitter_types::ParseError,
1019                                > {
1020                                    let child = candidate;
1021                                    Ok(
1022                                        ::treesitter_types::runtime::maybe_grow_stack(|| <PrimaryExpression as ::treesitter_types::FromNode>::from_node(
1023                                            child,
1024                                            src,
1025                                        ))?,
1026                                    )
1027                                })()
1028                                    .is_ok()
1029                                {
1030                                    fallback_child = Some(candidate);
1031                                    break;
1032                                }
1033                            }
1034                            if !fallback_cursor.goto_next_sibling() {
1035                                break;
1036                            }
1037                        }
1038                    }
1039                    if fallback_child.is_none() {
1040                        let mut cursor2 = node.walk();
1041                        if cursor2.goto_first_child() {
1042                            loop {
1043                                if cursor2.node().is_named() && !cursor2.node().is_extra() {
1044                                    let candidate = cursor2.node();
1045                                    #[allow(clippy::needless_question_mark)]
1046                                    if (|| -> ::core::result::Result<
1047                                        _,
1048                                        ::treesitter_types::ParseError,
1049                                    > {
1050                                        let child = candidate;
1051                                        Ok(
1052                                            ::treesitter_types::runtime::maybe_grow_stack(|| <PrimaryExpression as ::treesitter_types::FromNode>::from_node(
1053                                                child,
1054                                                src,
1055                                            ))?,
1056                                        )
1057                                    })()
1058                                        .is_ok()
1059                                    {
1060                                        fallback_child = Some(candidate);
1061                                        break;
1062                                    }
1063                                }
1064                                if !cursor2.goto_next_sibling() {
1065                                    break;
1066                                }
1067                            }
1068                        }
1069                    }
1070                    fallback_child.ok_or_else(|| {
1071                        ::treesitter_types::ParseError::missing_field("children", node)
1072                    })?
1073                };
1074                ::treesitter_types::runtime::maybe_grow_stack(|| {
1075                    <PrimaryExpression as ::treesitter_types::FromNode>::from_node(child, src)
1076                })?
1077            },
1078        })
1079    }
1080}
1081impl ::treesitter_types::Spanned for Await<'_> {
1082    fn span(&self) -> ::treesitter_types::Span {
1083        self.span
1084    }
1085}
1086#[derive(Debug, Clone, PartialEq, Eq)]
1087pub struct BinaryOperator<'tree> {
1088    pub span: ::treesitter_types::Span,
1089    pub left: PrimaryExpression<'tree>,
1090    pub operator: BinaryOperatorOperator,
1091    pub right: PrimaryExpression<'tree>,
1092}
1093impl<'tree> ::treesitter_types::FromNode<'tree> for BinaryOperator<'tree> {
1094    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
1095    fn from_node(
1096        node: ::treesitter_types::tree_sitter::Node<'tree>,
1097        src: &'tree [u8],
1098    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
1099        debug_assert_eq!(node.kind(), "binary_operator");
1100        Ok(Self {
1101            span: ::treesitter_types::Span::from(node),
1102            left: {
1103                let child = node
1104                    .child_by_field_name("left")
1105                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("left", node))?;
1106                ::treesitter_types::runtime::maybe_grow_stack(|| {
1107                    <PrimaryExpression as ::treesitter_types::FromNode>::from_node(child, src)
1108                })?
1109            },
1110            operator: {
1111                let child = node.child_by_field_name("operator").ok_or_else(|| {
1112                    ::treesitter_types::ParseError::missing_field("operator", node)
1113                })?;
1114                ::treesitter_types::runtime::maybe_grow_stack(|| {
1115                    <BinaryOperatorOperator as ::treesitter_types::FromNode>::from_node(child, src)
1116                })?
1117            },
1118            right: {
1119                let child = node
1120                    .child_by_field_name("right")
1121                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("right", node))?;
1122                ::treesitter_types::runtime::maybe_grow_stack(|| {
1123                    <PrimaryExpression as ::treesitter_types::FromNode>::from_node(child, src)
1124                })?
1125            },
1126        })
1127    }
1128}
1129impl ::treesitter_types::Spanned for BinaryOperator<'_> {
1130    fn span(&self) -> ::treesitter_types::Span {
1131        self.span
1132    }
1133}
1134#[derive(Debug, Clone, PartialEq, Eq)]
1135pub struct Block<'tree> {
1136    pub span: ::treesitter_types::Span,
1137    pub alternative: ::std::vec::Vec<CaseClause<'tree>>,
1138    pub children: ::std::vec::Vec<BlockChildren<'tree>>,
1139}
1140impl<'tree> ::treesitter_types::FromNode<'tree> for Block<'tree> {
1141    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
1142    fn from_node(
1143        node: ::treesitter_types::tree_sitter::Node<'tree>,
1144        src: &'tree [u8],
1145    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
1146        debug_assert_eq!(node.kind(), "block");
1147        Ok(Self {
1148            span: ::treesitter_types::Span::from(node),
1149            alternative: {
1150                let mut cursor = node.walk();
1151                let mut items = ::std::vec::Vec::new();
1152                for child in node.children_by_field_name("alternative", &mut cursor) {
1153                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
1154                        <CaseClause as ::treesitter_types::FromNode>::from_node(child, src)
1155                    })?);
1156                }
1157                items
1158            },
1159            children: {
1160                #[allow(clippy::suspicious_else_formatting)]
1161                let non_field_children = {
1162                    let mut cursor = node.walk();
1163                    let mut result = ::std::vec::Vec::new();
1164                    if cursor.goto_first_child() {
1165                        loop {
1166                            if cursor.field_name().is_none()
1167                                && cursor.node().is_named()
1168                                && !cursor.node().is_extra()
1169                            {
1170                                result.push(cursor.node());
1171                            }
1172                            if !cursor.goto_next_sibling() {
1173                                break;
1174                            }
1175                        }
1176                    }
1177                    result
1178                };
1179                let mut items = ::std::vec::Vec::new();
1180                for child in non_field_children {
1181                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
1182                        <BlockChildren as ::treesitter_types::FromNode>::from_node(child, src)
1183                    })?);
1184                }
1185                items
1186            },
1187        })
1188    }
1189}
1190impl ::treesitter_types::Spanned for Block<'_> {
1191    fn span(&self) -> ::treesitter_types::Span {
1192        self.span
1193    }
1194}
1195#[derive(Debug, Clone, PartialEq, Eq)]
1196pub struct BooleanOperator<'tree> {
1197    pub span: ::treesitter_types::Span,
1198    pub left: Expression<'tree>,
1199    pub operator: BooleanOperatorOperator,
1200    pub right: Expression<'tree>,
1201}
1202impl<'tree> ::treesitter_types::FromNode<'tree> for BooleanOperator<'tree> {
1203    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
1204    fn from_node(
1205        node: ::treesitter_types::tree_sitter::Node<'tree>,
1206        src: &'tree [u8],
1207    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
1208        debug_assert_eq!(node.kind(), "boolean_operator");
1209        Ok(Self {
1210            span: ::treesitter_types::Span::from(node),
1211            left: {
1212                let child = node
1213                    .child_by_field_name("left")
1214                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("left", node))?;
1215                ::treesitter_types::runtime::maybe_grow_stack(|| {
1216                    <Expression as ::treesitter_types::FromNode>::from_node(child, src)
1217                })?
1218            },
1219            operator: {
1220                let child = node.child_by_field_name("operator").ok_or_else(|| {
1221                    ::treesitter_types::ParseError::missing_field("operator", node)
1222                })?;
1223                ::treesitter_types::runtime::maybe_grow_stack(|| {
1224                    <BooleanOperatorOperator as ::treesitter_types::FromNode>::from_node(child, src)
1225                })?
1226            },
1227            right: {
1228                let child = node
1229                    .child_by_field_name("right")
1230                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("right", node))?;
1231                ::treesitter_types::runtime::maybe_grow_stack(|| {
1232                    <Expression as ::treesitter_types::FromNode>::from_node(child, src)
1233                })?
1234            },
1235        })
1236    }
1237}
1238impl ::treesitter_types::Spanned for BooleanOperator<'_> {
1239    fn span(&self) -> ::treesitter_types::Span {
1240        self.span
1241    }
1242}
1243#[derive(Debug, Clone, PartialEq, Eq)]
1244pub struct BreakStatement<'tree> {
1245    pub span: ::treesitter_types::Span,
1246    text: &'tree str,
1247}
1248impl<'tree> ::treesitter_types::FromNode<'tree> for BreakStatement<'tree> {
1249    fn from_node(
1250        node: ::treesitter_types::tree_sitter::Node<'tree>,
1251        src: &'tree [u8],
1252    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
1253        debug_assert_eq!(node.kind(), "break_statement");
1254        Ok(Self {
1255            span: ::treesitter_types::Span::from(node),
1256            text: node.utf8_text(src)?,
1257        })
1258    }
1259}
1260impl<'tree> ::treesitter_types::LeafNode<'tree> for BreakStatement<'tree> {
1261    fn text(&self) -> &'tree str {
1262        self.text
1263    }
1264}
1265impl ::treesitter_types::Spanned for BreakStatement<'_> {
1266    fn span(&self) -> ::treesitter_types::Span {
1267        self.span
1268    }
1269}
1270#[derive(Debug, Clone, PartialEq, Eq)]
1271pub struct Call<'tree> {
1272    pub span: ::treesitter_types::Span,
1273    pub arguments: CallArguments<'tree>,
1274    pub function: PrimaryExpression<'tree>,
1275}
1276impl<'tree> ::treesitter_types::FromNode<'tree> for Call<'tree> {
1277    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
1278    fn from_node(
1279        node: ::treesitter_types::tree_sitter::Node<'tree>,
1280        src: &'tree [u8],
1281    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
1282        debug_assert_eq!(node.kind(), "call");
1283        Ok(Self {
1284            span: ::treesitter_types::Span::from(node),
1285            arguments: {
1286                let child = node.child_by_field_name("arguments").ok_or_else(|| {
1287                    ::treesitter_types::ParseError::missing_field("arguments", node)
1288                })?;
1289                ::treesitter_types::runtime::maybe_grow_stack(|| {
1290                    <CallArguments as ::treesitter_types::FromNode>::from_node(child, src)
1291                })?
1292            },
1293            function: {
1294                let child = node.child_by_field_name("function").ok_or_else(|| {
1295                    ::treesitter_types::ParseError::missing_field("function", node)
1296                })?;
1297                ::treesitter_types::runtime::maybe_grow_stack(|| {
1298                    <PrimaryExpression as ::treesitter_types::FromNode>::from_node(child, src)
1299                })?
1300            },
1301        })
1302    }
1303}
1304impl ::treesitter_types::Spanned for Call<'_> {
1305    fn span(&self) -> ::treesitter_types::Span {
1306        self.span
1307    }
1308}
1309#[derive(Debug, Clone, PartialEq, Eq)]
1310pub struct CaseClause<'tree> {
1311    pub span: ::treesitter_types::Span,
1312    pub consequence: Block<'tree>,
1313    pub guard: ::core::option::Option<IfClause<'tree>>,
1314    pub children: ::std::vec::Vec<CasePattern<'tree>>,
1315}
1316impl<'tree> ::treesitter_types::FromNode<'tree> for CaseClause<'tree> {
1317    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
1318    fn from_node(
1319        node: ::treesitter_types::tree_sitter::Node<'tree>,
1320        src: &'tree [u8],
1321    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
1322        debug_assert_eq!(node.kind(), "case_clause");
1323        Ok(Self {
1324            span: ::treesitter_types::Span::from(node),
1325            consequence: {
1326                let child = node.child_by_field_name("consequence").ok_or_else(|| {
1327                    ::treesitter_types::ParseError::missing_field("consequence", node)
1328                })?;
1329                ::treesitter_types::runtime::maybe_grow_stack(|| {
1330                    <Block as ::treesitter_types::FromNode>::from_node(child, src)
1331                })?
1332            },
1333            guard: match node.child_by_field_name("guard") {
1334                Some(child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
1335                    <IfClause as ::treesitter_types::FromNode>::from_node(child, src)
1336                })?),
1337                None => None,
1338            },
1339            children: {
1340                #[allow(clippy::suspicious_else_formatting)]
1341                let non_field_children = {
1342                    let mut cursor = node.walk();
1343                    let mut result = ::std::vec::Vec::new();
1344                    if cursor.goto_first_child() {
1345                        loop {
1346                            if cursor.field_name().is_none()
1347                                && cursor.node().is_named()
1348                                && !cursor.node().is_extra()
1349                            {
1350                                result.push(cursor.node());
1351                            }
1352                            if !cursor.goto_next_sibling() {
1353                                break;
1354                            }
1355                        }
1356                    }
1357                    result
1358                };
1359                let mut items = ::std::vec::Vec::new();
1360                for child in non_field_children {
1361                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
1362                        <CasePattern as ::treesitter_types::FromNode>::from_node(child, src)
1363                    })?);
1364                }
1365                items
1366            },
1367        })
1368    }
1369}
1370impl ::treesitter_types::Spanned for CaseClause<'_> {
1371    fn span(&self) -> ::treesitter_types::Span {
1372        self.span
1373    }
1374}
1375#[derive(Debug, Clone, PartialEq, Eq)]
1376pub struct CasePattern<'tree> {
1377    pub span: ::treesitter_types::Span,
1378    pub children: ::core::option::Option<CasePatternChildren<'tree>>,
1379}
1380impl<'tree> ::treesitter_types::FromNode<'tree> for CasePattern<'tree> {
1381    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
1382    fn from_node(
1383        node: ::treesitter_types::tree_sitter::Node<'tree>,
1384        src: &'tree [u8],
1385    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
1386        debug_assert_eq!(node.kind(), "case_pattern");
1387        Ok(Self {
1388            span: ::treesitter_types::Span::from(node),
1389            children: {
1390                #[allow(clippy::suspicious_else_formatting)]
1391                let non_field_children = {
1392                    let mut cursor = node.walk();
1393                    let mut result = ::std::vec::Vec::new();
1394                    if cursor.goto_first_child() {
1395                        loop {
1396                            if cursor.field_name().is_none()
1397                                && cursor.node().is_named()
1398                                && !cursor.node().is_extra()
1399                            {
1400                                result.push(cursor.node());
1401                            }
1402                            if !cursor.goto_next_sibling() {
1403                                break;
1404                            }
1405                        }
1406                    }
1407                    result
1408                };
1409                match non_field_children.first() {
1410                    Some(&child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
1411                        <CasePatternChildren as ::treesitter_types::FromNode>::from_node(child, src)
1412                    })?),
1413                    None => None,
1414                }
1415            },
1416        })
1417    }
1418}
1419impl ::treesitter_types::Spanned for CasePattern<'_> {
1420    fn span(&self) -> ::treesitter_types::Span {
1421        self.span
1422    }
1423}
1424#[derive(Debug, Clone, PartialEq, Eq)]
1425pub struct Chevron<'tree> {
1426    pub span: ::treesitter_types::Span,
1427    pub children: Expression<'tree>,
1428}
1429impl<'tree> ::treesitter_types::FromNode<'tree> for Chevron<'tree> {
1430    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
1431    fn from_node(
1432        node: ::treesitter_types::tree_sitter::Node<'tree>,
1433        src: &'tree [u8],
1434    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
1435        debug_assert_eq!(node.kind(), "chevron");
1436        Ok(Self {
1437            span: ::treesitter_types::Span::from(node),
1438            children: {
1439                #[allow(clippy::suspicious_else_formatting)]
1440                let non_field_children = {
1441                    let mut cursor = node.walk();
1442                    let mut result = ::std::vec::Vec::new();
1443                    if cursor.goto_first_child() {
1444                        loop {
1445                            if cursor.field_name().is_none()
1446                                && cursor.node().is_named()
1447                                && !cursor.node().is_extra()
1448                            {
1449                                result.push(cursor.node());
1450                            }
1451                            if !cursor.goto_next_sibling() {
1452                                break;
1453                            }
1454                        }
1455                    }
1456                    result
1457                };
1458                let child = if let Some(&c) = non_field_children.first() {
1459                    c
1460                } else {
1461                    let mut fallback_cursor = node.walk();
1462                    let mut fallback_child = None;
1463                    if fallback_cursor.goto_first_child() {
1464                        loop {
1465                            if fallback_cursor.field_name().is_none()
1466                                && !fallback_cursor.node().is_extra()
1467                            {
1468                                let candidate = fallback_cursor.node();
1469                                #[allow(clippy::needless_question_mark)]
1470                                if (|| -> ::core::result::Result<
1471                                    _,
1472                                    ::treesitter_types::ParseError,
1473                                > {
1474                                    let child = candidate;
1475                                    Ok(
1476                                        ::treesitter_types::runtime::maybe_grow_stack(|| <Expression as ::treesitter_types::FromNode>::from_node(
1477                                            child,
1478                                            src,
1479                                        ))?,
1480                                    )
1481                                })()
1482                                    .is_ok()
1483                                {
1484                                    fallback_child = Some(candidate);
1485                                    break;
1486                                }
1487                            }
1488                            if !fallback_cursor.goto_next_sibling() {
1489                                break;
1490                            }
1491                        }
1492                    }
1493                    if fallback_child.is_none() {
1494                        let mut cursor2 = node.walk();
1495                        if cursor2.goto_first_child() {
1496                            loop {
1497                                if cursor2.node().is_named() && !cursor2.node().is_extra() {
1498                                    let candidate = cursor2.node();
1499                                    #[allow(clippy::needless_question_mark)]
1500                                    if (|| -> ::core::result::Result<
1501                                        _,
1502                                        ::treesitter_types::ParseError,
1503                                    > {
1504                                        let child = candidate;
1505                                        Ok(
1506                                            ::treesitter_types::runtime::maybe_grow_stack(|| <Expression as ::treesitter_types::FromNode>::from_node(
1507                                                child,
1508                                                src,
1509                                            ))?,
1510                                        )
1511                                    })()
1512                                        .is_ok()
1513                                    {
1514                                        fallback_child = Some(candidate);
1515                                        break;
1516                                    }
1517                                }
1518                                if !cursor2.goto_next_sibling() {
1519                                    break;
1520                                }
1521                            }
1522                        }
1523                    }
1524                    fallback_child.ok_or_else(|| {
1525                        ::treesitter_types::ParseError::missing_field("children", node)
1526                    })?
1527                };
1528                ::treesitter_types::runtime::maybe_grow_stack(|| {
1529                    <Expression as ::treesitter_types::FromNode>::from_node(child, src)
1530                })?
1531            },
1532        })
1533    }
1534}
1535impl ::treesitter_types::Spanned for Chevron<'_> {
1536    fn span(&self) -> ::treesitter_types::Span {
1537        self.span
1538    }
1539}
1540#[derive(Debug, Clone, PartialEq, Eq)]
1541pub struct ClassDefinition<'tree> {
1542    pub span: ::treesitter_types::Span,
1543    pub body: Block<'tree>,
1544    pub name: Identifier<'tree>,
1545    pub superclasses: ::core::option::Option<ArgumentList<'tree>>,
1546    pub type_parameters: ::core::option::Option<TypeParameter<'tree>>,
1547}
1548impl<'tree> ::treesitter_types::FromNode<'tree> for ClassDefinition<'tree> {
1549    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
1550    fn from_node(
1551        node: ::treesitter_types::tree_sitter::Node<'tree>,
1552        src: &'tree [u8],
1553    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
1554        debug_assert_eq!(node.kind(), "class_definition");
1555        Ok(Self {
1556            span: ::treesitter_types::Span::from(node),
1557            body: {
1558                let child = node
1559                    .child_by_field_name("body")
1560                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("body", node))?;
1561                ::treesitter_types::runtime::maybe_grow_stack(|| {
1562                    <Block as ::treesitter_types::FromNode>::from_node(child, src)
1563                })?
1564            },
1565            name: {
1566                let child = node
1567                    .child_by_field_name("name")
1568                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("name", node))?;
1569                ::treesitter_types::runtime::maybe_grow_stack(|| {
1570                    <Identifier as ::treesitter_types::FromNode>::from_node(child, src)
1571                })?
1572            },
1573            superclasses: match node.child_by_field_name("superclasses") {
1574                Some(child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
1575                    <ArgumentList as ::treesitter_types::FromNode>::from_node(child, src)
1576                })?),
1577                None => None,
1578            },
1579            type_parameters: match node.child_by_field_name("type_parameters") {
1580                Some(child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
1581                    <TypeParameter as ::treesitter_types::FromNode>::from_node(child, src)
1582                })?),
1583                None => None,
1584            },
1585        })
1586    }
1587}
1588impl ::treesitter_types::Spanned for ClassDefinition<'_> {
1589    fn span(&self) -> ::treesitter_types::Span {
1590        self.span
1591    }
1592}
1593#[derive(Debug, Clone, PartialEq, Eq)]
1594pub struct ClassPattern<'tree> {
1595    pub span: ::treesitter_types::Span,
1596    pub children: ::std::vec::Vec<ClassPatternChildren<'tree>>,
1597}
1598impl<'tree> ::treesitter_types::FromNode<'tree> for ClassPattern<'tree> {
1599    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
1600    fn from_node(
1601        node: ::treesitter_types::tree_sitter::Node<'tree>,
1602        src: &'tree [u8],
1603    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
1604        debug_assert_eq!(node.kind(), "class_pattern");
1605        Ok(Self {
1606            span: ::treesitter_types::Span::from(node),
1607            children: {
1608                #[allow(clippy::suspicious_else_formatting)]
1609                let non_field_children = {
1610                    let mut cursor = node.walk();
1611                    let mut result = ::std::vec::Vec::new();
1612                    if cursor.goto_first_child() {
1613                        loop {
1614                            if cursor.field_name().is_none()
1615                                && cursor.node().is_named()
1616                                && !cursor.node().is_extra()
1617                            {
1618                                result.push(cursor.node());
1619                            }
1620                            if !cursor.goto_next_sibling() {
1621                                break;
1622                            }
1623                        }
1624                    }
1625                    result
1626                };
1627                let mut items = ::std::vec::Vec::new();
1628                for child in non_field_children {
1629                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
1630                        <ClassPatternChildren as ::treesitter_types::FromNode>::from_node(
1631                            child, src,
1632                        )
1633                    })?);
1634                }
1635                items
1636            },
1637        })
1638    }
1639}
1640impl ::treesitter_types::Spanned for ClassPattern<'_> {
1641    fn span(&self) -> ::treesitter_types::Span {
1642        self.span
1643    }
1644}
1645#[derive(Debug, Clone, PartialEq, Eq)]
1646pub struct ComparisonOperator<'tree> {
1647    pub span: ::treesitter_types::Span,
1648    pub operators: ::std::vec::Vec<ComparisonOperatorOperators>,
1649    pub children: ::std::vec::Vec<PrimaryExpression<'tree>>,
1650}
1651impl<'tree> ::treesitter_types::FromNode<'tree> for ComparisonOperator<'tree> {
1652    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
1653    fn from_node(
1654        node: ::treesitter_types::tree_sitter::Node<'tree>,
1655        src: &'tree [u8],
1656    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
1657        debug_assert_eq!(node.kind(), "comparison_operator");
1658        Ok(Self {
1659            span: ::treesitter_types::Span::from(node),
1660            operators: {
1661                let mut cursor = node.walk();
1662                let mut items = ::std::vec::Vec::new();
1663                for child in node.children_by_field_name("operators", &mut cursor) {
1664                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
1665                        <ComparisonOperatorOperators as ::treesitter_types::FromNode>::from_node(
1666                            child, src,
1667                        )
1668                    })?);
1669                }
1670                items
1671            },
1672            children: {
1673                #[allow(clippy::suspicious_else_formatting)]
1674                let non_field_children = {
1675                    let mut cursor = node.walk();
1676                    let mut result = ::std::vec::Vec::new();
1677                    if cursor.goto_first_child() {
1678                        loop {
1679                            if cursor.field_name().is_none()
1680                                && cursor.node().is_named()
1681                                && !cursor.node().is_extra()
1682                            {
1683                                result.push(cursor.node());
1684                            }
1685                            if !cursor.goto_next_sibling() {
1686                                break;
1687                            }
1688                        }
1689                    }
1690                    result
1691                };
1692                let mut items = ::std::vec::Vec::new();
1693                for child in non_field_children {
1694                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
1695                        <PrimaryExpression as ::treesitter_types::FromNode>::from_node(child, src)
1696                    })?);
1697                }
1698                items
1699            },
1700        })
1701    }
1702}
1703impl ::treesitter_types::Spanned for ComparisonOperator<'_> {
1704    fn span(&self) -> ::treesitter_types::Span {
1705        self.span
1706    }
1707}
1708#[derive(Debug, Clone, PartialEq, Eq)]
1709pub struct ComplexPattern<'tree> {
1710    pub span: ::treesitter_types::Span,
1711    pub children: ::std::vec::Vec<ComplexPatternChildren<'tree>>,
1712}
1713impl<'tree> ::treesitter_types::FromNode<'tree> for ComplexPattern<'tree> {
1714    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
1715    fn from_node(
1716        node: ::treesitter_types::tree_sitter::Node<'tree>,
1717        src: &'tree [u8],
1718    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
1719        debug_assert_eq!(node.kind(), "complex_pattern");
1720        Ok(Self {
1721            span: ::treesitter_types::Span::from(node),
1722            children: {
1723                #[allow(clippy::suspicious_else_formatting)]
1724                let non_field_children = {
1725                    let mut cursor = node.walk();
1726                    let mut result = ::std::vec::Vec::new();
1727                    if cursor.goto_first_child() {
1728                        loop {
1729                            if cursor.field_name().is_none()
1730                                && cursor.node().is_named()
1731                                && !cursor.node().is_extra()
1732                            {
1733                                result.push(cursor.node());
1734                            }
1735                            if !cursor.goto_next_sibling() {
1736                                break;
1737                            }
1738                        }
1739                    }
1740                    result
1741                };
1742                let mut items = ::std::vec::Vec::new();
1743                for child in non_field_children {
1744                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
1745                        <ComplexPatternChildren as ::treesitter_types::FromNode>::from_node(
1746                            child, src,
1747                        )
1748                    })?);
1749                }
1750                items
1751            },
1752        })
1753    }
1754}
1755impl ::treesitter_types::Spanned for ComplexPattern<'_> {
1756    fn span(&self) -> ::treesitter_types::Span {
1757        self.span
1758    }
1759}
1760#[derive(Debug, Clone, PartialEq, Eq)]
1761pub struct ConcatenatedString<'tree> {
1762    pub span: ::treesitter_types::Span,
1763    pub children: ::std::vec::Vec<String<'tree>>,
1764}
1765impl<'tree> ::treesitter_types::FromNode<'tree> for ConcatenatedString<'tree> {
1766    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
1767    fn from_node(
1768        node: ::treesitter_types::tree_sitter::Node<'tree>,
1769        src: &'tree [u8],
1770    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
1771        debug_assert_eq!(node.kind(), "concatenated_string");
1772        Ok(Self {
1773            span: ::treesitter_types::Span::from(node),
1774            children: {
1775                #[allow(clippy::suspicious_else_formatting)]
1776                let non_field_children = {
1777                    let mut cursor = node.walk();
1778                    let mut result = ::std::vec::Vec::new();
1779                    if cursor.goto_first_child() {
1780                        loop {
1781                            if cursor.field_name().is_none()
1782                                && cursor.node().is_named()
1783                                && !cursor.node().is_extra()
1784                            {
1785                                result.push(cursor.node());
1786                            }
1787                            if !cursor.goto_next_sibling() {
1788                                break;
1789                            }
1790                        }
1791                    }
1792                    result
1793                };
1794                let mut items = ::std::vec::Vec::new();
1795                for child in non_field_children {
1796                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
1797                        <String as ::treesitter_types::FromNode>::from_node(child, src)
1798                    })?);
1799                }
1800                items
1801            },
1802        })
1803    }
1804}
1805impl ::treesitter_types::Spanned for ConcatenatedString<'_> {
1806    fn span(&self) -> ::treesitter_types::Span {
1807        self.span
1808    }
1809}
1810#[derive(Debug, Clone, PartialEq, Eq)]
1811pub struct ConditionalExpression<'tree> {
1812    pub span: ::treesitter_types::Span,
1813    pub children: ::std::vec::Vec<Expression<'tree>>,
1814}
1815impl<'tree> ::treesitter_types::FromNode<'tree> for ConditionalExpression<'tree> {
1816    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
1817    fn from_node(
1818        node: ::treesitter_types::tree_sitter::Node<'tree>,
1819        src: &'tree [u8],
1820    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
1821        debug_assert_eq!(node.kind(), "conditional_expression");
1822        Ok(Self {
1823            span: ::treesitter_types::Span::from(node),
1824            children: {
1825                #[allow(clippy::suspicious_else_formatting)]
1826                let non_field_children = {
1827                    let mut cursor = node.walk();
1828                    let mut result = ::std::vec::Vec::new();
1829                    if cursor.goto_first_child() {
1830                        loop {
1831                            if cursor.field_name().is_none()
1832                                && cursor.node().is_named()
1833                                && !cursor.node().is_extra()
1834                            {
1835                                result.push(cursor.node());
1836                            }
1837                            if !cursor.goto_next_sibling() {
1838                                break;
1839                            }
1840                        }
1841                    }
1842                    result
1843                };
1844                let mut items = ::std::vec::Vec::new();
1845                for child in non_field_children {
1846                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
1847                        <Expression as ::treesitter_types::FromNode>::from_node(child, src)
1848                    })?);
1849                }
1850                items
1851            },
1852        })
1853    }
1854}
1855impl ::treesitter_types::Spanned for ConditionalExpression<'_> {
1856    fn span(&self) -> ::treesitter_types::Span {
1857        self.span
1858    }
1859}
1860#[derive(Debug, Clone, PartialEq, Eq)]
1861pub struct ConstrainedType<'tree> {
1862    pub span: ::treesitter_types::Span,
1863    pub children: ::std::vec::Vec<Type<'tree>>,
1864}
1865impl<'tree> ::treesitter_types::FromNode<'tree> for ConstrainedType<'tree> {
1866    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
1867    fn from_node(
1868        node: ::treesitter_types::tree_sitter::Node<'tree>,
1869        src: &'tree [u8],
1870    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
1871        debug_assert_eq!(node.kind(), "constrained_type");
1872        Ok(Self {
1873            span: ::treesitter_types::Span::from(node),
1874            children: {
1875                #[allow(clippy::suspicious_else_formatting)]
1876                let non_field_children = {
1877                    let mut cursor = node.walk();
1878                    let mut result = ::std::vec::Vec::new();
1879                    if cursor.goto_first_child() {
1880                        loop {
1881                            if cursor.field_name().is_none()
1882                                && cursor.node().is_named()
1883                                && !cursor.node().is_extra()
1884                            {
1885                                result.push(cursor.node());
1886                            }
1887                            if !cursor.goto_next_sibling() {
1888                                break;
1889                            }
1890                        }
1891                    }
1892                    result
1893                };
1894                let mut items = ::std::vec::Vec::new();
1895                for child in non_field_children {
1896                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
1897                        <Type as ::treesitter_types::FromNode>::from_node(child, src)
1898                    })?);
1899                }
1900                items
1901            },
1902        })
1903    }
1904}
1905impl ::treesitter_types::Spanned for ConstrainedType<'_> {
1906    fn span(&self) -> ::treesitter_types::Span {
1907        self.span
1908    }
1909}
1910#[derive(Debug, Clone, PartialEq, Eq)]
1911pub struct ContinueStatement<'tree> {
1912    pub span: ::treesitter_types::Span,
1913    text: &'tree str,
1914}
1915impl<'tree> ::treesitter_types::FromNode<'tree> for ContinueStatement<'tree> {
1916    fn from_node(
1917        node: ::treesitter_types::tree_sitter::Node<'tree>,
1918        src: &'tree [u8],
1919    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
1920        debug_assert_eq!(node.kind(), "continue_statement");
1921        Ok(Self {
1922            span: ::treesitter_types::Span::from(node),
1923            text: node.utf8_text(src)?,
1924        })
1925    }
1926}
1927impl<'tree> ::treesitter_types::LeafNode<'tree> for ContinueStatement<'tree> {
1928    fn text(&self) -> &'tree str {
1929        self.text
1930    }
1931}
1932impl ::treesitter_types::Spanned for ContinueStatement<'_> {
1933    fn span(&self) -> ::treesitter_types::Span {
1934        self.span
1935    }
1936}
1937#[derive(Debug, Clone, PartialEq, Eq)]
1938pub struct DecoratedDefinition<'tree> {
1939    pub span: ::treesitter_types::Span,
1940    pub definition: DecoratedDefinitionDefinition<'tree>,
1941    pub children: ::std::vec::Vec<Decorator<'tree>>,
1942}
1943impl<'tree> ::treesitter_types::FromNode<'tree> for DecoratedDefinition<'tree> {
1944    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
1945    fn from_node(
1946        node: ::treesitter_types::tree_sitter::Node<'tree>,
1947        src: &'tree [u8],
1948    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
1949        debug_assert_eq!(node.kind(), "decorated_definition");
1950        Ok(Self {
1951            span: ::treesitter_types::Span::from(node),
1952            definition: {
1953                let child = node.child_by_field_name("definition").ok_or_else(|| {
1954                    ::treesitter_types::ParseError::missing_field("definition", node)
1955                })?;
1956                ::treesitter_types::runtime::maybe_grow_stack(|| {
1957                    <DecoratedDefinitionDefinition as ::treesitter_types::FromNode>::from_node(
1958                        child, src,
1959                    )
1960                })?
1961            },
1962            children: {
1963                #[allow(clippy::suspicious_else_formatting)]
1964                let non_field_children = {
1965                    let mut cursor = node.walk();
1966                    let mut result = ::std::vec::Vec::new();
1967                    if cursor.goto_first_child() {
1968                        loop {
1969                            if cursor.field_name().is_none()
1970                                && cursor.node().is_named()
1971                                && !cursor.node().is_extra()
1972                            {
1973                                result.push(cursor.node());
1974                            }
1975                            if !cursor.goto_next_sibling() {
1976                                break;
1977                            }
1978                        }
1979                    }
1980                    result
1981                };
1982                let mut items = ::std::vec::Vec::new();
1983                for child in non_field_children {
1984                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
1985                        <Decorator as ::treesitter_types::FromNode>::from_node(child, src)
1986                    })?);
1987                }
1988                items
1989            },
1990        })
1991    }
1992}
1993impl ::treesitter_types::Spanned for DecoratedDefinition<'_> {
1994    fn span(&self) -> ::treesitter_types::Span {
1995        self.span
1996    }
1997}
1998#[derive(Debug, Clone, PartialEq, Eq)]
1999pub struct Decorator<'tree> {
2000    pub span: ::treesitter_types::Span,
2001    pub children: Expression<'tree>,
2002}
2003impl<'tree> ::treesitter_types::FromNode<'tree> for Decorator<'tree> {
2004    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
2005    fn from_node(
2006        node: ::treesitter_types::tree_sitter::Node<'tree>,
2007        src: &'tree [u8],
2008    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
2009        debug_assert_eq!(node.kind(), "decorator");
2010        Ok(Self {
2011            span: ::treesitter_types::Span::from(node),
2012            children: {
2013                #[allow(clippy::suspicious_else_formatting)]
2014                let non_field_children = {
2015                    let mut cursor = node.walk();
2016                    let mut result = ::std::vec::Vec::new();
2017                    if cursor.goto_first_child() {
2018                        loop {
2019                            if cursor.field_name().is_none()
2020                                && cursor.node().is_named()
2021                                && !cursor.node().is_extra()
2022                            {
2023                                result.push(cursor.node());
2024                            }
2025                            if !cursor.goto_next_sibling() {
2026                                break;
2027                            }
2028                        }
2029                    }
2030                    result
2031                };
2032                let child = if let Some(&c) = non_field_children.first() {
2033                    c
2034                } else {
2035                    let mut fallback_cursor = node.walk();
2036                    let mut fallback_child = None;
2037                    if fallback_cursor.goto_first_child() {
2038                        loop {
2039                            if fallback_cursor.field_name().is_none()
2040                                && !fallback_cursor.node().is_extra()
2041                            {
2042                                let candidate = fallback_cursor.node();
2043                                #[allow(clippy::needless_question_mark)]
2044                                if (|| -> ::core::result::Result<
2045                                    _,
2046                                    ::treesitter_types::ParseError,
2047                                > {
2048                                    let child = candidate;
2049                                    Ok(
2050                                        ::treesitter_types::runtime::maybe_grow_stack(|| <Expression as ::treesitter_types::FromNode>::from_node(
2051                                            child,
2052                                            src,
2053                                        ))?,
2054                                    )
2055                                })()
2056                                    .is_ok()
2057                                {
2058                                    fallback_child = Some(candidate);
2059                                    break;
2060                                }
2061                            }
2062                            if !fallback_cursor.goto_next_sibling() {
2063                                break;
2064                            }
2065                        }
2066                    }
2067                    if fallback_child.is_none() {
2068                        let mut cursor2 = node.walk();
2069                        if cursor2.goto_first_child() {
2070                            loop {
2071                                if cursor2.node().is_named() && !cursor2.node().is_extra() {
2072                                    let candidate = cursor2.node();
2073                                    #[allow(clippy::needless_question_mark)]
2074                                    if (|| -> ::core::result::Result<
2075                                        _,
2076                                        ::treesitter_types::ParseError,
2077                                    > {
2078                                        let child = candidate;
2079                                        Ok(
2080                                            ::treesitter_types::runtime::maybe_grow_stack(|| <Expression as ::treesitter_types::FromNode>::from_node(
2081                                                child,
2082                                                src,
2083                                            ))?,
2084                                        )
2085                                    })()
2086                                        .is_ok()
2087                                    {
2088                                        fallback_child = Some(candidate);
2089                                        break;
2090                                    }
2091                                }
2092                                if !cursor2.goto_next_sibling() {
2093                                    break;
2094                                }
2095                            }
2096                        }
2097                    }
2098                    fallback_child.ok_or_else(|| {
2099                        ::treesitter_types::ParseError::missing_field("children", node)
2100                    })?
2101                };
2102                ::treesitter_types::runtime::maybe_grow_stack(|| {
2103                    <Expression as ::treesitter_types::FromNode>::from_node(child, src)
2104                })?
2105            },
2106        })
2107    }
2108}
2109impl ::treesitter_types::Spanned for Decorator<'_> {
2110    fn span(&self) -> ::treesitter_types::Span {
2111        self.span
2112    }
2113}
2114#[derive(Debug, Clone, PartialEq, Eq)]
2115pub struct DefaultParameter<'tree> {
2116    pub span: ::treesitter_types::Span,
2117    pub name: DefaultParameterName<'tree>,
2118    pub value: Expression<'tree>,
2119}
2120impl<'tree> ::treesitter_types::FromNode<'tree> for DefaultParameter<'tree> {
2121    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
2122    fn from_node(
2123        node: ::treesitter_types::tree_sitter::Node<'tree>,
2124        src: &'tree [u8],
2125    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
2126        debug_assert_eq!(node.kind(), "default_parameter");
2127        Ok(Self {
2128            span: ::treesitter_types::Span::from(node),
2129            name: {
2130                let child = node
2131                    .child_by_field_name("name")
2132                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("name", node))?;
2133                ::treesitter_types::runtime::maybe_grow_stack(|| {
2134                    <DefaultParameterName as ::treesitter_types::FromNode>::from_node(child, src)
2135                })?
2136            },
2137            value: {
2138                let child = node
2139                    .child_by_field_name("value")
2140                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("value", node))?;
2141                ::treesitter_types::runtime::maybe_grow_stack(|| {
2142                    <Expression as ::treesitter_types::FromNode>::from_node(child, src)
2143                })?
2144            },
2145        })
2146    }
2147}
2148impl ::treesitter_types::Spanned for DefaultParameter<'_> {
2149    fn span(&self) -> ::treesitter_types::Span {
2150        self.span
2151    }
2152}
2153#[derive(Debug, Clone, PartialEq, Eq)]
2154pub struct DeleteStatement<'tree> {
2155    pub span: ::treesitter_types::Span,
2156    pub children: DeleteStatementChildren<'tree>,
2157}
2158impl<'tree> ::treesitter_types::FromNode<'tree> for DeleteStatement<'tree> {
2159    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
2160    fn from_node(
2161        node: ::treesitter_types::tree_sitter::Node<'tree>,
2162        src: &'tree [u8],
2163    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
2164        debug_assert_eq!(node.kind(), "delete_statement");
2165        Ok(Self {
2166            span: ::treesitter_types::Span::from(node),
2167            children: {
2168                #[allow(clippy::suspicious_else_formatting)]
2169                let non_field_children = {
2170                    let mut cursor = node.walk();
2171                    let mut result = ::std::vec::Vec::new();
2172                    if cursor.goto_first_child() {
2173                        loop {
2174                            if cursor.field_name().is_none()
2175                                && cursor.node().is_named()
2176                                && !cursor.node().is_extra()
2177                            {
2178                                result.push(cursor.node());
2179                            }
2180                            if !cursor.goto_next_sibling() {
2181                                break;
2182                            }
2183                        }
2184                    }
2185                    result
2186                };
2187                let child = if let Some(&c) = non_field_children.first() {
2188                    c
2189                } else {
2190                    let mut fallback_cursor = node.walk();
2191                    let mut fallback_child = None;
2192                    if fallback_cursor.goto_first_child() {
2193                        loop {
2194                            if fallback_cursor.field_name().is_none()
2195                                && !fallback_cursor.node().is_extra()
2196                            {
2197                                let candidate = fallback_cursor.node();
2198                                #[allow(clippy::needless_question_mark)]
2199                                if (|| -> ::core::result::Result<
2200                                    _,
2201                                    ::treesitter_types::ParseError,
2202                                > {
2203                                    let child = candidate;
2204                                    Ok(
2205                                        ::treesitter_types::runtime::maybe_grow_stack(|| <DeleteStatementChildren as ::treesitter_types::FromNode>::from_node(
2206                                            child,
2207                                            src,
2208                                        ))?,
2209                                    )
2210                                })()
2211                                    .is_ok()
2212                                {
2213                                    fallback_child = Some(candidate);
2214                                    break;
2215                                }
2216                            }
2217                            if !fallback_cursor.goto_next_sibling() {
2218                                break;
2219                            }
2220                        }
2221                    }
2222                    if fallback_child.is_none() {
2223                        let mut cursor2 = node.walk();
2224                        if cursor2.goto_first_child() {
2225                            loop {
2226                                if cursor2.node().is_named() && !cursor2.node().is_extra() {
2227                                    let candidate = cursor2.node();
2228                                    #[allow(clippy::needless_question_mark)]
2229                                    if (|| -> ::core::result::Result<
2230                                        _,
2231                                        ::treesitter_types::ParseError,
2232                                    > {
2233                                        let child = candidate;
2234                                        Ok(
2235                                            ::treesitter_types::runtime::maybe_grow_stack(|| <DeleteStatementChildren as ::treesitter_types::FromNode>::from_node(
2236                                                child,
2237                                                src,
2238                                            ))?,
2239                                        )
2240                                    })()
2241                                        .is_ok()
2242                                    {
2243                                        fallback_child = Some(candidate);
2244                                        break;
2245                                    }
2246                                }
2247                                if !cursor2.goto_next_sibling() {
2248                                    break;
2249                                }
2250                            }
2251                        }
2252                    }
2253                    fallback_child.ok_or_else(|| {
2254                        ::treesitter_types::ParseError::missing_field("children", node)
2255                    })?
2256                };
2257                ::treesitter_types::runtime::maybe_grow_stack(|| {
2258                    <DeleteStatementChildren as ::treesitter_types::FromNode>::from_node(child, src)
2259                })?
2260            },
2261        })
2262    }
2263}
2264impl ::treesitter_types::Spanned for DeleteStatement<'_> {
2265    fn span(&self) -> ::treesitter_types::Span {
2266        self.span
2267    }
2268}
2269#[derive(Debug, Clone, PartialEq, Eq)]
2270pub struct DictPattern<'tree> {
2271    pub span: ::treesitter_types::Span,
2272    pub key: ::std::vec::Vec<DictPatternKey<'tree>>,
2273    pub value: ::std::vec::Vec<CasePattern<'tree>>,
2274    pub children: ::std::vec::Vec<SplatPattern<'tree>>,
2275}
2276impl<'tree> ::treesitter_types::FromNode<'tree> for DictPattern<'tree> {
2277    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
2278    fn from_node(
2279        node: ::treesitter_types::tree_sitter::Node<'tree>,
2280        src: &'tree [u8],
2281    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
2282        debug_assert_eq!(node.kind(), "dict_pattern");
2283        Ok(Self {
2284            span: ::treesitter_types::Span::from(node),
2285            key: {
2286                let mut cursor = node.walk();
2287                let mut items = ::std::vec::Vec::new();
2288                for child in node.children_by_field_name("key", &mut cursor) {
2289                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
2290                        <DictPatternKey as ::treesitter_types::FromNode>::from_node(child, src)
2291                    })?);
2292                }
2293                items
2294            },
2295            value: {
2296                let mut cursor = node.walk();
2297                let mut items = ::std::vec::Vec::new();
2298                for child in node.children_by_field_name("value", &mut cursor) {
2299                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
2300                        <CasePattern as ::treesitter_types::FromNode>::from_node(child, src)
2301                    })?);
2302                }
2303                items
2304            },
2305            children: {
2306                #[allow(clippy::suspicious_else_formatting)]
2307                let non_field_children = {
2308                    let mut cursor = node.walk();
2309                    let mut result = ::std::vec::Vec::new();
2310                    if cursor.goto_first_child() {
2311                        loop {
2312                            if cursor.field_name().is_none()
2313                                && cursor.node().is_named()
2314                                && !cursor.node().is_extra()
2315                            {
2316                                result.push(cursor.node());
2317                            }
2318                            if !cursor.goto_next_sibling() {
2319                                break;
2320                            }
2321                        }
2322                    }
2323                    result
2324                };
2325                let mut items = ::std::vec::Vec::new();
2326                for child in non_field_children {
2327                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
2328                        <SplatPattern as ::treesitter_types::FromNode>::from_node(child, src)
2329                    })?);
2330                }
2331                items
2332            },
2333        })
2334    }
2335}
2336impl ::treesitter_types::Spanned for DictPattern<'_> {
2337    fn span(&self) -> ::treesitter_types::Span {
2338        self.span
2339    }
2340}
2341#[derive(Debug, Clone, PartialEq, Eq)]
2342pub struct Dictionary<'tree> {
2343    pub span: ::treesitter_types::Span,
2344    pub children: ::std::vec::Vec<DictionaryChildren<'tree>>,
2345}
2346impl<'tree> ::treesitter_types::FromNode<'tree> for Dictionary<'tree> {
2347    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
2348    fn from_node(
2349        node: ::treesitter_types::tree_sitter::Node<'tree>,
2350        src: &'tree [u8],
2351    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
2352        debug_assert_eq!(node.kind(), "dictionary");
2353        Ok(Self {
2354            span: ::treesitter_types::Span::from(node),
2355            children: {
2356                #[allow(clippy::suspicious_else_formatting)]
2357                let non_field_children = {
2358                    let mut cursor = node.walk();
2359                    let mut result = ::std::vec::Vec::new();
2360                    if cursor.goto_first_child() {
2361                        loop {
2362                            if cursor.field_name().is_none()
2363                                && cursor.node().is_named()
2364                                && !cursor.node().is_extra()
2365                            {
2366                                result.push(cursor.node());
2367                            }
2368                            if !cursor.goto_next_sibling() {
2369                                break;
2370                            }
2371                        }
2372                    }
2373                    result
2374                };
2375                let mut items = ::std::vec::Vec::new();
2376                for child in non_field_children {
2377                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
2378                        <DictionaryChildren as ::treesitter_types::FromNode>::from_node(child, src)
2379                    })?);
2380                }
2381                items
2382            },
2383        })
2384    }
2385}
2386impl ::treesitter_types::Spanned for Dictionary<'_> {
2387    fn span(&self) -> ::treesitter_types::Span {
2388        self.span
2389    }
2390}
2391#[derive(Debug, Clone, PartialEq, Eq)]
2392pub struct DictionaryComprehension<'tree> {
2393    pub span: ::treesitter_types::Span,
2394    pub body: Pair<'tree>,
2395    pub children: ::std::vec::Vec<DictionaryComprehensionChildren<'tree>>,
2396}
2397impl<'tree> ::treesitter_types::FromNode<'tree> for DictionaryComprehension<'tree> {
2398    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
2399    fn from_node(
2400        node: ::treesitter_types::tree_sitter::Node<'tree>,
2401        src: &'tree [u8],
2402    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
2403        debug_assert_eq!(node.kind(), "dictionary_comprehension");
2404        Ok(Self {
2405            span: ::treesitter_types::Span::from(node),
2406            body: {
2407                let child = node
2408                    .child_by_field_name("body")
2409                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("body", node))?;
2410                ::treesitter_types::runtime::maybe_grow_stack(|| {
2411                    <Pair as ::treesitter_types::FromNode>::from_node(child, src)
2412                })?
2413            },
2414            children: {
2415                #[allow(clippy::suspicious_else_formatting)]
2416                let non_field_children = {
2417                    let mut cursor = node.walk();
2418                    let mut result = ::std::vec::Vec::new();
2419                    if cursor.goto_first_child() {
2420                        loop {
2421                            if cursor.field_name().is_none()
2422                                && cursor.node().is_named()
2423                                && !cursor.node().is_extra()
2424                            {
2425                                result.push(cursor.node());
2426                            }
2427                            if !cursor.goto_next_sibling() {
2428                                break;
2429                            }
2430                        }
2431                    }
2432                    result
2433                };
2434                let mut items = ::std::vec::Vec::new();
2435                for child in non_field_children {
2436                    items
2437                        .push(
2438                            ::treesitter_types::runtime::maybe_grow_stack(|| <DictionaryComprehensionChildren as ::treesitter_types::FromNode>::from_node(
2439                                child,
2440                                src,
2441                            ))?,
2442                        );
2443                }
2444                items
2445            },
2446        })
2447    }
2448}
2449impl ::treesitter_types::Spanned for DictionaryComprehension<'_> {
2450    fn span(&self) -> ::treesitter_types::Span {
2451        self.span
2452    }
2453}
2454#[derive(Debug, Clone, PartialEq, Eq)]
2455pub struct DictionarySplat<'tree> {
2456    pub span: ::treesitter_types::Span,
2457    pub children: Expression<'tree>,
2458}
2459impl<'tree> ::treesitter_types::FromNode<'tree> for DictionarySplat<'tree> {
2460    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
2461    fn from_node(
2462        node: ::treesitter_types::tree_sitter::Node<'tree>,
2463        src: &'tree [u8],
2464    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
2465        debug_assert_eq!(node.kind(), "dictionary_splat");
2466        Ok(Self {
2467            span: ::treesitter_types::Span::from(node),
2468            children: {
2469                #[allow(clippy::suspicious_else_formatting)]
2470                let non_field_children = {
2471                    let mut cursor = node.walk();
2472                    let mut result = ::std::vec::Vec::new();
2473                    if cursor.goto_first_child() {
2474                        loop {
2475                            if cursor.field_name().is_none()
2476                                && cursor.node().is_named()
2477                                && !cursor.node().is_extra()
2478                            {
2479                                result.push(cursor.node());
2480                            }
2481                            if !cursor.goto_next_sibling() {
2482                                break;
2483                            }
2484                        }
2485                    }
2486                    result
2487                };
2488                let child = if let Some(&c) = non_field_children.first() {
2489                    c
2490                } else {
2491                    let mut fallback_cursor = node.walk();
2492                    let mut fallback_child = None;
2493                    if fallback_cursor.goto_first_child() {
2494                        loop {
2495                            if fallback_cursor.field_name().is_none()
2496                                && !fallback_cursor.node().is_extra()
2497                            {
2498                                let candidate = fallback_cursor.node();
2499                                #[allow(clippy::needless_question_mark)]
2500                                if (|| -> ::core::result::Result<
2501                                    _,
2502                                    ::treesitter_types::ParseError,
2503                                > {
2504                                    let child = candidate;
2505                                    Ok(
2506                                        ::treesitter_types::runtime::maybe_grow_stack(|| <Expression as ::treesitter_types::FromNode>::from_node(
2507                                            child,
2508                                            src,
2509                                        ))?,
2510                                    )
2511                                })()
2512                                    .is_ok()
2513                                {
2514                                    fallback_child = Some(candidate);
2515                                    break;
2516                                }
2517                            }
2518                            if !fallback_cursor.goto_next_sibling() {
2519                                break;
2520                            }
2521                        }
2522                    }
2523                    if fallback_child.is_none() {
2524                        let mut cursor2 = node.walk();
2525                        if cursor2.goto_first_child() {
2526                            loop {
2527                                if cursor2.node().is_named() && !cursor2.node().is_extra() {
2528                                    let candidate = cursor2.node();
2529                                    #[allow(clippy::needless_question_mark)]
2530                                    if (|| -> ::core::result::Result<
2531                                        _,
2532                                        ::treesitter_types::ParseError,
2533                                    > {
2534                                        let child = candidate;
2535                                        Ok(
2536                                            ::treesitter_types::runtime::maybe_grow_stack(|| <Expression as ::treesitter_types::FromNode>::from_node(
2537                                                child,
2538                                                src,
2539                                            ))?,
2540                                        )
2541                                    })()
2542                                        .is_ok()
2543                                    {
2544                                        fallback_child = Some(candidate);
2545                                        break;
2546                                    }
2547                                }
2548                                if !cursor2.goto_next_sibling() {
2549                                    break;
2550                                }
2551                            }
2552                        }
2553                    }
2554                    fallback_child.ok_or_else(|| {
2555                        ::treesitter_types::ParseError::missing_field("children", node)
2556                    })?
2557                };
2558                ::treesitter_types::runtime::maybe_grow_stack(|| {
2559                    <Expression as ::treesitter_types::FromNode>::from_node(child, src)
2560                })?
2561            },
2562        })
2563    }
2564}
2565impl ::treesitter_types::Spanned for DictionarySplat<'_> {
2566    fn span(&self) -> ::treesitter_types::Span {
2567        self.span
2568    }
2569}
2570#[derive(Debug, Clone, PartialEq, Eq)]
2571pub struct DictionarySplatPattern<'tree> {
2572    pub span: ::treesitter_types::Span,
2573    pub children: DictionarySplatPatternChildren<'tree>,
2574}
2575impl<'tree> ::treesitter_types::FromNode<'tree> for DictionarySplatPattern<'tree> {
2576    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
2577    fn from_node(
2578        node: ::treesitter_types::tree_sitter::Node<'tree>,
2579        src: &'tree [u8],
2580    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
2581        debug_assert_eq!(node.kind(), "dictionary_splat_pattern");
2582        Ok(Self {
2583            span: ::treesitter_types::Span::from(node),
2584            children: {
2585                #[allow(clippy::suspicious_else_formatting)]
2586                let non_field_children = {
2587                    let mut cursor = node.walk();
2588                    let mut result = ::std::vec::Vec::new();
2589                    if cursor.goto_first_child() {
2590                        loop {
2591                            if cursor.field_name().is_none()
2592                                && cursor.node().is_named()
2593                                && !cursor.node().is_extra()
2594                            {
2595                                result.push(cursor.node());
2596                            }
2597                            if !cursor.goto_next_sibling() {
2598                                break;
2599                            }
2600                        }
2601                    }
2602                    result
2603                };
2604                let child = if let Some(&c) = non_field_children.first() {
2605                    c
2606                } else {
2607                    let mut fallback_cursor = node.walk();
2608                    let mut fallback_child = None;
2609                    if fallback_cursor.goto_first_child() {
2610                        loop {
2611                            if fallback_cursor.field_name().is_none()
2612                                && !fallback_cursor.node().is_extra()
2613                            {
2614                                let candidate = fallback_cursor.node();
2615                                #[allow(clippy::needless_question_mark)]
2616                                if (|| -> ::core::result::Result<
2617                                    _,
2618                                    ::treesitter_types::ParseError,
2619                                > {
2620                                    let child = candidate;
2621                                    Ok(
2622                                        ::treesitter_types::runtime::maybe_grow_stack(|| <DictionarySplatPatternChildren as ::treesitter_types::FromNode>::from_node(
2623                                            child,
2624                                            src,
2625                                        ))?,
2626                                    )
2627                                })()
2628                                    .is_ok()
2629                                {
2630                                    fallback_child = Some(candidate);
2631                                    break;
2632                                }
2633                            }
2634                            if !fallback_cursor.goto_next_sibling() {
2635                                break;
2636                            }
2637                        }
2638                    }
2639                    if fallback_child.is_none() {
2640                        let mut cursor2 = node.walk();
2641                        if cursor2.goto_first_child() {
2642                            loop {
2643                                if cursor2.node().is_named() && !cursor2.node().is_extra() {
2644                                    let candidate = cursor2.node();
2645                                    #[allow(clippy::needless_question_mark)]
2646                                    if (|| -> ::core::result::Result<
2647                                        _,
2648                                        ::treesitter_types::ParseError,
2649                                    > {
2650                                        let child = candidate;
2651                                        Ok(
2652                                            ::treesitter_types::runtime::maybe_grow_stack(|| <DictionarySplatPatternChildren as ::treesitter_types::FromNode>::from_node(
2653                                                child,
2654                                                src,
2655                                            ))?,
2656                                        )
2657                                    })()
2658                                        .is_ok()
2659                                    {
2660                                        fallback_child = Some(candidate);
2661                                        break;
2662                                    }
2663                                }
2664                                if !cursor2.goto_next_sibling() {
2665                                    break;
2666                                }
2667                            }
2668                        }
2669                    }
2670                    fallback_child.ok_or_else(|| {
2671                        ::treesitter_types::ParseError::missing_field("children", node)
2672                    })?
2673                };
2674                ::treesitter_types::runtime::maybe_grow_stack(|| {
2675                    <DictionarySplatPatternChildren as ::treesitter_types::FromNode>::from_node(
2676                        child, src,
2677                    )
2678                })?
2679            },
2680        })
2681    }
2682}
2683impl ::treesitter_types::Spanned for DictionarySplatPattern<'_> {
2684    fn span(&self) -> ::treesitter_types::Span {
2685        self.span
2686    }
2687}
2688#[derive(Debug, Clone, PartialEq, Eq)]
2689pub struct DottedName<'tree> {
2690    pub span: ::treesitter_types::Span,
2691    pub children: ::std::vec::Vec<Identifier<'tree>>,
2692}
2693impl<'tree> ::treesitter_types::FromNode<'tree> for DottedName<'tree> {
2694    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
2695    fn from_node(
2696        node: ::treesitter_types::tree_sitter::Node<'tree>,
2697        src: &'tree [u8],
2698    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
2699        debug_assert_eq!(node.kind(), "dotted_name");
2700        Ok(Self {
2701            span: ::treesitter_types::Span::from(node),
2702            children: {
2703                #[allow(clippy::suspicious_else_formatting)]
2704                let non_field_children = {
2705                    let mut cursor = node.walk();
2706                    let mut result = ::std::vec::Vec::new();
2707                    if cursor.goto_first_child() {
2708                        loop {
2709                            if cursor.field_name().is_none()
2710                                && cursor.node().is_named()
2711                                && !cursor.node().is_extra()
2712                            {
2713                                result.push(cursor.node());
2714                            }
2715                            if !cursor.goto_next_sibling() {
2716                                break;
2717                            }
2718                        }
2719                    }
2720                    result
2721                };
2722                let mut items = ::std::vec::Vec::new();
2723                for child in non_field_children {
2724                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
2725                        <Identifier as ::treesitter_types::FromNode>::from_node(child, src)
2726                    })?);
2727                }
2728                items
2729            },
2730        })
2731    }
2732}
2733impl ::treesitter_types::Spanned for DottedName<'_> {
2734    fn span(&self) -> ::treesitter_types::Span {
2735        self.span
2736    }
2737}
2738#[derive(Debug, Clone, PartialEq, Eq)]
2739pub struct ElifClause<'tree> {
2740    pub span: ::treesitter_types::Span,
2741    pub condition: Expression<'tree>,
2742    pub consequence: Block<'tree>,
2743}
2744impl<'tree> ::treesitter_types::FromNode<'tree> for ElifClause<'tree> {
2745    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
2746    fn from_node(
2747        node: ::treesitter_types::tree_sitter::Node<'tree>,
2748        src: &'tree [u8],
2749    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
2750        debug_assert_eq!(node.kind(), "elif_clause");
2751        Ok(Self {
2752            span: ::treesitter_types::Span::from(node),
2753            condition: {
2754                let child = node.child_by_field_name("condition").ok_or_else(|| {
2755                    ::treesitter_types::ParseError::missing_field("condition", node)
2756                })?;
2757                ::treesitter_types::runtime::maybe_grow_stack(|| {
2758                    <Expression as ::treesitter_types::FromNode>::from_node(child, src)
2759                })?
2760            },
2761            consequence: {
2762                let child = node.child_by_field_name("consequence").ok_or_else(|| {
2763                    ::treesitter_types::ParseError::missing_field("consequence", node)
2764                })?;
2765                ::treesitter_types::runtime::maybe_grow_stack(|| {
2766                    <Block as ::treesitter_types::FromNode>::from_node(child, src)
2767                })?
2768            },
2769        })
2770    }
2771}
2772impl ::treesitter_types::Spanned for ElifClause<'_> {
2773    fn span(&self) -> ::treesitter_types::Span {
2774        self.span
2775    }
2776}
2777#[derive(Debug, Clone, PartialEq, Eq)]
2778pub struct ElseClause<'tree> {
2779    pub span: ::treesitter_types::Span,
2780    pub body: Block<'tree>,
2781}
2782impl<'tree> ::treesitter_types::FromNode<'tree> for ElseClause<'tree> {
2783    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
2784    fn from_node(
2785        node: ::treesitter_types::tree_sitter::Node<'tree>,
2786        src: &'tree [u8],
2787    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
2788        debug_assert_eq!(node.kind(), "else_clause");
2789        Ok(Self {
2790            span: ::treesitter_types::Span::from(node),
2791            body: {
2792                let child = node
2793                    .child_by_field_name("body")
2794                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("body", node))?;
2795                ::treesitter_types::runtime::maybe_grow_stack(|| {
2796                    <Block as ::treesitter_types::FromNode>::from_node(child, src)
2797                })?
2798            },
2799        })
2800    }
2801}
2802impl ::treesitter_types::Spanned for ElseClause<'_> {
2803    fn span(&self) -> ::treesitter_types::Span {
2804        self.span
2805    }
2806}
2807#[derive(Debug, Clone, PartialEq, Eq)]
2808pub struct ExceptClause<'tree> {
2809    pub span: ::treesitter_types::Span,
2810    pub alias: ::core::option::Option<Expression<'tree>>,
2811    pub value: ::std::vec::Vec<Expression<'tree>>,
2812    pub children: Block<'tree>,
2813}
2814impl<'tree> ::treesitter_types::FromNode<'tree> for ExceptClause<'tree> {
2815    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
2816    fn from_node(
2817        node: ::treesitter_types::tree_sitter::Node<'tree>,
2818        src: &'tree [u8],
2819    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
2820        debug_assert_eq!(node.kind(), "except_clause");
2821        Ok(Self {
2822            span: ::treesitter_types::Span::from(node),
2823            alias: match node.child_by_field_name("alias") {
2824                Some(child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
2825                    <Expression as ::treesitter_types::FromNode>::from_node(child, src)
2826                })?),
2827                None => None,
2828            },
2829            value: {
2830                let mut cursor = node.walk();
2831                let mut items = ::std::vec::Vec::new();
2832                for child in node.children_by_field_name("value", &mut cursor) {
2833                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
2834                        <Expression as ::treesitter_types::FromNode>::from_node(child, src)
2835                    })?);
2836                }
2837                items
2838            },
2839            children: {
2840                #[allow(clippy::suspicious_else_formatting)]
2841                let non_field_children = {
2842                    let mut cursor = node.walk();
2843                    let mut result = ::std::vec::Vec::new();
2844                    if cursor.goto_first_child() {
2845                        loop {
2846                            if cursor.field_name().is_none()
2847                                && cursor.node().is_named()
2848                                && !cursor.node().is_extra()
2849                            {
2850                                result.push(cursor.node());
2851                            }
2852                            if !cursor.goto_next_sibling() {
2853                                break;
2854                            }
2855                        }
2856                    }
2857                    result
2858                };
2859                let child = if let Some(&c) = non_field_children.first() {
2860                    c
2861                } else {
2862                    let mut fallback_cursor = node.walk();
2863                    let mut fallback_child = None;
2864                    if fallback_cursor.goto_first_child() {
2865                        loop {
2866                            if fallback_cursor.field_name().is_none()
2867                                && !fallback_cursor.node().is_extra()
2868                            {
2869                                let candidate = fallback_cursor.node();
2870                                #[allow(clippy::needless_question_mark)]
2871                                if (|| -> ::core::result::Result<
2872                                    _,
2873                                    ::treesitter_types::ParseError,
2874                                > {
2875                                    let child = candidate;
2876                                    Ok(
2877                                        ::treesitter_types::runtime::maybe_grow_stack(|| <Block as ::treesitter_types::FromNode>::from_node(
2878                                            child,
2879                                            src,
2880                                        ))?,
2881                                    )
2882                                })()
2883                                    .is_ok()
2884                                {
2885                                    fallback_child = Some(candidate);
2886                                    break;
2887                                }
2888                            }
2889                            if !fallback_cursor.goto_next_sibling() {
2890                                break;
2891                            }
2892                        }
2893                    }
2894                    if fallback_child.is_none() {
2895                        let mut cursor2 = node.walk();
2896                        if cursor2.goto_first_child() {
2897                            loop {
2898                                if cursor2.node().is_named() && !cursor2.node().is_extra() {
2899                                    let candidate = cursor2.node();
2900                                    #[allow(clippy::needless_question_mark)]
2901                                    if (|| -> ::core::result::Result<
2902                                        _,
2903                                        ::treesitter_types::ParseError,
2904                                    > {
2905                                        let child = candidate;
2906                                        Ok(
2907                                            ::treesitter_types::runtime::maybe_grow_stack(|| <Block as ::treesitter_types::FromNode>::from_node(
2908                                                child,
2909                                                src,
2910                                            ))?,
2911                                        )
2912                                    })()
2913                                        .is_ok()
2914                                    {
2915                                        fallback_child = Some(candidate);
2916                                        break;
2917                                    }
2918                                }
2919                                if !cursor2.goto_next_sibling() {
2920                                    break;
2921                                }
2922                            }
2923                        }
2924                    }
2925                    fallback_child.ok_or_else(|| {
2926                        ::treesitter_types::ParseError::missing_field("children", node)
2927                    })?
2928                };
2929                ::treesitter_types::runtime::maybe_grow_stack(|| {
2930                    <Block as ::treesitter_types::FromNode>::from_node(child, src)
2931                })?
2932            },
2933        })
2934    }
2935}
2936impl ::treesitter_types::Spanned for ExceptClause<'_> {
2937    fn span(&self) -> ::treesitter_types::Span {
2938        self.span
2939    }
2940}
2941#[derive(Debug, Clone, PartialEq, Eq)]
2942pub struct ExecStatement<'tree> {
2943    pub span: ::treesitter_types::Span,
2944    pub code: ExecStatementCode<'tree>,
2945    pub children: ::std::vec::Vec<Expression<'tree>>,
2946}
2947impl<'tree> ::treesitter_types::FromNode<'tree> for ExecStatement<'tree> {
2948    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
2949    fn from_node(
2950        node: ::treesitter_types::tree_sitter::Node<'tree>,
2951        src: &'tree [u8],
2952    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
2953        debug_assert_eq!(node.kind(), "exec_statement");
2954        Ok(Self {
2955            span: ::treesitter_types::Span::from(node),
2956            code: {
2957                let child = node
2958                    .child_by_field_name("code")
2959                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("code", node))?;
2960                ::treesitter_types::runtime::maybe_grow_stack(|| {
2961                    <ExecStatementCode as ::treesitter_types::FromNode>::from_node(child, src)
2962                })?
2963            },
2964            children: {
2965                #[allow(clippy::suspicious_else_formatting)]
2966                let non_field_children = {
2967                    let mut cursor = node.walk();
2968                    let mut result = ::std::vec::Vec::new();
2969                    if cursor.goto_first_child() {
2970                        loop {
2971                            if cursor.field_name().is_none()
2972                                && cursor.node().is_named()
2973                                && !cursor.node().is_extra()
2974                            {
2975                                result.push(cursor.node());
2976                            }
2977                            if !cursor.goto_next_sibling() {
2978                                break;
2979                            }
2980                        }
2981                    }
2982                    result
2983                };
2984                let mut items = ::std::vec::Vec::new();
2985                for child in non_field_children {
2986                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
2987                        <Expression as ::treesitter_types::FromNode>::from_node(child, src)
2988                    })?);
2989                }
2990                items
2991            },
2992        })
2993    }
2994}
2995impl ::treesitter_types::Spanned for ExecStatement<'_> {
2996    fn span(&self) -> ::treesitter_types::Span {
2997        self.span
2998    }
2999}
3000#[derive(Debug, Clone, PartialEq, Eq)]
3001pub struct ExpressionList<'tree> {
3002    pub span: ::treesitter_types::Span,
3003    pub children: ::std::vec::Vec<Expression<'tree>>,
3004}
3005impl<'tree> ::treesitter_types::FromNode<'tree> for ExpressionList<'tree> {
3006    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
3007    fn from_node(
3008        node: ::treesitter_types::tree_sitter::Node<'tree>,
3009        src: &'tree [u8],
3010    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
3011        debug_assert_eq!(node.kind(), "expression_list");
3012        Ok(Self {
3013            span: ::treesitter_types::Span::from(node),
3014            children: {
3015                #[allow(clippy::suspicious_else_formatting)]
3016                let non_field_children = {
3017                    let mut cursor = node.walk();
3018                    let mut result = ::std::vec::Vec::new();
3019                    if cursor.goto_first_child() {
3020                        loop {
3021                            if cursor.field_name().is_none()
3022                                && cursor.node().is_named()
3023                                && !cursor.node().is_extra()
3024                            {
3025                                result.push(cursor.node());
3026                            }
3027                            if !cursor.goto_next_sibling() {
3028                                break;
3029                            }
3030                        }
3031                    }
3032                    result
3033                };
3034                let mut items = ::std::vec::Vec::new();
3035                for child in non_field_children {
3036                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
3037                        <Expression as ::treesitter_types::FromNode>::from_node(child, src)
3038                    })?);
3039                }
3040                items
3041            },
3042        })
3043    }
3044}
3045impl ::treesitter_types::Spanned for ExpressionList<'_> {
3046    fn span(&self) -> ::treesitter_types::Span {
3047        self.span
3048    }
3049}
3050#[derive(Debug, Clone, PartialEq, Eq)]
3051pub struct ExpressionStatement<'tree> {
3052    pub span: ::treesitter_types::Span,
3053    pub children: ::std::vec::Vec<ExpressionStatementChildren<'tree>>,
3054}
3055impl<'tree> ::treesitter_types::FromNode<'tree> for ExpressionStatement<'tree> {
3056    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
3057    fn from_node(
3058        node: ::treesitter_types::tree_sitter::Node<'tree>,
3059        src: &'tree [u8],
3060    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
3061        debug_assert_eq!(node.kind(), "expression_statement");
3062        Ok(Self {
3063            span: ::treesitter_types::Span::from(node),
3064            children: {
3065                #[allow(clippy::suspicious_else_formatting)]
3066                let non_field_children = {
3067                    let mut cursor = node.walk();
3068                    let mut result = ::std::vec::Vec::new();
3069                    if cursor.goto_first_child() {
3070                        loop {
3071                            if cursor.field_name().is_none()
3072                                && cursor.node().is_named()
3073                                && !cursor.node().is_extra()
3074                            {
3075                                result.push(cursor.node());
3076                            }
3077                            if !cursor.goto_next_sibling() {
3078                                break;
3079                            }
3080                        }
3081                    }
3082                    result
3083                };
3084                let mut items = ::std::vec::Vec::new();
3085                for child in non_field_children {
3086                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
3087                        <ExpressionStatementChildren as ::treesitter_types::FromNode>::from_node(
3088                            child, src,
3089                        )
3090                    })?);
3091                }
3092                items
3093            },
3094        })
3095    }
3096}
3097impl ::treesitter_types::Spanned for ExpressionStatement<'_> {
3098    fn span(&self) -> ::treesitter_types::Span {
3099        self.span
3100    }
3101}
3102#[derive(Debug, Clone, PartialEq, Eq)]
3103pub struct FinallyClause<'tree> {
3104    pub span: ::treesitter_types::Span,
3105    pub children: Block<'tree>,
3106}
3107impl<'tree> ::treesitter_types::FromNode<'tree> for FinallyClause<'tree> {
3108    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
3109    fn from_node(
3110        node: ::treesitter_types::tree_sitter::Node<'tree>,
3111        src: &'tree [u8],
3112    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
3113        debug_assert_eq!(node.kind(), "finally_clause");
3114        Ok(Self {
3115            span: ::treesitter_types::Span::from(node),
3116            children: {
3117                #[allow(clippy::suspicious_else_formatting)]
3118                let non_field_children = {
3119                    let mut cursor = node.walk();
3120                    let mut result = ::std::vec::Vec::new();
3121                    if cursor.goto_first_child() {
3122                        loop {
3123                            if cursor.field_name().is_none()
3124                                && cursor.node().is_named()
3125                                && !cursor.node().is_extra()
3126                            {
3127                                result.push(cursor.node());
3128                            }
3129                            if !cursor.goto_next_sibling() {
3130                                break;
3131                            }
3132                        }
3133                    }
3134                    result
3135                };
3136                let child = if let Some(&c) = non_field_children.first() {
3137                    c
3138                } else {
3139                    let mut fallback_cursor = node.walk();
3140                    let mut fallback_child = None;
3141                    if fallback_cursor.goto_first_child() {
3142                        loop {
3143                            if fallback_cursor.field_name().is_none()
3144                                && !fallback_cursor.node().is_extra()
3145                            {
3146                                let candidate = fallback_cursor.node();
3147                                #[allow(clippy::needless_question_mark)]
3148                                if (|| -> ::core::result::Result<
3149                                    _,
3150                                    ::treesitter_types::ParseError,
3151                                > {
3152                                    let child = candidate;
3153                                    Ok(
3154                                        ::treesitter_types::runtime::maybe_grow_stack(|| <Block as ::treesitter_types::FromNode>::from_node(
3155                                            child,
3156                                            src,
3157                                        ))?,
3158                                    )
3159                                })()
3160                                    .is_ok()
3161                                {
3162                                    fallback_child = Some(candidate);
3163                                    break;
3164                                }
3165                            }
3166                            if !fallback_cursor.goto_next_sibling() {
3167                                break;
3168                            }
3169                        }
3170                    }
3171                    if fallback_child.is_none() {
3172                        let mut cursor2 = node.walk();
3173                        if cursor2.goto_first_child() {
3174                            loop {
3175                                if cursor2.node().is_named() && !cursor2.node().is_extra() {
3176                                    let candidate = cursor2.node();
3177                                    #[allow(clippy::needless_question_mark)]
3178                                    if (|| -> ::core::result::Result<
3179                                        _,
3180                                        ::treesitter_types::ParseError,
3181                                    > {
3182                                        let child = candidate;
3183                                        Ok(
3184                                            ::treesitter_types::runtime::maybe_grow_stack(|| <Block as ::treesitter_types::FromNode>::from_node(
3185                                                child,
3186                                                src,
3187                                            ))?,
3188                                        )
3189                                    })()
3190                                        .is_ok()
3191                                    {
3192                                        fallback_child = Some(candidate);
3193                                        break;
3194                                    }
3195                                }
3196                                if !cursor2.goto_next_sibling() {
3197                                    break;
3198                                }
3199                            }
3200                        }
3201                    }
3202                    fallback_child.ok_or_else(|| {
3203                        ::treesitter_types::ParseError::missing_field("children", node)
3204                    })?
3205                };
3206                ::treesitter_types::runtime::maybe_grow_stack(|| {
3207                    <Block as ::treesitter_types::FromNode>::from_node(child, src)
3208                })?
3209            },
3210        })
3211    }
3212}
3213impl ::treesitter_types::Spanned for FinallyClause<'_> {
3214    fn span(&self) -> ::treesitter_types::Span {
3215        self.span
3216    }
3217}
3218#[derive(Debug, Clone, PartialEq, Eq)]
3219pub struct ForInClause<'tree> {
3220    pub span: ::treesitter_types::Span,
3221    pub left: ForInClauseLeft<'tree>,
3222    pub right: ::std::vec::Vec<ForInClauseRight<'tree>>,
3223}
3224impl<'tree> ::treesitter_types::FromNode<'tree> for ForInClause<'tree> {
3225    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
3226    fn from_node(
3227        node: ::treesitter_types::tree_sitter::Node<'tree>,
3228        src: &'tree [u8],
3229    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
3230        debug_assert_eq!(node.kind(), "for_in_clause");
3231        Ok(Self {
3232            span: ::treesitter_types::Span::from(node),
3233            left: {
3234                let child = node
3235                    .child_by_field_name("left")
3236                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("left", node))?;
3237                ::treesitter_types::runtime::maybe_grow_stack(|| {
3238                    <ForInClauseLeft as ::treesitter_types::FromNode>::from_node(child, src)
3239                })?
3240            },
3241            right: {
3242                let mut cursor = node.walk();
3243                let mut items = ::std::vec::Vec::new();
3244                for child in node.children_by_field_name("right", &mut cursor) {
3245                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
3246                        <ForInClauseRight as ::treesitter_types::FromNode>::from_node(child, src)
3247                    })?);
3248                }
3249                items
3250            },
3251        })
3252    }
3253}
3254impl ::treesitter_types::Spanned for ForInClause<'_> {
3255    fn span(&self) -> ::treesitter_types::Span {
3256        self.span
3257    }
3258}
3259#[derive(Debug, Clone, PartialEq, Eq)]
3260pub struct ForStatement<'tree> {
3261    pub span: ::treesitter_types::Span,
3262    pub alternative: ::core::option::Option<ElseClause<'tree>>,
3263    pub body: Block<'tree>,
3264    pub left: ForStatementLeft<'tree>,
3265    pub right: ForStatementRight<'tree>,
3266}
3267impl<'tree> ::treesitter_types::FromNode<'tree> for ForStatement<'tree> {
3268    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
3269    fn from_node(
3270        node: ::treesitter_types::tree_sitter::Node<'tree>,
3271        src: &'tree [u8],
3272    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
3273        debug_assert_eq!(node.kind(), "for_statement");
3274        Ok(Self {
3275            span: ::treesitter_types::Span::from(node),
3276            alternative: match node.child_by_field_name("alternative") {
3277                Some(child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
3278                    <ElseClause as ::treesitter_types::FromNode>::from_node(child, src)
3279                })?),
3280                None => None,
3281            },
3282            body: {
3283                let child = node
3284                    .child_by_field_name("body")
3285                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("body", node))?;
3286                ::treesitter_types::runtime::maybe_grow_stack(|| {
3287                    <Block as ::treesitter_types::FromNode>::from_node(child, src)
3288                })?
3289            },
3290            left: {
3291                let child = node
3292                    .child_by_field_name("left")
3293                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("left", node))?;
3294                ::treesitter_types::runtime::maybe_grow_stack(|| {
3295                    <ForStatementLeft as ::treesitter_types::FromNode>::from_node(child, src)
3296                })?
3297            },
3298            right: {
3299                let child = node
3300                    .child_by_field_name("right")
3301                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("right", node))?;
3302                ::treesitter_types::runtime::maybe_grow_stack(|| {
3303                    <ForStatementRight as ::treesitter_types::FromNode>::from_node(child, src)
3304                })?
3305            },
3306        })
3307    }
3308}
3309impl ::treesitter_types::Spanned for ForStatement<'_> {
3310    fn span(&self) -> ::treesitter_types::Span {
3311        self.span
3312    }
3313}
3314#[derive(Debug, Clone, PartialEq, Eq)]
3315pub struct FormatExpression<'tree> {
3316    pub span: ::treesitter_types::Span,
3317    pub expression: FormatExpressionExpression<'tree>,
3318    pub format_specifier: ::core::option::Option<FormatSpecifier<'tree>>,
3319    pub type_conversion: ::core::option::Option<TypeConversion<'tree>>,
3320}
3321impl<'tree> ::treesitter_types::FromNode<'tree> for FormatExpression<'tree> {
3322    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
3323    fn from_node(
3324        node: ::treesitter_types::tree_sitter::Node<'tree>,
3325        src: &'tree [u8],
3326    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
3327        debug_assert_eq!(node.kind(), "format_expression");
3328        Ok(Self {
3329            span: ::treesitter_types::Span::from(node),
3330            expression: {
3331                let child = node.child_by_field_name("expression").ok_or_else(|| {
3332                    ::treesitter_types::ParseError::missing_field("expression", node)
3333                })?;
3334                ::treesitter_types::runtime::maybe_grow_stack(|| {
3335                    <FormatExpressionExpression as ::treesitter_types::FromNode>::from_node(
3336                        child, src,
3337                    )
3338                })?
3339            },
3340            format_specifier: match node.child_by_field_name("format_specifier") {
3341                Some(child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
3342                    <FormatSpecifier as ::treesitter_types::FromNode>::from_node(child, src)
3343                })?),
3344                None => None,
3345            },
3346            type_conversion: match node.child_by_field_name("type_conversion") {
3347                Some(child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
3348                    <TypeConversion as ::treesitter_types::FromNode>::from_node(child, src)
3349                })?),
3350                None => None,
3351            },
3352        })
3353    }
3354}
3355impl ::treesitter_types::Spanned for FormatExpression<'_> {
3356    fn span(&self) -> ::treesitter_types::Span {
3357        self.span
3358    }
3359}
3360#[derive(Debug, Clone, PartialEq, Eq)]
3361pub struct FormatSpecifier<'tree> {
3362    pub span: ::treesitter_types::Span,
3363    pub children: ::std::vec::Vec<FormatExpression<'tree>>,
3364}
3365impl<'tree> ::treesitter_types::FromNode<'tree> for FormatSpecifier<'tree> {
3366    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
3367    fn from_node(
3368        node: ::treesitter_types::tree_sitter::Node<'tree>,
3369        src: &'tree [u8],
3370    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
3371        debug_assert_eq!(node.kind(), "format_specifier");
3372        Ok(Self {
3373            span: ::treesitter_types::Span::from(node),
3374            children: {
3375                #[allow(clippy::suspicious_else_formatting)]
3376                let non_field_children = {
3377                    let mut cursor = node.walk();
3378                    let mut result = ::std::vec::Vec::new();
3379                    if cursor.goto_first_child() {
3380                        loop {
3381                            if cursor.field_name().is_none()
3382                                && cursor.node().is_named()
3383                                && !cursor.node().is_extra()
3384                            {
3385                                result.push(cursor.node());
3386                            }
3387                            if !cursor.goto_next_sibling() {
3388                                break;
3389                            }
3390                        }
3391                    }
3392                    result
3393                };
3394                let mut items = ::std::vec::Vec::new();
3395                for child in non_field_children {
3396                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
3397                        <FormatExpression as ::treesitter_types::FromNode>::from_node(child, src)
3398                    })?);
3399                }
3400                items
3401            },
3402        })
3403    }
3404}
3405impl ::treesitter_types::Spanned for FormatSpecifier<'_> {
3406    fn span(&self) -> ::treesitter_types::Span {
3407        self.span
3408    }
3409}
3410#[derive(Debug, Clone, PartialEq, Eq)]
3411pub struct FunctionDefinition<'tree> {
3412    pub span: ::treesitter_types::Span,
3413    pub body: Block<'tree>,
3414    pub name: Identifier<'tree>,
3415    pub parameters: Parameters<'tree>,
3416    pub return_type: ::core::option::Option<Type<'tree>>,
3417    pub type_parameters: ::core::option::Option<TypeParameter<'tree>>,
3418}
3419impl<'tree> ::treesitter_types::FromNode<'tree> for FunctionDefinition<'tree> {
3420    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
3421    fn from_node(
3422        node: ::treesitter_types::tree_sitter::Node<'tree>,
3423        src: &'tree [u8],
3424    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
3425        debug_assert_eq!(node.kind(), "function_definition");
3426        Ok(Self {
3427            span: ::treesitter_types::Span::from(node),
3428            body: {
3429                let child = node
3430                    .child_by_field_name("body")
3431                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("body", node))?;
3432                ::treesitter_types::runtime::maybe_grow_stack(|| {
3433                    <Block as ::treesitter_types::FromNode>::from_node(child, src)
3434                })?
3435            },
3436            name: {
3437                let child = node
3438                    .child_by_field_name("name")
3439                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("name", node))?;
3440                ::treesitter_types::runtime::maybe_grow_stack(|| {
3441                    <Identifier as ::treesitter_types::FromNode>::from_node(child, src)
3442                })?
3443            },
3444            parameters: {
3445                let child = node.child_by_field_name("parameters").ok_or_else(|| {
3446                    ::treesitter_types::ParseError::missing_field("parameters", node)
3447                })?;
3448                ::treesitter_types::runtime::maybe_grow_stack(|| {
3449                    <Parameters as ::treesitter_types::FromNode>::from_node(child, src)
3450                })?
3451            },
3452            return_type: match node.child_by_field_name("return_type") {
3453                Some(child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
3454                    <Type as ::treesitter_types::FromNode>::from_node(child, src)
3455                })?),
3456                None => None,
3457            },
3458            type_parameters: match node.child_by_field_name("type_parameters") {
3459                Some(child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
3460                    <TypeParameter as ::treesitter_types::FromNode>::from_node(child, src)
3461                })?),
3462                None => None,
3463            },
3464        })
3465    }
3466}
3467impl ::treesitter_types::Spanned for FunctionDefinition<'_> {
3468    fn span(&self) -> ::treesitter_types::Span {
3469        self.span
3470    }
3471}
3472#[derive(Debug, Clone, PartialEq, Eq)]
3473pub struct FutureImportStatement<'tree> {
3474    pub span: ::treesitter_types::Span,
3475    pub name: ::std::vec::Vec<FutureImportStatementName<'tree>>,
3476}
3477impl<'tree> ::treesitter_types::FromNode<'tree> for FutureImportStatement<'tree> {
3478    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
3479    fn from_node(
3480        node: ::treesitter_types::tree_sitter::Node<'tree>,
3481        src: &'tree [u8],
3482    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
3483        debug_assert_eq!(node.kind(), "future_import_statement");
3484        Ok(Self {
3485            span: ::treesitter_types::Span::from(node),
3486            name: {
3487                let mut cursor = node.walk();
3488                let mut items = ::std::vec::Vec::new();
3489                for child in node.children_by_field_name("name", &mut cursor) {
3490                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
3491                        <FutureImportStatementName as ::treesitter_types::FromNode>::from_node(
3492                            child, src,
3493                        )
3494                    })?);
3495                }
3496                items
3497            },
3498        })
3499    }
3500}
3501impl ::treesitter_types::Spanned for FutureImportStatement<'_> {
3502    fn span(&self) -> ::treesitter_types::Span {
3503        self.span
3504    }
3505}
3506#[derive(Debug, Clone, PartialEq, Eq)]
3507pub struct GeneratorExpression<'tree> {
3508    pub span: ::treesitter_types::Span,
3509    pub body: Expression<'tree>,
3510    pub children: ::std::vec::Vec<GeneratorExpressionChildren<'tree>>,
3511}
3512impl<'tree> ::treesitter_types::FromNode<'tree> for GeneratorExpression<'tree> {
3513    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
3514    fn from_node(
3515        node: ::treesitter_types::tree_sitter::Node<'tree>,
3516        src: &'tree [u8],
3517    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
3518        debug_assert_eq!(node.kind(), "generator_expression");
3519        Ok(Self {
3520            span: ::treesitter_types::Span::from(node),
3521            body: {
3522                let child = node
3523                    .child_by_field_name("body")
3524                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("body", node))?;
3525                ::treesitter_types::runtime::maybe_grow_stack(|| {
3526                    <Expression as ::treesitter_types::FromNode>::from_node(child, src)
3527                })?
3528            },
3529            children: {
3530                #[allow(clippy::suspicious_else_formatting)]
3531                let non_field_children = {
3532                    let mut cursor = node.walk();
3533                    let mut result = ::std::vec::Vec::new();
3534                    if cursor.goto_first_child() {
3535                        loop {
3536                            if cursor.field_name().is_none()
3537                                && cursor.node().is_named()
3538                                && !cursor.node().is_extra()
3539                            {
3540                                result.push(cursor.node());
3541                            }
3542                            if !cursor.goto_next_sibling() {
3543                                break;
3544                            }
3545                        }
3546                    }
3547                    result
3548                };
3549                let mut items = ::std::vec::Vec::new();
3550                for child in non_field_children {
3551                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
3552                        <GeneratorExpressionChildren as ::treesitter_types::FromNode>::from_node(
3553                            child, src,
3554                        )
3555                    })?);
3556                }
3557                items
3558            },
3559        })
3560    }
3561}
3562impl ::treesitter_types::Spanned for GeneratorExpression<'_> {
3563    fn span(&self) -> ::treesitter_types::Span {
3564        self.span
3565    }
3566}
3567#[derive(Debug, Clone, PartialEq, Eq)]
3568pub struct GenericType<'tree> {
3569    pub span: ::treesitter_types::Span,
3570    pub children: ::std::vec::Vec<GenericTypeChildren<'tree>>,
3571}
3572impl<'tree> ::treesitter_types::FromNode<'tree> for GenericType<'tree> {
3573    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
3574    fn from_node(
3575        node: ::treesitter_types::tree_sitter::Node<'tree>,
3576        src: &'tree [u8],
3577    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
3578        debug_assert_eq!(node.kind(), "generic_type");
3579        Ok(Self {
3580            span: ::treesitter_types::Span::from(node),
3581            children: {
3582                #[allow(clippy::suspicious_else_formatting)]
3583                let non_field_children = {
3584                    let mut cursor = node.walk();
3585                    let mut result = ::std::vec::Vec::new();
3586                    if cursor.goto_first_child() {
3587                        loop {
3588                            if cursor.field_name().is_none()
3589                                && cursor.node().is_named()
3590                                && !cursor.node().is_extra()
3591                            {
3592                                result.push(cursor.node());
3593                            }
3594                            if !cursor.goto_next_sibling() {
3595                                break;
3596                            }
3597                        }
3598                    }
3599                    result
3600                };
3601                let mut items = ::std::vec::Vec::new();
3602                for child in non_field_children {
3603                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
3604                        <GenericTypeChildren as ::treesitter_types::FromNode>::from_node(child, src)
3605                    })?);
3606                }
3607                items
3608            },
3609        })
3610    }
3611}
3612impl ::treesitter_types::Spanned for GenericType<'_> {
3613    fn span(&self) -> ::treesitter_types::Span {
3614        self.span
3615    }
3616}
3617#[derive(Debug, Clone, PartialEq, Eq)]
3618pub struct GlobalStatement<'tree> {
3619    pub span: ::treesitter_types::Span,
3620    pub children: ::std::vec::Vec<Identifier<'tree>>,
3621}
3622impl<'tree> ::treesitter_types::FromNode<'tree> for GlobalStatement<'tree> {
3623    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
3624    fn from_node(
3625        node: ::treesitter_types::tree_sitter::Node<'tree>,
3626        src: &'tree [u8],
3627    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
3628        debug_assert_eq!(node.kind(), "global_statement");
3629        Ok(Self {
3630            span: ::treesitter_types::Span::from(node),
3631            children: {
3632                #[allow(clippy::suspicious_else_formatting)]
3633                let non_field_children = {
3634                    let mut cursor = node.walk();
3635                    let mut result = ::std::vec::Vec::new();
3636                    if cursor.goto_first_child() {
3637                        loop {
3638                            if cursor.field_name().is_none()
3639                                && cursor.node().is_named()
3640                                && !cursor.node().is_extra()
3641                            {
3642                                result.push(cursor.node());
3643                            }
3644                            if !cursor.goto_next_sibling() {
3645                                break;
3646                            }
3647                        }
3648                    }
3649                    result
3650                };
3651                let mut items = ::std::vec::Vec::new();
3652                for child in non_field_children {
3653                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
3654                        <Identifier as ::treesitter_types::FromNode>::from_node(child, src)
3655                    })?);
3656                }
3657                items
3658            },
3659        })
3660    }
3661}
3662impl ::treesitter_types::Spanned for GlobalStatement<'_> {
3663    fn span(&self) -> ::treesitter_types::Span {
3664        self.span
3665    }
3666}
3667#[derive(Debug, Clone, PartialEq, Eq)]
3668pub struct IfClause<'tree> {
3669    pub span: ::treesitter_types::Span,
3670    pub children: Expression<'tree>,
3671}
3672impl<'tree> ::treesitter_types::FromNode<'tree> for IfClause<'tree> {
3673    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
3674    fn from_node(
3675        node: ::treesitter_types::tree_sitter::Node<'tree>,
3676        src: &'tree [u8],
3677    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
3678        debug_assert_eq!(node.kind(), "if_clause");
3679        Ok(Self {
3680            span: ::treesitter_types::Span::from(node),
3681            children: {
3682                #[allow(clippy::suspicious_else_formatting)]
3683                let non_field_children = {
3684                    let mut cursor = node.walk();
3685                    let mut result = ::std::vec::Vec::new();
3686                    if cursor.goto_first_child() {
3687                        loop {
3688                            if cursor.field_name().is_none()
3689                                && cursor.node().is_named()
3690                                && !cursor.node().is_extra()
3691                            {
3692                                result.push(cursor.node());
3693                            }
3694                            if !cursor.goto_next_sibling() {
3695                                break;
3696                            }
3697                        }
3698                    }
3699                    result
3700                };
3701                let child = if let Some(&c) = non_field_children.first() {
3702                    c
3703                } else {
3704                    let mut fallback_cursor = node.walk();
3705                    let mut fallback_child = None;
3706                    if fallback_cursor.goto_first_child() {
3707                        loop {
3708                            if fallback_cursor.field_name().is_none()
3709                                && !fallback_cursor.node().is_extra()
3710                            {
3711                                let candidate = fallback_cursor.node();
3712                                #[allow(clippy::needless_question_mark)]
3713                                if (|| -> ::core::result::Result<
3714                                    _,
3715                                    ::treesitter_types::ParseError,
3716                                > {
3717                                    let child = candidate;
3718                                    Ok(
3719                                        ::treesitter_types::runtime::maybe_grow_stack(|| <Expression as ::treesitter_types::FromNode>::from_node(
3720                                            child,
3721                                            src,
3722                                        ))?,
3723                                    )
3724                                })()
3725                                    .is_ok()
3726                                {
3727                                    fallback_child = Some(candidate);
3728                                    break;
3729                                }
3730                            }
3731                            if !fallback_cursor.goto_next_sibling() {
3732                                break;
3733                            }
3734                        }
3735                    }
3736                    if fallback_child.is_none() {
3737                        let mut cursor2 = node.walk();
3738                        if cursor2.goto_first_child() {
3739                            loop {
3740                                if cursor2.node().is_named() && !cursor2.node().is_extra() {
3741                                    let candidate = cursor2.node();
3742                                    #[allow(clippy::needless_question_mark)]
3743                                    if (|| -> ::core::result::Result<
3744                                        _,
3745                                        ::treesitter_types::ParseError,
3746                                    > {
3747                                        let child = candidate;
3748                                        Ok(
3749                                            ::treesitter_types::runtime::maybe_grow_stack(|| <Expression as ::treesitter_types::FromNode>::from_node(
3750                                                child,
3751                                                src,
3752                                            ))?,
3753                                        )
3754                                    })()
3755                                        .is_ok()
3756                                    {
3757                                        fallback_child = Some(candidate);
3758                                        break;
3759                                    }
3760                                }
3761                                if !cursor2.goto_next_sibling() {
3762                                    break;
3763                                }
3764                            }
3765                        }
3766                    }
3767                    fallback_child.ok_or_else(|| {
3768                        ::treesitter_types::ParseError::missing_field("children", node)
3769                    })?
3770                };
3771                ::treesitter_types::runtime::maybe_grow_stack(|| {
3772                    <Expression as ::treesitter_types::FromNode>::from_node(child, src)
3773                })?
3774            },
3775        })
3776    }
3777}
3778impl ::treesitter_types::Spanned for IfClause<'_> {
3779    fn span(&self) -> ::treesitter_types::Span {
3780        self.span
3781    }
3782}
3783#[derive(Debug, Clone, PartialEq, Eq)]
3784pub struct IfStatement<'tree> {
3785    pub span: ::treesitter_types::Span,
3786    pub alternative: ::std::vec::Vec<IfStatementAlternative<'tree>>,
3787    pub condition: Expression<'tree>,
3788    pub consequence: Block<'tree>,
3789}
3790impl<'tree> ::treesitter_types::FromNode<'tree> for IfStatement<'tree> {
3791    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
3792    fn from_node(
3793        node: ::treesitter_types::tree_sitter::Node<'tree>,
3794        src: &'tree [u8],
3795    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
3796        debug_assert_eq!(node.kind(), "if_statement");
3797        Ok(Self {
3798            span: ::treesitter_types::Span::from(node),
3799            alternative: {
3800                let mut cursor = node.walk();
3801                let mut items = ::std::vec::Vec::new();
3802                for child in node.children_by_field_name("alternative", &mut cursor) {
3803                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
3804                        <IfStatementAlternative as ::treesitter_types::FromNode>::from_node(
3805                            child, src,
3806                        )
3807                    })?);
3808                }
3809                items
3810            },
3811            condition: {
3812                let child = node.child_by_field_name("condition").ok_or_else(|| {
3813                    ::treesitter_types::ParseError::missing_field("condition", node)
3814                })?;
3815                ::treesitter_types::runtime::maybe_grow_stack(|| {
3816                    <Expression as ::treesitter_types::FromNode>::from_node(child, src)
3817                })?
3818            },
3819            consequence: {
3820                let child = node.child_by_field_name("consequence").ok_or_else(|| {
3821                    ::treesitter_types::ParseError::missing_field("consequence", node)
3822                })?;
3823                ::treesitter_types::runtime::maybe_grow_stack(|| {
3824                    <Block as ::treesitter_types::FromNode>::from_node(child, src)
3825                })?
3826            },
3827        })
3828    }
3829}
3830impl ::treesitter_types::Spanned for IfStatement<'_> {
3831    fn span(&self) -> ::treesitter_types::Span {
3832        self.span
3833    }
3834}
3835#[derive(Debug, Clone, PartialEq, Eq)]
3836pub struct ImportFromStatement<'tree> {
3837    pub span: ::treesitter_types::Span,
3838    pub module_name: ImportFromStatementModuleName<'tree>,
3839    pub name: ::std::vec::Vec<ImportFromStatementName<'tree>>,
3840    pub children: ::core::option::Option<WildcardImport<'tree>>,
3841}
3842impl<'tree> ::treesitter_types::FromNode<'tree> for ImportFromStatement<'tree> {
3843    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
3844    fn from_node(
3845        node: ::treesitter_types::tree_sitter::Node<'tree>,
3846        src: &'tree [u8],
3847    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
3848        debug_assert_eq!(node.kind(), "import_from_statement");
3849        Ok(Self {
3850            span: ::treesitter_types::Span::from(node),
3851            module_name: {
3852                let child = node.child_by_field_name("module_name").ok_or_else(|| {
3853                    ::treesitter_types::ParseError::missing_field("module_name", node)
3854                })?;
3855                ::treesitter_types::runtime::maybe_grow_stack(|| {
3856                    <ImportFromStatementModuleName as ::treesitter_types::FromNode>::from_node(
3857                        child, src,
3858                    )
3859                })?
3860            },
3861            name: {
3862                let mut cursor = node.walk();
3863                let mut items = ::std::vec::Vec::new();
3864                for child in node.children_by_field_name("name", &mut cursor) {
3865                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
3866                        <ImportFromStatementName as ::treesitter_types::FromNode>::from_node(
3867                            child, src,
3868                        )
3869                    })?);
3870                }
3871                items
3872            },
3873            children: {
3874                #[allow(clippy::suspicious_else_formatting)]
3875                let non_field_children = {
3876                    let mut cursor = node.walk();
3877                    let mut result = ::std::vec::Vec::new();
3878                    if cursor.goto_first_child() {
3879                        loop {
3880                            if cursor.field_name().is_none()
3881                                && cursor.node().is_named()
3882                                && !cursor.node().is_extra()
3883                            {
3884                                result.push(cursor.node());
3885                            }
3886                            if !cursor.goto_next_sibling() {
3887                                break;
3888                            }
3889                        }
3890                    }
3891                    result
3892                };
3893                match non_field_children.first() {
3894                    Some(&child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
3895                        <WildcardImport as ::treesitter_types::FromNode>::from_node(child, src)
3896                    })?),
3897                    None => None,
3898                }
3899            },
3900        })
3901    }
3902}
3903impl ::treesitter_types::Spanned for ImportFromStatement<'_> {
3904    fn span(&self) -> ::treesitter_types::Span {
3905        self.span
3906    }
3907}
3908#[derive(Debug, Clone, PartialEq, Eq)]
3909pub struct ImportPrefix<'tree> {
3910    pub span: ::treesitter_types::Span,
3911    text: &'tree str,
3912}
3913impl<'tree> ::treesitter_types::FromNode<'tree> for ImportPrefix<'tree> {
3914    fn from_node(
3915        node: ::treesitter_types::tree_sitter::Node<'tree>,
3916        src: &'tree [u8],
3917    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
3918        debug_assert_eq!(node.kind(), "import_prefix");
3919        Ok(Self {
3920            span: ::treesitter_types::Span::from(node),
3921            text: node.utf8_text(src)?,
3922        })
3923    }
3924}
3925impl<'tree> ::treesitter_types::LeafNode<'tree> for ImportPrefix<'tree> {
3926    fn text(&self) -> &'tree str {
3927        self.text
3928    }
3929}
3930impl ::treesitter_types::Spanned for ImportPrefix<'_> {
3931    fn span(&self) -> ::treesitter_types::Span {
3932        self.span
3933    }
3934}
3935#[derive(Debug, Clone, PartialEq, Eq)]
3936pub struct ImportStatement<'tree> {
3937    pub span: ::treesitter_types::Span,
3938    pub name: ::std::vec::Vec<ImportStatementName<'tree>>,
3939}
3940impl<'tree> ::treesitter_types::FromNode<'tree> for ImportStatement<'tree> {
3941    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
3942    fn from_node(
3943        node: ::treesitter_types::tree_sitter::Node<'tree>,
3944        src: &'tree [u8],
3945    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
3946        debug_assert_eq!(node.kind(), "import_statement");
3947        Ok(Self {
3948            span: ::treesitter_types::Span::from(node),
3949            name: {
3950                let mut cursor = node.walk();
3951                let mut items = ::std::vec::Vec::new();
3952                for child in node.children_by_field_name("name", &mut cursor) {
3953                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
3954                        <ImportStatementName as ::treesitter_types::FromNode>::from_node(child, src)
3955                    })?);
3956                }
3957                items
3958            },
3959        })
3960    }
3961}
3962impl ::treesitter_types::Spanned for ImportStatement<'_> {
3963    fn span(&self) -> ::treesitter_types::Span {
3964        self.span
3965    }
3966}
3967#[derive(Debug, Clone, PartialEq, Eq)]
3968pub struct Interpolation<'tree> {
3969    pub span: ::treesitter_types::Span,
3970    pub expression: InterpolationExpression<'tree>,
3971    pub format_specifier: ::core::option::Option<FormatSpecifier<'tree>>,
3972    pub type_conversion: ::core::option::Option<TypeConversion<'tree>>,
3973}
3974impl<'tree> ::treesitter_types::FromNode<'tree> for Interpolation<'tree> {
3975    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
3976    fn from_node(
3977        node: ::treesitter_types::tree_sitter::Node<'tree>,
3978        src: &'tree [u8],
3979    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
3980        debug_assert_eq!(node.kind(), "interpolation");
3981        Ok(Self {
3982            span: ::treesitter_types::Span::from(node),
3983            expression: {
3984                let child = node.child_by_field_name("expression").ok_or_else(|| {
3985                    ::treesitter_types::ParseError::missing_field("expression", node)
3986                })?;
3987                ::treesitter_types::runtime::maybe_grow_stack(|| {
3988                    <InterpolationExpression as ::treesitter_types::FromNode>::from_node(child, src)
3989                })?
3990            },
3991            format_specifier: match node.child_by_field_name("format_specifier") {
3992                Some(child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
3993                    <FormatSpecifier as ::treesitter_types::FromNode>::from_node(child, src)
3994                })?),
3995                None => None,
3996            },
3997            type_conversion: match node.child_by_field_name("type_conversion") {
3998                Some(child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
3999                    <TypeConversion as ::treesitter_types::FromNode>::from_node(child, src)
4000                })?),
4001                None => None,
4002            },
4003        })
4004    }
4005}
4006impl ::treesitter_types::Spanned for Interpolation<'_> {
4007    fn span(&self) -> ::treesitter_types::Span {
4008        self.span
4009    }
4010}
4011#[derive(Debug, Clone, PartialEq, Eq)]
4012pub struct KeywordArgument<'tree> {
4013    pub span: ::treesitter_types::Span,
4014    pub name: Identifier<'tree>,
4015    pub value: Expression<'tree>,
4016}
4017impl<'tree> ::treesitter_types::FromNode<'tree> for KeywordArgument<'tree> {
4018    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
4019    fn from_node(
4020        node: ::treesitter_types::tree_sitter::Node<'tree>,
4021        src: &'tree [u8],
4022    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
4023        debug_assert_eq!(node.kind(), "keyword_argument");
4024        Ok(Self {
4025            span: ::treesitter_types::Span::from(node),
4026            name: {
4027                let child = node
4028                    .child_by_field_name("name")
4029                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("name", node))?;
4030                ::treesitter_types::runtime::maybe_grow_stack(|| {
4031                    <Identifier as ::treesitter_types::FromNode>::from_node(child, src)
4032                })?
4033            },
4034            value: {
4035                let child = node
4036                    .child_by_field_name("value")
4037                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("value", node))?;
4038                ::treesitter_types::runtime::maybe_grow_stack(|| {
4039                    <Expression as ::treesitter_types::FromNode>::from_node(child, src)
4040                })?
4041            },
4042        })
4043    }
4044}
4045impl ::treesitter_types::Spanned for KeywordArgument<'_> {
4046    fn span(&self) -> ::treesitter_types::Span {
4047        self.span
4048    }
4049}
4050#[derive(Debug, Clone, PartialEq, Eq)]
4051pub struct KeywordPattern<'tree> {
4052    pub span: ::treesitter_types::Span,
4053    pub children: ::std::vec::Vec<KeywordPatternChildren<'tree>>,
4054}
4055impl<'tree> ::treesitter_types::FromNode<'tree> for KeywordPattern<'tree> {
4056    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
4057    fn from_node(
4058        node: ::treesitter_types::tree_sitter::Node<'tree>,
4059        src: &'tree [u8],
4060    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
4061        debug_assert_eq!(node.kind(), "keyword_pattern");
4062        Ok(Self {
4063            span: ::treesitter_types::Span::from(node),
4064            children: {
4065                #[allow(clippy::suspicious_else_formatting)]
4066                let non_field_children = {
4067                    let mut cursor = node.walk();
4068                    let mut result = ::std::vec::Vec::new();
4069                    if cursor.goto_first_child() {
4070                        loop {
4071                            if cursor.field_name().is_none()
4072                                && cursor.node().is_named()
4073                                && !cursor.node().is_extra()
4074                            {
4075                                result.push(cursor.node());
4076                            }
4077                            if !cursor.goto_next_sibling() {
4078                                break;
4079                            }
4080                        }
4081                    }
4082                    result
4083                };
4084                let mut items = ::std::vec::Vec::new();
4085                for child in non_field_children {
4086                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
4087                        <KeywordPatternChildren as ::treesitter_types::FromNode>::from_node(
4088                            child, src,
4089                        )
4090                    })?);
4091                }
4092                items
4093            },
4094        })
4095    }
4096}
4097impl ::treesitter_types::Spanned for KeywordPattern<'_> {
4098    fn span(&self) -> ::treesitter_types::Span {
4099        self.span
4100    }
4101}
4102#[derive(Debug, Clone, PartialEq, Eq)]
4103pub struct KeywordSeparator<'tree> {
4104    pub span: ::treesitter_types::Span,
4105    text: &'tree str,
4106}
4107impl<'tree> ::treesitter_types::FromNode<'tree> for KeywordSeparator<'tree> {
4108    fn from_node(
4109        node: ::treesitter_types::tree_sitter::Node<'tree>,
4110        src: &'tree [u8],
4111    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
4112        debug_assert_eq!(node.kind(), "keyword_separator");
4113        Ok(Self {
4114            span: ::treesitter_types::Span::from(node),
4115            text: node.utf8_text(src)?,
4116        })
4117    }
4118}
4119impl<'tree> ::treesitter_types::LeafNode<'tree> for KeywordSeparator<'tree> {
4120    fn text(&self) -> &'tree str {
4121        self.text
4122    }
4123}
4124impl ::treesitter_types::Spanned for KeywordSeparator<'_> {
4125    fn span(&self) -> ::treesitter_types::Span {
4126        self.span
4127    }
4128}
4129#[derive(Debug, Clone, PartialEq, Eq)]
4130pub struct Lambda<'tree> {
4131    pub span: ::treesitter_types::Span,
4132    pub body: Expression<'tree>,
4133    pub parameters: ::core::option::Option<LambdaParameters<'tree>>,
4134}
4135impl<'tree> ::treesitter_types::FromNode<'tree> for Lambda<'tree> {
4136    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
4137    fn from_node(
4138        node: ::treesitter_types::tree_sitter::Node<'tree>,
4139        src: &'tree [u8],
4140    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
4141        debug_assert_eq!(node.kind(), "lambda");
4142        Ok(Self {
4143            span: ::treesitter_types::Span::from(node),
4144            body: {
4145                let child = node
4146                    .child_by_field_name("body")
4147                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("body", node))?;
4148                ::treesitter_types::runtime::maybe_grow_stack(|| {
4149                    <Expression as ::treesitter_types::FromNode>::from_node(child, src)
4150                })?
4151            },
4152            parameters: match node.child_by_field_name("parameters") {
4153                Some(child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
4154                    <LambdaParameters as ::treesitter_types::FromNode>::from_node(child, src)
4155                })?),
4156                None => None,
4157            },
4158        })
4159    }
4160}
4161impl ::treesitter_types::Spanned for Lambda<'_> {
4162    fn span(&self) -> ::treesitter_types::Span {
4163        self.span
4164    }
4165}
4166#[derive(Debug, Clone, PartialEq, Eq)]
4167pub struct LambdaParameters<'tree> {
4168    pub span: ::treesitter_types::Span,
4169    pub children: ::std::vec::Vec<Parameter<'tree>>,
4170}
4171impl<'tree> ::treesitter_types::FromNode<'tree> for LambdaParameters<'tree> {
4172    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
4173    fn from_node(
4174        node: ::treesitter_types::tree_sitter::Node<'tree>,
4175        src: &'tree [u8],
4176    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
4177        debug_assert_eq!(node.kind(), "lambda_parameters");
4178        Ok(Self {
4179            span: ::treesitter_types::Span::from(node),
4180            children: {
4181                #[allow(clippy::suspicious_else_formatting)]
4182                let non_field_children = {
4183                    let mut cursor = node.walk();
4184                    let mut result = ::std::vec::Vec::new();
4185                    if cursor.goto_first_child() {
4186                        loop {
4187                            if cursor.field_name().is_none()
4188                                && cursor.node().is_named()
4189                                && !cursor.node().is_extra()
4190                            {
4191                                result.push(cursor.node());
4192                            }
4193                            if !cursor.goto_next_sibling() {
4194                                break;
4195                            }
4196                        }
4197                    }
4198                    result
4199                };
4200                let mut items = ::std::vec::Vec::new();
4201                for child in non_field_children {
4202                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
4203                        <Parameter as ::treesitter_types::FromNode>::from_node(child, src)
4204                    })?);
4205                }
4206                items
4207            },
4208        })
4209    }
4210}
4211impl ::treesitter_types::Spanned for LambdaParameters<'_> {
4212    fn span(&self) -> ::treesitter_types::Span {
4213        self.span
4214    }
4215}
4216#[derive(Debug, Clone, PartialEq, Eq)]
4217pub struct List<'tree> {
4218    pub span: ::treesitter_types::Span,
4219    pub children: ::std::vec::Vec<ListChildren<'tree>>,
4220}
4221impl<'tree> ::treesitter_types::FromNode<'tree> for List<'tree> {
4222    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
4223    fn from_node(
4224        node: ::treesitter_types::tree_sitter::Node<'tree>,
4225        src: &'tree [u8],
4226    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
4227        debug_assert_eq!(node.kind(), "list");
4228        Ok(Self {
4229            span: ::treesitter_types::Span::from(node),
4230            children: {
4231                #[allow(clippy::suspicious_else_formatting)]
4232                let non_field_children = {
4233                    let mut cursor = node.walk();
4234                    let mut result = ::std::vec::Vec::new();
4235                    if cursor.goto_first_child() {
4236                        loop {
4237                            if cursor.field_name().is_none()
4238                                && cursor.node().is_named()
4239                                && !cursor.node().is_extra()
4240                            {
4241                                result.push(cursor.node());
4242                            }
4243                            if !cursor.goto_next_sibling() {
4244                                break;
4245                            }
4246                        }
4247                    }
4248                    result
4249                };
4250                let mut items = ::std::vec::Vec::new();
4251                for child in non_field_children {
4252                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
4253                        <ListChildren as ::treesitter_types::FromNode>::from_node(child, src)
4254                    })?);
4255                }
4256                items
4257            },
4258        })
4259    }
4260}
4261impl ::treesitter_types::Spanned for List<'_> {
4262    fn span(&self) -> ::treesitter_types::Span {
4263        self.span
4264    }
4265}
4266#[derive(Debug, Clone, PartialEq, Eq)]
4267pub struct ListComprehension<'tree> {
4268    pub span: ::treesitter_types::Span,
4269    pub body: Expression<'tree>,
4270    pub children: ::std::vec::Vec<ListComprehensionChildren<'tree>>,
4271}
4272impl<'tree> ::treesitter_types::FromNode<'tree> for ListComprehension<'tree> {
4273    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
4274    fn from_node(
4275        node: ::treesitter_types::tree_sitter::Node<'tree>,
4276        src: &'tree [u8],
4277    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
4278        debug_assert_eq!(node.kind(), "list_comprehension");
4279        Ok(Self {
4280            span: ::treesitter_types::Span::from(node),
4281            body: {
4282                let child = node
4283                    .child_by_field_name("body")
4284                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("body", node))?;
4285                ::treesitter_types::runtime::maybe_grow_stack(|| {
4286                    <Expression as ::treesitter_types::FromNode>::from_node(child, src)
4287                })?
4288            },
4289            children: {
4290                #[allow(clippy::suspicious_else_formatting)]
4291                let non_field_children = {
4292                    let mut cursor = node.walk();
4293                    let mut result = ::std::vec::Vec::new();
4294                    if cursor.goto_first_child() {
4295                        loop {
4296                            if cursor.field_name().is_none()
4297                                && cursor.node().is_named()
4298                                && !cursor.node().is_extra()
4299                            {
4300                                result.push(cursor.node());
4301                            }
4302                            if !cursor.goto_next_sibling() {
4303                                break;
4304                            }
4305                        }
4306                    }
4307                    result
4308                };
4309                let mut items = ::std::vec::Vec::new();
4310                for child in non_field_children {
4311                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
4312                        <ListComprehensionChildren as ::treesitter_types::FromNode>::from_node(
4313                            child, src,
4314                        )
4315                    })?);
4316                }
4317                items
4318            },
4319        })
4320    }
4321}
4322impl ::treesitter_types::Spanned for ListComprehension<'_> {
4323    fn span(&self) -> ::treesitter_types::Span {
4324        self.span
4325    }
4326}
4327#[derive(Debug, Clone, PartialEq, Eq)]
4328pub struct ListPattern<'tree> {
4329    pub span: ::treesitter_types::Span,
4330    pub children: ::std::vec::Vec<ListPatternChildren<'tree>>,
4331}
4332impl<'tree> ::treesitter_types::FromNode<'tree> for ListPattern<'tree> {
4333    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
4334    fn from_node(
4335        node: ::treesitter_types::tree_sitter::Node<'tree>,
4336        src: &'tree [u8],
4337    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
4338        debug_assert_eq!(node.kind(), "list_pattern");
4339        Ok(Self {
4340            span: ::treesitter_types::Span::from(node),
4341            children: {
4342                #[allow(clippy::suspicious_else_formatting)]
4343                let non_field_children = {
4344                    let mut cursor = node.walk();
4345                    let mut result = ::std::vec::Vec::new();
4346                    if cursor.goto_first_child() {
4347                        loop {
4348                            if cursor.field_name().is_none()
4349                                && cursor.node().is_named()
4350                                && !cursor.node().is_extra()
4351                            {
4352                                result.push(cursor.node());
4353                            }
4354                            if !cursor.goto_next_sibling() {
4355                                break;
4356                            }
4357                        }
4358                    }
4359                    result
4360                };
4361                let mut items = ::std::vec::Vec::new();
4362                for child in non_field_children {
4363                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
4364                        <ListPatternChildren as ::treesitter_types::FromNode>::from_node(child, src)
4365                    })?);
4366                }
4367                items
4368            },
4369        })
4370    }
4371}
4372impl ::treesitter_types::Spanned for ListPattern<'_> {
4373    fn span(&self) -> ::treesitter_types::Span {
4374        self.span
4375    }
4376}
4377#[derive(Debug, Clone, PartialEq, Eq)]
4378pub struct ListSplat<'tree> {
4379    pub span: ::treesitter_types::Span,
4380    pub children: ListSplatChildren<'tree>,
4381}
4382impl<'tree> ::treesitter_types::FromNode<'tree> for ListSplat<'tree> {
4383    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
4384    fn from_node(
4385        node: ::treesitter_types::tree_sitter::Node<'tree>,
4386        src: &'tree [u8],
4387    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
4388        debug_assert_eq!(node.kind(), "list_splat");
4389        Ok(Self {
4390            span: ::treesitter_types::Span::from(node),
4391            children: {
4392                #[allow(clippy::suspicious_else_formatting)]
4393                let non_field_children = {
4394                    let mut cursor = node.walk();
4395                    let mut result = ::std::vec::Vec::new();
4396                    if cursor.goto_first_child() {
4397                        loop {
4398                            if cursor.field_name().is_none()
4399                                && cursor.node().is_named()
4400                                && !cursor.node().is_extra()
4401                            {
4402                                result.push(cursor.node());
4403                            }
4404                            if !cursor.goto_next_sibling() {
4405                                break;
4406                            }
4407                        }
4408                    }
4409                    result
4410                };
4411                let child = if let Some(&c) = non_field_children.first() {
4412                    c
4413                } else {
4414                    let mut fallback_cursor = node.walk();
4415                    let mut fallback_child = None;
4416                    if fallback_cursor.goto_first_child() {
4417                        loop {
4418                            if fallback_cursor.field_name().is_none()
4419                                && !fallback_cursor.node().is_extra()
4420                            {
4421                                let candidate = fallback_cursor.node();
4422                                #[allow(clippy::needless_question_mark)]
4423                                if (|| -> ::core::result::Result<
4424                                    _,
4425                                    ::treesitter_types::ParseError,
4426                                > {
4427                                    let child = candidate;
4428                                    Ok(
4429                                        ::treesitter_types::runtime::maybe_grow_stack(|| <ListSplatChildren as ::treesitter_types::FromNode>::from_node(
4430                                            child,
4431                                            src,
4432                                        ))?,
4433                                    )
4434                                })()
4435                                    .is_ok()
4436                                {
4437                                    fallback_child = Some(candidate);
4438                                    break;
4439                                }
4440                            }
4441                            if !fallback_cursor.goto_next_sibling() {
4442                                break;
4443                            }
4444                        }
4445                    }
4446                    if fallback_child.is_none() {
4447                        let mut cursor2 = node.walk();
4448                        if cursor2.goto_first_child() {
4449                            loop {
4450                                if cursor2.node().is_named() && !cursor2.node().is_extra() {
4451                                    let candidate = cursor2.node();
4452                                    #[allow(clippy::needless_question_mark)]
4453                                    if (|| -> ::core::result::Result<
4454                                        _,
4455                                        ::treesitter_types::ParseError,
4456                                    > {
4457                                        let child = candidate;
4458                                        Ok(
4459                                            ::treesitter_types::runtime::maybe_grow_stack(|| <ListSplatChildren as ::treesitter_types::FromNode>::from_node(
4460                                                child,
4461                                                src,
4462                                            ))?,
4463                                        )
4464                                    })()
4465                                        .is_ok()
4466                                    {
4467                                        fallback_child = Some(candidate);
4468                                        break;
4469                                    }
4470                                }
4471                                if !cursor2.goto_next_sibling() {
4472                                    break;
4473                                }
4474                            }
4475                        }
4476                    }
4477                    fallback_child.ok_or_else(|| {
4478                        ::treesitter_types::ParseError::missing_field("children", node)
4479                    })?
4480                };
4481                ::treesitter_types::runtime::maybe_grow_stack(|| {
4482                    <ListSplatChildren as ::treesitter_types::FromNode>::from_node(child, src)
4483                })?
4484            },
4485        })
4486    }
4487}
4488impl ::treesitter_types::Spanned for ListSplat<'_> {
4489    fn span(&self) -> ::treesitter_types::Span {
4490        self.span
4491    }
4492}
4493#[derive(Debug, Clone, PartialEq, Eq)]
4494pub struct ListSplatPattern<'tree> {
4495    pub span: ::treesitter_types::Span,
4496    pub children: ListSplatPatternChildren<'tree>,
4497}
4498impl<'tree> ::treesitter_types::FromNode<'tree> for ListSplatPattern<'tree> {
4499    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
4500    fn from_node(
4501        node: ::treesitter_types::tree_sitter::Node<'tree>,
4502        src: &'tree [u8],
4503    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
4504        debug_assert_eq!(node.kind(), "list_splat_pattern");
4505        Ok(Self {
4506            span: ::treesitter_types::Span::from(node),
4507            children: {
4508                #[allow(clippy::suspicious_else_formatting)]
4509                let non_field_children = {
4510                    let mut cursor = node.walk();
4511                    let mut result = ::std::vec::Vec::new();
4512                    if cursor.goto_first_child() {
4513                        loop {
4514                            if cursor.field_name().is_none()
4515                                && cursor.node().is_named()
4516                                && !cursor.node().is_extra()
4517                            {
4518                                result.push(cursor.node());
4519                            }
4520                            if !cursor.goto_next_sibling() {
4521                                break;
4522                            }
4523                        }
4524                    }
4525                    result
4526                };
4527                let child = if let Some(&c) = non_field_children.first() {
4528                    c
4529                } else {
4530                    let mut fallback_cursor = node.walk();
4531                    let mut fallback_child = None;
4532                    if fallback_cursor.goto_first_child() {
4533                        loop {
4534                            if fallback_cursor.field_name().is_none()
4535                                && !fallback_cursor.node().is_extra()
4536                            {
4537                                let candidate = fallback_cursor.node();
4538                                #[allow(clippy::needless_question_mark)]
4539                                if (|| -> ::core::result::Result<
4540                                    _,
4541                                    ::treesitter_types::ParseError,
4542                                > {
4543                                    let child = candidate;
4544                                    Ok(
4545                                        ::treesitter_types::runtime::maybe_grow_stack(|| <ListSplatPatternChildren as ::treesitter_types::FromNode>::from_node(
4546                                            child,
4547                                            src,
4548                                        ))?,
4549                                    )
4550                                })()
4551                                    .is_ok()
4552                                {
4553                                    fallback_child = Some(candidate);
4554                                    break;
4555                                }
4556                            }
4557                            if !fallback_cursor.goto_next_sibling() {
4558                                break;
4559                            }
4560                        }
4561                    }
4562                    if fallback_child.is_none() {
4563                        let mut cursor2 = node.walk();
4564                        if cursor2.goto_first_child() {
4565                            loop {
4566                                if cursor2.node().is_named() && !cursor2.node().is_extra() {
4567                                    let candidate = cursor2.node();
4568                                    #[allow(clippy::needless_question_mark)]
4569                                    if (|| -> ::core::result::Result<
4570                                        _,
4571                                        ::treesitter_types::ParseError,
4572                                    > {
4573                                        let child = candidate;
4574                                        Ok(
4575                                            ::treesitter_types::runtime::maybe_grow_stack(|| <ListSplatPatternChildren as ::treesitter_types::FromNode>::from_node(
4576                                                child,
4577                                                src,
4578                                            ))?,
4579                                        )
4580                                    })()
4581                                        .is_ok()
4582                                    {
4583                                        fallback_child = Some(candidate);
4584                                        break;
4585                                    }
4586                                }
4587                                if !cursor2.goto_next_sibling() {
4588                                    break;
4589                                }
4590                            }
4591                        }
4592                    }
4593                    fallback_child.ok_or_else(|| {
4594                        ::treesitter_types::ParseError::missing_field("children", node)
4595                    })?
4596                };
4597                ::treesitter_types::runtime::maybe_grow_stack(|| {
4598                    <ListSplatPatternChildren as ::treesitter_types::FromNode>::from_node(
4599                        child, src,
4600                    )
4601                })?
4602            },
4603        })
4604    }
4605}
4606impl ::treesitter_types::Spanned for ListSplatPattern<'_> {
4607    fn span(&self) -> ::treesitter_types::Span {
4608        self.span
4609    }
4610}
4611#[derive(Debug, Clone, PartialEq, Eq)]
4612pub struct MatchStatement<'tree> {
4613    pub span: ::treesitter_types::Span,
4614    pub body: Block<'tree>,
4615    pub subject: ::std::vec::Vec<Expression<'tree>>,
4616}
4617impl<'tree> ::treesitter_types::FromNode<'tree> for MatchStatement<'tree> {
4618    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
4619    fn from_node(
4620        node: ::treesitter_types::tree_sitter::Node<'tree>,
4621        src: &'tree [u8],
4622    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
4623        debug_assert_eq!(node.kind(), "match_statement");
4624        Ok(Self {
4625            span: ::treesitter_types::Span::from(node),
4626            body: {
4627                let child = node
4628                    .child_by_field_name("body")
4629                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("body", node))?;
4630                ::treesitter_types::runtime::maybe_grow_stack(|| {
4631                    <Block as ::treesitter_types::FromNode>::from_node(child, src)
4632                })?
4633            },
4634            subject: {
4635                let mut cursor = node.walk();
4636                let mut items = ::std::vec::Vec::new();
4637                for child in node.children_by_field_name("subject", &mut cursor) {
4638                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
4639                        <Expression as ::treesitter_types::FromNode>::from_node(child, src)
4640                    })?);
4641                }
4642                items
4643            },
4644        })
4645    }
4646}
4647impl ::treesitter_types::Spanned for MatchStatement<'_> {
4648    fn span(&self) -> ::treesitter_types::Span {
4649        self.span
4650    }
4651}
4652#[derive(Debug, Clone, PartialEq, Eq)]
4653pub struct MemberType<'tree> {
4654    pub span: ::treesitter_types::Span,
4655    pub children: ::std::vec::Vec<MemberTypeChildren<'tree>>,
4656}
4657impl<'tree> ::treesitter_types::FromNode<'tree> for MemberType<'tree> {
4658    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
4659    fn from_node(
4660        node: ::treesitter_types::tree_sitter::Node<'tree>,
4661        src: &'tree [u8],
4662    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
4663        debug_assert_eq!(node.kind(), "member_type");
4664        Ok(Self {
4665            span: ::treesitter_types::Span::from(node),
4666            children: {
4667                #[allow(clippy::suspicious_else_formatting)]
4668                let non_field_children = {
4669                    let mut cursor = node.walk();
4670                    let mut result = ::std::vec::Vec::new();
4671                    if cursor.goto_first_child() {
4672                        loop {
4673                            if cursor.field_name().is_none()
4674                                && cursor.node().is_named()
4675                                && !cursor.node().is_extra()
4676                            {
4677                                result.push(cursor.node());
4678                            }
4679                            if !cursor.goto_next_sibling() {
4680                                break;
4681                            }
4682                        }
4683                    }
4684                    result
4685                };
4686                let mut items = ::std::vec::Vec::new();
4687                for child in non_field_children {
4688                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
4689                        <MemberTypeChildren as ::treesitter_types::FromNode>::from_node(child, src)
4690                    })?);
4691                }
4692                items
4693            },
4694        })
4695    }
4696}
4697impl ::treesitter_types::Spanned for MemberType<'_> {
4698    fn span(&self) -> ::treesitter_types::Span {
4699        self.span
4700    }
4701}
4702#[derive(Debug, Clone, PartialEq, Eq)]
4703pub struct Module<'tree> {
4704    pub span: ::treesitter_types::Span,
4705    pub children: ::std::vec::Vec<ModuleChildren<'tree>>,
4706}
4707impl<'tree> ::treesitter_types::FromNode<'tree> for Module<'tree> {
4708    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
4709    fn from_node(
4710        node: ::treesitter_types::tree_sitter::Node<'tree>,
4711        src: &'tree [u8],
4712    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
4713        debug_assert_eq!(node.kind(), "module");
4714        Ok(Self {
4715            span: ::treesitter_types::Span::from(node),
4716            children: {
4717                #[allow(clippy::suspicious_else_formatting)]
4718                let non_field_children = {
4719                    let mut cursor = node.walk();
4720                    let mut result = ::std::vec::Vec::new();
4721                    if cursor.goto_first_child() {
4722                        loop {
4723                            if cursor.field_name().is_none()
4724                                && cursor.node().is_named()
4725                                && !cursor.node().is_extra()
4726                            {
4727                                result.push(cursor.node());
4728                            }
4729                            if !cursor.goto_next_sibling() {
4730                                break;
4731                            }
4732                        }
4733                    }
4734                    result
4735                };
4736                let mut items = ::std::vec::Vec::new();
4737                for child in non_field_children {
4738                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
4739                        <ModuleChildren as ::treesitter_types::FromNode>::from_node(child, src)
4740                    })?);
4741                }
4742                items
4743            },
4744        })
4745    }
4746}
4747impl ::treesitter_types::Spanned for Module<'_> {
4748    fn span(&self) -> ::treesitter_types::Span {
4749        self.span
4750    }
4751}
4752#[derive(Debug, Clone, PartialEq, Eq)]
4753pub struct NamedExpression<'tree> {
4754    pub span: ::treesitter_types::Span,
4755    pub name: Identifier<'tree>,
4756    pub value: Expression<'tree>,
4757}
4758impl<'tree> ::treesitter_types::FromNode<'tree> for NamedExpression<'tree> {
4759    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
4760    fn from_node(
4761        node: ::treesitter_types::tree_sitter::Node<'tree>,
4762        src: &'tree [u8],
4763    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
4764        debug_assert_eq!(node.kind(), "named_expression");
4765        Ok(Self {
4766            span: ::treesitter_types::Span::from(node),
4767            name: {
4768                let child = node
4769                    .child_by_field_name("name")
4770                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("name", node))?;
4771                ::treesitter_types::runtime::maybe_grow_stack(|| {
4772                    <Identifier as ::treesitter_types::FromNode>::from_node(child, src)
4773                })?
4774            },
4775            value: {
4776                let child = node
4777                    .child_by_field_name("value")
4778                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("value", node))?;
4779                ::treesitter_types::runtime::maybe_grow_stack(|| {
4780                    <Expression as ::treesitter_types::FromNode>::from_node(child, src)
4781                })?
4782            },
4783        })
4784    }
4785}
4786impl ::treesitter_types::Spanned for NamedExpression<'_> {
4787    fn span(&self) -> ::treesitter_types::Span {
4788        self.span
4789    }
4790}
4791#[derive(Debug, Clone, PartialEq, Eq)]
4792pub struct NonlocalStatement<'tree> {
4793    pub span: ::treesitter_types::Span,
4794    pub children: ::std::vec::Vec<Identifier<'tree>>,
4795}
4796impl<'tree> ::treesitter_types::FromNode<'tree> for NonlocalStatement<'tree> {
4797    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
4798    fn from_node(
4799        node: ::treesitter_types::tree_sitter::Node<'tree>,
4800        src: &'tree [u8],
4801    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
4802        debug_assert_eq!(node.kind(), "nonlocal_statement");
4803        Ok(Self {
4804            span: ::treesitter_types::Span::from(node),
4805            children: {
4806                #[allow(clippy::suspicious_else_formatting)]
4807                let non_field_children = {
4808                    let mut cursor = node.walk();
4809                    let mut result = ::std::vec::Vec::new();
4810                    if cursor.goto_first_child() {
4811                        loop {
4812                            if cursor.field_name().is_none()
4813                                && cursor.node().is_named()
4814                                && !cursor.node().is_extra()
4815                            {
4816                                result.push(cursor.node());
4817                            }
4818                            if !cursor.goto_next_sibling() {
4819                                break;
4820                            }
4821                        }
4822                    }
4823                    result
4824                };
4825                let mut items = ::std::vec::Vec::new();
4826                for child in non_field_children {
4827                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
4828                        <Identifier as ::treesitter_types::FromNode>::from_node(child, src)
4829                    })?);
4830                }
4831                items
4832            },
4833        })
4834    }
4835}
4836impl ::treesitter_types::Spanned for NonlocalStatement<'_> {
4837    fn span(&self) -> ::treesitter_types::Span {
4838        self.span
4839    }
4840}
4841#[derive(Debug, Clone, PartialEq, Eq)]
4842pub struct NotOperator<'tree> {
4843    pub span: ::treesitter_types::Span,
4844    pub argument: Expression<'tree>,
4845}
4846impl<'tree> ::treesitter_types::FromNode<'tree> for NotOperator<'tree> {
4847    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
4848    fn from_node(
4849        node: ::treesitter_types::tree_sitter::Node<'tree>,
4850        src: &'tree [u8],
4851    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
4852        debug_assert_eq!(node.kind(), "not_operator");
4853        Ok(Self {
4854            span: ::treesitter_types::Span::from(node),
4855            argument: {
4856                let child = node.child_by_field_name("argument").ok_or_else(|| {
4857                    ::treesitter_types::ParseError::missing_field("argument", node)
4858                })?;
4859                ::treesitter_types::runtime::maybe_grow_stack(|| {
4860                    <Expression as ::treesitter_types::FromNode>::from_node(child, src)
4861                })?
4862            },
4863        })
4864    }
4865}
4866impl ::treesitter_types::Spanned for NotOperator<'_> {
4867    fn span(&self) -> ::treesitter_types::Span {
4868        self.span
4869    }
4870}
4871#[derive(Debug, Clone, PartialEq, Eq)]
4872pub struct Pair<'tree> {
4873    pub span: ::treesitter_types::Span,
4874    pub key: Expression<'tree>,
4875    pub value: Expression<'tree>,
4876}
4877impl<'tree> ::treesitter_types::FromNode<'tree> for Pair<'tree> {
4878    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
4879    fn from_node(
4880        node: ::treesitter_types::tree_sitter::Node<'tree>,
4881        src: &'tree [u8],
4882    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
4883        debug_assert_eq!(node.kind(), "pair");
4884        Ok(Self {
4885            span: ::treesitter_types::Span::from(node),
4886            key: {
4887                let child = node
4888                    .child_by_field_name("key")
4889                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("key", node))?;
4890                ::treesitter_types::runtime::maybe_grow_stack(|| {
4891                    <Expression as ::treesitter_types::FromNode>::from_node(child, src)
4892                })?
4893            },
4894            value: {
4895                let child = node
4896                    .child_by_field_name("value")
4897                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("value", node))?;
4898                ::treesitter_types::runtime::maybe_grow_stack(|| {
4899                    <Expression as ::treesitter_types::FromNode>::from_node(child, src)
4900                })?
4901            },
4902        })
4903    }
4904}
4905impl ::treesitter_types::Spanned for Pair<'_> {
4906    fn span(&self) -> ::treesitter_types::Span {
4907        self.span
4908    }
4909}
4910#[derive(Debug, Clone, PartialEq, Eq)]
4911pub struct Parameters<'tree> {
4912    pub span: ::treesitter_types::Span,
4913    pub children: ::std::vec::Vec<Parameter<'tree>>,
4914}
4915impl<'tree> ::treesitter_types::FromNode<'tree> for Parameters<'tree> {
4916    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
4917    fn from_node(
4918        node: ::treesitter_types::tree_sitter::Node<'tree>,
4919        src: &'tree [u8],
4920    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
4921        debug_assert_eq!(node.kind(), "parameters");
4922        Ok(Self {
4923            span: ::treesitter_types::Span::from(node),
4924            children: {
4925                #[allow(clippy::suspicious_else_formatting)]
4926                let non_field_children = {
4927                    let mut cursor = node.walk();
4928                    let mut result = ::std::vec::Vec::new();
4929                    if cursor.goto_first_child() {
4930                        loop {
4931                            if cursor.field_name().is_none()
4932                                && cursor.node().is_named()
4933                                && !cursor.node().is_extra()
4934                            {
4935                                result.push(cursor.node());
4936                            }
4937                            if !cursor.goto_next_sibling() {
4938                                break;
4939                            }
4940                        }
4941                    }
4942                    result
4943                };
4944                let mut items = ::std::vec::Vec::new();
4945                for child in non_field_children {
4946                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
4947                        <Parameter as ::treesitter_types::FromNode>::from_node(child, src)
4948                    })?);
4949                }
4950                items
4951            },
4952        })
4953    }
4954}
4955impl ::treesitter_types::Spanned for Parameters<'_> {
4956    fn span(&self) -> ::treesitter_types::Span {
4957        self.span
4958    }
4959}
4960#[derive(Debug, Clone, PartialEq, Eq)]
4961pub struct ParenthesizedExpression<'tree> {
4962    pub span: ::treesitter_types::Span,
4963    pub children: ParenthesizedExpressionChildren<'tree>,
4964}
4965impl<'tree> ::treesitter_types::FromNode<'tree> for ParenthesizedExpression<'tree> {
4966    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
4967    fn from_node(
4968        node: ::treesitter_types::tree_sitter::Node<'tree>,
4969        src: &'tree [u8],
4970    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
4971        debug_assert_eq!(node.kind(), "parenthesized_expression");
4972        Ok(Self {
4973            span: ::treesitter_types::Span::from(node),
4974            children: {
4975                #[allow(clippy::suspicious_else_formatting)]
4976                let non_field_children = {
4977                    let mut cursor = node.walk();
4978                    let mut result = ::std::vec::Vec::new();
4979                    if cursor.goto_first_child() {
4980                        loop {
4981                            if cursor.field_name().is_none()
4982                                && cursor.node().is_named()
4983                                && !cursor.node().is_extra()
4984                            {
4985                                result.push(cursor.node());
4986                            }
4987                            if !cursor.goto_next_sibling() {
4988                                break;
4989                            }
4990                        }
4991                    }
4992                    result
4993                };
4994                let child = if let Some(&c) = non_field_children.first() {
4995                    c
4996                } else {
4997                    let mut fallback_cursor = node.walk();
4998                    let mut fallback_child = None;
4999                    if fallback_cursor.goto_first_child() {
5000                        loop {
5001                            if fallback_cursor.field_name().is_none()
5002                                && !fallback_cursor.node().is_extra()
5003                            {
5004                                let candidate = fallback_cursor.node();
5005                                #[allow(clippy::needless_question_mark)]
5006                                if (|| -> ::core::result::Result<
5007                                    _,
5008                                    ::treesitter_types::ParseError,
5009                                > {
5010                                    let child = candidate;
5011                                    Ok(
5012                                        ::treesitter_types::runtime::maybe_grow_stack(|| <ParenthesizedExpressionChildren as ::treesitter_types::FromNode>::from_node(
5013                                            child,
5014                                            src,
5015                                        ))?,
5016                                    )
5017                                })()
5018                                    .is_ok()
5019                                {
5020                                    fallback_child = Some(candidate);
5021                                    break;
5022                                }
5023                            }
5024                            if !fallback_cursor.goto_next_sibling() {
5025                                break;
5026                            }
5027                        }
5028                    }
5029                    if fallback_child.is_none() {
5030                        let mut cursor2 = node.walk();
5031                        if cursor2.goto_first_child() {
5032                            loop {
5033                                if cursor2.node().is_named() && !cursor2.node().is_extra() {
5034                                    let candidate = cursor2.node();
5035                                    #[allow(clippy::needless_question_mark)]
5036                                    if (|| -> ::core::result::Result<
5037                                        _,
5038                                        ::treesitter_types::ParseError,
5039                                    > {
5040                                        let child = candidate;
5041                                        Ok(
5042                                            ::treesitter_types::runtime::maybe_grow_stack(|| <ParenthesizedExpressionChildren as ::treesitter_types::FromNode>::from_node(
5043                                                child,
5044                                                src,
5045                                            ))?,
5046                                        )
5047                                    })()
5048                                        .is_ok()
5049                                    {
5050                                        fallback_child = Some(candidate);
5051                                        break;
5052                                    }
5053                                }
5054                                if !cursor2.goto_next_sibling() {
5055                                    break;
5056                                }
5057                            }
5058                        }
5059                    }
5060                    fallback_child.ok_or_else(|| {
5061                        ::treesitter_types::ParseError::missing_field("children", node)
5062                    })?
5063                };
5064                ::treesitter_types::runtime::maybe_grow_stack(|| {
5065                    <ParenthesizedExpressionChildren as ::treesitter_types::FromNode>::from_node(
5066                        child, src,
5067                    )
5068                })?
5069            },
5070        })
5071    }
5072}
5073impl ::treesitter_types::Spanned for ParenthesizedExpression<'_> {
5074    fn span(&self) -> ::treesitter_types::Span {
5075        self.span
5076    }
5077}
5078#[derive(Debug, Clone, PartialEq, Eq)]
5079pub struct ParenthesizedListSplat<'tree> {
5080    pub span: ::treesitter_types::Span,
5081    pub children: ParenthesizedListSplatChildren<'tree>,
5082}
5083impl<'tree> ::treesitter_types::FromNode<'tree> for ParenthesizedListSplat<'tree> {
5084    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
5085    fn from_node(
5086        node: ::treesitter_types::tree_sitter::Node<'tree>,
5087        src: &'tree [u8],
5088    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
5089        debug_assert_eq!(node.kind(), "parenthesized_list_splat");
5090        Ok(Self {
5091            span: ::treesitter_types::Span::from(node),
5092            children: {
5093                #[allow(clippy::suspicious_else_formatting)]
5094                let non_field_children = {
5095                    let mut cursor = node.walk();
5096                    let mut result = ::std::vec::Vec::new();
5097                    if cursor.goto_first_child() {
5098                        loop {
5099                            if cursor.field_name().is_none()
5100                                && cursor.node().is_named()
5101                                && !cursor.node().is_extra()
5102                            {
5103                                result.push(cursor.node());
5104                            }
5105                            if !cursor.goto_next_sibling() {
5106                                break;
5107                            }
5108                        }
5109                    }
5110                    result
5111                };
5112                let child = if let Some(&c) = non_field_children.first() {
5113                    c
5114                } else {
5115                    let mut fallback_cursor = node.walk();
5116                    let mut fallback_child = None;
5117                    if fallback_cursor.goto_first_child() {
5118                        loop {
5119                            if fallback_cursor.field_name().is_none()
5120                                && !fallback_cursor.node().is_extra()
5121                            {
5122                                let candidate = fallback_cursor.node();
5123                                #[allow(clippy::needless_question_mark)]
5124                                if (|| -> ::core::result::Result<
5125                                    _,
5126                                    ::treesitter_types::ParseError,
5127                                > {
5128                                    let child = candidate;
5129                                    Ok(
5130                                        ::treesitter_types::runtime::maybe_grow_stack(|| <ParenthesizedListSplatChildren as ::treesitter_types::FromNode>::from_node(
5131                                            child,
5132                                            src,
5133                                        ))?,
5134                                    )
5135                                })()
5136                                    .is_ok()
5137                                {
5138                                    fallback_child = Some(candidate);
5139                                    break;
5140                                }
5141                            }
5142                            if !fallback_cursor.goto_next_sibling() {
5143                                break;
5144                            }
5145                        }
5146                    }
5147                    if fallback_child.is_none() {
5148                        let mut cursor2 = node.walk();
5149                        if cursor2.goto_first_child() {
5150                            loop {
5151                                if cursor2.node().is_named() && !cursor2.node().is_extra() {
5152                                    let candidate = cursor2.node();
5153                                    #[allow(clippy::needless_question_mark)]
5154                                    if (|| -> ::core::result::Result<
5155                                        _,
5156                                        ::treesitter_types::ParseError,
5157                                    > {
5158                                        let child = candidate;
5159                                        Ok(
5160                                            ::treesitter_types::runtime::maybe_grow_stack(|| <ParenthesizedListSplatChildren as ::treesitter_types::FromNode>::from_node(
5161                                                child,
5162                                                src,
5163                                            ))?,
5164                                        )
5165                                    })()
5166                                        .is_ok()
5167                                    {
5168                                        fallback_child = Some(candidate);
5169                                        break;
5170                                    }
5171                                }
5172                                if !cursor2.goto_next_sibling() {
5173                                    break;
5174                                }
5175                            }
5176                        }
5177                    }
5178                    fallback_child.ok_or_else(|| {
5179                        ::treesitter_types::ParseError::missing_field("children", node)
5180                    })?
5181                };
5182                ::treesitter_types::runtime::maybe_grow_stack(|| {
5183                    <ParenthesizedListSplatChildren as ::treesitter_types::FromNode>::from_node(
5184                        child, src,
5185                    )
5186                })?
5187            },
5188        })
5189    }
5190}
5191impl ::treesitter_types::Spanned for ParenthesizedListSplat<'_> {
5192    fn span(&self) -> ::treesitter_types::Span {
5193        self.span
5194    }
5195}
5196#[derive(Debug, Clone, PartialEq, Eq)]
5197pub struct PassStatement<'tree> {
5198    pub span: ::treesitter_types::Span,
5199    text: &'tree str,
5200}
5201impl<'tree> ::treesitter_types::FromNode<'tree> for PassStatement<'tree> {
5202    fn from_node(
5203        node: ::treesitter_types::tree_sitter::Node<'tree>,
5204        src: &'tree [u8],
5205    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
5206        debug_assert_eq!(node.kind(), "pass_statement");
5207        Ok(Self {
5208            span: ::treesitter_types::Span::from(node),
5209            text: node.utf8_text(src)?,
5210        })
5211    }
5212}
5213impl<'tree> ::treesitter_types::LeafNode<'tree> for PassStatement<'tree> {
5214    fn text(&self) -> &'tree str {
5215        self.text
5216    }
5217}
5218impl ::treesitter_types::Spanned for PassStatement<'_> {
5219    fn span(&self) -> ::treesitter_types::Span {
5220        self.span
5221    }
5222}
5223#[derive(Debug, Clone, PartialEq, Eq)]
5224pub struct PatternList<'tree> {
5225    pub span: ::treesitter_types::Span,
5226    pub children: ::std::vec::Vec<Pattern<'tree>>,
5227}
5228impl<'tree> ::treesitter_types::FromNode<'tree> for PatternList<'tree> {
5229    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
5230    fn from_node(
5231        node: ::treesitter_types::tree_sitter::Node<'tree>,
5232        src: &'tree [u8],
5233    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
5234        debug_assert_eq!(node.kind(), "pattern_list");
5235        Ok(Self {
5236            span: ::treesitter_types::Span::from(node),
5237            children: {
5238                #[allow(clippy::suspicious_else_formatting)]
5239                let non_field_children = {
5240                    let mut cursor = node.walk();
5241                    let mut result = ::std::vec::Vec::new();
5242                    if cursor.goto_first_child() {
5243                        loop {
5244                            if cursor.field_name().is_none()
5245                                && cursor.node().is_named()
5246                                && !cursor.node().is_extra()
5247                            {
5248                                result.push(cursor.node());
5249                            }
5250                            if !cursor.goto_next_sibling() {
5251                                break;
5252                            }
5253                        }
5254                    }
5255                    result
5256                };
5257                let mut items = ::std::vec::Vec::new();
5258                for child in non_field_children {
5259                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
5260                        <Pattern as ::treesitter_types::FromNode>::from_node(child, src)
5261                    })?);
5262                }
5263                items
5264            },
5265        })
5266    }
5267}
5268impl ::treesitter_types::Spanned for PatternList<'_> {
5269    fn span(&self) -> ::treesitter_types::Span {
5270        self.span
5271    }
5272}
5273#[derive(Debug, Clone, PartialEq, Eq)]
5274pub struct PositionalSeparator<'tree> {
5275    pub span: ::treesitter_types::Span,
5276    text: &'tree str,
5277}
5278impl<'tree> ::treesitter_types::FromNode<'tree> for PositionalSeparator<'tree> {
5279    fn from_node(
5280        node: ::treesitter_types::tree_sitter::Node<'tree>,
5281        src: &'tree [u8],
5282    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
5283        debug_assert_eq!(node.kind(), "positional_separator");
5284        Ok(Self {
5285            span: ::treesitter_types::Span::from(node),
5286            text: node.utf8_text(src)?,
5287        })
5288    }
5289}
5290impl<'tree> ::treesitter_types::LeafNode<'tree> for PositionalSeparator<'tree> {
5291    fn text(&self) -> &'tree str {
5292        self.text
5293    }
5294}
5295impl ::treesitter_types::Spanned for PositionalSeparator<'_> {
5296    fn span(&self) -> ::treesitter_types::Span {
5297        self.span
5298    }
5299}
5300#[derive(Debug, Clone, PartialEq, Eq)]
5301pub struct PrintStatement<'tree> {
5302    pub span: ::treesitter_types::Span,
5303    pub argument: ::std::vec::Vec<Expression<'tree>>,
5304    pub children: ::core::option::Option<Chevron<'tree>>,
5305}
5306impl<'tree> ::treesitter_types::FromNode<'tree> for PrintStatement<'tree> {
5307    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
5308    fn from_node(
5309        node: ::treesitter_types::tree_sitter::Node<'tree>,
5310        src: &'tree [u8],
5311    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
5312        debug_assert_eq!(node.kind(), "print_statement");
5313        Ok(Self {
5314            span: ::treesitter_types::Span::from(node),
5315            argument: {
5316                let mut cursor = node.walk();
5317                let mut items = ::std::vec::Vec::new();
5318                for child in node.children_by_field_name("argument", &mut cursor) {
5319                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
5320                        <Expression as ::treesitter_types::FromNode>::from_node(child, src)
5321                    })?);
5322                }
5323                items
5324            },
5325            children: {
5326                #[allow(clippy::suspicious_else_formatting)]
5327                let non_field_children = {
5328                    let mut cursor = node.walk();
5329                    let mut result = ::std::vec::Vec::new();
5330                    if cursor.goto_first_child() {
5331                        loop {
5332                            if cursor.field_name().is_none()
5333                                && cursor.node().is_named()
5334                                && !cursor.node().is_extra()
5335                            {
5336                                result.push(cursor.node());
5337                            }
5338                            if !cursor.goto_next_sibling() {
5339                                break;
5340                            }
5341                        }
5342                    }
5343                    result
5344                };
5345                match non_field_children.first() {
5346                    Some(&child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
5347                        <Chevron as ::treesitter_types::FromNode>::from_node(child, src)
5348                    })?),
5349                    None => None,
5350                }
5351            },
5352        })
5353    }
5354}
5355impl ::treesitter_types::Spanned for PrintStatement<'_> {
5356    fn span(&self) -> ::treesitter_types::Span {
5357        self.span
5358    }
5359}
5360#[derive(Debug, Clone, PartialEq, Eq)]
5361pub struct RaiseStatement<'tree> {
5362    pub span: ::treesitter_types::Span,
5363    pub cause: ::core::option::Option<Expression<'tree>>,
5364    pub children: ::core::option::Option<RaiseStatementChildren<'tree>>,
5365}
5366impl<'tree> ::treesitter_types::FromNode<'tree> for RaiseStatement<'tree> {
5367    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
5368    fn from_node(
5369        node: ::treesitter_types::tree_sitter::Node<'tree>,
5370        src: &'tree [u8],
5371    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
5372        debug_assert_eq!(node.kind(), "raise_statement");
5373        Ok(Self {
5374            span: ::treesitter_types::Span::from(node),
5375            cause: match node.child_by_field_name("cause") {
5376                Some(child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
5377                    <Expression as ::treesitter_types::FromNode>::from_node(child, src)
5378                })?),
5379                None => None,
5380            },
5381            children: {
5382                #[allow(clippy::suspicious_else_formatting)]
5383                let non_field_children = {
5384                    let mut cursor = node.walk();
5385                    let mut result = ::std::vec::Vec::new();
5386                    if cursor.goto_first_child() {
5387                        loop {
5388                            if cursor.field_name().is_none()
5389                                && cursor.node().is_named()
5390                                && !cursor.node().is_extra()
5391                            {
5392                                result.push(cursor.node());
5393                            }
5394                            if !cursor.goto_next_sibling() {
5395                                break;
5396                            }
5397                        }
5398                    }
5399                    result
5400                };
5401                match non_field_children.first() {
5402                    Some(&child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
5403                        <RaiseStatementChildren as ::treesitter_types::FromNode>::from_node(
5404                            child, src,
5405                        )
5406                    })?),
5407                    None => None,
5408                }
5409            },
5410        })
5411    }
5412}
5413impl ::treesitter_types::Spanned for RaiseStatement<'_> {
5414    fn span(&self) -> ::treesitter_types::Span {
5415        self.span
5416    }
5417}
5418#[derive(Debug, Clone, PartialEq, Eq)]
5419pub struct RelativeImport<'tree> {
5420    pub span: ::treesitter_types::Span,
5421    pub children: ::std::vec::Vec<RelativeImportChildren<'tree>>,
5422}
5423impl<'tree> ::treesitter_types::FromNode<'tree> for RelativeImport<'tree> {
5424    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
5425    fn from_node(
5426        node: ::treesitter_types::tree_sitter::Node<'tree>,
5427        src: &'tree [u8],
5428    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
5429        debug_assert_eq!(node.kind(), "relative_import");
5430        Ok(Self {
5431            span: ::treesitter_types::Span::from(node),
5432            children: {
5433                #[allow(clippy::suspicious_else_formatting)]
5434                let non_field_children = {
5435                    let mut cursor = node.walk();
5436                    let mut result = ::std::vec::Vec::new();
5437                    if cursor.goto_first_child() {
5438                        loop {
5439                            if cursor.field_name().is_none()
5440                                && cursor.node().is_named()
5441                                && !cursor.node().is_extra()
5442                            {
5443                                result.push(cursor.node());
5444                            }
5445                            if !cursor.goto_next_sibling() {
5446                                break;
5447                            }
5448                        }
5449                    }
5450                    result
5451                };
5452                let mut items = ::std::vec::Vec::new();
5453                for child in non_field_children {
5454                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
5455                        <RelativeImportChildren as ::treesitter_types::FromNode>::from_node(
5456                            child, src,
5457                        )
5458                    })?);
5459                }
5460                items
5461            },
5462        })
5463    }
5464}
5465impl ::treesitter_types::Spanned for RelativeImport<'_> {
5466    fn span(&self) -> ::treesitter_types::Span {
5467        self.span
5468    }
5469}
5470#[derive(Debug, Clone, PartialEq, Eq)]
5471pub struct ReturnStatement<'tree> {
5472    pub span: ::treesitter_types::Span,
5473    pub children: ::core::option::Option<ReturnStatementChildren<'tree>>,
5474}
5475impl<'tree> ::treesitter_types::FromNode<'tree> for ReturnStatement<'tree> {
5476    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
5477    fn from_node(
5478        node: ::treesitter_types::tree_sitter::Node<'tree>,
5479        src: &'tree [u8],
5480    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
5481        debug_assert_eq!(node.kind(), "return_statement");
5482        Ok(Self {
5483            span: ::treesitter_types::Span::from(node),
5484            children: {
5485                #[allow(clippy::suspicious_else_formatting)]
5486                let non_field_children = {
5487                    let mut cursor = node.walk();
5488                    let mut result = ::std::vec::Vec::new();
5489                    if cursor.goto_first_child() {
5490                        loop {
5491                            if cursor.field_name().is_none()
5492                                && cursor.node().is_named()
5493                                && !cursor.node().is_extra()
5494                            {
5495                                result.push(cursor.node());
5496                            }
5497                            if !cursor.goto_next_sibling() {
5498                                break;
5499                            }
5500                        }
5501                    }
5502                    result
5503                };
5504                match non_field_children.first() {
5505                    Some(&child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
5506                        <ReturnStatementChildren as ::treesitter_types::FromNode>::from_node(
5507                            child, src,
5508                        )
5509                    })?),
5510                    None => None,
5511                }
5512            },
5513        })
5514    }
5515}
5516impl ::treesitter_types::Spanned for ReturnStatement<'_> {
5517    fn span(&self) -> ::treesitter_types::Span {
5518        self.span
5519    }
5520}
5521#[derive(Debug, Clone, PartialEq, Eq)]
5522pub struct Set<'tree> {
5523    pub span: ::treesitter_types::Span,
5524    pub children: ::std::vec::Vec<SetChildren<'tree>>,
5525}
5526impl<'tree> ::treesitter_types::FromNode<'tree> for Set<'tree> {
5527    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
5528    fn from_node(
5529        node: ::treesitter_types::tree_sitter::Node<'tree>,
5530        src: &'tree [u8],
5531    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
5532        debug_assert_eq!(node.kind(), "set");
5533        Ok(Self {
5534            span: ::treesitter_types::Span::from(node),
5535            children: {
5536                #[allow(clippy::suspicious_else_formatting)]
5537                let non_field_children = {
5538                    let mut cursor = node.walk();
5539                    let mut result = ::std::vec::Vec::new();
5540                    if cursor.goto_first_child() {
5541                        loop {
5542                            if cursor.field_name().is_none()
5543                                && cursor.node().is_named()
5544                                && !cursor.node().is_extra()
5545                            {
5546                                result.push(cursor.node());
5547                            }
5548                            if !cursor.goto_next_sibling() {
5549                                break;
5550                            }
5551                        }
5552                    }
5553                    result
5554                };
5555                let mut items = ::std::vec::Vec::new();
5556                for child in non_field_children {
5557                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
5558                        <SetChildren as ::treesitter_types::FromNode>::from_node(child, src)
5559                    })?);
5560                }
5561                items
5562            },
5563        })
5564    }
5565}
5566impl ::treesitter_types::Spanned for Set<'_> {
5567    fn span(&self) -> ::treesitter_types::Span {
5568        self.span
5569    }
5570}
5571#[derive(Debug, Clone, PartialEq, Eq)]
5572pub struct SetComprehension<'tree> {
5573    pub span: ::treesitter_types::Span,
5574    pub body: Expression<'tree>,
5575    pub children: ::std::vec::Vec<SetComprehensionChildren<'tree>>,
5576}
5577impl<'tree> ::treesitter_types::FromNode<'tree> for SetComprehension<'tree> {
5578    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
5579    fn from_node(
5580        node: ::treesitter_types::tree_sitter::Node<'tree>,
5581        src: &'tree [u8],
5582    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
5583        debug_assert_eq!(node.kind(), "set_comprehension");
5584        Ok(Self {
5585            span: ::treesitter_types::Span::from(node),
5586            body: {
5587                let child = node
5588                    .child_by_field_name("body")
5589                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("body", node))?;
5590                ::treesitter_types::runtime::maybe_grow_stack(|| {
5591                    <Expression as ::treesitter_types::FromNode>::from_node(child, src)
5592                })?
5593            },
5594            children: {
5595                #[allow(clippy::suspicious_else_formatting)]
5596                let non_field_children = {
5597                    let mut cursor = node.walk();
5598                    let mut result = ::std::vec::Vec::new();
5599                    if cursor.goto_first_child() {
5600                        loop {
5601                            if cursor.field_name().is_none()
5602                                && cursor.node().is_named()
5603                                && !cursor.node().is_extra()
5604                            {
5605                                result.push(cursor.node());
5606                            }
5607                            if !cursor.goto_next_sibling() {
5608                                break;
5609                            }
5610                        }
5611                    }
5612                    result
5613                };
5614                let mut items = ::std::vec::Vec::new();
5615                for child in non_field_children {
5616                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
5617                        <SetComprehensionChildren as ::treesitter_types::FromNode>::from_node(
5618                            child, src,
5619                        )
5620                    })?);
5621                }
5622                items
5623            },
5624        })
5625    }
5626}
5627impl ::treesitter_types::Spanned for SetComprehension<'_> {
5628    fn span(&self) -> ::treesitter_types::Span {
5629        self.span
5630    }
5631}
5632#[derive(Debug, Clone, PartialEq, Eq)]
5633pub struct Slice<'tree> {
5634    pub span: ::treesitter_types::Span,
5635    pub children: ::std::vec::Vec<Expression<'tree>>,
5636}
5637impl<'tree> ::treesitter_types::FromNode<'tree> for Slice<'tree> {
5638    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
5639    fn from_node(
5640        node: ::treesitter_types::tree_sitter::Node<'tree>,
5641        src: &'tree [u8],
5642    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
5643        debug_assert_eq!(node.kind(), "slice");
5644        Ok(Self {
5645            span: ::treesitter_types::Span::from(node),
5646            children: {
5647                #[allow(clippy::suspicious_else_formatting)]
5648                let non_field_children = {
5649                    let mut cursor = node.walk();
5650                    let mut result = ::std::vec::Vec::new();
5651                    if cursor.goto_first_child() {
5652                        loop {
5653                            if cursor.field_name().is_none()
5654                                && cursor.node().is_named()
5655                                && !cursor.node().is_extra()
5656                            {
5657                                result.push(cursor.node());
5658                            }
5659                            if !cursor.goto_next_sibling() {
5660                                break;
5661                            }
5662                        }
5663                    }
5664                    result
5665                };
5666                let mut items = ::std::vec::Vec::new();
5667                for child in non_field_children {
5668                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
5669                        <Expression as ::treesitter_types::FromNode>::from_node(child, src)
5670                    })?);
5671                }
5672                items
5673            },
5674        })
5675    }
5676}
5677impl ::treesitter_types::Spanned for Slice<'_> {
5678    fn span(&self) -> ::treesitter_types::Span {
5679        self.span
5680    }
5681}
5682#[derive(Debug, Clone, PartialEq, Eq)]
5683pub struct SplatPattern<'tree> {
5684    pub span: ::treesitter_types::Span,
5685    pub children: ::core::option::Option<Identifier<'tree>>,
5686}
5687impl<'tree> ::treesitter_types::FromNode<'tree> for SplatPattern<'tree> {
5688    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
5689    fn from_node(
5690        node: ::treesitter_types::tree_sitter::Node<'tree>,
5691        src: &'tree [u8],
5692    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
5693        debug_assert_eq!(node.kind(), "splat_pattern");
5694        Ok(Self {
5695            span: ::treesitter_types::Span::from(node),
5696            children: {
5697                #[allow(clippy::suspicious_else_formatting)]
5698                let non_field_children = {
5699                    let mut cursor = node.walk();
5700                    let mut result = ::std::vec::Vec::new();
5701                    if cursor.goto_first_child() {
5702                        loop {
5703                            if cursor.field_name().is_none()
5704                                && cursor.node().is_named()
5705                                && !cursor.node().is_extra()
5706                            {
5707                                result.push(cursor.node());
5708                            }
5709                            if !cursor.goto_next_sibling() {
5710                                break;
5711                            }
5712                        }
5713                    }
5714                    result
5715                };
5716                match non_field_children.first() {
5717                    Some(&child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
5718                        <Identifier as ::treesitter_types::FromNode>::from_node(child, src)
5719                    })?),
5720                    None => None,
5721                }
5722            },
5723        })
5724    }
5725}
5726impl ::treesitter_types::Spanned for SplatPattern<'_> {
5727    fn span(&self) -> ::treesitter_types::Span {
5728        self.span
5729    }
5730}
5731#[derive(Debug, Clone, PartialEq, Eq)]
5732pub struct SplatType<'tree> {
5733    pub span: ::treesitter_types::Span,
5734    pub children: Identifier<'tree>,
5735}
5736impl<'tree> ::treesitter_types::FromNode<'tree> for SplatType<'tree> {
5737    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
5738    fn from_node(
5739        node: ::treesitter_types::tree_sitter::Node<'tree>,
5740        src: &'tree [u8],
5741    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
5742        debug_assert_eq!(node.kind(), "splat_type");
5743        Ok(Self {
5744            span: ::treesitter_types::Span::from(node),
5745            children: {
5746                #[allow(clippy::suspicious_else_formatting)]
5747                let non_field_children = {
5748                    let mut cursor = node.walk();
5749                    let mut result = ::std::vec::Vec::new();
5750                    if cursor.goto_first_child() {
5751                        loop {
5752                            if cursor.field_name().is_none()
5753                                && cursor.node().is_named()
5754                                && !cursor.node().is_extra()
5755                            {
5756                                result.push(cursor.node());
5757                            }
5758                            if !cursor.goto_next_sibling() {
5759                                break;
5760                            }
5761                        }
5762                    }
5763                    result
5764                };
5765                let child = if let Some(&c) = non_field_children.first() {
5766                    c
5767                } else {
5768                    let mut fallback_cursor = node.walk();
5769                    let mut fallback_child = None;
5770                    if fallback_cursor.goto_first_child() {
5771                        loop {
5772                            if fallback_cursor.field_name().is_none()
5773                                && !fallback_cursor.node().is_extra()
5774                            {
5775                                let candidate = fallback_cursor.node();
5776                                #[allow(clippy::needless_question_mark)]
5777                                if (|| -> ::core::result::Result<
5778                                    _,
5779                                    ::treesitter_types::ParseError,
5780                                > {
5781                                    let child = candidate;
5782                                    Ok(
5783                                        ::treesitter_types::runtime::maybe_grow_stack(|| <Identifier as ::treesitter_types::FromNode>::from_node(
5784                                            child,
5785                                            src,
5786                                        ))?,
5787                                    )
5788                                })()
5789                                    .is_ok()
5790                                {
5791                                    fallback_child = Some(candidate);
5792                                    break;
5793                                }
5794                            }
5795                            if !fallback_cursor.goto_next_sibling() {
5796                                break;
5797                            }
5798                        }
5799                    }
5800                    if fallback_child.is_none() {
5801                        let mut cursor2 = node.walk();
5802                        if cursor2.goto_first_child() {
5803                            loop {
5804                                if cursor2.node().is_named() && !cursor2.node().is_extra() {
5805                                    let candidate = cursor2.node();
5806                                    #[allow(clippy::needless_question_mark)]
5807                                    if (|| -> ::core::result::Result<
5808                                        _,
5809                                        ::treesitter_types::ParseError,
5810                                    > {
5811                                        let child = candidate;
5812                                        Ok(
5813                                            ::treesitter_types::runtime::maybe_grow_stack(|| <Identifier as ::treesitter_types::FromNode>::from_node(
5814                                                child,
5815                                                src,
5816                                            ))?,
5817                                        )
5818                                    })()
5819                                        .is_ok()
5820                                    {
5821                                        fallback_child = Some(candidate);
5822                                        break;
5823                                    }
5824                                }
5825                                if !cursor2.goto_next_sibling() {
5826                                    break;
5827                                }
5828                            }
5829                        }
5830                    }
5831                    fallback_child.ok_or_else(|| {
5832                        ::treesitter_types::ParseError::missing_field("children", node)
5833                    })?
5834                };
5835                ::treesitter_types::runtime::maybe_grow_stack(|| {
5836                    <Identifier as ::treesitter_types::FromNode>::from_node(child, src)
5837                })?
5838            },
5839        })
5840    }
5841}
5842impl ::treesitter_types::Spanned for SplatType<'_> {
5843    fn span(&self) -> ::treesitter_types::Span {
5844        self.span
5845    }
5846}
5847#[derive(Debug, Clone, PartialEq, Eq)]
5848pub struct String<'tree> {
5849    pub span: ::treesitter_types::Span,
5850    pub children: ::std::vec::Vec<StringChildren<'tree>>,
5851}
5852impl<'tree> ::treesitter_types::FromNode<'tree> for String<'tree> {
5853    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
5854    fn from_node(
5855        node: ::treesitter_types::tree_sitter::Node<'tree>,
5856        src: &'tree [u8],
5857    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
5858        debug_assert_eq!(node.kind(), "string");
5859        Ok(Self {
5860            span: ::treesitter_types::Span::from(node),
5861            children: {
5862                #[allow(clippy::suspicious_else_formatting)]
5863                let non_field_children = {
5864                    let mut cursor = node.walk();
5865                    let mut result = ::std::vec::Vec::new();
5866                    if cursor.goto_first_child() {
5867                        loop {
5868                            if cursor.field_name().is_none()
5869                                && cursor.node().is_named()
5870                                && !cursor.node().is_extra()
5871                            {
5872                                result.push(cursor.node());
5873                            }
5874                            if !cursor.goto_next_sibling() {
5875                                break;
5876                            }
5877                        }
5878                    }
5879                    result
5880                };
5881                let mut items = ::std::vec::Vec::new();
5882                for child in non_field_children {
5883                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
5884                        <StringChildren as ::treesitter_types::FromNode>::from_node(child, src)
5885                    })?);
5886                }
5887                items
5888            },
5889        })
5890    }
5891}
5892impl ::treesitter_types::Spanned for String<'_> {
5893    fn span(&self) -> ::treesitter_types::Span {
5894        self.span
5895    }
5896}
5897#[derive(Debug, Clone, PartialEq, Eq)]
5898pub struct StringContent<'tree> {
5899    pub span: ::treesitter_types::Span,
5900    pub children: ::std::vec::Vec<StringContentChildren<'tree>>,
5901}
5902impl<'tree> ::treesitter_types::FromNode<'tree> for StringContent<'tree> {
5903    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
5904    fn from_node(
5905        node: ::treesitter_types::tree_sitter::Node<'tree>,
5906        src: &'tree [u8],
5907    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
5908        debug_assert_eq!(node.kind(), "string_content");
5909        Ok(Self {
5910            span: ::treesitter_types::Span::from(node),
5911            children: {
5912                #[allow(clippy::suspicious_else_formatting)]
5913                let non_field_children = {
5914                    let mut cursor = node.walk();
5915                    let mut result = ::std::vec::Vec::new();
5916                    if cursor.goto_first_child() {
5917                        loop {
5918                            if cursor.field_name().is_none()
5919                                && cursor.node().is_named()
5920                                && !cursor.node().is_extra()
5921                            {
5922                                result.push(cursor.node());
5923                            }
5924                            if !cursor.goto_next_sibling() {
5925                                break;
5926                            }
5927                        }
5928                    }
5929                    result
5930                };
5931                let mut items = ::std::vec::Vec::new();
5932                for child in non_field_children {
5933                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
5934                        <StringContentChildren as ::treesitter_types::FromNode>::from_node(
5935                            child, src,
5936                        )
5937                    })?);
5938                }
5939                items
5940            },
5941        })
5942    }
5943}
5944impl ::treesitter_types::Spanned for StringContent<'_> {
5945    fn span(&self) -> ::treesitter_types::Span {
5946        self.span
5947    }
5948}
5949#[derive(Debug, Clone, PartialEq, Eq)]
5950pub struct Subscript<'tree> {
5951    pub span: ::treesitter_types::Span,
5952    pub subscript: ::std::vec::Vec<SubscriptSubscript<'tree>>,
5953    pub value: PrimaryExpression<'tree>,
5954}
5955impl<'tree> ::treesitter_types::FromNode<'tree> for Subscript<'tree> {
5956    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
5957    fn from_node(
5958        node: ::treesitter_types::tree_sitter::Node<'tree>,
5959        src: &'tree [u8],
5960    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
5961        debug_assert_eq!(node.kind(), "subscript");
5962        Ok(Self {
5963            span: ::treesitter_types::Span::from(node),
5964            subscript: {
5965                let mut cursor = node.walk();
5966                let mut items = ::std::vec::Vec::new();
5967                for child in node.children_by_field_name("subscript", &mut cursor) {
5968                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
5969                        <SubscriptSubscript as ::treesitter_types::FromNode>::from_node(child, src)
5970                    })?);
5971                }
5972                items
5973            },
5974            value: {
5975                let child = node
5976                    .child_by_field_name("value")
5977                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("value", node))?;
5978                ::treesitter_types::runtime::maybe_grow_stack(|| {
5979                    <PrimaryExpression as ::treesitter_types::FromNode>::from_node(child, src)
5980                })?
5981            },
5982        })
5983    }
5984}
5985impl ::treesitter_types::Spanned for Subscript<'_> {
5986    fn span(&self) -> ::treesitter_types::Span {
5987        self.span
5988    }
5989}
5990#[derive(Debug, Clone, PartialEq, Eq)]
5991pub struct TryStatement<'tree> {
5992    pub span: ::treesitter_types::Span,
5993    pub body: Block<'tree>,
5994    pub children: ::std::vec::Vec<TryStatementChildren<'tree>>,
5995}
5996impl<'tree> ::treesitter_types::FromNode<'tree> for TryStatement<'tree> {
5997    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
5998    fn from_node(
5999        node: ::treesitter_types::tree_sitter::Node<'tree>,
6000        src: &'tree [u8],
6001    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
6002        debug_assert_eq!(node.kind(), "try_statement");
6003        Ok(Self {
6004            span: ::treesitter_types::Span::from(node),
6005            body: {
6006                let child = node
6007                    .child_by_field_name("body")
6008                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("body", node))?;
6009                ::treesitter_types::runtime::maybe_grow_stack(|| {
6010                    <Block as ::treesitter_types::FromNode>::from_node(child, src)
6011                })?
6012            },
6013            children: {
6014                #[allow(clippy::suspicious_else_formatting)]
6015                let non_field_children = {
6016                    let mut cursor = node.walk();
6017                    let mut result = ::std::vec::Vec::new();
6018                    if cursor.goto_first_child() {
6019                        loop {
6020                            if cursor.field_name().is_none()
6021                                && cursor.node().is_named()
6022                                && !cursor.node().is_extra()
6023                            {
6024                                result.push(cursor.node());
6025                            }
6026                            if !cursor.goto_next_sibling() {
6027                                break;
6028                            }
6029                        }
6030                    }
6031                    result
6032                };
6033                let mut items = ::std::vec::Vec::new();
6034                for child in non_field_children {
6035                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
6036                        <TryStatementChildren as ::treesitter_types::FromNode>::from_node(
6037                            child, src,
6038                        )
6039                    })?);
6040                }
6041                items
6042            },
6043        })
6044    }
6045}
6046impl ::treesitter_types::Spanned for TryStatement<'_> {
6047    fn span(&self) -> ::treesitter_types::Span {
6048        self.span
6049    }
6050}
6051#[derive(Debug, Clone, PartialEq, Eq)]
6052pub struct Tuple<'tree> {
6053    pub span: ::treesitter_types::Span,
6054    pub children: ::std::vec::Vec<TupleChildren<'tree>>,
6055}
6056impl<'tree> ::treesitter_types::FromNode<'tree> for Tuple<'tree> {
6057    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
6058    fn from_node(
6059        node: ::treesitter_types::tree_sitter::Node<'tree>,
6060        src: &'tree [u8],
6061    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
6062        debug_assert_eq!(node.kind(), "tuple");
6063        Ok(Self {
6064            span: ::treesitter_types::Span::from(node),
6065            children: {
6066                #[allow(clippy::suspicious_else_formatting)]
6067                let non_field_children = {
6068                    let mut cursor = node.walk();
6069                    let mut result = ::std::vec::Vec::new();
6070                    if cursor.goto_first_child() {
6071                        loop {
6072                            if cursor.field_name().is_none()
6073                                && cursor.node().is_named()
6074                                && !cursor.node().is_extra()
6075                            {
6076                                result.push(cursor.node());
6077                            }
6078                            if !cursor.goto_next_sibling() {
6079                                break;
6080                            }
6081                        }
6082                    }
6083                    result
6084                };
6085                let mut items = ::std::vec::Vec::new();
6086                for child in non_field_children {
6087                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
6088                        <TupleChildren as ::treesitter_types::FromNode>::from_node(child, src)
6089                    })?);
6090                }
6091                items
6092            },
6093        })
6094    }
6095}
6096impl ::treesitter_types::Spanned for Tuple<'_> {
6097    fn span(&self) -> ::treesitter_types::Span {
6098        self.span
6099    }
6100}
6101#[derive(Debug, Clone, PartialEq, Eq)]
6102pub struct TuplePattern<'tree> {
6103    pub span: ::treesitter_types::Span,
6104    pub children: ::std::vec::Vec<TuplePatternChildren<'tree>>,
6105}
6106impl<'tree> ::treesitter_types::FromNode<'tree> for TuplePattern<'tree> {
6107    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
6108    fn from_node(
6109        node: ::treesitter_types::tree_sitter::Node<'tree>,
6110        src: &'tree [u8],
6111    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
6112        debug_assert_eq!(node.kind(), "tuple_pattern");
6113        Ok(Self {
6114            span: ::treesitter_types::Span::from(node),
6115            children: {
6116                #[allow(clippy::suspicious_else_formatting)]
6117                let non_field_children = {
6118                    let mut cursor = node.walk();
6119                    let mut result = ::std::vec::Vec::new();
6120                    if cursor.goto_first_child() {
6121                        loop {
6122                            if cursor.field_name().is_none()
6123                                && cursor.node().is_named()
6124                                && !cursor.node().is_extra()
6125                            {
6126                                result.push(cursor.node());
6127                            }
6128                            if !cursor.goto_next_sibling() {
6129                                break;
6130                            }
6131                        }
6132                    }
6133                    result
6134                };
6135                let mut items = ::std::vec::Vec::new();
6136                for child in non_field_children {
6137                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
6138                        <TuplePatternChildren as ::treesitter_types::FromNode>::from_node(
6139                            child, src,
6140                        )
6141                    })?);
6142                }
6143                items
6144            },
6145        })
6146    }
6147}
6148impl ::treesitter_types::Spanned for TuplePattern<'_> {
6149    fn span(&self) -> ::treesitter_types::Span {
6150        self.span
6151    }
6152}
6153#[derive(Debug, Clone, PartialEq, Eq)]
6154pub struct Type<'tree> {
6155    pub span: ::treesitter_types::Span,
6156    pub children: TypeChildren<'tree>,
6157}
6158impl<'tree> ::treesitter_types::FromNode<'tree> for Type<'tree> {
6159    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
6160    fn from_node(
6161        node: ::treesitter_types::tree_sitter::Node<'tree>,
6162        src: &'tree [u8],
6163    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
6164        debug_assert_eq!(node.kind(), "type");
6165        Ok(Self {
6166            span: ::treesitter_types::Span::from(node),
6167            children: {
6168                #[allow(clippy::suspicious_else_formatting)]
6169                let non_field_children = {
6170                    let mut cursor = node.walk();
6171                    let mut result = ::std::vec::Vec::new();
6172                    if cursor.goto_first_child() {
6173                        loop {
6174                            if cursor.field_name().is_none()
6175                                && cursor.node().is_named()
6176                                && !cursor.node().is_extra()
6177                            {
6178                                result.push(cursor.node());
6179                            }
6180                            if !cursor.goto_next_sibling() {
6181                                break;
6182                            }
6183                        }
6184                    }
6185                    result
6186                };
6187                let child = if let Some(&c) = non_field_children.first() {
6188                    c
6189                } else {
6190                    let mut fallback_cursor = node.walk();
6191                    let mut fallback_child = None;
6192                    if fallback_cursor.goto_first_child() {
6193                        loop {
6194                            if fallback_cursor.field_name().is_none()
6195                                && !fallback_cursor.node().is_extra()
6196                            {
6197                                let candidate = fallback_cursor.node();
6198                                #[allow(clippy::needless_question_mark)]
6199                                if (|| -> ::core::result::Result<
6200                                    _,
6201                                    ::treesitter_types::ParseError,
6202                                > {
6203                                    let child = candidate;
6204                                    Ok(
6205                                        ::treesitter_types::runtime::maybe_grow_stack(|| <TypeChildren as ::treesitter_types::FromNode>::from_node(
6206                                            child,
6207                                            src,
6208                                        ))?,
6209                                    )
6210                                })()
6211                                    .is_ok()
6212                                {
6213                                    fallback_child = Some(candidate);
6214                                    break;
6215                                }
6216                            }
6217                            if !fallback_cursor.goto_next_sibling() {
6218                                break;
6219                            }
6220                        }
6221                    }
6222                    if fallback_child.is_none() {
6223                        let mut cursor2 = node.walk();
6224                        if cursor2.goto_first_child() {
6225                            loop {
6226                                if cursor2.node().is_named() && !cursor2.node().is_extra() {
6227                                    let candidate = cursor2.node();
6228                                    #[allow(clippy::needless_question_mark)]
6229                                    if (|| -> ::core::result::Result<
6230                                        _,
6231                                        ::treesitter_types::ParseError,
6232                                    > {
6233                                        let child = candidate;
6234                                        Ok(
6235                                            ::treesitter_types::runtime::maybe_grow_stack(|| <TypeChildren as ::treesitter_types::FromNode>::from_node(
6236                                                child,
6237                                                src,
6238                                            ))?,
6239                                        )
6240                                    })()
6241                                        .is_ok()
6242                                    {
6243                                        fallback_child = Some(candidate);
6244                                        break;
6245                                    }
6246                                }
6247                                if !cursor2.goto_next_sibling() {
6248                                    break;
6249                                }
6250                            }
6251                        }
6252                    }
6253                    fallback_child.ok_or_else(|| {
6254                        ::treesitter_types::ParseError::missing_field("children", node)
6255                    })?
6256                };
6257                ::treesitter_types::runtime::maybe_grow_stack(|| {
6258                    <TypeChildren as ::treesitter_types::FromNode>::from_node(child, src)
6259                })?
6260            },
6261        })
6262    }
6263}
6264impl ::treesitter_types::Spanned for Type<'_> {
6265    fn span(&self) -> ::treesitter_types::Span {
6266        self.span
6267    }
6268}
6269#[derive(Debug, Clone, PartialEq, Eq)]
6270pub struct TypeAliasStatement<'tree> {
6271    pub span: ::treesitter_types::Span,
6272    pub left: Type<'tree>,
6273    pub right: Type<'tree>,
6274}
6275impl<'tree> ::treesitter_types::FromNode<'tree> for TypeAliasStatement<'tree> {
6276    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
6277    fn from_node(
6278        node: ::treesitter_types::tree_sitter::Node<'tree>,
6279        src: &'tree [u8],
6280    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
6281        debug_assert_eq!(node.kind(), "type_alias_statement");
6282        Ok(Self {
6283            span: ::treesitter_types::Span::from(node),
6284            left: {
6285                let child = node
6286                    .child_by_field_name("left")
6287                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("left", node))?;
6288                ::treesitter_types::runtime::maybe_grow_stack(|| {
6289                    <Type as ::treesitter_types::FromNode>::from_node(child, src)
6290                })?
6291            },
6292            right: {
6293                let child = node
6294                    .child_by_field_name("right")
6295                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("right", node))?;
6296                ::treesitter_types::runtime::maybe_grow_stack(|| {
6297                    <Type as ::treesitter_types::FromNode>::from_node(child, src)
6298                })?
6299            },
6300        })
6301    }
6302}
6303impl ::treesitter_types::Spanned for TypeAliasStatement<'_> {
6304    fn span(&self) -> ::treesitter_types::Span {
6305        self.span
6306    }
6307}
6308#[derive(Debug, Clone, PartialEq, Eq)]
6309pub struct TypeParameter<'tree> {
6310    pub span: ::treesitter_types::Span,
6311    pub children: ::std::vec::Vec<Type<'tree>>,
6312}
6313impl<'tree> ::treesitter_types::FromNode<'tree> for TypeParameter<'tree> {
6314    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
6315    fn from_node(
6316        node: ::treesitter_types::tree_sitter::Node<'tree>,
6317        src: &'tree [u8],
6318    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
6319        debug_assert_eq!(node.kind(), "type_parameter");
6320        Ok(Self {
6321            span: ::treesitter_types::Span::from(node),
6322            children: {
6323                #[allow(clippy::suspicious_else_formatting)]
6324                let non_field_children = {
6325                    let mut cursor = node.walk();
6326                    let mut result = ::std::vec::Vec::new();
6327                    if cursor.goto_first_child() {
6328                        loop {
6329                            if cursor.field_name().is_none()
6330                                && cursor.node().is_named()
6331                                && !cursor.node().is_extra()
6332                            {
6333                                result.push(cursor.node());
6334                            }
6335                            if !cursor.goto_next_sibling() {
6336                                break;
6337                            }
6338                        }
6339                    }
6340                    result
6341                };
6342                let mut items = ::std::vec::Vec::new();
6343                for child in non_field_children {
6344                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
6345                        <Type as ::treesitter_types::FromNode>::from_node(child, src)
6346                    })?);
6347                }
6348                items
6349            },
6350        })
6351    }
6352}
6353impl ::treesitter_types::Spanned for TypeParameter<'_> {
6354    fn span(&self) -> ::treesitter_types::Span {
6355        self.span
6356    }
6357}
6358#[derive(Debug, Clone, PartialEq, Eq)]
6359pub struct TypedDefaultParameter<'tree> {
6360    pub span: ::treesitter_types::Span,
6361    pub name: Identifier<'tree>,
6362    pub r#type: Type<'tree>,
6363    pub value: Expression<'tree>,
6364}
6365impl<'tree> ::treesitter_types::FromNode<'tree> for TypedDefaultParameter<'tree> {
6366    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
6367    fn from_node(
6368        node: ::treesitter_types::tree_sitter::Node<'tree>,
6369        src: &'tree [u8],
6370    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
6371        debug_assert_eq!(node.kind(), "typed_default_parameter");
6372        Ok(Self {
6373            span: ::treesitter_types::Span::from(node),
6374            name: {
6375                let child = node
6376                    .child_by_field_name("name")
6377                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("name", node))?;
6378                ::treesitter_types::runtime::maybe_grow_stack(|| {
6379                    <Identifier as ::treesitter_types::FromNode>::from_node(child, src)
6380                })?
6381            },
6382            r#type: {
6383                let child = node
6384                    .child_by_field_name("type")
6385                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("type", node))?;
6386                ::treesitter_types::runtime::maybe_grow_stack(|| {
6387                    <Type as ::treesitter_types::FromNode>::from_node(child, src)
6388                })?
6389            },
6390            value: {
6391                let child = node
6392                    .child_by_field_name("value")
6393                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("value", node))?;
6394                ::treesitter_types::runtime::maybe_grow_stack(|| {
6395                    <Expression as ::treesitter_types::FromNode>::from_node(child, src)
6396                })?
6397            },
6398        })
6399    }
6400}
6401impl ::treesitter_types::Spanned for TypedDefaultParameter<'_> {
6402    fn span(&self) -> ::treesitter_types::Span {
6403        self.span
6404    }
6405}
6406#[derive(Debug, Clone, PartialEq, Eq)]
6407pub struct TypedParameter<'tree> {
6408    pub span: ::treesitter_types::Span,
6409    pub r#type: Type<'tree>,
6410    pub children: TypedParameterChildren<'tree>,
6411}
6412impl<'tree> ::treesitter_types::FromNode<'tree> for TypedParameter<'tree> {
6413    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
6414    fn from_node(
6415        node: ::treesitter_types::tree_sitter::Node<'tree>,
6416        src: &'tree [u8],
6417    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
6418        debug_assert_eq!(node.kind(), "typed_parameter");
6419        Ok(Self {
6420            span: ::treesitter_types::Span::from(node),
6421            r#type: {
6422                let child = node
6423                    .child_by_field_name("type")
6424                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("type", node))?;
6425                ::treesitter_types::runtime::maybe_grow_stack(|| {
6426                    <Type as ::treesitter_types::FromNode>::from_node(child, src)
6427                })?
6428            },
6429            children: {
6430                #[allow(clippy::suspicious_else_formatting)]
6431                let non_field_children = {
6432                    let mut cursor = node.walk();
6433                    let mut result = ::std::vec::Vec::new();
6434                    if cursor.goto_first_child() {
6435                        loop {
6436                            if cursor.field_name().is_none()
6437                                && cursor.node().is_named()
6438                                && !cursor.node().is_extra()
6439                            {
6440                                result.push(cursor.node());
6441                            }
6442                            if !cursor.goto_next_sibling() {
6443                                break;
6444                            }
6445                        }
6446                    }
6447                    result
6448                };
6449                let child = if let Some(&c) = non_field_children.first() {
6450                    c
6451                } else {
6452                    let mut fallback_cursor = node.walk();
6453                    let mut fallback_child = None;
6454                    if fallback_cursor.goto_first_child() {
6455                        loop {
6456                            if fallback_cursor.field_name().is_none()
6457                                && !fallback_cursor.node().is_extra()
6458                            {
6459                                let candidate = fallback_cursor.node();
6460                                #[allow(clippy::needless_question_mark)]
6461                                if (|| -> ::core::result::Result<
6462                                    _,
6463                                    ::treesitter_types::ParseError,
6464                                > {
6465                                    let child = candidate;
6466                                    Ok(
6467                                        ::treesitter_types::runtime::maybe_grow_stack(|| <TypedParameterChildren as ::treesitter_types::FromNode>::from_node(
6468                                            child,
6469                                            src,
6470                                        ))?,
6471                                    )
6472                                })()
6473                                    .is_ok()
6474                                {
6475                                    fallback_child = Some(candidate);
6476                                    break;
6477                                }
6478                            }
6479                            if !fallback_cursor.goto_next_sibling() {
6480                                break;
6481                            }
6482                        }
6483                    }
6484                    if fallback_child.is_none() {
6485                        let mut cursor2 = node.walk();
6486                        if cursor2.goto_first_child() {
6487                            loop {
6488                                if cursor2.node().is_named() && !cursor2.node().is_extra() {
6489                                    let candidate = cursor2.node();
6490                                    #[allow(clippy::needless_question_mark)]
6491                                    if (|| -> ::core::result::Result<
6492                                        _,
6493                                        ::treesitter_types::ParseError,
6494                                    > {
6495                                        let child = candidate;
6496                                        Ok(
6497                                            ::treesitter_types::runtime::maybe_grow_stack(|| <TypedParameterChildren as ::treesitter_types::FromNode>::from_node(
6498                                                child,
6499                                                src,
6500                                            ))?,
6501                                        )
6502                                    })()
6503                                        .is_ok()
6504                                    {
6505                                        fallback_child = Some(candidate);
6506                                        break;
6507                                    }
6508                                }
6509                                if !cursor2.goto_next_sibling() {
6510                                    break;
6511                                }
6512                            }
6513                        }
6514                    }
6515                    fallback_child.ok_or_else(|| {
6516                        ::treesitter_types::ParseError::missing_field("children", node)
6517                    })?
6518                };
6519                ::treesitter_types::runtime::maybe_grow_stack(|| {
6520                    <TypedParameterChildren as ::treesitter_types::FromNode>::from_node(child, src)
6521                })?
6522            },
6523        })
6524    }
6525}
6526impl ::treesitter_types::Spanned for TypedParameter<'_> {
6527    fn span(&self) -> ::treesitter_types::Span {
6528        self.span
6529    }
6530}
6531#[derive(Debug, Clone, PartialEq, Eq)]
6532pub struct UnaryOperator<'tree> {
6533    pub span: ::treesitter_types::Span,
6534    pub argument: PrimaryExpression<'tree>,
6535    pub operator: UnaryOperatorOperator,
6536}
6537impl<'tree> ::treesitter_types::FromNode<'tree> for UnaryOperator<'tree> {
6538    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
6539    fn from_node(
6540        node: ::treesitter_types::tree_sitter::Node<'tree>,
6541        src: &'tree [u8],
6542    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
6543        debug_assert_eq!(node.kind(), "unary_operator");
6544        Ok(Self {
6545            span: ::treesitter_types::Span::from(node),
6546            argument: {
6547                let child = node.child_by_field_name("argument").ok_or_else(|| {
6548                    ::treesitter_types::ParseError::missing_field("argument", node)
6549                })?;
6550                ::treesitter_types::runtime::maybe_grow_stack(|| {
6551                    <PrimaryExpression as ::treesitter_types::FromNode>::from_node(child, src)
6552                })?
6553            },
6554            operator: {
6555                let child = node.child_by_field_name("operator").ok_or_else(|| {
6556                    ::treesitter_types::ParseError::missing_field("operator", node)
6557                })?;
6558                ::treesitter_types::runtime::maybe_grow_stack(|| {
6559                    <UnaryOperatorOperator as ::treesitter_types::FromNode>::from_node(child, src)
6560                })?
6561            },
6562        })
6563    }
6564}
6565impl ::treesitter_types::Spanned for UnaryOperator<'_> {
6566    fn span(&self) -> ::treesitter_types::Span {
6567        self.span
6568    }
6569}
6570#[derive(Debug, Clone, PartialEq, Eq)]
6571pub struct UnionPattern<'tree> {
6572    pub span: ::treesitter_types::Span,
6573    pub children: ::std::vec::Vec<UnionPatternChildren<'tree>>,
6574}
6575impl<'tree> ::treesitter_types::FromNode<'tree> for UnionPattern<'tree> {
6576    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
6577    fn from_node(
6578        node: ::treesitter_types::tree_sitter::Node<'tree>,
6579        src: &'tree [u8],
6580    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
6581        debug_assert_eq!(node.kind(), "union_pattern");
6582        Ok(Self {
6583            span: ::treesitter_types::Span::from(node),
6584            children: {
6585                #[allow(clippy::suspicious_else_formatting)]
6586                let non_field_children = {
6587                    let mut cursor = node.walk();
6588                    let mut result = ::std::vec::Vec::new();
6589                    if cursor.goto_first_child() {
6590                        loop {
6591                            if cursor.field_name().is_none()
6592                                && cursor.node().is_named()
6593                                && !cursor.node().is_extra()
6594                            {
6595                                result.push(cursor.node());
6596                            }
6597                            if !cursor.goto_next_sibling() {
6598                                break;
6599                            }
6600                        }
6601                    }
6602                    result
6603                };
6604                let mut items = ::std::vec::Vec::new();
6605                for child in non_field_children {
6606                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
6607                        <UnionPatternChildren as ::treesitter_types::FromNode>::from_node(
6608                            child, src,
6609                        )
6610                    })?);
6611                }
6612                items
6613            },
6614        })
6615    }
6616}
6617impl ::treesitter_types::Spanned for UnionPattern<'_> {
6618    fn span(&self) -> ::treesitter_types::Span {
6619        self.span
6620    }
6621}
6622#[derive(Debug, Clone, PartialEq, Eq)]
6623pub struct UnionType<'tree> {
6624    pub span: ::treesitter_types::Span,
6625    pub children: ::std::vec::Vec<Type<'tree>>,
6626}
6627impl<'tree> ::treesitter_types::FromNode<'tree> for UnionType<'tree> {
6628    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
6629    fn from_node(
6630        node: ::treesitter_types::tree_sitter::Node<'tree>,
6631        src: &'tree [u8],
6632    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
6633        debug_assert_eq!(node.kind(), "union_type");
6634        Ok(Self {
6635            span: ::treesitter_types::Span::from(node),
6636            children: {
6637                #[allow(clippy::suspicious_else_formatting)]
6638                let non_field_children = {
6639                    let mut cursor = node.walk();
6640                    let mut result = ::std::vec::Vec::new();
6641                    if cursor.goto_first_child() {
6642                        loop {
6643                            if cursor.field_name().is_none()
6644                                && cursor.node().is_named()
6645                                && !cursor.node().is_extra()
6646                            {
6647                                result.push(cursor.node());
6648                            }
6649                            if !cursor.goto_next_sibling() {
6650                                break;
6651                            }
6652                        }
6653                    }
6654                    result
6655                };
6656                let mut items = ::std::vec::Vec::new();
6657                for child in non_field_children {
6658                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
6659                        <Type as ::treesitter_types::FromNode>::from_node(child, src)
6660                    })?);
6661                }
6662                items
6663            },
6664        })
6665    }
6666}
6667impl ::treesitter_types::Spanned for UnionType<'_> {
6668    fn span(&self) -> ::treesitter_types::Span {
6669        self.span
6670    }
6671}
6672#[derive(Debug, Clone, PartialEq, Eq)]
6673pub struct WhileStatement<'tree> {
6674    pub span: ::treesitter_types::Span,
6675    pub alternative: ::core::option::Option<ElseClause<'tree>>,
6676    pub body: Block<'tree>,
6677    pub condition: Expression<'tree>,
6678}
6679impl<'tree> ::treesitter_types::FromNode<'tree> for WhileStatement<'tree> {
6680    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
6681    fn from_node(
6682        node: ::treesitter_types::tree_sitter::Node<'tree>,
6683        src: &'tree [u8],
6684    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
6685        debug_assert_eq!(node.kind(), "while_statement");
6686        Ok(Self {
6687            span: ::treesitter_types::Span::from(node),
6688            alternative: match node.child_by_field_name("alternative") {
6689                Some(child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
6690                    <ElseClause as ::treesitter_types::FromNode>::from_node(child, src)
6691                })?),
6692                None => None,
6693            },
6694            body: {
6695                let child = node
6696                    .child_by_field_name("body")
6697                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("body", node))?;
6698                ::treesitter_types::runtime::maybe_grow_stack(|| {
6699                    <Block as ::treesitter_types::FromNode>::from_node(child, src)
6700                })?
6701            },
6702            condition: {
6703                let child = node.child_by_field_name("condition").ok_or_else(|| {
6704                    ::treesitter_types::ParseError::missing_field("condition", node)
6705                })?;
6706                ::treesitter_types::runtime::maybe_grow_stack(|| {
6707                    <Expression as ::treesitter_types::FromNode>::from_node(child, src)
6708                })?
6709            },
6710        })
6711    }
6712}
6713impl ::treesitter_types::Spanned for WhileStatement<'_> {
6714    fn span(&self) -> ::treesitter_types::Span {
6715        self.span
6716    }
6717}
6718#[derive(Debug, Clone, PartialEq, Eq)]
6719pub struct WildcardImport<'tree> {
6720    pub span: ::treesitter_types::Span,
6721    text: &'tree str,
6722}
6723impl<'tree> ::treesitter_types::FromNode<'tree> for WildcardImport<'tree> {
6724    fn from_node(
6725        node: ::treesitter_types::tree_sitter::Node<'tree>,
6726        src: &'tree [u8],
6727    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
6728        debug_assert_eq!(node.kind(), "wildcard_import");
6729        Ok(Self {
6730            span: ::treesitter_types::Span::from(node),
6731            text: node.utf8_text(src)?,
6732        })
6733    }
6734}
6735impl<'tree> ::treesitter_types::LeafNode<'tree> for WildcardImport<'tree> {
6736    fn text(&self) -> &'tree str {
6737        self.text
6738    }
6739}
6740impl ::treesitter_types::Spanned for WildcardImport<'_> {
6741    fn span(&self) -> ::treesitter_types::Span {
6742        self.span
6743    }
6744}
6745#[derive(Debug, Clone, PartialEq, Eq)]
6746pub struct WithClause<'tree> {
6747    pub span: ::treesitter_types::Span,
6748    pub children: ::std::vec::Vec<WithItem<'tree>>,
6749}
6750impl<'tree> ::treesitter_types::FromNode<'tree> for WithClause<'tree> {
6751    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
6752    fn from_node(
6753        node: ::treesitter_types::tree_sitter::Node<'tree>,
6754        src: &'tree [u8],
6755    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
6756        debug_assert_eq!(node.kind(), "with_clause");
6757        Ok(Self {
6758            span: ::treesitter_types::Span::from(node),
6759            children: {
6760                #[allow(clippy::suspicious_else_formatting)]
6761                let non_field_children = {
6762                    let mut cursor = node.walk();
6763                    let mut result = ::std::vec::Vec::new();
6764                    if cursor.goto_first_child() {
6765                        loop {
6766                            if cursor.field_name().is_none()
6767                                && cursor.node().is_named()
6768                                && !cursor.node().is_extra()
6769                            {
6770                                result.push(cursor.node());
6771                            }
6772                            if !cursor.goto_next_sibling() {
6773                                break;
6774                            }
6775                        }
6776                    }
6777                    result
6778                };
6779                let mut items = ::std::vec::Vec::new();
6780                for child in non_field_children {
6781                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
6782                        <WithItem as ::treesitter_types::FromNode>::from_node(child, src)
6783                    })?);
6784                }
6785                items
6786            },
6787        })
6788    }
6789}
6790impl ::treesitter_types::Spanned for WithClause<'_> {
6791    fn span(&self) -> ::treesitter_types::Span {
6792        self.span
6793    }
6794}
6795#[derive(Debug, Clone, PartialEq, Eq)]
6796pub struct WithItem<'tree> {
6797    pub span: ::treesitter_types::Span,
6798    pub value: Expression<'tree>,
6799}
6800impl<'tree> ::treesitter_types::FromNode<'tree> for WithItem<'tree> {
6801    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
6802    fn from_node(
6803        node: ::treesitter_types::tree_sitter::Node<'tree>,
6804        src: &'tree [u8],
6805    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
6806        debug_assert_eq!(node.kind(), "with_item");
6807        Ok(Self {
6808            span: ::treesitter_types::Span::from(node),
6809            value: {
6810                let child = node
6811                    .child_by_field_name("value")
6812                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("value", node))?;
6813                ::treesitter_types::runtime::maybe_grow_stack(|| {
6814                    <Expression as ::treesitter_types::FromNode>::from_node(child, src)
6815                })?
6816            },
6817        })
6818    }
6819}
6820impl ::treesitter_types::Spanned for WithItem<'_> {
6821    fn span(&self) -> ::treesitter_types::Span {
6822        self.span
6823    }
6824}
6825#[derive(Debug, Clone, PartialEq, Eq)]
6826pub struct WithStatement<'tree> {
6827    pub span: ::treesitter_types::Span,
6828    pub body: Block<'tree>,
6829    pub children: WithClause<'tree>,
6830}
6831impl<'tree> ::treesitter_types::FromNode<'tree> for WithStatement<'tree> {
6832    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
6833    fn from_node(
6834        node: ::treesitter_types::tree_sitter::Node<'tree>,
6835        src: &'tree [u8],
6836    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
6837        debug_assert_eq!(node.kind(), "with_statement");
6838        Ok(Self {
6839            span: ::treesitter_types::Span::from(node),
6840            body: {
6841                let child = node
6842                    .child_by_field_name("body")
6843                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("body", node))?;
6844                ::treesitter_types::runtime::maybe_grow_stack(|| {
6845                    <Block as ::treesitter_types::FromNode>::from_node(child, src)
6846                })?
6847            },
6848            children: {
6849                #[allow(clippy::suspicious_else_formatting)]
6850                let non_field_children = {
6851                    let mut cursor = node.walk();
6852                    let mut result = ::std::vec::Vec::new();
6853                    if cursor.goto_first_child() {
6854                        loop {
6855                            if cursor.field_name().is_none()
6856                                && cursor.node().is_named()
6857                                && !cursor.node().is_extra()
6858                            {
6859                                result.push(cursor.node());
6860                            }
6861                            if !cursor.goto_next_sibling() {
6862                                break;
6863                            }
6864                        }
6865                    }
6866                    result
6867                };
6868                let child = if let Some(&c) = non_field_children.first() {
6869                    c
6870                } else {
6871                    let mut fallback_cursor = node.walk();
6872                    let mut fallback_child = None;
6873                    if fallback_cursor.goto_first_child() {
6874                        loop {
6875                            if fallback_cursor.field_name().is_none()
6876                                && !fallback_cursor.node().is_extra()
6877                            {
6878                                let candidate = fallback_cursor.node();
6879                                #[allow(clippy::needless_question_mark)]
6880                                if (|| -> ::core::result::Result<
6881                                    _,
6882                                    ::treesitter_types::ParseError,
6883                                > {
6884                                    let child = candidate;
6885                                    Ok(
6886                                        ::treesitter_types::runtime::maybe_grow_stack(|| <WithClause as ::treesitter_types::FromNode>::from_node(
6887                                            child,
6888                                            src,
6889                                        ))?,
6890                                    )
6891                                })()
6892                                    .is_ok()
6893                                {
6894                                    fallback_child = Some(candidate);
6895                                    break;
6896                                }
6897                            }
6898                            if !fallback_cursor.goto_next_sibling() {
6899                                break;
6900                            }
6901                        }
6902                    }
6903                    if fallback_child.is_none() {
6904                        let mut cursor2 = node.walk();
6905                        if cursor2.goto_first_child() {
6906                            loop {
6907                                if cursor2.node().is_named() && !cursor2.node().is_extra() {
6908                                    let candidate = cursor2.node();
6909                                    #[allow(clippy::needless_question_mark)]
6910                                    if (|| -> ::core::result::Result<
6911                                        _,
6912                                        ::treesitter_types::ParseError,
6913                                    > {
6914                                        let child = candidate;
6915                                        Ok(
6916                                            ::treesitter_types::runtime::maybe_grow_stack(|| <WithClause as ::treesitter_types::FromNode>::from_node(
6917                                                child,
6918                                                src,
6919                                            ))?,
6920                                        )
6921                                    })()
6922                                        .is_ok()
6923                                    {
6924                                        fallback_child = Some(candidate);
6925                                        break;
6926                                    }
6927                                }
6928                                if !cursor2.goto_next_sibling() {
6929                                    break;
6930                                }
6931                            }
6932                        }
6933                    }
6934                    fallback_child.ok_or_else(|| {
6935                        ::treesitter_types::ParseError::missing_field("children", node)
6936                    })?
6937                };
6938                ::treesitter_types::runtime::maybe_grow_stack(|| {
6939                    <WithClause as ::treesitter_types::FromNode>::from_node(child, src)
6940                })?
6941            },
6942        })
6943    }
6944}
6945impl ::treesitter_types::Spanned for WithStatement<'_> {
6946    fn span(&self) -> ::treesitter_types::Span {
6947        self.span
6948    }
6949}
6950#[derive(Debug, Clone, PartialEq, Eq)]
6951pub struct Yield<'tree> {
6952    pub span: ::treesitter_types::Span,
6953    pub children: ::core::option::Option<YieldChildren<'tree>>,
6954}
6955impl<'tree> ::treesitter_types::FromNode<'tree> for Yield<'tree> {
6956    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
6957    fn from_node(
6958        node: ::treesitter_types::tree_sitter::Node<'tree>,
6959        src: &'tree [u8],
6960    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
6961        debug_assert_eq!(node.kind(), "yield");
6962        Ok(Self {
6963            span: ::treesitter_types::Span::from(node),
6964            children: {
6965                #[allow(clippy::suspicious_else_formatting)]
6966                let non_field_children = {
6967                    let mut cursor = node.walk();
6968                    let mut result = ::std::vec::Vec::new();
6969                    if cursor.goto_first_child() {
6970                        loop {
6971                            if cursor.field_name().is_none()
6972                                && cursor.node().is_named()
6973                                && !cursor.node().is_extra()
6974                            {
6975                                result.push(cursor.node());
6976                            }
6977                            if !cursor.goto_next_sibling() {
6978                                break;
6979                            }
6980                        }
6981                    }
6982                    result
6983                };
6984                match non_field_children.first() {
6985                    Some(&child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
6986                        <YieldChildren as ::treesitter_types::FromNode>::from_node(child, src)
6987                    })?),
6988                    None => None,
6989                }
6990            },
6991        })
6992    }
6993}
6994impl ::treesitter_types::Spanned for Yield<'_> {
6995    fn span(&self) -> ::treesitter_types::Span {
6996        self.span
6997    }
6998}
6999#[derive(Debug, Clone, PartialEq, Eq)]
7000pub struct Comment<'tree> {
7001    pub span: ::treesitter_types::Span,
7002    text: &'tree str,
7003}
7004impl<'tree> ::treesitter_types::FromNode<'tree> for Comment<'tree> {
7005    fn from_node(
7006        node: ::treesitter_types::tree_sitter::Node<'tree>,
7007        src: &'tree [u8],
7008    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
7009        debug_assert_eq!(node.kind(), "comment");
7010        Ok(Self {
7011            span: ::treesitter_types::Span::from(node),
7012            text: node.utf8_text(src)?,
7013        })
7014    }
7015}
7016impl<'tree> ::treesitter_types::LeafNode<'tree> for Comment<'tree> {
7017    fn text(&self) -> &'tree str {
7018        self.text
7019    }
7020}
7021impl ::treesitter_types::Spanned for Comment<'_> {
7022    fn span(&self) -> ::treesitter_types::Span {
7023        self.span
7024    }
7025}
7026#[derive(Debug, Clone, PartialEq, Eq)]
7027pub struct Ellipsis<'tree> {
7028    pub span: ::treesitter_types::Span,
7029    text: &'tree str,
7030}
7031impl<'tree> ::treesitter_types::FromNode<'tree> for Ellipsis<'tree> {
7032    fn from_node(
7033        node: ::treesitter_types::tree_sitter::Node<'tree>,
7034        src: &'tree [u8],
7035    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
7036        debug_assert_eq!(node.kind(), "ellipsis");
7037        Ok(Self {
7038            span: ::treesitter_types::Span::from(node),
7039            text: node.utf8_text(src)?,
7040        })
7041    }
7042}
7043impl<'tree> ::treesitter_types::LeafNode<'tree> for Ellipsis<'tree> {
7044    fn text(&self) -> &'tree str {
7045        self.text
7046    }
7047}
7048impl ::treesitter_types::Spanned for Ellipsis<'_> {
7049    fn span(&self) -> ::treesitter_types::Span {
7050        self.span
7051    }
7052}
7053#[derive(Debug, Clone, PartialEq, Eq)]
7054pub struct EscapeInterpolation<'tree> {
7055    pub span: ::treesitter_types::Span,
7056    text: &'tree str,
7057}
7058impl<'tree> ::treesitter_types::FromNode<'tree> for EscapeInterpolation<'tree> {
7059    fn from_node(
7060        node: ::treesitter_types::tree_sitter::Node<'tree>,
7061        src: &'tree [u8],
7062    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
7063        debug_assert_eq!(node.kind(), "escape_interpolation");
7064        Ok(Self {
7065            span: ::treesitter_types::Span::from(node),
7066            text: node.utf8_text(src)?,
7067        })
7068    }
7069}
7070impl<'tree> ::treesitter_types::LeafNode<'tree> for EscapeInterpolation<'tree> {
7071    fn text(&self) -> &'tree str {
7072        self.text
7073    }
7074}
7075impl ::treesitter_types::Spanned for EscapeInterpolation<'_> {
7076    fn span(&self) -> ::treesitter_types::Span {
7077        self.span
7078    }
7079}
7080#[derive(Debug, Clone, PartialEq, Eq)]
7081pub struct EscapeSequence<'tree> {
7082    pub span: ::treesitter_types::Span,
7083    text: &'tree str,
7084}
7085impl<'tree> ::treesitter_types::FromNode<'tree> for EscapeSequence<'tree> {
7086    fn from_node(
7087        node: ::treesitter_types::tree_sitter::Node<'tree>,
7088        src: &'tree [u8],
7089    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
7090        debug_assert_eq!(node.kind(), "escape_sequence");
7091        Ok(Self {
7092            span: ::treesitter_types::Span::from(node),
7093            text: node.utf8_text(src)?,
7094        })
7095    }
7096}
7097impl<'tree> ::treesitter_types::LeafNode<'tree> for EscapeSequence<'tree> {
7098    fn text(&self) -> &'tree str {
7099        self.text
7100    }
7101}
7102impl ::treesitter_types::Spanned for EscapeSequence<'_> {
7103    fn span(&self) -> ::treesitter_types::Span {
7104        self.span
7105    }
7106}
7107#[derive(Debug, Clone, PartialEq, Eq)]
7108pub struct False<'tree> {
7109    pub span: ::treesitter_types::Span,
7110    text: &'tree str,
7111}
7112impl<'tree> ::treesitter_types::FromNode<'tree> for False<'tree> {
7113    fn from_node(
7114        node: ::treesitter_types::tree_sitter::Node<'tree>,
7115        src: &'tree [u8],
7116    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
7117        debug_assert_eq!(node.kind(), "false");
7118        Ok(Self {
7119            span: ::treesitter_types::Span::from(node),
7120            text: node.utf8_text(src)?,
7121        })
7122    }
7123}
7124impl<'tree> ::treesitter_types::LeafNode<'tree> for False<'tree> {
7125    fn text(&self) -> &'tree str {
7126        self.text
7127    }
7128}
7129impl ::treesitter_types::Spanned for False<'_> {
7130    fn span(&self) -> ::treesitter_types::Span {
7131        self.span
7132    }
7133}
7134#[derive(Debug, Clone, PartialEq, Eq)]
7135pub struct Float<'tree> {
7136    pub span: ::treesitter_types::Span,
7137    text: &'tree str,
7138}
7139impl<'tree> ::treesitter_types::FromNode<'tree> for Float<'tree> {
7140    fn from_node(
7141        node: ::treesitter_types::tree_sitter::Node<'tree>,
7142        src: &'tree [u8],
7143    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
7144        debug_assert_eq!(node.kind(), "float");
7145        Ok(Self {
7146            span: ::treesitter_types::Span::from(node),
7147            text: node.utf8_text(src)?,
7148        })
7149    }
7150}
7151impl<'tree> ::treesitter_types::LeafNode<'tree> for Float<'tree> {
7152    fn text(&self) -> &'tree str {
7153        self.text
7154    }
7155}
7156impl ::treesitter_types::Spanned for Float<'_> {
7157    fn span(&self) -> ::treesitter_types::Span {
7158        self.span
7159    }
7160}
7161#[derive(Debug, Clone, PartialEq, Eq)]
7162pub struct Identifier<'tree> {
7163    pub span: ::treesitter_types::Span,
7164    text: &'tree str,
7165}
7166impl<'tree> ::treesitter_types::FromNode<'tree> for Identifier<'tree> {
7167    fn from_node(
7168        node: ::treesitter_types::tree_sitter::Node<'tree>,
7169        src: &'tree [u8],
7170    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
7171        debug_assert_eq!(node.kind(), "identifier");
7172        Ok(Self {
7173            span: ::treesitter_types::Span::from(node),
7174            text: node.utf8_text(src)?,
7175        })
7176    }
7177}
7178impl<'tree> ::treesitter_types::LeafNode<'tree> for Identifier<'tree> {
7179    fn text(&self) -> &'tree str {
7180        self.text
7181    }
7182}
7183impl ::treesitter_types::Spanned for Identifier<'_> {
7184    fn span(&self) -> ::treesitter_types::Span {
7185        self.span
7186    }
7187}
7188#[derive(Debug, Clone, PartialEq, Eq)]
7189pub struct Integer<'tree> {
7190    pub span: ::treesitter_types::Span,
7191    text: &'tree str,
7192}
7193impl<'tree> ::treesitter_types::FromNode<'tree> for Integer<'tree> {
7194    fn from_node(
7195        node: ::treesitter_types::tree_sitter::Node<'tree>,
7196        src: &'tree [u8],
7197    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
7198        debug_assert_eq!(node.kind(), "integer");
7199        Ok(Self {
7200            span: ::treesitter_types::Span::from(node),
7201            text: node.utf8_text(src)?,
7202        })
7203    }
7204}
7205impl<'tree> ::treesitter_types::LeafNode<'tree> for Integer<'tree> {
7206    fn text(&self) -> &'tree str {
7207        self.text
7208    }
7209}
7210impl ::treesitter_types::Spanned for Integer<'_> {
7211    fn span(&self) -> ::treesitter_types::Span {
7212        self.span
7213    }
7214}
7215#[derive(Debug, Clone, PartialEq, Eq)]
7216pub struct LineContinuation<'tree> {
7217    pub span: ::treesitter_types::Span,
7218    text: &'tree str,
7219}
7220impl<'tree> ::treesitter_types::FromNode<'tree> for LineContinuation<'tree> {
7221    fn from_node(
7222        node: ::treesitter_types::tree_sitter::Node<'tree>,
7223        src: &'tree [u8],
7224    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
7225        debug_assert_eq!(node.kind(), "line_continuation");
7226        Ok(Self {
7227            span: ::treesitter_types::Span::from(node),
7228            text: node.utf8_text(src)?,
7229        })
7230    }
7231}
7232impl<'tree> ::treesitter_types::LeafNode<'tree> for LineContinuation<'tree> {
7233    fn text(&self) -> &'tree str {
7234        self.text
7235    }
7236}
7237impl ::treesitter_types::Spanned for LineContinuation<'_> {
7238    fn span(&self) -> ::treesitter_types::Span {
7239        self.span
7240    }
7241}
7242#[derive(Debug, Clone, PartialEq, Eq)]
7243pub struct None<'tree> {
7244    pub span: ::treesitter_types::Span,
7245    text: &'tree str,
7246}
7247impl<'tree> ::treesitter_types::FromNode<'tree> for None<'tree> {
7248    fn from_node(
7249        node: ::treesitter_types::tree_sitter::Node<'tree>,
7250        src: &'tree [u8],
7251    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
7252        debug_assert_eq!(node.kind(), "none");
7253        Ok(Self {
7254            span: ::treesitter_types::Span::from(node),
7255            text: node.utf8_text(src)?,
7256        })
7257    }
7258}
7259impl<'tree> ::treesitter_types::LeafNode<'tree> for None<'tree> {
7260    fn text(&self) -> &'tree str {
7261        self.text
7262    }
7263}
7264impl ::treesitter_types::Spanned for None<'_> {
7265    fn span(&self) -> ::treesitter_types::Span {
7266        self.span
7267    }
7268}
7269#[derive(Debug, Clone, PartialEq, Eq)]
7270pub struct StringEnd<'tree> {
7271    pub span: ::treesitter_types::Span,
7272    text: &'tree str,
7273}
7274impl<'tree> ::treesitter_types::FromNode<'tree> for StringEnd<'tree> {
7275    fn from_node(
7276        node: ::treesitter_types::tree_sitter::Node<'tree>,
7277        src: &'tree [u8],
7278    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
7279        debug_assert_eq!(node.kind(), "string_end");
7280        Ok(Self {
7281            span: ::treesitter_types::Span::from(node),
7282            text: node.utf8_text(src)?,
7283        })
7284    }
7285}
7286impl<'tree> ::treesitter_types::LeafNode<'tree> for StringEnd<'tree> {
7287    fn text(&self) -> &'tree str {
7288        self.text
7289    }
7290}
7291impl ::treesitter_types::Spanned for StringEnd<'_> {
7292    fn span(&self) -> ::treesitter_types::Span {
7293        self.span
7294    }
7295}
7296#[derive(Debug, Clone, PartialEq, Eq)]
7297pub struct StringStart<'tree> {
7298    pub span: ::treesitter_types::Span,
7299    text: &'tree str,
7300}
7301impl<'tree> ::treesitter_types::FromNode<'tree> for StringStart<'tree> {
7302    fn from_node(
7303        node: ::treesitter_types::tree_sitter::Node<'tree>,
7304        src: &'tree [u8],
7305    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
7306        debug_assert_eq!(node.kind(), "string_start");
7307        Ok(Self {
7308            span: ::treesitter_types::Span::from(node),
7309            text: node.utf8_text(src)?,
7310        })
7311    }
7312}
7313impl<'tree> ::treesitter_types::LeafNode<'tree> for StringStart<'tree> {
7314    fn text(&self) -> &'tree str {
7315        self.text
7316    }
7317}
7318impl ::treesitter_types::Spanned for StringStart<'_> {
7319    fn span(&self) -> ::treesitter_types::Span {
7320        self.span
7321    }
7322}
7323#[derive(Debug, Clone, PartialEq, Eq)]
7324pub struct True<'tree> {
7325    pub span: ::treesitter_types::Span,
7326    text: &'tree str,
7327}
7328impl<'tree> ::treesitter_types::FromNode<'tree> for True<'tree> {
7329    fn from_node(
7330        node: ::treesitter_types::tree_sitter::Node<'tree>,
7331        src: &'tree [u8],
7332    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
7333        debug_assert_eq!(node.kind(), "true");
7334        Ok(Self {
7335            span: ::treesitter_types::Span::from(node),
7336            text: node.utf8_text(src)?,
7337        })
7338    }
7339}
7340impl<'tree> ::treesitter_types::LeafNode<'tree> for True<'tree> {
7341    fn text(&self) -> &'tree str {
7342        self.text
7343    }
7344}
7345impl ::treesitter_types::Spanned for True<'_> {
7346    fn span(&self) -> ::treesitter_types::Span {
7347        self.span
7348    }
7349}
7350#[derive(Debug, Clone, PartialEq, Eq)]
7351pub struct TypeConversion<'tree> {
7352    pub span: ::treesitter_types::Span,
7353    text: &'tree str,
7354}
7355impl<'tree> ::treesitter_types::FromNode<'tree> for TypeConversion<'tree> {
7356    fn from_node(
7357        node: ::treesitter_types::tree_sitter::Node<'tree>,
7358        src: &'tree [u8],
7359    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
7360        debug_assert_eq!(node.kind(), "type_conversion");
7361        Ok(Self {
7362            span: ::treesitter_types::Span::from(node),
7363            text: node.utf8_text(src)?,
7364        })
7365    }
7366}
7367impl<'tree> ::treesitter_types::LeafNode<'tree> for TypeConversion<'tree> {
7368    fn text(&self) -> &'tree str {
7369        self.text
7370    }
7371}
7372impl ::treesitter_types::Spanned for TypeConversion<'_> {
7373    fn span(&self) -> ::treesitter_types::Span {
7374        self.span
7375    }
7376}
7377#[derive(Debug, Clone, PartialEq, Eq)]
7378pub struct AsPatternTarget<'tree> {
7379    pub span: ::treesitter_types::Span,
7380    text: &'tree str,
7381}
7382impl<'tree> ::treesitter_types::FromNode<'tree> for AsPatternTarget<'tree> {
7383    fn from_node(
7384        node: ::treesitter_types::tree_sitter::Node<'tree>,
7385        src: &'tree [u8],
7386    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
7387        debug_assert_eq!(node.kind(), "as_pattern_target");
7388        Ok(Self {
7389            span: ::treesitter_types::Span::from(node),
7390            text: node.utf8_text(src)?,
7391        })
7392    }
7393}
7394impl<'tree> ::treesitter_types::LeafNode<'tree> for AsPatternTarget<'tree> {
7395    fn text(&self) -> &'tree str {
7396        self.text
7397    }
7398}
7399impl ::treesitter_types::Spanned for AsPatternTarget<'_> {
7400    fn span(&self) -> ::treesitter_types::Span {
7401        self.span
7402    }
7403}
7404#[derive(Debug, Clone, PartialEq, Eq)]
7405pub enum ArgumentListChildren<'tree> {
7406    DictionarySplat(::std::boxed::Box<DictionarySplat<'tree>>),
7407    Expression(::std::boxed::Box<Expression<'tree>>),
7408    KeywordArgument(::std::boxed::Box<KeywordArgument<'tree>>),
7409    ListSplat(::std::boxed::Box<ListSplat<'tree>>),
7410    ParenthesizedExpression(::std::boxed::Box<ParenthesizedExpression<'tree>>),
7411}
7412impl<'tree> ::treesitter_types::FromNode<'tree> for ArgumentListChildren<'tree> {
7413    #[allow(clippy::collapsible_else_if)]
7414    fn from_node(
7415        node: ::treesitter_types::tree_sitter::Node<'tree>,
7416        src: &'tree [u8],
7417    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
7418        match node.kind() {
7419            "dictionary_splat" => Ok(Self::DictionarySplat(::std::boxed::Box::new(
7420                ::treesitter_types::runtime::maybe_grow_stack(|| {
7421                    <DictionarySplat as ::treesitter_types::FromNode>::from_node(node, src)
7422                })?,
7423            ))),
7424            "keyword_argument" => Ok(Self::KeywordArgument(::std::boxed::Box::new(
7425                ::treesitter_types::runtime::maybe_grow_stack(|| {
7426                    <KeywordArgument as ::treesitter_types::FromNode>::from_node(node, src)
7427                })?,
7428            ))),
7429            "list_splat" => Ok(Self::ListSplat(::std::boxed::Box::new(
7430                ::treesitter_types::runtime::maybe_grow_stack(|| {
7431                    <ListSplat as ::treesitter_types::FromNode>::from_node(node, src)
7432                })?,
7433            ))),
7434            "parenthesized_expression" => Ok(Self::ParenthesizedExpression(
7435                ::std::boxed::Box::new(::treesitter_types::runtime::maybe_grow_stack(|| {
7436                    <ParenthesizedExpression as ::treesitter_types::FromNode>::from_node(node, src)
7437                })?),
7438            )),
7439            _other => {
7440                if let Ok(v) = ::treesitter_types::runtime::maybe_grow_stack(|| {
7441                    <Expression as ::treesitter_types::FromNode>::from_node(node, src)
7442                }) {
7443                    Ok(Self::Expression(::std::boxed::Box::new(v)))
7444                } else {
7445                    Err(::treesitter_types::ParseError::unexpected_kind(
7446                        _other, node,
7447                    ))
7448                }
7449            }
7450        }
7451    }
7452}
7453impl ::treesitter_types::Spanned for ArgumentListChildren<'_> {
7454    fn span(&self) -> ::treesitter_types::Span {
7455        match self {
7456            Self::DictionarySplat(inner) => inner.span(),
7457            Self::Expression(inner) => inner.span(),
7458            Self::KeywordArgument(inner) => inner.span(),
7459            Self::ListSplat(inner) => inner.span(),
7460            Self::ParenthesizedExpression(inner) => inner.span(),
7461        }
7462    }
7463}
7464#[derive(Debug, Clone, PartialEq, Eq)]
7465pub enum AsPatternChildren<'tree> {
7466    CasePattern(::std::boxed::Box<CasePattern<'tree>>),
7467    Expression(::std::boxed::Box<Expression<'tree>>),
7468    Identifier(::std::boxed::Box<Identifier<'tree>>),
7469}
7470impl<'tree> ::treesitter_types::FromNode<'tree> for AsPatternChildren<'tree> {
7471    #[allow(clippy::collapsible_else_if)]
7472    fn from_node(
7473        node: ::treesitter_types::tree_sitter::Node<'tree>,
7474        src: &'tree [u8],
7475    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
7476        match node.kind() {
7477            "case_pattern" => Ok(Self::CasePattern(::std::boxed::Box::new(
7478                ::treesitter_types::runtime::maybe_grow_stack(|| {
7479                    <CasePattern as ::treesitter_types::FromNode>::from_node(node, src)
7480                })?,
7481            ))),
7482            "identifier" => Ok(Self::Identifier(::std::boxed::Box::new(
7483                ::treesitter_types::runtime::maybe_grow_stack(|| {
7484                    <Identifier as ::treesitter_types::FromNode>::from_node(node, src)
7485                })?,
7486            ))),
7487            _other => {
7488                if let Ok(v) = ::treesitter_types::runtime::maybe_grow_stack(|| {
7489                    <Expression as ::treesitter_types::FromNode>::from_node(node, src)
7490                }) {
7491                    Ok(Self::Expression(::std::boxed::Box::new(v)))
7492                } else {
7493                    Err(::treesitter_types::ParseError::unexpected_kind(
7494                        _other, node,
7495                    ))
7496                }
7497            }
7498        }
7499    }
7500}
7501impl ::treesitter_types::Spanned for AsPatternChildren<'_> {
7502    fn span(&self) -> ::treesitter_types::Span {
7503        match self {
7504            Self::CasePattern(inner) => inner.span(),
7505            Self::Expression(inner) => inner.span(),
7506            Self::Identifier(inner) => inner.span(),
7507        }
7508    }
7509}
7510#[derive(Debug, Clone, PartialEq, Eq)]
7511pub enum AssignmentLeft<'tree> {
7512    Pattern(::std::boxed::Box<Pattern<'tree>>),
7513    PatternList(::std::boxed::Box<PatternList<'tree>>),
7514}
7515impl<'tree> ::treesitter_types::FromNode<'tree> for AssignmentLeft<'tree> {
7516    #[allow(clippy::collapsible_else_if)]
7517    fn from_node(
7518        node: ::treesitter_types::tree_sitter::Node<'tree>,
7519        src: &'tree [u8],
7520    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
7521        match node.kind() {
7522            "pattern_list" => Ok(Self::PatternList(::std::boxed::Box::new(
7523                ::treesitter_types::runtime::maybe_grow_stack(|| {
7524                    <PatternList as ::treesitter_types::FromNode>::from_node(node, src)
7525                })?,
7526            ))),
7527            _other => {
7528                if let Ok(v) = ::treesitter_types::runtime::maybe_grow_stack(|| {
7529                    <Pattern as ::treesitter_types::FromNode>::from_node(node, src)
7530                }) {
7531                    Ok(Self::Pattern(::std::boxed::Box::new(v)))
7532                } else {
7533                    Err(::treesitter_types::ParseError::unexpected_kind(
7534                        _other, node,
7535                    ))
7536                }
7537            }
7538        }
7539    }
7540}
7541impl ::treesitter_types::Spanned for AssignmentLeft<'_> {
7542    fn span(&self) -> ::treesitter_types::Span {
7543        match self {
7544            Self::Pattern(inner) => inner.span(),
7545            Self::PatternList(inner) => inner.span(),
7546        }
7547    }
7548}
7549#[derive(Debug, Clone, PartialEq, Eq)]
7550pub enum AssignmentRight<'tree> {
7551    Assignment(::std::boxed::Box<Assignment<'tree>>),
7552    AugmentedAssignment(::std::boxed::Box<AugmentedAssignment<'tree>>),
7553    Expression(::std::boxed::Box<Expression<'tree>>),
7554    ExpressionList(::std::boxed::Box<ExpressionList<'tree>>),
7555    PatternList(::std::boxed::Box<PatternList<'tree>>),
7556    Yield(::std::boxed::Box<Yield<'tree>>),
7557}
7558impl<'tree> ::treesitter_types::FromNode<'tree> for AssignmentRight<'tree> {
7559    #[allow(clippy::collapsible_else_if)]
7560    fn from_node(
7561        node: ::treesitter_types::tree_sitter::Node<'tree>,
7562        src: &'tree [u8],
7563    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
7564        match node.kind() {
7565            "assignment" => Ok(Self::Assignment(::std::boxed::Box::new(
7566                ::treesitter_types::runtime::maybe_grow_stack(|| {
7567                    <Assignment as ::treesitter_types::FromNode>::from_node(node, src)
7568                })?,
7569            ))),
7570            "augmented_assignment" => Ok(Self::AugmentedAssignment(::std::boxed::Box::new(
7571                ::treesitter_types::runtime::maybe_grow_stack(|| {
7572                    <AugmentedAssignment as ::treesitter_types::FromNode>::from_node(node, src)
7573                })?,
7574            ))),
7575            "expression_list" => Ok(Self::ExpressionList(::std::boxed::Box::new(
7576                ::treesitter_types::runtime::maybe_grow_stack(|| {
7577                    <ExpressionList as ::treesitter_types::FromNode>::from_node(node, src)
7578                })?,
7579            ))),
7580            "pattern_list" => Ok(Self::PatternList(::std::boxed::Box::new(
7581                ::treesitter_types::runtime::maybe_grow_stack(|| {
7582                    <PatternList as ::treesitter_types::FromNode>::from_node(node, src)
7583                })?,
7584            ))),
7585            "yield" => Ok(Self::Yield(::std::boxed::Box::new(
7586                ::treesitter_types::runtime::maybe_grow_stack(|| {
7587                    <Yield as ::treesitter_types::FromNode>::from_node(node, src)
7588                })?,
7589            ))),
7590            _other => {
7591                if let Ok(v) = ::treesitter_types::runtime::maybe_grow_stack(|| {
7592                    <Expression as ::treesitter_types::FromNode>::from_node(node, src)
7593                }) {
7594                    Ok(Self::Expression(::std::boxed::Box::new(v)))
7595                } else {
7596                    Err(::treesitter_types::ParseError::unexpected_kind(
7597                        _other, node,
7598                    ))
7599                }
7600            }
7601        }
7602    }
7603}
7604impl ::treesitter_types::Spanned for AssignmentRight<'_> {
7605    fn span(&self) -> ::treesitter_types::Span {
7606        match self {
7607            Self::Assignment(inner) => inner.span(),
7608            Self::AugmentedAssignment(inner) => inner.span(),
7609            Self::Expression(inner) => inner.span(),
7610            Self::ExpressionList(inner) => inner.span(),
7611            Self::PatternList(inner) => inner.span(),
7612            Self::Yield(inner) => inner.span(),
7613        }
7614    }
7615}
7616#[derive(Debug, Clone, PartialEq, Eq)]
7617pub enum AugmentedAssignmentLeft<'tree> {
7618    Pattern(::std::boxed::Box<Pattern<'tree>>),
7619    PatternList(::std::boxed::Box<PatternList<'tree>>),
7620}
7621impl<'tree> ::treesitter_types::FromNode<'tree> for AugmentedAssignmentLeft<'tree> {
7622    #[allow(clippy::collapsible_else_if)]
7623    fn from_node(
7624        node: ::treesitter_types::tree_sitter::Node<'tree>,
7625        src: &'tree [u8],
7626    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
7627        match node.kind() {
7628            "pattern_list" => Ok(Self::PatternList(::std::boxed::Box::new(
7629                ::treesitter_types::runtime::maybe_grow_stack(|| {
7630                    <PatternList as ::treesitter_types::FromNode>::from_node(node, src)
7631                })?,
7632            ))),
7633            _other => {
7634                if let Ok(v) = ::treesitter_types::runtime::maybe_grow_stack(|| {
7635                    <Pattern as ::treesitter_types::FromNode>::from_node(node, src)
7636                }) {
7637                    Ok(Self::Pattern(::std::boxed::Box::new(v)))
7638                } else {
7639                    Err(::treesitter_types::ParseError::unexpected_kind(
7640                        _other, node,
7641                    ))
7642                }
7643            }
7644        }
7645    }
7646}
7647impl ::treesitter_types::Spanned for AugmentedAssignmentLeft<'_> {
7648    fn span(&self) -> ::treesitter_types::Span {
7649        match self {
7650            Self::Pattern(inner) => inner.span(),
7651            Self::PatternList(inner) => inner.span(),
7652        }
7653    }
7654}
7655#[derive(Debug, Clone, PartialEq, Eq)]
7656pub enum AugmentedAssignmentOperator {
7657    PercentEq(::treesitter_types::Span),
7658    AmpEq(::treesitter_types::Span),
7659    StarStarEq(::treesitter_types::Span),
7660    StarEq(::treesitter_types::Span),
7661    PlusEq(::treesitter_types::Span),
7662    MinusEq(::treesitter_types::Span),
7663    SlashSlashEq(::treesitter_types::Span),
7664    SlashEq(::treesitter_types::Span),
7665    ShlEq(::treesitter_types::Span),
7666    ShrEq(::treesitter_types::Span),
7667    AtEq(::treesitter_types::Span),
7668    CaretEq(::treesitter_types::Span),
7669    PipeEq(::treesitter_types::Span),
7670}
7671impl<'tree> ::treesitter_types::FromNode<'tree> for AugmentedAssignmentOperator {
7672    #[allow(clippy::collapsible_else_if)]
7673    fn from_node(
7674        node: ::treesitter_types::tree_sitter::Node<'tree>,
7675        _src: &'tree [u8],
7676    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
7677        match node.kind() {
7678            "%=" => Ok(Self::PercentEq(::treesitter_types::Span::from(node))),
7679            "&=" => Ok(Self::AmpEq(::treesitter_types::Span::from(node))),
7680            "**=" => Ok(Self::StarStarEq(::treesitter_types::Span::from(node))),
7681            "*=" => Ok(Self::StarEq(::treesitter_types::Span::from(node))),
7682            "+=" => Ok(Self::PlusEq(::treesitter_types::Span::from(node))),
7683            "-=" => Ok(Self::MinusEq(::treesitter_types::Span::from(node))),
7684            "//=" => Ok(Self::SlashSlashEq(::treesitter_types::Span::from(node))),
7685            "/=" => Ok(Self::SlashEq(::treesitter_types::Span::from(node))),
7686            "<<=" => Ok(Self::ShlEq(::treesitter_types::Span::from(node))),
7687            ">>=" => Ok(Self::ShrEq(::treesitter_types::Span::from(node))),
7688            "@=" => Ok(Self::AtEq(::treesitter_types::Span::from(node))),
7689            "^=" => Ok(Self::CaretEq(::treesitter_types::Span::from(node))),
7690            "|=" => Ok(Self::PipeEq(::treesitter_types::Span::from(node))),
7691            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
7692        }
7693    }
7694}
7695impl ::treesitter_types::Spanned for AugmentedAssignmentOperator {
7696    fn span(&self) -> ::treesitter_types::Span {
7697        match self {
7698            Self::PercentEq(span) => *span,
7699            Self::AmpEq(span) => *span,
7700            Self::StarStarEq(span) => *span,
7701            Self::StarEq(span) => *span,
7702            Self::PlusEq(span) => *span,
7703            Self::MinusEq(span) => *span,
7704            Self::SlashSlashEq(span) => *span,
7705            Self::SlashEq(span) => *span,
7706            Self::ShlEq(span) => *span,
7707            Self::ShrEq(span) => *span,
7708            Self::AtEq(span) => *span,
7709            Self::CaretEq(span) => *span,
7710            Self::PipeEq(span) => *span,
7711        }
7712    }
7713}
7714#[derive(Debug, Clone, PartialEq, Eq)]
7715pub enum AugmentedAssignmentRight<'tree> {
7716    Assignment(::std::boxed::Box<Assignment<'tree>>),
7717    AugmentedAssignment(::std::boxed::Box<AugmentedAssignment<'tree>>),
7718    Expression(::std::boxed::Box<Expression<'tree>>),
7719    ExpressionList(::std::boxed::Box<ExpressionList<'tree>>),
7720    PatternList(::std::boxed::Box<PatternList<'tree>>),
7721    Yield(::std::boxed::Box<Yield<'tree>>),
7722}
7723impl<'tree> ::treesitter_types::FromNode<'tree> for AugmentedAssignmentRight<'tree> {
7724    #[allow(clippy::collapsible_else_if)]
7725    fn from_node(
7726        node: ::treesitter_types::tree_sitter::Node<'tree>,
7727        src: &'tree [u8],
7728    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
7729        match node.kind() {
7730            "assignment" => Ok(Self::Assignment(::std::boxed::Box::new(
7731                ::treesitter_types::runtime::maybe_grow_stack(|| {
7732                    <Assignment as ::treesitter_types::FromNode>::from_node(node, src)
7733                })?,
7734            ))),
7735            "augmented_assignment" => Ok(Self::AugmentedAssignment(::std::boxed::Box::new(
7736                ::treesitter_types::runtime::maybe_grow_stack(|| {
7737                    <AugmentedAssignment as ::treesitter_types::FromNode>::from_node(node, src)
7738                })?,
7739            ))),
7740            "expression_list" => Ok(Self::ExpressionList(::std::boxed::Box::new(
7741                ::treesitter_types::runtime::maybe_grow_stack(|| {
7742                    <ExpressionList as ::treesitter_types::FromNode>::from_node(node, src)
7743                })?,
7744            ))),
7745            "pattern_list" => Ok(Self::PatternList(::std::boxed::Box::new(
7746                ::treesitter_types::runtime::maybe_grow_stack(|| {
7747                    <PatternList as ::treesitter_types::FromNode>::from_node(node, src)
7748                })?,
7749            ))),
7750            "yield" => Ok(Self::Yield(::std::boxed::Box::new(
7751                ::treesitter_types::runtime::maybe_grow_stack(|| {
7752                    <Yield as ::treesitter_types::FromNode>::from_node(node, src)
7753                })?,
7754            ))),
7755            _other => {
7756                if let Ok(v) = ::treesitter_types::runtime::maybe_grow_stack(|| {
7757                    <Expression as ::treesitter_types::FromNode>::from_node(node, src)
7758                }) {
7759                    Ok(Self::Expression(::std::boxed::Box::new(v)))
7760                } else {
7761                    Err(::treesitter_types::ParseError::unexpected_kind(
7762                        _other, node,
7763                    ))
7764                }
7765            }
7766        }
7767    }
7768}
7769impl ::treesitter_types::Spanned for AugmentedAssignmentRight<'_> {
7770    fn span(&self) -> ::treesitter_types::Span {
7771        match self {
7772            Self::Assignment(inner) => inner.span(),
7773            Self::AugmentedAssignment(inner) => inner.span(),
7774            Self::Expression(inner) => inner.span(),
7775            Self::ExpressionList(inner) => inner.span(),
7776            Self::PatternList(inner) => inner.span(),
7777            Self::Yield(inner) => inner.span(),
7778        }
7779    }
7780}
7781#[derive(Debug, Clone, PartialEq, Eq)]
7782pub enum BinaryOperatorOperator {
7783    Percent(::treesitter_types::Span),
7784    Amp(::treesitter_types::Span),
7785    Star(::treesitter_types::Span),
7786    StarStar(::treesitter_types::Span),
7787    Plus(::treesitter_types::Span),
7788    Minus(::treesitter_types::Span),
7789    Slash(::treesitter_types::Span),
7790    SlashSlash(::treesitter_types::Span),
7791    Shl(::treesitter_types::Span),
7792    Shr(::treesitter_types::Span),
7793    At(::treesitter_types::Span),
7794    Caret(::treesitter_types::Span),
7795    Pipe(::treesitter_types::Span),
7796}
7797impl<'tree> ::treesitter_types::FromNode<'tree> for BinaryOperatorOperator {
7798    #[allow(clippy::collapsible_else_if)]
7799    fn from_node(
7800        node: ::treesitter_types::tree_sitter::Node<'tree>,
7801        _src: &'tree [u8],
7802    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
7803        match node.kind() {
7804            "%" => Ok(Self::Percent(::treesitter_types::Span::from(node))),
7805            "&" => Ok(Self::Amp(::treesitter_types::Span::from(node))),
7806            "*" => Ok(Self::Star(::treesitter_types::Span::from(node))),
7807            "**" => Ok(Self::StarStar(::treesitter_types::Span::from(node))),
7808            "+" => Ok(Self::Plus(::treesitter_types::Span::from(node))),
7809            "-" => Ok(Self::Minus(::treesitter_types::Span::from(node))),
7810            "/" => Ok(Self::Slash(::treesitter_types::Span::from(node))),
7811            "//" => Ok(Self::SlashSlash(::treesitter_types::Span::from(node))),
7812            "<<" => Ok(Self::Shl(::treesitter_types::Span::from(node))),
7813            ">>" => Ok(Self::Shr(::treesitter_types::Span::from(node))),
7814            "@" => Ok(Self::At(::treesitter_types::Span::from(node))),
7815            "^" => Ok(Self::Caret(::treesitter_types::Span::from(node))),
7816            "|" => Ok(Self::Pipe(::treesitter_types::Span::from(node))),
7817            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
7818        }
7819    }
7820}
7821impl ::treesitter_types::Spanned for BinaryOperatorOperator {
7822    fn span(&self) -> ::treesitter_types::Span {
7823        match self {
7824            Self::Percent(span) => *span,
7825            Self::Amp(span) => *span,
7826            Self::Star(span) => *span,
7827            Self::StarStar(span) => *span,
7828            Self::Plus(span) => *span,
7829            Self::Minus(span) => *span,
7830            Self::Slash(span) => *span,
7831            Self::SlashSlash(span) => *span,
7832            Self::Shl(span) => *span,
7833            Self::Shr(span) => *span,
7834            Self::At(span) => *span,
7835            Self::Caret(span) => *span,
7836            Self::Pipe(span) => *span,
7837        }
7838    }
7839}
7840#[derive(Debug, Clone, PartialEq, Eq)]
7841pub enum BlockChildren<'tree> {
7842    CompoundStatement(::std::boxed::Box<CompoundStatement<'tree>>),
7843    SimpleStatement(::std::boxed::Box<SimpleStatement<'tree>>),
7844}
7845impl<'tree> ::treesitter_types::FromNode<'tree> for BlockChildren<'tree> {
7846    #[allow(clippy::collapsible_else_if)]
7847    fn from_node(
7848        node: ::treesitter_types::tree_sitter::Node<'tree>,
7849        src: &'tree [u8],
7850    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
7851        if let Ok(v) = ::treesitter_types::runtime::maybe_grow_stack(|| {
7852            <CompoundStatement as ::treesitter_types::FromNode>::from_node(node, src)
7853        }) {
7854            Ok(Self::CompoundStatement(::std::boxed::Box::new(v)))
7855        } else {
7856            if let Ok(v) = ::treesitter_types::runtime::maybe_grow_stack(|| {
7857                <SimpleStatement as ::treesitter_types::FromNode>::from_node(node, src)
7858            }) {
7859                Ok(Self::SimpleStatement(::std::boxed::Box::new(v)))
7860            } else {
7861                Err(::treesitter_types::ParseError::unexpected_kind(
7862                    node.kind(),
7863                    node,
7864                ))
7865            }
7866        }
7867    }
7868}
7869impl ::treesitter_types::Spanned for BlockChildren<'_> {
7870    fn span(&self) -> ::treesitter_types::Span {
7871        match self {
7872            Self::CompoundStatement(inner) => inner.span(),
7873            Self::SimpleStatement(inner) => inner.span(),
7874        }
7875    }
7876}
7877#[derive(Debug, Clone, PartialEq, Eq)]
7878pub enum BooleanOperatorOperator {
7879    And(::treesitter_types::Span),
7880    Or(::treesitter_types::Span),
7881}
7882impl<'tree> ::treesitter_types::FromNode<'tree> for BooleanOperatorOperator {
7883    #[allow(clippy::collapsible_else_if)]
7884    fn from_node(
7885        node: ::treesitter_types::tree_sitter::Node<'tree>,
7886        _src: &'tree [u8],
7887    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
7888        match node.kind() {
7889            "and" => Ok(Self::And(::treesitter_types::Span::from(node))),
7890            "or" => Ok(Self::Or(::treesitter_types::Span::from(node))),
7891            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
7892        }
7893    }
7894}
7895impl ::treesitter_types::Spanned for BooleanOperatorOperator {
7896    fn span(&self) -> ::treesitter_types::Span {
7897        match self {
7898            Self::And(span) => *span,
7899            Self::Or(span) => *span,
7900        }
7901    }
7902}
7903#[derive(Debug, Clone, PartialEq, Eq)]
7904pub enum CallArguments<'tree> {
7905    ArgumentList(::std::boxed::Box<ArgumentList<'tree>>),
7906    GeneratorExpression(::std::boxed::Box<GeneratorExpression<'tree>>),
7907}
7908impl<'tree> ::treesitter_types::FromNode<'tree> for CallArguments<'tree> {
7909    #[allow(clippy::collapsible_else_if)]
7910    fn from_node(
7911        node: ::treesitter_types::tree_sitter::Node<'tree>,
7912        src: &'tree [u8],
7913    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
7914        match node.kind() {
7915            "argument_list" => Ok(Self::ArgumentList(::std::boxed::Box::new(
7916                ::treesitter_types::runtime::maybe_grow_stack(|| {
7917                    <ArgumentList as ::treesitter_types::FromNode>::from_node(node, src)
7918                })?,
7919            ))),
7920            "generator_expression" => Ok(Self::GeneratorExpression(::std::boxed::Box::new(
7921                ::treesitter_types::runtime::maybe_grow_stack(|| {
7922                    <GeneratorExpression as ::treesitter_types::FromNode>::from_node(node, src)
7923                })?,
7924            ))),
7925            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
7926        }
7927    }
7928}
7929impl ::treesitter_types::Spanned for CallArguments<'_> {
7930    fn span(&self) -> ::treesitter_types::Span {
7931        match self {
7932            Self::ArgumentList(inner) => inner.span(),
7933            Self::GeneratorExpression(inner) => inner.span(),
7934        }
7935    }
7936}
7937#[derive(Debug, Clone, PartialEq, Eq)]
7938pub enum CasePatternChildren<'tree> {
7939    AsPattern(::std::boxed::Box<AsPattern<'tree>>),
7940    ClassPattern(::std::boxed::Box<ClassPattern<'tree>>),
7941    ComplexPattern(::std::boxed::Box<ComplexPattern<'tree>>),
7942    ConcatenatedString(::std::boxed::Box<ConcatenatedString<'tree>>),
7943    DictPattern(::std::boxed::Box<DictPattern<'tree>>),
7944    DottedName(::std::boxed::Box<DottedName<'tree>>),
7945    False(::std::boxed::Box<False<'tree>>),
7946    Float(::std::boxed::Box<Float<'tree>>),
7947    Integer(::std::boxed::Box<Integer<'tree>>),
7948    KeywordPattern(::std::boxed::Box<KeywordPattern<'tree>>),
7949    ListPattern(::std::boxed::Box<ListPattern<'tree>>),
7950    None(::std::boxed::Box<None<'tree>>),
7951    SplatPattern(::std::boxed::Box<SplatPattern<'tree>>),
7952    String(::std::boxed::Box<String<'tree>>),
7953    True(::std::boxed::Box<True<'tree>>),
7954    TuplePattern(::std::boxed::Box<TuplePattern<'tree>>),
7955    UnionPattern(::std::boxed::Box<UnionPattern<'tree>>),
7956}
7957impl<'tree> ::treesitter_types::FromNode<'tree> for CasePatternChildren<'tree> {
7958    #[allow(clippy::collapsible_else_if)]
7959    fn from_node(
7960        node: ::treesitter_types::tree_sitter::Node<'tree>,
7961        src: &'tree [u8],
7962    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
7963        match node.kind() {
7964            "as_pattern" => Ok(Self::AsPattern(::std::boxed::Box::new(
7965                ::treesitter_types::runtime::maybe_grow_stack(|| {
7966                    <AsPattern as ::treesitter_types::FromNode>::from_node(node, src)
7967                })?,
7968            ))),
7969            "class_pattern" => Ok(Self::ClassPattern(::std::boxed::Box::new(
7970                ::treesitter_types::runtime::maybe_grow_stack(|| {
7971                    <ClassPattern as ::treesitter_types::FromNode>::from_node(node, src)
7972                })?,
7973            ))),
7974            "complex_pattern" => Ok(Self::ComplexPattern(::std::boxed::Box::new(
7975                ::treesitter_types::runtime::maybe_grow_stack(|| {
7976                    <ComplexPattern as ::treesitter_types::FromNode>::from_node(node, src)
7977                })?,
7978            ))),
7979            "concatenated_string" => Ok(Self::ConcatenatedString(::std::boxed::Box::new(
7980                ::treesitter_types::runtime::maybe_grow_stack(|| {
7981                    <ConcatenatedString as ::treesitter_types::FromNode>::from_node(node, src)
7982                })?,
7983            ))),
7984            "dict_pattern" => Ok(Self::DictPattern(::std::boxed::Box::new(
7985                ::treesitter_types::runtime::maybe_grow_stack(|| {
7986                    <DictPattern as ::treesitter_types::FromNode>::from_node(node, src)
7987                })?,
7988            ))),
7989            "dotted_name" => Ok(Self::DottedName(::std::boxed::Box::new(
7990                ::treesitter_types::runtime::maybe_grow_stack(|| {
7991                    <DottedName as ::treesitter_types::FromNode>::from_node(node, src)
7992                })?,
7993            ))),
7994            "false" => Ok(Self::False(::std::boxed::Box::new(
7995                ::treesitter_types::runtime::maybe_grow_stack(|| {
7996                    <False as ::treesitter_types::FromNode>::from_node(node, src)
7997                })?,
7998            ))),
7999            "float" => Ok(Self::Float(::std::boxed::Box::new(
8000                ::treesitter_types::runtime::maybe_grow_stack(|| {
8001                    <Float as ::treesitter_types::FromNode>::from_node(node, src)
8002                })?,
8003            ))),
8004            "integer" => Ok(Self::Integer(::std::boxed::Box::new(
8005                ::treesitter_types::runtime::maybe_grow_stack(|| {
8006                    <Integer as ::treesitter_types::FromNode>::from_node(node, src)
8007                })?,
8008            ))),
8009            "keyword_pattern" => Ok(Self::KeywordPattern(::std::boxed::Box::new(
8010                ::treesitter_types::runtime::maybe_grow_stack(|| {
8011                    <KeywordPattern as ::treesitter_types::FromNode>::from_node(node, src)
8012                })?,
8013            ))),
8014            "list_pattern" => Ok(Self::ListPattern(::std::boxed::Box::new(
8015                ::treesitter_types::runtime::maybe_grow_stack(|| {
8016                    <ListPattern as ::treesitter_types::FromNode>::from_node(node, src)
8017                })?,
8018            ))),
8019            "none" => Ok(Self::None(::std::boxed::Box::new(
8020                ::treesitter_types::runtime::maybe_grow_stack(|| {
8021                    <None as ::treesitter_types::FromNode>::from_node(node, src)
8022                })?,
8023            ))),
8024            "splat_pattern" => Ok(Self::SplatPattern(::std::boxed::Box::new(
8025                ::treesitter_types::runtime::maybe_grow_stack(|| {
8026                    <SplatPattern as ::treesitter_types::FromNode>::from_node(node, src)
8027                })?,
8028            ))),
8029            "string" => Ok(Self::String(::std::boxed::Box::new(
8030                ::treesitter_types::runtime::maybe_grow_stack(|| {
8031                    <String as ::treesitter_types::FromNode>::from_node(node, src)
8032                })?,
8033            ))),
8034            "true" => Ok(Self::True(::std::boxed::Box::new(
8035                ::treesitter_types::runtime::maybe_grow_stack(|| {
8036                    <True as ::treesitter_types::FromNode>::from_node(node, src)
8037                })?,
8038            ))),
8039            "tuple_pattern" => Ok(Self::TuplePattern(::std::boxed::Box::new(
8040                ::treesitter_types::runtime::maybe_grow_stack(|| {
8041                    <TuplePattern as ::treesitter_types::FromNode>::from_node(node, src)
8042                })?,
8043            ))),
8044            "union_pattern" => Ok(Self::UnionPattern(::std::boxed::Box::new(
8045                ::treesitter_types::runtime::maybe_grow_stack(|| {
8046                    <UnionPattern as ::treesitter_types::FromNode>::from_node(node, src)
8047                })?,
8048            ))),
8049            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
8050        }
8051    }
8052}
8053impl ::treesitter_types::Spanned for CasePatternChildren<'_> {
8054    fn span(&self) -> ::treesitter_types::Span {
8055        match self {
8056            Self::AsPattern(inner) => inner.span(),
8057            Self::ClassPattern(inner) => inner.span(),
8058            Self::ComplexPattern(inner) => inner.span(),
8059            Self::ConcatenatedString(inner) => inner.span(),
8060            Self::DictPattern(inner) => inner.span(),
8061            Self::DottedName(inner) => inner.span(),
8062            Self::False(inner) => inner.span(),
8063            Self::Float(inner) => inner.span(),
8064            Self::Integer(inner) => inner.span(),
8065            Self::KeywordPattern(inner) => inner.span(),
8066            Self::ListPattern(inner) => inner.span(),
8067            Self::None(inner) => inner.span(),
8068            Self::SplatPattern(inner) => inner.span(),
8069            Self::String(inner) => inner.span(),
8070            Self::True(inner) => inner.span(),
8071            Self::TuplePattern(inner) => inner.span(),
8072            Self::UnionPattern(inner) => inner.span(),
8073        }
8074    }
8075}
8076#[derive(Debug, Clone, PartialEq, Eq)]
8077pub enum ClassPatternChildren<'tree> {
8078    CasePattern(::std::boxed::Box<CasePattern<'tree>>),
8079    DottedName(::std::boxed::Box<DottedName<'tree>>),
8080}
8081impl<'tree> ::treesitter_types::FromNode<'tree> for ClassPatternChildren<'tree> {
8082    #[allow(clippy::collapsible_else_if)]
8083    fn from_node(
8084        node: ::treesitter_types::tree_sitter::Node<'tree>,
8085        src: &'tree [u8],
8086    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
8087        match node.kind() {
8088            "case_pattern" => Ok(Self::CasePattern(::std::boxed::Box::new(
8089                ::treesitter_types::runtime::maybe_grow_stack(|| {
8090                    <CasePattern as ::treesitter_types::FromNode>::from_node(node, src)
8091                })?,
8092            ))),
8093            "dotted_name" => Ok(Self::DottedName(::std::boxed::Box::new(
8094                ::treesitter_types::runtime::maybe_grow_stack(|| {
8095                    <DottedName as ::treesitter_types::FromNode>::from_node(node, src)
8096                })?,
8097            ))),
8098            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
8099        }
8100    }
8101}
8102impl ::treesitter_types::Spanned for ClassPatternChildren<'_> {
8103    fn span(&self) -> ::treesitter_types::Span {
8104        match self {
8105            Self::CasePattern(inner) => inner.span(),
8106            Self::DottedName(inner) => inner.span(),
8107        }
8108    }
8109}
8110#[derive(Debug, Clone, PartialEq, Eq)]
8111pub enum ComparisonOperatorOperators {
8112    NotEq(::treesitter_types::Span),
8113    Lt(::treesitter_types::Span),
8114    LtEq(::treesitter_types::Span),
8115    LtGt(::treesitter_types::Span),
8116    EqEq(::treesitter_types::Span),
8117    Gt(::treesitter_types::Span),
8118    GtEq(::treesitter_types::Span),
8119    In(::treesitter_types::Span),
8120    Is(::treesitter_types::Span),
8121    ISXNOT(::treesitter_types::Span),
8122    NOTXIN(::treesitter_types::Span),
8123}
8124impl<'tree> ::treesitter_types::FromNode<'tree> for ComparisonOperatorOperators {
8125    #[allow(clippy::collapsible_else_if)]
8126    fn from_node(
8127        node: ::treesitter_types::tree_sitter::Node<'tree>,
8128        _src: &'tree [u8],
8129    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
8130        match node.kind() {
8131            "!=" => Ok(Self::NotEq(::treesitter_types::Span::from(node))),
8132            "<" => Ok(Self::Lt(::treesitter_types::Span::from(node))),
8133            "<=" => Ok(Self::LtEq(::treesitter_types::Span::from(node))),
8134            "<>" => Ok(Self::LtGt(::treesitter_types::Span::from(node))),
8135            "==" => Ok(Self::EqEq(::treesitter_types::Span::from(node))),
8136            ">" => Ok(Self::Gt(::treesitter_types::Span::from(node))),
8137            ">=" => Ok(Self::GtEq(::treesitter_types::Span::from(node))),
8138            "in" => Ok(Self::In(::treesitter_types::Span::from(node))),
8139            "is" => Ok(Self::Is(::treesitter_types::Span::from(node))),
8140            "is not" => Ok(Self::ISXNOT(::treesitter_types::Span::from(node))),
8141            "not in" => Ok(Self::NOTXIN(::treesitter_types::Span::from(node))),
8142            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
8143        }
8144    }
8145}
8146impl ::treesitter_types::Spanned for ComparisonOperatorOperators {
8147    fn span(&self) -> ::treesitter_types::Span {
8148        match self {
8149            Self::NotEq(span) => *span,
8150            Self::Lt(span) => *span,
8151            Self::LtEq(span) => *span,
8152            Self::LtGt(span) => *span,
8153            Self::EqEq(span) => *span,
8154            Self::Gt(span) => *span,
8155            Self::GtEq(span) => *span,
8156            Self::In(span) => *span,
8157            Self::Is(span) => *span,
8158            Self::ISXNOT(span) => *span,
8159            Self::NOTXIN(span) => *span,
8160        }
8161    }
8162}
8163#[derive(Debug, Clone, PartialEq, Eq)]
8164pub enum ComplexPatternChildren<'tree> {
8165    Float(::std::boxed::Box<Float<'tree>>),
8166    Integer(::std::boxed::Box<Integer<'tree>>),
8167}
8168impl<'tree> ::treesitter_types::FromNode<'tree> for ComplexPatternChildren<'tree> {
8169    #[allow(clippy::collapsible_else_if)]
8170    fn from_node(
8171        node: ::treesitter_types::tree_sitter::Node<'tree>,
8172        src: &'tree [u8],
8173    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
8174        match node.kind() {
8175            "float" => Ok(Self::Float(::std::boxed::Box::new(
8176                ::treesitter_types::runtime::maybe_grow_stack(|| {
8177                    <Float as ::treesitter_types::FromNode>::from_node(node, src)
8178                })?,
8179            ))),
8180            "integer" => Ok(Self::Integer(::std::boxed::Box::new(
8181                ::treesitter_types::runtime::maybe_grow_stack(|| {
8182                    <Integer as ::treesitter_types::FromNode>::from_node(node, src)
8183                })?,
8184            ))),
8185            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
8186        }
8187    }
8188}
8189impl ::treesitter_types::Spanned for ComplexPatternChildren<'_> {
8190    fn span(&self) -> ::treesitter_types::Span {
8191        match self {
8192            Self::Float(inner) => inner.span(),
8193            Self::Integer(inner) => inner.span(),
8194        }
8195    }
8196}
8197#[derive(Debug, Clone, PartialEq, Eq)]
8198pub enum DecoratedDefinitionDefinition<'tree> {
8199    ClassDefinition(::std::boxed::Box<ClassDefinition<'tree>>),
8200    FunctionDefinition(::std::boxed::Box<FunctionDefinition<'tree>>),
8201}
8202impl<'tree> ::treesitter_types::FromNode<'tree> for DecoratedDefinitionDefinition<'tree> {
8203    #[allow(clippy::collapsible_else_if)]
8204    fn from_node(
8205        node: ::treesitter_types::tree_sitter::Node<'tree>,
8206        src: &'tree [u8],
8207    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
8208        match node.kind() {
8209            "class_definition" => Ok(Self::ClassDefinition(::std::boxed::Box::new(
8210                ::treesitter_types::runtime::maybe_grow_stack(|| {
8211                    <ClassDefinition as ::treesitter_types::FromNode>::from_node(node, src)
8212                })?,
8213            ))),
8214            "function_definition" => Ok(Self::FunctionDefinition(::std::boxed::Box::new(
8215                ::treesitter_types::runtime::maybe_grow_stack(|| {
8216                    <FunctionDefinition as ::treesitter_types::FromNode>::from_node(node, src)
8217                })?,
8218            ))),
8219            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
8220        }
8221    }
8222}
8223impl ::treesitter_types::Spanned for DecoratedDefinitionDefinition<'_> {
8224    fn span(&self) -> ::treesitter_types::Span {
8225        match self {
8226            Self::ClassDefinition(inner) => inner.span(),
8227            Self::FunctionDefinition(inner) => inner.span(),
8228        }
8229    }
8230}
8231#[derive(Debug, Clone, PartialEq, Eq)]
8232pub enum DefaultParameterName<'tree> {
8233    Identifier(::std::boxed::Box<Identifier<'tree>>),
8234    TuplePattern(::std::boxed::Box<TuplePattern<'tree>>),
8235}
8236impl<'tree> ::treesitter_types::FromNode<'tree> for DefaultParameterName<'tree> {
8237    #[allow(clippy::collapsible_else_if)]
8238    fn from_node(
8239        node: ::treesitter_types::tree_sitter::Node<'tree>,
8240        src: &'tree [u8],
8241    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
8242        match node.kind() {
8243            "identifier" => Ok(Self::Identifier(::std::boxed::Box::new(
8244                ::treesitter_types::runtime::maybe_grow_stack(|| {
8245                    <Identifier as ::treesitter_types::FromNode>::from_node(node, src)
8246                })?,
8247            ))),
8248            "tuple_pattern" => Ok(Self::TuplePattern(::std::boxed::Box::new(
8249                ::treesitter_types::runtime::maybe_grow_stack(|| {
8250                    <TuplePattern as ::treesitter_types::FromNode>::from_node(node, src)
8251                })?,
8252            ))),
8253            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
8254        }
8255    }
8256}
8257impl ::treesitter_types::Spanned for DefaultParameterName<'_> {
8258    fn span(&self) -> ::treesitter_types::Span {
8259        match self {
8260            Self::Identifier(inner) => inner.span(),
8261            Self::TuplePattern(inner) => inner.span(),
8262        }
8263    }
8264}
8265#[derive(Debug, Clone, PartialEq, Eq)]
8266pub enum DeleteStatementChildren<'tree> {
8267    Expression(::std::boxed::Box<Expression<'tree>>),
8268    ExpressionList(::std::boxed::Box<ExpressionList<'tree>>),
8269}
8270impl<'tree> ::treesitter_types::FromNode<'tree> for DeleteStatementChildren<'tree> {
8271    #[allow(clippy::collapsible_else_if)]
8272    fn from_node(
8273        node: ::treesitter_types::tree_sitter::Node<'tree>,
8274        src: &'tree [u8],
8275    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
8276        match node.kind() {
8277            "expression_list" => Ok(Self::ExpressionList(::std::boxed::Box::new(
8278                ::treesitter_types::runtime::maybe_grow_stack(|| {
8279                    <ExpressionList as ::treesitter_types::FromNode>::from_node(node, src)
8280                })?,
8281            ))),
8282            _other => {
8283                if let Ok(v) = ::treesitter_types::runtime::maybe_grow_stack(|| {
8284                    <Expression as ::treesitter_types::FromNode>::from_node(node, src)
8285                }) {
8286                    Ok(Self::Expression(::std::boxed::Box::new(v)))
8287                } else {
8288                    Err(::treesitter_types::ParseError::unexpected_kind(
8289                        _other, node,
8290                    ))
8291                }
8292            }
8293        }
8294    }
8295}
8296impl ::treesitter_types::Spanned for DeleteStatementChildren<'_> {
8297    fn span(&self) -> ::treesitter_types::Span {
8298        match self {
8299            Self::Expression(inner) => inner.span(),
8300            Self::ExpressionList(inner) => inner.span(),
8301        }
8302    }
8303}
8304#[derive(Debug, Clone, PartialEq, Eq)]
8305pub enum DictPatternKey<'tree> {
8306    Minus(::treesitter_types::Span),
8307    Blank(::treesitter_types::Span),
8308    ClassPattern(::std::boxed::Box<ClassPattern<'tree>>),
8309    ComplexPattern(::std::boxed::Box<ComplexPattern<'tree>>),
8310    ConcatenatedString(::std::boxed::Box<ConcatenatedString<'tree>>),
8311    DictPattern(::std::boxed::Box<DictPattern<'tree>>),
8312    DottedName(::std::boxed::Box<DottedName<'tree>>),
8313    False(::std::boxed::Box<False<'tree>>),
8314    Float(::std::boxed::Box<Float<'tree>>),
8315    Integer(::std::boxed::Box<Integer<'tree>>),
8316    ListPattern(::std::boxed::Box<ListPattern<'tree>>),
8317    None(::std::boxed::Box<None<'tree>>),
8318    SplatPattern(::std::boxed::Box<SplatPattern<'tree>>),
8319    String(::std::boxed::Box<String<'tree>>),
8320    True(::std::boxed::Box<True<'tree>>),
8321    TuplePattern(::std::boxed::Box<TuplePattern<'tree>>),
8322    UnionPattern(::std::boxed::Box<UnionPattern<'tree>>),
8323}
8324impl<'tree> ::treesitter_types::FromNode<'tree> for DictPatternKey<'tree> {
8325    #[allow(clippy::collapsible_else_if)]
8326    fn from_node(
8327        node: ::treesitter_types::tree_sitter::Node<'tree>,
8328        src: &'tree [u8],
8329    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
8330        match node.kind() {
8331            "-" => Ok(Self::Minus(::treesitter_types::Span::from(node))),
8332            "_" => Ok(Self::Blank(::treesitter_types::Span::from(node))),
8333            "class_pattern" => Ok(Self::ClassPattern(::std::boxed::Box::new(
8334                ::treesitter_types::runtime::maybe_grow_stack(|| {
8335                    <ClassPattern as ::treesitter_types::FromNode>::from_node(node, src)
8336                })?,
8337            ))),
8338            "complex_pattern" => Ok(Self::ComplexPattern(::std::boxed::Box::new(
8339                ::treesitter_types::runtime::maybe_grow_stack(|| {
8340                    <ComplexPattern as ::treesitter_types::FromNode>::from_node(node, src)
8341                })?,
8342            ))),
8343            "concatenated_string" => Ok(Self::ConcatenatedString(::std::boxed::Box::new(
8344                ::treesitter_types::runtime::maybe_grow_stack(|| {
8345                    <ConcatenatedString as ::treesitter_types::FromNode>::from_node(node, src)
8346                })?,
8347            ))),
8348            "dict_pattern" => Ok(Self::DictPattern(::std::boxed::Box::new(
8349                ::treesitter_types::runtime::maybe_grow_stack(|| {
8350                    <DictPattern as ::treesitter_types::FromNode>::from_node(node, src)
8351                })?,
8352            ))),
8353            "dotted_name" => Ok(Self::DottedName(::std::boxed::Box::new(
8354                ::treesitter_types::runtime::maybe_grow_stack(|| {
8355                    <DottedName as ::treesitter_types::FromNode>::from_node(node, src)
8356                })?,
8357            ))),
8358            "false" => Ok(Self::False(::std::boxed::Box::new(
8359                ::treesitter_types::runtime::maybe_grow_stack(|| {
8360                    <False as ::treesitter_types::FromNode>::from_node(node, src)
8361                })?,
8362            ))),
8363            "float" => Ok(Self::Float(::std::boxed::Box::new(
8364                ::treesitter_types::runtime::maybe_grow_stack(|| {
8365                    <Float as ::treesitter_types::FromNode>::from_node(node, src)
8366                })?,
8367            ))),
8368            "integer" => Ok(Self::Integer(::std::boxed::Box::new(
8369                ::treesitter_types::runtime::maybe_grow_stack(|| {
8370                    <Integer as ::treesitter_types::FromNode>::from_node(node, src)
8371                })?,
8372            ))),
8373            "list_pattern" => Ok(Self::ListPattern(::std::boxed::Box::new(
8374                ::treesitter_types::runtime::maybe_grow_stack(|| {
8375                    <ListPattern as ::treesitter_types::FromNode>::from_node(node, src)
8376                })?,
8377            ))),
8378            "none" => Ok(Self::None(::std::boxed::Box::new(
8379                ::treesitter_types::runtime::maybe_grow_stack(|| {
8380                    <None as ::treesitter_types::FromNode>::from_node(node, src)
8381                })?,
8382            ))),
8383            "splat_pattern" => Ok(Self::SplatPattern(::std::boxed::Box::new(
8384                ::treesitter_types::runtime::maybe_grow_stack(|| {
8385                    <SplatPattern as ::treesitter_types::FromNode>::from_node(node, src)
8386                })?,
8387            ))),
8388            "string" => Ok(Self::String(::std::boxed::Box::new(
8389                ::treesitter_types::runtime::maybe_grow_stack(|| {
8390                    <String as ::treesitter_types::FromNode>::from_node(node, src)
8391                })?,
8392            ))),
8393            "true" => Ok(Self::True(::std::boxed::Box::new(
8394                ::treesitter_types::runtime::maybe_grow_stack(|| {
8395                    <True as ::treesitter_types::FromNode>::from_node(node, src)
8396                })?,
8397            ))),
8398            "tuple_pattern" => Ok(Self::TuplePattern(::std::boxed::Box::new(
8399                ::treesitter_types::runtime::maybe_grow_stack(|| {
8400                    <TuplePattern as ::treesitter_types::FromNode>::from_node(node, src)
8401                })?,
8402            ))),
8403            "union_pattern" => Ok(Self::UnionPattern(::std::boxed::Box::new(
8404                ::treesitter_types::runtime::maybe_grow_stack(|| {
8405                    <UnionPattern as ::treesitter_types::FromNode>::from_node(node, src)
8406                })?,
8407            ))),
8408            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
8409        }
8410    }
8411}
8412impl ::treesitter_types::Spanned for DictPatternKey<'_> {
8413    fn span(&self) -> ::treesitter_types::Span {
8414        match self {
8415            Self::Minus(span) => *span,
8416            Self::Blank(span) => *span,
8417            Self::ClassPattern(inner) => inner.span(),
8418            Self::ComplexPattern(inner) => inner.span(),
8419            Self::ConcatenatedString(inner) => inner.span(),
8420            Self::DictPattern(inner) => inner.span(),
8421            Self::DottedName(inner) => inner.span(),
8422            Self::False(inner) => inner.span(),
8423            Self::Float(inner) => inner.span(),
8424            Self::Integer(inner) => inner.span(),
8425            Self::ListPattern(inner) => inner.span(),
8426            Self::None(inner) => inner.span(),
8427            Self::SplatPattern(inner) => inner.span(),
8428            Self::String(inner) => inner.span(),
8429            Self::True(inner) => inner.span(),
8430            Self::TuplePattern(inner) => inner.span(),
8431            Self::UnionPattern(inner) => inner.span(),
8432        }
8433    }
8434}
8435#[derive(Debug, Clone, PartialEq, Eq)]
8436pub enum DictionaryChildren<'tree> {
8437    DictionarySplat(::std::boxed::Box<DictionarySplat<'tree>>),
8438    Pair(::std::boxed::Box<Pair<'tree>>),
8439}
8440impl<'tree> ::treesitter_types::FromNode<'tree> for DictionaryChildren<'tree> {
8441    #[allow(clippy::collapsible_else_if)]
8442    fn from_node(
8443        node: ::treesitter_types::tree_sitter::Node<'tree>,
8444        src: &'tree [u8],
8445    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
8446        match node.kind() {
8447            "dictionary_splat" => Ok(Self::DictionarySplat(::std::boxed::Box::new(
8448                ::treesitter_types::runtime::maybe_grow_stack(|| {
8449                    <DictionarySplat as ::treesitter_types::FromNode>::from_node(node, src)
8450                })?,
8451            ))),
8452            "pair" => Ok(Self::Pair(::std::boxed::Box::new(
8453                ::treesitter_types::runtime::maybe_grow_stack(|| {
8454                    <Pair as ::treesitter_types::FromNode>::from_node(node, src)
8455                })?,
8456            ))),
8457            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
8458        }
8459    }
8460}
8461impl ::treesitter_types::Spanned for DictionaryChildren<'_> {
8462    fn span(&self) -> ::treesitter_types::Span {
8463        match self {
8464            Self::DictionarySplat(inner) => inner.span(),
8465            Self::Pair(inner) => inner.span(),
8466        }
8467    }
8468}
8469#[derive(Debug, Clone, PartialEq, Eq)]
8470pub enum DictionaryComprehensionChildren<'tree> {
8471    ForInClause(::std::boxed::Box<ForInClause<'tree>>),
8472    IfClause(::std::boxed::Box<IfClause<'tree>>),
8473}
8474impl<'tree> ::treesitter_types::FromNode<'tree> for DictionaryComprehensionChildren<'tree> {
8475    #[allow(clippy::collapsible_else_if)]
8476    fn from_node(
8477        node: ::treesitter_types::tree_sitter::Node<'tree>,
8478        src: &'tree [u8],
8479    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
8480        match node.kind() {
8481            "for_in_clause" => Ok(Self::ForInClause(::std::boxed::Box::new(
8482                ::treesitter_types::runtime::maybe_grow_stack(|| {
8483                    <ForInClause as ::treesitter_types::FromNode>::from_node(node, src)
8484                })?,
8485            ))),
8486            "if_clause" => Ok(Self::IfClause(::std::boxed::Box::new(
8487                ::treesitter_types::runtime::maybe_grow_stack(|| {
8488                    <IfClause as ::treesitter_types::FromNode>::from_node(node, src)
8489                })?,
8490            ))),
8491            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
8492        }
8493    }
8494}
8495impl ::treesitter_types::Spanned for DictionaryComprehensionChildren<'_> {
8496    fn span(&self) -> ::treesitter_types::Span {
8497        match self {
8498            Self::ForInClause(inner) => inner.span(),
8499            Self::IfClause(inner) => inner.span(),
8500        }
8501    }
8502}
8503#[derive(Debug, Clone, PartialEq, Eq)]
8504pub enum DictionarySplatPatternChildren<'tree> {
8505    Attribute(::std::boxed::Box<Attribute<'tree>>),
8506    Identifier(::std::boxed::Box<Identifier<'tree>>),
8507    Subscript(::std::boxed::Box<Subscript<'tree>>),
8508}
8509impl<'tree> ::treesitter_types::FromNode<'tree> for DictionarySplatPatternChildren<'tree> {
8510    #[allow(clippy::collapsible_else_if)]
8511    fn from_node(
8512        node: ::treesitter_types::tree_sitter::Node<'tree>,
8513        src: &'tree [u8],
8514    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
8515        match node.kind() {
8516            "attribute" => Ok(Self::Attribute(::std::boxed::Box::new(
8517                ::treesitter_types::runtime::maybe_grow_stack(|| {
8518                    <Attribute as ::treesitter_types::FromNode>::from_node(node, src)
8519                })?,
8520            ))),
8521            "identifier" => Ok(Self::Identifier(::std::boxed::Box::new(
8522                ::treesitter_types::runtime::maybe_grow_stack(|| {
8523                    <Identifier as ::treesitter_types::FromNode>::from_node(node, src)
8524                })?,
8525            ))),
8526            "subscript" => Ok(Self::Subscript(::std::boxed::Box::new(
8527                ::treesitter_types::runtime::maybe_grow_stack(|| {
8528                    <Subscript as ::treesitter_types::FromNode>::from_node(node, src)
8529                })?,
8530            ))),
8531            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
8532        }
8533    }
8534}
8535impl ::treesitter_types::Spanned for DictionarySplatPatternChildren<'_> {
8536    fn span(&self) -> ::treesitter_types::Span {
8537        match self {
8538            Self::Attribute(inner) => inner.span(),
8539            Self::Identifier(inner) => inner.span(),
8540            Self::Subscript(inner) => inner.span(),
8541        }
8542    }
8543}
8544#[derive(Debug, Clone, PartialEq, Eq)]
8545pub enum ExecStatementCode<'tree> {
8546    Identifier(::std::boxed::Box<Identifier<'tree>>),
8547    String(::std::boxed::Box<String<'tree>>),
8548}
8549impl<'tree> ::treesitter_types::FromNode<'tree> for ExecStatementCode<'tree> {
8550    #[allow(clippy::collapsible_else_if)]
8551    fn from_node(
8552        node: ::treesitter_types::tree_sitter::Node<'tree>,
8553        src: &'tree [u8],
8554    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
8555        match node.kind() {
8556            "identifier" => Ok(Self::Identifier(::std::boxed::Box::new(
8557                ::treesitter_types::runtime::maybe_grow_stack(|| {
8558                    <Identifier as ::treesitter_types::FromNode>::from_node(node, src)
8559                })?,
8560            ))),
8561            "string" => Ok(Self::String(::std::boxed::Box::new(
8562                ::treesitter_types::runtime::maybe_grow_stack(|| {
8563                    <String as ::treesitter_types::FromNode>::from_node(node, src)
8564                })?,
8565            ))),
8566            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
8567        }
8568    }
8569}
8570impl ::treesitter_types::Spanned for ExecStatementCode<'_> {
8571    fn span(&self) -> ::treesitter_types::Span {
8572        match self {
8573            Self::Identifier(inner) => inner.span(),
8574            Self::String(inner) => inner.span(),
8575        }
8576    }
8577}
8578#[derive(Debug, Clone, PartialEq, Eq)]
8579pub enum ExpressionStatementChildren<'tree> {
8580    Assignment(::std::boxed::Box<Assignment<'tree>>),
8581    AugmentedAssignment(::std::boxed::Box<AugmentedAssignment<'tree>>),
8582    Expression(::std::boxed::Box<Expression<'tree>>),
8583    Yield(::std::boxed::Box<Yield<'tree>>),
8584}
8585impl<'tree> ::treesitter_types::FromNode<'tree> for ExpressionStatementChildren<'tree> {
8586    #[allow(clippy::collapsible_else_if)]
8587    fn from_node(
8588        node: ::treesitter_types::tree_sitter::Node<'tree>,
8589        src: &'tree [u8],
8590    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
8591        match node.kind() {
8592            "assignment" => Ok(Self::Assignment(::std::boxed::Box::new(
8593                ::treesitter_types::runtime::maybe_grow_stack(|| {
8594                    <Assignment as ::treesitter_types::FromNode>::from_node(node, src)
8595                })?,
8596            ))),
8597            "augmented_assignment" => Ok(Self::AugmentedAssignment(::std::boxed::Box::new(
8598                ::treesitter_types::runtime::maybe_grow_stack(|| {
8599                    <AugmentedAssignment as ::treesitter_types::FromNode>::from_node(node, src)
8600                })?,
8601            ))),
8602            "yield" => Ok(Self::Yield(::std::boxed::Box::new(
8603                ::treesitter_types::runtime::maybe_grow_stack(|| {
8604                    <Yield as ::treesitter_types::FromNode>::from_node(node, src)
8605                })?,
8606            ))),
8607            _other => {
8608                if let Ok(v) = ::treesitter_types::runtime::maybe_grow_stack(|| {
8609                    <Expression as ::treesitter_types::FromNode>::from_node(node, src)
8610                }) {
8611                    Ok(Self::Expression(::std::boxed::Box::new(v)))
8612                } else {
8613                    Err(::treesitter_types::ParseError::unexpected_kind(
8614                        _other, node,
8615                    ))
8616                }
8617            }
8618        }
8619    }
8620}
8621impl ::treesitter_types::Spanned for ExpressionStatementChildren<'_> {
8622    fn span(&self) -> ::treesitter_types::Span {
8623        match self {
8624            Self::Assignment(inner) => inner.span(),
8625            Self::AugmentedAssignment(inner) => inner.span(),
8626            Self::Expression(inner) => inner.span(),
8627            Self::Yield(inner) => inner.span(),
8628        }
8629    }
8630}
8631#[derive(Debug, Clone, PartialEq, Eq)]
8632pub enum ForInClauseLeft<'tree> {
8633    Pattern(::std::boxed::Box<Pattern<'tree>>),
8634    PatternList(::std::boxed::Box<PatternList<'tree>>),
8635}
8636impl<'tree> ::treesitter_types::FromNode<'tree> for ForInClauseLeft<'tree> {
8637    #[allow(clippy::collapsible_else_if)]
8638    fn from_node(
8639        node: ::treesitter_types::tree_sitter::Node<'tree>,
8640        src: &'tree [u8],
8641    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
8642        match node.kind() {
8643            "pattern_list" => Ok(Self::PatternList(::std::boxed::Box::new(
8644                ::treesitter_types::runtime::maybe_grow_stack(|| {
8645                    <PatternList as ::treesitter_types::FromNode>::from_node(node, src)
8646                })?,
8647            ))),
8648            _other => {
8649                if let Ok(v) = ::treesitter_types::runtime::maybe_grow_stack(|| {
8650                    <Pattern as ::treesitter_types::FromNode>::from_node(node, src)
8651                }) {
8652                    Ok(Self::Pattern(::std::boxed::Box::new(v)))
8653                } else {
8654                    Err(::treesitter_types::ParseError::unexpected_kind(
8655                        _other, node,
8656                    ))
8657                }
8658            }
8659        }
8660    }
8661}
8662impl ::treesitter_types::Spanned for ForInClauseLeft<'_> {
8663    fn span(&self) -> ::treesitter_types::Span {
8664        match self {
8665            Self::Pattern(inner) => inner.span(),
8666            Self::PatternList(inner) => inner.span(),
8667        }
8668    }
8669}
8670#[derive(Debug, Clone, PartialEq, Eq)]
8671pub enum ForInClauseRight<'tree> {
8672    Comma(::treesitter_types::Span),
8673    Expression(::std::boxed::Box<Expression<'tree>>),
8674}
8675impl<'tree> ::treesitter_types::FromNode<'tree> for ForInClauseRight<'tree> {
8676    #[allow(clippy::collapsible_else_if)]
8677    fn from_node(
8678        node: ::treesitter_types::tree_sitter::Node<'tree>,
8679        src: &'tree [u8],
8680    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
8681        match node.kind() {
8682            "," => Ok(Self::Comma(::treesitter_types::Span::from(node))),
8683            _other => {
8684                if let Ok(v) = ::treesitter_types::runtime::maybe_grow_stack(|| {
8685                    <Expression as ::treesitter_types::FromNode>::from_node(node, src)
8686                }) {
8687                    Ok(Self::Expression(::std::boxed::Box::new(v)))
8688                } else {
8689                    Err(::treesitter_types::ParseError::unexpected_kind(
8690                        _other, node,
8691                    ))
8692                }
8693            }
8694        }
8695    }
8696}
8697impl ::treesitter_types::Spanned for ForInClauseRight<'_> {
8698    fn span(&self) -> ::treesitter_types::Span {
8699        match self {
8700            Self::Comma(span) => *span,
8701            Self::Expression(inner) => inner.span(),
8702        }
8703    }
8704}
8705#[derive(Debug, Clone, PartialEq, Eq)]
8706pub enum ForStatementLeft<'tree> {
8707    Pattern(::std::boxed::Box<Pattern<'tree>>),
8708    PatternList(::std::boxed::Box<PatternList<'tree>>),
8709}
8710impl<'tree> ::treesitter_types::FromNode<'tree> for ForStatementLeft<'tree> {
8711    #[allow(clippy::collapsible_else_if)]
8712    fn from_node(
8713        node: ::treesitter_types::tree_sitter::Node<'tree>,
8714        src: &'tree [u8],
8715    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
8716        match node.kind() {
8717            "pattern_list" => Ok(Self::PatternList(::std::boxed::Box::new(
8718                ::treesitter_types::runtime::maybe_grow_stack(|| {
8719                    <PatternList as ::treesitter_types::FromNode>::from_node(node, src)
8720                })?,
8721            ))),
8722            _other => {
8723                if let Ok(v) = ::treesitter_types::runtime::maybe_grow_stack(|| {
8724                    <Pattern as ::treesitter_types::FromNode>::from_node(node, src)
8725                }) {
8726                    Ok(Self::Pattern(::std::boxed::Box::new(v)))
8727                } else {
8728                    Err(::treesitter_types::ParseError::unexpected_kind(
8729                        _other, node,
8730                    ))
8731                }
8732            }
8733        }
8734    }
8735}
8736impl ::treesitter_types::Spanned for ForStatementLeft<'_> {
8737    fn span(&self) -> ::treesitter_types::Span {
8738        match self {
8739            Self::Pattern(inner) => inner.span(),
8740            Self::PatternList(inner) => inner.span(),
8741        }
8742    }
8743}
8744#[derive(Debug, Clone, PartialEq, Eq)]
8745pub enum ForStatementRight<'tree> {
8746    Expression(::std::boxed::Box<Expression<'tree>>),
8747    ExpressionList(::std::boxed::Box<ExpressionList<'tree>>),
8748}
8749impl<'tree> ::treesitter_types::FromNode<'tree> for ForStatementRight<'tree> {
8750    #[allow(clippy::collapsible_else_if)]
8751    fn from_node(
8752        node: ::treesitter_types::tree_sitter::Node<'tree>,
8753        src: &'tree [u8],
8754    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
8755        match node.kind() {
8756            "expression_list" => Ok(Self::ExpressionList(::std::boxed::Box::new(
8757                ::treesitter_types::runtime::maybe_grow_stack(|| {
8758                    <ExpressionList as ::treesitter_types::FromNode>::from_node(node, src)
8759                })?,
8760            ))),
8761            _other => {
8762                if let Ok(v) = ::treesitter_types::runtime::maybe_grow_stack(|| {
8763                    <Expression as ::treesitter_types::FromNode>::from_node(node, src)
8764                }) {
8765                    Ok(Self::Expression(::std::boxed::Box::new(v)))
8766                } else {
8767                    Err(::treesitter_types::ParseError::unexpected_kind(
8768                        _other, node,
8769                    ))
8770                }
8771            }
8772        }
8773    }
8774}
8775impl ::treesitter_types::Spanned for ForStatementRight<'_> {
8776    fn span(&self) -> ::treesitter_types::Span {
8777        match self {
8778            Self::Expression(inner) => inner.span(),
8779            Self::ExpressionList(inner) => inner.span(),
8780        }
8781    }
8782}
8783#[derive(Debug, Clone, PartialEq, Eq)]
8784pub enum FormatExpressionExpression<'tree> {
8785    Expression(::std::boxed::Box<Expression<'tree>>),
8786    ExpressionList(::std::boxed::Box<ExpressionList<'tree>>),
8787    PatternList(::std::boxed::Box<PatternList<'tree>>),
8788    Yield(::std::boxed::Box<Yield<'tree>>),
8789}
8790impl<'tree> ::treesitter_types::FromNode<'tree> for FormatExpressionExpression<'tree> {
8791    #[allow(clippy::collapsible_else_if)]
8792    fn from_node(
8793        node: ::treesitter_types::tree_sitter::Node<'tree>,
8794        src: &'tree [u8],
8795    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
8796        match node.kind() {
8797            "expression_list" => Ok(Self::ExpressionList(::std::boxed::Box::new(
8798                ::treesitter_types::runtime::maybe_grow_stack(|| {
8799                    <ExpressionList as ::treesitter_types::FromNode>::from_node(node, src)
8800                })?,
8801            ))),
8802            "pattern_list" => Ok(Self::PatternList(::std::boxed::Box::new(
8803                ::treesitter_types::runtime::maybe_grow_stack(|| {
8804                    <PatternList as ::treesitter_types::FromNode>::from_node(node, src)
8805                })?,
8806            ))),
8807            "yield" => Ok(Self::Yield(::std::boxed::Box::new(
8808                ::treesitter_types::runtime::maybe_grow_stack(|| {
8809                    <Yield as ::treesitter_types::FromNode>::from_node(node, src)
8810                })?,
8811            ))),
8812            _other => {
8813                if let Ok(v) = ::treesitter_types::runtime::maybe_grow_stack(|| {
8814                    <Expression as ::treesitter_types::FromNode>::from_node(node, src)
8815                }) {
8816                    Ok(Self::Expression(::std::boxed::Box::new(v)))
8817                } else {
8818                    Err(::treesitter_types::ParseError::unexpected_kind(
8819                        _other, node,
8820                    ))
8821                }
8822            }
8823        }
8824    }
8825}
8826impl ::treesitter_types::Spanned for FormatExpressionExpression<'_> {
8827    fn span(&self) -> ::treesitter_types::Span {
8828        match self {
8829            Self::Expression(inner) => inner.span(),
8830            Self::ExpressionList(inner) => inner.span(),
8831            Self::PatternList(inner) => inner.span(),
8832            Self::Yield(inner) => inner.span(),
8833        }
8834    }
8835}
8836#[derive(Debug, Clone, PartialEq, Eq)]
8837pub enum FutureImportStatementName<'tree> {
8838    AliasedImport(::std::boxed::Box<AliasedImport<'tree>>),
8839    DottedName(::std::boxed::Box<DottedName<'tree>>),
8840}
8841impl<'tree> ::treesitter_types::FromNode<'tree> for FutureImportStatementName<'tree> {
8842    #[allow(clippy::collapsible_else_if)]
8843    fn from_node(
8844        node: ::treesitter_types::tree_sitter::Node<'tree>,
8845        src: &'tree [u8],
8846    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
8847        match node.kind() {
8848            "aliased_import" => Ok(Self::AliasedImport(::std::boxed::Box::new(
8849                ::treesitter_types::runtime::maybe_grow_stack(|| {
8850                    <AliasedImport as ::treesitter_types::FromNode>::from_node(node, src)
8851                })?,
8852            ))),
8853            "dotted_name" => Ok(Self::DottedName(::std::boxed::Box::new(
8854                ::treesitter_types::runtime::maybe_grow_stack(|| {
8855                    <DottedName as ::treesitter_types::FromNode>::from_node(node, src)
8856                })?,
8857            ))),
8858            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
8859        }
8860    }
8861}
8862impl ::treesitter_types::Spanned for FutureImportStatementName<'_> {
8863    fn span(&self) -> ::treesitter_types::Span {
8864        match self {
8865            Self::AliasedImport(inner) => inner.span(),
8866            Self::DottedName(inner) => inner.span(),
8867        }
8868    }
8869}
8870#[derive(Debug, Clone, PartialEq, Eq)]
8871pub enum GeneratorExpressionChildren<'tree> {
8872    ForInClause(::std::boxed::Box<ForInClause<'tree>>),
8873    IfClause(::std::boxed::Box<IfClause<'tree>>),
8874}
8875impl<'tree> ::treesitter_types::FromNode<'tree> for GeneratorExpressionChildren<'tree> {
8876    #[allow(clippy::collapsible_else_if)]
8877    fn from_node(
8878        node: ::treesitter_types::tree_sitter::Node<'tree>,
8879        src: &'tree [u8],
8880    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
8881        match node.kind() {
8882            "for_in_clause" => Ok(Self::ForInClause(::std::boxed::Box::new(
8883                ::treesitter_types::runtime::maybe_grow_stack(|| {
8884                    <ForInClause as ::treesitter_types::FromNode>::from_node(node, src)
8885                })?,
8886            ))),
8887            "if_clause" => Ok(Self::IfClause(::std::boxed::Box::new(
8888                ::treesitter_types::runtime::maybe_grow_stack(|| {
8889                    <IfClause as ::treesitter_types::FromNode>::from_node(node, src)
8890                })?,
8891            ))),
8892            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
8893        }
8894    }
8895}
8896impl ::treesitter_types::Spanned for GeneratorExpressionChildren<'_> {
8897    fn span(&self) -> ::treesitter_types::Span {
8898        match self {
8899            Self::ForInClause(inner) => inner.span(),
8900            Self::IfClause(inner) => inner.span(),
8901        }
8902    }
8903}
8904#[derive(Debug, Clone, PartialEq, Eq)]
8905pub enum GenericTypeChildren<'tree> {
8906    Identifier(::std::boxed::Box<Identifier<'tree>>),
8907    TypeParameter(::std::boxed::Box<TypeParameter<'tree>>),
8908}
8909impl<'tree> ::treesitter_types::FromNode<'tree> for GenericTypeChildren<'tree> {
8910    #[allow(clippy::collapsible_else_if)]
8911    fn from_node(
8912        node: ::treesitter_types::tree_sitter::Node<'tree>,
8913        src: &'tree [u8],
8914    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
8915        match node.kind() {
8916            "identifier" => Ok(Self::Identifier(::std::boxed::Box::new(
8917                ::treesitter_types::runtime::maybe_grow_stack(|| {
8918                    <Identifier as ::treesitter_types::FromNode>::from_node(node, src)
8919                })?,
8920            ))),
8921            "type_parameter" => Ok(Self::TypeParameter(::std::boxed::Box::new(
8922                ::treesitter_types::runtime::maybe_grow_stack(|| {
8923                    <TypeParameter as ::treesitter_types::FromNode>::from_node(node, src)
8924                })?,
8925            ))),
8926            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
8927        }
8928    }
8929}
8930impl ::treesitter_types::Spanned for GenericTypeChildren<'_> {
8931    fn span(&self) -> ::treesitter_types::Span {
8932        match self {
8933            Self::Identifier(inner) => inner.span(),
8934            Self::TypeParameter(inner) => inner.span(),
8935        }
8936    }
8937}
8938#[derive(Debug, Clone, PartialEq, Eq)]
8939pub enum IfStatementAlternative<'tree> {
8940    ElifClause(::std::boxed::Box<ElifClause<'tree>>),
8941    ElseClause(::std::boxed::Box<ElseClause<'tree>>),
8942}
8943impl<'tree> ::treesitter_types::FromNode<'tree> for IfStatementAlternative<'tree> {
8944    #[allow(clippy::collapsible_else_if)]
8945    fn from_node(
8946        node: ::treesitter_types::tree_sitter::Node<'tree>,
8947        src: &'tree [u8],
8948    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
8949        match node.kind() {
8950            "elif_clause" => Ok(Self::ElifClause(::std::boxed::Box::new(
8951                ::treesitter_types::runtime::maybe_grow_stack(|| {
8952                    <ElifClause as ::treesitter_types::FromNode>::from_node(node, src)
8953                })?,
8954            ))),
8955            "else_clause" => Ok(Self::ElseClause(::std::boxed::Box::new(
8956                ::treesitter_types::runtime::maybe_grow_stack(|| {
8957                    <ElseClause as ::treesitter_types::FromNode>::from_node(node, src)
8958                })?,
8959            ))),
8960            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
8961        }
8962    }
8963}
8964impl ::treesitter_types::Spanned for IfStatementAlternative<'_> {
8965    fn span(&self) -> ::treesitter_types::Span {
8966        match self {
8967            Self::ElifClause(inner) => inner.span(),
8968            Self::ElseClause(inner) => inner.span(),
8969        }
8970    }
8971}
8972#[derive(Debug, Clone, PartialEq, Eq)]
8973pub enum ImportFromStatementModuleName<'tree> {
8974    DottedName(::std::boxed::Box<DottedName<'tree>>),
8975    RelativeImport(::std::boxed::Box<RelativeImport<'tree>>),
8976}
8977impl<'tree> ::treesitter_types::FromNode<'tree> for ImportFromStatementModuleName<'tree> {
8978    #[allow(clippy::collapsible_else_if)]
8979    fn from_node(
8980        node: ::treesitter_types::tree_sitter::Node<'tree>,
8981        src: &'tree [u8],
8982    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
8983        match node.kind() {
8984            "dotted_name" => Ok(Self::DottedName(::std::boxed::Box::new(
8985                ::treesitter_types::runtime::maybe_grow_stack(|| {
8986                    <DottedName as ::treesitter_types::FromNode>::from_node(node, src)
8987                })?,
8988            ))),
8989            "relative_import" => Ok(Self::RelativeImport(::std::boxed::Box::new(
8990                ::treesitter_types::runtime::maybe_grow_stack(|| {
8991                    <RelativeImport as ::treesitter_types::FromNode>::from_node(node, src)
8992                })?,
8993            ))),
8994            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
8995        }
8996    }
8997}
8998impl ::treesitter_types::Spanned for ImportFromStatementModuleName<'_> {
8999    fn span(&self) -> ::treesitter_types::Span {
9000        match self {
9001            Self::DottedName(inner) => inner.span(),
9002            Self::RelativeImport(inner) => inner.span(),
9003        }
9004    }
9005}
9006#[derive(Debug, Clone, PartialEq, Eq)]
9007pub enum ImportFromStatementName<'tree> {
9008    AliasedImport(::std::boxed::Box<AliasedImport<'tree>>),
9009    DottedName(::std::boxed::Box<DottedName<'tree>>),
9010}
9011impl<'tree> ::treesitter_types::FromNode<'tree> for ImportFromStatementName<'tree> {
9012    #[allow(clippy::collapsible_else_if)]
9013    fn from_node(
9014        node: ::treesitter_types::tree_sitter::Node<'tree>,
9015        src: &'tree [u8],
9016    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
9017        match node.kind() {
9018            "aliased_import" => Ok(Self::AliasedImport(::std::boxed::Box::new(
9019                ::treesitter_types::runtime::maybe_grow_stack(|| {
9020                    <AliasedImport as ::treesitter_types::FromNode>::from_node(node, src)
9021                })?,
9022            ))),
9023            "dotted_name" => Ok(Self::DottedName(::std::boxed::Box::new(
9024                ::treesitter_types::runtime::maybe_grow_stack(|| {
9025                    <DottedName as ::treesitter_types::FromNode>::from_node(node, src)
9026                })?,
9027            ))),
9028            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
9029        }
9030    }
9031}
9032impl ::treesitter_types::Spanned for ImportFromStatementName<'_> {
9033    fn span(&self) -> ::treesitter_types::Span {
9034        match self {
9035            Self::AliasedImport(inner) => inner.span(),
9036            Self::DottedName(inner) => inner.span(),
9037        }
9038    }
9039}
9040#[derive(Debug, Clone, PartialEq, Eq)]
9041pub enum ImportStatementName<'tree> {
9042    AliasedImport(::std::boxed::Box<AliasedImport<'tree>>),
9043    DottedName(::std::boxed::Box<DottedName<'tree>>),
9044}
9045impl<'tree> ::treesitter_types::FromNode<'tree> for ImportStatementName<'tree> {
9046    #[allow(clippy::collapsible_else_if)]
9047    fn from_node(
9048        node: ::treesitter_types::tree_sitter::Node<'tree>,
9049        src: &'tree [u8],
9050    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
9051        match node.kind() {
9052            "aliased_import" => Ok(Self::AliasedImport(::std::boxed::Box::new(
9053                ::treesitter_types::runtime::maybe_grow_stack(|| {
9054                    <AliasedImport as ::treesitter_types::FromNode>::from_node(node, src)
9055                })?,
9056            ))),
9057            "dotted_name" => Ok(Self::DottedName(::std::boxed::Box::new(
9058                ::treesitter_types::runtime::maybe_grow_stack(|| {
9059                    <DottedName as ::treesitter_types::FromNode>::from_node(node, src)
9060                })?,
9061            ))),
9062            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
9063        }
9064    }
9065}
9066impl ::treesitter_types::Spanned for ImportStatementName<'_> {
9067    fn span(&self) -> ::treesitter_types::Span {
9068        match self {
9069            Self::AliasedImport(inner) => inner.span(),
9070            Self::DottedName(inner) => inner.span(),
9071        }
9072    }
9073}
9074#[derive(Debug, Clone, PartialEq, Eq)]
9075pub enum InterpolationExpression<'tree> {
9076    Expression(::std::boxed::Box<Expression<'tree>>),
9077    ExpressionList(::std::boxed::Box<ExpressionList<'tree>>),
9078    PatternList(::std::boxed::Box<PatternList<'tree>>),
9079    Yield(::std::boxed::Box<Yield<'tree>>),
9080}
9081impl<'tree> ::treesitter_types::FromNode<'tree> for InterpolationExpression<'tree> {
9082    #[allow(clippy::collapsible_else_if)]
9083    fn from_node(
9084        node: ::treesitter_types::tree_sitter::Node<'tree>,
9085        src: &'tree [u8],
9086    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
9087        match node.kind() {
9088            "expression_list" => Ok(Self::ExpressionList(::std::boxed::Box::new(
9089                ::treesitter_types::runtime::maybe_grow_stack(|| {
9090                    <ExpressionList as ::treesitter_types::FromNode>::from_node(node, src)
9091                })?,
9092            ))),
9093            "pattern_list" => Ok(Self::PatternList(::std::boxed::Box::new(
9094                ::treesitter_types::runtime::maybe_grow_stack(|| {
9095                    <PatternList as ::treesitter_types::FromNode>::from_node(node, src)
9096                })?,
9097            ))),
9098            "yield" => Ok(Self::Yield(::std::boxed::Box::new(
9099                ::treesitter_types::runtime::maybe_grow_stack(|| {
9100                    <Yield as ::treesitter_types::FromNode>::from_node(node, src)
9101                })?,
9102            ))),
9103            _other => {
9104                if let Ok(v) = ::treesitter_types::runtime::maybe_grow_stack(|| {
9105                    <Expression as ::treesitter_types::FromNode>::from_node(node, src)
9106                }) {
9107                    Ok(Self::Expression(::std::boxed::Box::new(v)))
9108                } else {
9109                    Err(::treesitter_types::ParseError::unexpected_kind(
9110                        _other, node,
9111                    ))
9112                }
9113            }
9114        }
9115    }
9116}
9117impl ::treesitter_types::Spanned for InterpolationExpression<'_> {
9118    fn span(&self) -> ::treesitter_types::Span {
9119        match self {
9120            Self::Expression(inner) => inner.span(),
9121            Self::ExpressionList(inner) => inner.span(),
9122            Self::PatternList(inner) => inner.span(),
9123            Self::Yield(inner) => inner.span(),
9124        }
9125    }
9126}
9127#[derive(Debug, Clone, PartialEq, Eq)]
9128pub enum KeywordPatternChildren<'tree> {
9129    ClassPattern(::std::boxed::Box<ClassPattern<'tree>>),
9130    ComplexPattern(::std::boxed::Box<ComplexPattern<'tree>>),
9131    ConcatenatedString(::std::boxed::Box<ConcatenatedString<'tree>>),
9132    DictPattern(::std::boxed::Box<DictPattern<'tree>>),
9133    DottedName(::std::boxed::Box<DottedName<'tree>>),
9134    False(::std::boxed::Box<False<'tree>>),
9135    Float(::std::boxed::Box<Float<'tree>>),
9136    Identifier(::std::boxed::Box<Identifier<'tree>>),
9137    Integer(::std::boxed::Box<Integer<'tree>>),
9138    ListPattern(::std::boxed::Box<ListPattern<'tree>>),
9139    None(::std::boxed::Box<None<'tree>>),
9140    SplatPattern(::std::boxed::Box<SplatPattern<'tree>>),
9141    String(::std::boxed::Box<String<'tree>>),
9142    True(::std::boxed::Box<True<'tree>>),
9143    TuplePattern(::std::boxed::Box<TuplePattern<'tree>>),
9144    UnionPattern(::std::boxed::Box<UnionPattern<'tree>>),
9145}
9146impl<'tree> ::treesitter_types::FromNode<'tree> for KeywordPatternChildren<'tree> {
9147    #[allow(clippy::collapsible_else_if)]
9148    fn from_node(
9149        node: ::treesitter_types::tree_sitter::Node<'tree>,
9150        src: &'tree [u8],
9151    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
9152        match node.kind() {
9153            "class_pattern" => Ok(Self::ClassPattern(::std::boxed::Box::new(
9154                ::treesitter_types::runtime::maybe_grow_stack(|| {
9155                    <ClassPattern as ::treesitter_types::FromNode>::from_node(node, src)
9156                })?,
9157            ))),
9158            "complex_pattern" => Ok(Self::ComplexPattern(::std::boxed::Box::new(
9159                ::treesitter_types::runtime::maybe_grow_stack(|| {
9160                    <ComplexPattern as ::treesitter_types::FromNode>::from_node(node, src)
9161                })?,
9162            ))),
9163            "concatenated_string" => Ok(Self::ConcatenatedString(::std::boxed::Box::new(
9164                ::treesitter_types::runtime::maybe_grow_stack(|| {
9165                    <ConcatenatedString as ::treesitter_types::FromNode>::from_node(node, src)
9166                })?,
9167            ))),
9168            "dict_pattern" => Ok(Self::DictPattern(::std::boxed::Box::new(
9169                ::treesitter_types::runtime::maybe_grow_stack(|| {
9170                    <DictPattern as ::treesitter_types::FromNode>::from_node(node, src)
9171                })?,
9172            ))),
9173            "dotted_name" => Ok(Self::DottedName(::std::boxed::Box::new(
9174                ::treesitter_types::runtime::maybe_grow_stack(|| {
9175                    <DottedName as ::treesitter_types::FromNode>::from_node(node, src)
9176                })?,
9177            ))),
9178            "false" => Ok(Self::False(::std::boxed::Box::new(
9179                ::treesitter_types::runtime::maybe_grow_stack(|| {
9180                    <False as ::treesitter_types::FromNode>::from_node(node, src)
9181                })?,
9182            ))),
9183            "float" => Ok(Self::Float(::std::boxed::Box::new(
9184                ::treesitter_types::runtime::maybe_grow_stack(|| {
9185                    <Float as ::treesitter_types::FromNode>::from_node(node, src)
9186                })?,
9187            ))),
9188            "identifier" => Ok(Self::Identifier(::std::boxed::Box::new(
9189                ::treesitter_types::runtime::maybe_grow_stack(|| {
9190                    <Identifier as ::treesitter_types::FromNode>::from_node(node, src)
9191                })?,
9192            ))),
9193            "integer" => Ok(Self::Integer(::std::boxed::Box::new(
9194                ::treesitter_types::runtime::maybe_grow_stack(|| {
9195                    <Integer as ::treesitter_types::FromNode>::from_node(node, src)
9196                })?,
9197            ))),
9198            "list_pattern" => Ok(Self::ListPattern(::std::boxed::Box::new(
9199                ::treesitter_types::runtime::maybe_grow_stack(|| {
9200                    <ListPattern as ::treesitter_types::FromNode>::from_node(node, src)
9201                })?,
9202            ))),
9203            "none" => Ok(Self::None(::std::boxed::Box::new(
9204                ::treesitter_types::runtime::maybe_grow_stack(|| {
9205                    <None as ::treesitter_types::FromNode>::from_node(node, src)
9206                })?,
9207            ))),
9208            "splat_pattern" => Ok(Self::SplatPattern(::std::boxed::Box::new(
9209                ::treesitter_types::runtime::maybe_grow_stack(|| {
9210                    <SplatPattern as ::treesitter_types::FromNode>::from_node(node, src)
9211                })?,
9212            ))),
9213            "string" => Ok(Self::String(::std::boxed::Box::new(
9214                ::treesitter_types::runtime::maybe_grow_stack(|| {
9215                    <String as ::treesitter_types::FromNode>::from_node(node, src)
9216                })?,
9217            ))),
9218            "true" => Ok(Self::True(::std::boxed::Box::new(
9219                ::treesitter_types::runtime::maybe_grow_stack(|| {
9220                    <True as ::treesitter_types::FromNode>::from_node(node, src)
9221                })?,
9222            ))),
9223            "tuple_pattern" => Ok(Self::TuplePattern(::std::boxed::Box::new(
9224                ::treesitter_types::runtime::maybe_grow_stack(|| {
9225                    <TuplePattern as ::treesitter_types::FromNode>::from_node(node, src)
9226                })?,
9227            ))),
9228            "union_pattern" => Ok(Self::UnionPattern(::std::boxed::Box::new(
9229                ::treesitter_types::runtime::maybe_grow_stack(|| {
9230                    <UnionPattern as ::treesitter_types::FromNode>::from_node(node, src)
9231                })?,
9232            ))),
9233            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
9234        }
9235    }
9236}
9237impl ::treesitter_types::Spanned for KeywordPatternChildren<'_> {
9238    fn span(&self) -> ::treesitter_types::Span {
9239        match self {
9240            Self::ClassPattern(inner) => inner.span(),
9241            Self::ComplexPattern(inner) => inner.span(),
9242            Self::ConcatenatedString(inner) => inner.span(),
9243            Self::DictPattern(inner) => inner.span(),
9244            Self::DottedName(inner) => inner.span(),
9245            Self::False(inner) => inner.span(),
9246            Self::Float(inner) => inner.span(),
9247            Self::Identifier(inner) => inner.span(),
9248            Self::Integer(inner) => inner.span(),
9249            Self::ListPattern(inner) => inner.span(),
9250            Self::None(inner) => inner.span(),
9251            Self::SplatPattern(inner) => inner.span(),
9252            Self::String(inner) => inner.span(),
9253            Self::True(inner) => inner.span(),
9254            Self::TuplePattern(inner) => inner.span(),
9255            Self::UnionPattern(inner) => inner.span(),
9256        }
9257    }
9258}
9259#[derive(Debug, Clone, PartialEq, Eq)]
9260pub enum ListChildren<'tree> {
9261    Expression(::std::boxed::Box<Expression<'tree>>),
9262    ListSplat(::std::boxed::Box<ListSplat<'tree>>),
9263    ParenthesizedListSplat(::std::boxed::Box<ParenthesizedListSplat<'tree>>),
9264    Yield(::std::boxed::Box<Yield<'tree>>),
9265}
9266impl<'tree> ::treesitter_types::FromNode<'tree> for ListChildren<'tree> {
9267    #[allow(clippy::collapsible_else_if)]
9268    fn from_node(
9269        node: ::treesitter_types::tree_sitter::Node<'tree>,
9270        src: &'tree [u8],
9271    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
9272        match node.kind() {
9273            "list_splat" => Ok(Self::ListSplat(::std::boxed::Box::new(
9274                ::treesitter_types::runtime::maybe_grow_stack(|| {
9275                    <ListSplat as ::treesitter_types::FromNode>::from_node(node, src)
9276                })?,
9277            ))),
9278            "parenthesized_list_splat" => Ok(Self::ParenthesizedListSplat(::std::boxed::Box::new(
9279                ::treesitter_types::runtime::maybe_grow_stack(|| {
9280                    <ParenthesizedListSplat as ::treesitter_types::FromNode>::from_node(node, src)
9281                })?,
9282            ))),
9283            "yield" => Ok(Self::Yield(::std::boxed::Box::new(
9284                ::treesitter_types::runtime::maybe_grow_stack(|| {
9285                    <Yield as ::treesitter_types::FromNode>::from_node(node, src)
9286                })?,
9287            ))),
9288            _other => {
9289                if let Ok(v) = ::treesitter_types::runtime::maybe_grow_stack(|| {
9290                    <Expression as ::treesitter_types::FromNode>::from_node(node, src)
9291                }) {
9292                    Ok(Self::Expression(::std::boxed::Box::new(v)))
9293                } else {
9294                    Err(::treesitter_types::ParseError::unexpected_kind(
9295                        _other, node,
9296                    ))
9297                }
9298            }
9299        }
9300    }
9301}
9302impl ::treesitter_types::Spanned for ListChildren<'_> {
9303    fn span(&self) -> ::treesitter_types::Span {
9304        match self {
9305            Self::Expression(inner) => inner.span(),
9306            Self::ListSplat(inner) => inner.span(),
9307            Self::ParenthesizedListSplat(inner) => inner.span(),
9308            Self::Yield(inner) => inner.span(),
9309        }
9310    }
9311}
9312#[derive(Debug, Clone, PartialEq, Eq)]
9313pub enum ListComprehensionChildren<'tree> {
9314    ForInClause(::std::boxed::Box<ForInClause<'tree>>),
9315    IfClause(::std::boxed::Box<IfClause<'tree>>),
9316}
9317impl<'tree> ::treesitter_types::FromNode<'tree> for ListComprehensionChildren<'tree> {
9318    #[allow(clippy::collapsible_else_if)]
9319    fn from_node(
9320        node: ::treesitter_types::tree_sitter::Node<'tree>,
9321        src: &'tree [u8],
9322    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
9323        match node.kind() {
9324            "for_in_clause" => Ok(Self::ForInClause(::std::boxed::Box::new(
9325                ::treesitter_types::runtime::maybe_grow_stack(|| {
9326                    <ForInClause as ::treesitter_types::FromNode>::from_node(node, src)
9327                })?,
9328            ))),
9329            "if_clause" => Ok(Self::IfClause(::std::boxed::Box::new(
9330                ::treesitter_types::runtime::maybe_grow_stack(|| {
9331                    <IfClause as ::treesitter_types::FromNode>::from_node(node, src)
9332                })?,
9333            ))),
9334            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
9335        }
9336    }
9337}
9338impl ::treesitter_types::Spanned for ListComprehensionChildren<'_> {
9339    fn span(&self) -> ::treesitter_types::Span {
9340        match self {
9341            Self::ForInClause(inner) => inner.span(),
9342            Self::IfClause(inner) => inner.span(),
9343        }
9344    }
9345}
9346#[derive(Debug, Clone, PartialEq, Eq)]
9347pub enum ListPatternChildren<'tree> {
9348    CasePattern(::std::boxed::Box<CasePattern<'tree>>),
9349    Pattern(::std::boxed::Box<Pattern<'tree>>),
9350}
9351impl<'tree> ::treesitter_types::FromNode<'tree> for ListPatternChildren<'tree> {
9352    #[allow(clippy::collapsible_else_if)]
9353    fn from_node(
9354        node: ::treesitter_types::tree_sitter::Node<'tree>,
9355        src: &'tree [u8],
9356    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
9357        match node.kind() {
9358            "case_pattern" => Ok(Self::CasePattern(::std::boxed::Box::new(
9359                ::treesitter_types::runtime::maybe_grow_stack(|| {
9360                    <CasePattern as ::treesitter_types::FromNode>::from_node(node, src)
9361                })?,
9362            ))),
9363            _other => {
9364                if let Ok(v) = ::treesitter_types::runtime::maybe_grow_stack(|| {
9365                    <Pattern as ::treesitter_types::FromNode>::from_node(node, src)
9366                }) {
9367                    Ok(Self::Pattern(::std::boxed::Box::new(v)))
9368                } else {
9369                    Err(::treesitter_types::ParseError::unexpected_kind(
9370                        _other, node,
9371                    ))
9372                }
9373            }
9374        }
9375    }
9376}
9377impl ::treesitter_types::Spanned for ListPatternChildren<'_> {
9378    fn span(&self) -> ::treesitter_types::Span {
9379        match self {
9380            Self::CasePattern(inner) => inner.span(),
9381            Self::Pattern(inner) => inner.span(),
9382        }
9383    }
9384}
9385#[derive(Debug, Clone, PartialEq, Eq)]
9386pub enum ListSplatChildren<'tree> {
9387    Attribute(::std::boxed::Box<Attribute<'tree>>),
9388    Expression(::std::boxed::Box<Expression<'tree>>),
9389    Identifier(::std::boxed::Box<Identifier<'tree>>),
9390    Subscript(::std::boxed::Box<Subscript<'tree>>),
9391}
9392impl<'tree> ::treesitter_types::FromNode<'tree> for ListSplatChildren<'tree> {
9393    #[allow(clippy::collapsible_else_if)]
9394    fn from_node(
9395        node: ::treesitter_types::tree_sitter::Node<'tree>,
9396        src: &'tree [u8],
9397    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
9398        match node.kind() {
9399            "attribute" => Ok(Self::Attribute(::std::boxed::Box::new(
9400                ::treesitter_types::runtime::maybe_grow_stack(|| {
9401                    <Attribute as ::treesitter_types::FromNode>::from_node(node, src)
9402                })?,
9403            ))),
9404            "identifier" => Ok(Self::Identifier(::std::boxed::Box::new(
9405                ::treesitter_types::runtime::maybe_grow_stack(|| {
9406                    <Identifier as ::treesitter_types::FromNode>::from_node(node, src)
9407                })?,
9408            ))),
9409            "subscript" => Ok(Self::Subscript(::std::boxed::Box::new(
9410                ::treesitter_types::runtime::maybe_grow_stack(|| {
9411                    <Subscript as ::treesitter_types::FromNode>::from_node(node, src)
9412                })?,
9413            ))),
9414            _other => {
9415                if let Ok(v) = ::treesitter_types::runtime::maybe_grow_stack(|| {
9416                    <Expression as ::treesitter_types::FromNode>::from_node(node, src)
9417                }) {
9418                    Ok(Self::Expression(::std::boxed::Box::new(v)))
9419                } else {
9420                    Err(::treesitter_types::ParseError::unexpected_kind(
9421                        _other, node,
9422                    ))
9423                }
9424            }
9425        }
9426    }
9427}
9428impl ::treesitter_types::Spanned for ListSplatChildren<'_> {
9429    fn span(&self) -> ::treesitter_types::Span {
9430        match self {
9431            Self::Attribute(inner) => inner.span(),
9432            Self::Expression(inner) => inner.span(),
9433            Self::Identifier(inner) => inner.span(),
9434            Self::Subscript(inner) => inner.span(),
9435        }
9436    }
9437}
9438#[derive(Debug, Clone, PartialEq, Eq)]
9439pub enum ListSplatPatternChildren<'tree> {
9440    Attribute(::std::boxed::Box<Attribute<'tree>>),
9441    Identifier(::std::boxed::Box<Identifier<'tree>>),
9442    Subscript(::std::boxed::Box<Subscript<'tree>>),
9443}
9444impl<'tree> ::treesitter_types::FromNode<'tree> for ListSplatPatternChildren<'tree> {
9445    #[allow(clippy::collapsible_else_if)]
9446    fn from_node(
9447        node: ::treesitter_types::tree_sitter::Node<'tree>,
9448        src: &'tree [u8],
9449    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
9450        match node.kind() {
9451            "attribute" => Ok(Self::Attribute(::std::boxed::Box::new(
9452                ::treesitter_types::runtime::maybe_grow_stack(|| {
9453                    <Attribute as ::treesitter_types::FromNode>::from_node(node, src)
9454                })?,
9455            ))),
9456            "identifier" => Ok(Self::Identifier(::std::boxed::Box::new(
9457                ::treesitter_types::runtime::maybe_grow_stack(|| {
9458                    <Identifier as ::treesitter_types::FromNode>::from_node(node, src)
9459                })?,
9460            ))),
9461            "subscript" => Ok(Self::Subscript(::std::boxed::Box::new(
9462                ::treesitter_types::runtime::maybe_grow_stack(|| {
9463                    <Subscript as ::treesitter_types::FromNode>::from_node(node, src)
9464                })?,
9465            ))),
9466            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
9467        }
9468    }
9469}
9470impl ::treesitter_types::Spanned for ListSplatPatternChildren<'_> {
9471    fn span(&self) -> ::treesitter_types::Span {
9472        match self {
9473            Self::Attribute(inner) => inner.span(),
9474            Self::Identifier(inner) => inner.span(),
9475            Self::Subscript(inner) => inner.span(),
9476        }
9477    }
9478}
9479#[derive(Debug, Clone, PartialEq, Eq)]
9480pub enum MemberTypeChildren<'tree> {
9481    Identifier(::std::boxed::Box<Identifier<'tree>>),
9482    Type(::std::boxed::Box<Type<'tree>>),
9483}
9484impl<'tree> ::treesitter_types::FromNode<'tree> for MemberTypeChildren<'tree> {
9485    #[allow(clippy::collapsible_else_if)]
9486    fn from_node(
9487        node: ::treesitter_types::tree_sitter::Node<'tree>,
9488        src: &'tree [u8],
9489    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
9490        match node.kind() {
9491            "identifier" => Ok(Self::Identifier(::std::boxed::Box::new(
9492                ::treesitter_types::runtime::maybe_grow_stack(|| {
9493                    <Identifier as ::treesitter_types::FromNode>::from_node(node, src)
9494                })?,
9495            ))),
9496            "type" => Ok(Self::Type(::std::boxed::Box::new(
9497                ::treesitter_types::runtime::maybe_grow_stack(|| {
9498                    <Type as ::treesitter_types::FromNode>::from_node(node, src)
9499                })?,
9500            ))),
9501            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
9502        }
9503    }
9504}
9505impl ::treesitter_types::Spanned for MemberTypeChildren<'_> {
9506    fn span(&self) -> ::treesitter_types::Span {
9507        match self {
9508            Self::Identifier(inner) => inner.span(),
9509            Self::Type(inner) => inner.span(),
9510        }
9511    }
9512}
9513#[derive(Debug, Clone, PartialEq, Eq)]
9514pub enum ModuleChildren<'tree> {
9515    CompoundStatement(::std::boxed::Box<CompoundStatement<'tree>>),
9516    SimpleStatement(::std::boxed::Box<SimpleStatement<'tree>>),
9517}
9518impl<'tree> ::treesitter_types::FromNode<'tree> for ModuleChildren<'tree> {
9519    #[allow(clippy::collapsible_else_if)]
9520    fn from_node(
9521        node: ::treesitter_types::tree_sitter::Node<'tree>,
9522        src: &'tree [u8],
9523    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
9524        if let Ok(v) = ::treesitter_types::runtime::maybe_grow_stack(|| {
9525            <CompoundStatement as ::treesitter_types::FromNode>::from_node(node, src)
9526        }) {
9527            Ok(Self::CompoundStatement(::std::boxed::Box::new(v)))
9528        } else {
9529            if let Ok(v) = ::treesitter_types::runtime::maybe_grow_stack(|| {
9530                <SimpleStatement as ::treesitter_types::FromNode>::from_node(node, src)
9531            }) {
9532                Ok(Self::SimpleStatement(::std::boxed::Box::new(v)))
9533            } else {
9534                Err(::treesitter_types::ParseError::unexpected_kind(
9535                    node.kind(),
9536                    node,
9537                ))
9538            }
9539        }
9540    }
9541}
9542impl ::treesitter_types::Spanned for ModuleChildren<'_> {
9543    fn span(&self) -> ::treesitter_types::Span {
9544        match self {
9545            Self::CompoundStatement(inner) => inner.span(),
9546            Self::SimpleStatement(inner) => inner.span(),
9547        }
9548    }
9549}
9550#[derive(Debug, Clone, PartialEq, Eq)]
9551pub enum ParenthesizedExpressionChildren<'tree> {
9552    Expression(::std::boxed::Box<Expression<'tree>>),
9553    ListSplat(::std::boxed::Box<ListSplat<'tree>>),
9554    ParenthesizedExpression(::std::boxed::Box<ParenthesizedExpression<'tree>>),
9555    Yield(::std::boxed::Box<Yield<'tree>>),
9556}
9557impl<'tree> ::treesitter_types::FromNode<'tree> for ParenthesizedExpressionChildren<'tree> {
9558    #[allow(clippy::collapsible_else_if)]
9559    fn from_node(
9560        node: ::treesitter_types::tree_sitter::Node<'tree>,
9561        src: &'tree [u8],
9562    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
9563        match node.kind() {
9564            "list_splat" => Ok(Self::ListSplat(::std::boxed::Box::new(
9565                ::treesitter_types::runtime::maybe_grow_stack(|| {
9566                    <ListSplat as ::treesitter_types::FromNode>::from_node(node, src)
9567                })?,
9568            ))),
9569            "parenthesized_expression" => Ok(Self::ParenthesizedExpression(
9570                ::std::boxed::Box::new(::treesitter_types::runtime::maybe_grow_stack(|| {
9571                    <ParenthesizedExpression as ::treesitter_types::FromNode>::from_node(node, src)
9572                })?),
9573            )),
9574            "yield" => Ok(Self::Yield(::std::boxed::Box::new(
9575                ::treesitter_types::runtime::maybe_grow_stack(|| {
9576                    <Yield as ::treesitter_types::FromNode>::from_node(node, src)
9577                })?,
9578            ))),
9579            _other => {
9580                if let Ok(v) = ::treesitter_types::runtime::maybe_grow_stack(|| {
9581                    <Expression as ::treesitter_types::FromNode>::from_node(node, src)
9582                }) {
9583                    Ok(Self::Expression(::std::boxed::Box::new(v)))
9584                } else {
9585                    Err(::treesitter_types::ParseError::unexpected_kind(
9586                        _other, node,
9587                    ))
9588                }
9589            }
9590        }
9591    }
9592}
9593impl ::treesitter_types::Spanned for ParenthesizedExpressionChildren<'_> {
9594    fn span(&self) -> ::treesitter_types::Span {
9595        match self {
9596            Self::Expression(inner) => inner.span(),
9597            Self::ListSplat(inner) => inner.span(),
9598            Self::ParenthesizedExpression(inner) => inner.span(),
9599            Self::Yield(inner) => inner.span(),
9600        }
9601    }
9602}
9603#[derive(Debug, Clone, PartialEq, Eq)]
9604pub enum ParenthesizedListSplatChildren<'tree> {
9605    ListSplat(::std::boxed::Box<ListSplat<'tree>>),
9606    ParenthesizedExpression(::std::boxed::Box<ParenthesizedExpression<'tree>>),
9607}
9608impl<'tree> ::treesitter_types::FromNode<'tree> for ParenthesizedListSplatChildren<'tree> {
9609    #[allow(clippy::collapsible_else_if)]
9610    fn from_node(
9611        node: ::treesitter_types::tree_sitter::Node<'tree>,
9612        src: &'tree [u8],
9613    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
9614        match node.kind() {
9615            "list_splat" => Ok(Self::ListSplat(::std::boxed::Box::new(
9616                ::treesitter_types::runtime::maybe_grow_stack(|| {
9617                    <ListSplat as ::treesitter_types::FromNode>::from_node(node, src)
9618                })?,
9619            ))),
9620            "parenthesized_expression" => Ok(Self::ParenthesizedExpression(
9621                ::std::boxed::Box::new(::treesitter_types::runtime::maybe_grow_stack(|| {
9622                    <ParenthesizedExpression as ::treesitter_types::FromNode>::from_node(node, src)
9623                })?),
9624            )),
9625            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
9626        }
9627    }
9628}
9629impl ::treesitter_types::Spanned for ParenthesizedListSplatChildren<'_> {
9630    fn span(&self) -> ::treesitter_types::Span {
9631        match self {
9632            Self::ListSplat(inner) => inner.span(),
9633            Self::ParenthesizedExpression(inner) => inner.span(),
9634        }
9635    }
9636}
9637#[derive(Debug, Clone, PartialEq, Eq)]
9638pub enum RaiseStatementChildren<'tree> {
9639    Expression(::std::boxed::Box<Expression<'tree>>),
9640    ExpressionList(::std::boxed::Box<ExpressionList<'tree>>),
9641}
9642impl<'tree> ::treesitter_types::FromNode<'tree> for RaiseStatementChildren<'tree> {
9643    #[allow(clippy::collapsible_else_if)]
9644    fn from_node(
9645        node: ::treesitter_types::tree_sitter::Node<'tree>,
9646        src: &'tree [u8],
9647    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
9648        match node.kind() {
9649            "expression_list" => Ok(Self::ExpressionList(::std::boxed::Box::new(
9650                ::treesitter_types::runtime::maybe_grow_stack(|| {
9651                    <ExpressionList as ::treesitter_types::FromNode>::from_node(node, src)
9652                })?,
9653            ))),
9654            _other => {
9655                if let Ok(v) = ::treesitter_types::runtime::maybe_grow_stack(|| {
9656                    <Expression as ::treesitter_types::FromNode>::from_node(node, src)
9657                }) {
9658                    Ok(Self::Expression(::std::boxed::Box::new(v)))
9659                } else {
9660                    Err(::treesitter_types::ParseError::unexpected_kind(
9661                        _other, node,
9662                    ))
9663                }
9664            }
9665        }
9666    }
9667}
9668impl ::treesitter_types::Spanned for RaiseStatementChildren<'_> {
9669    fn span(&self) -> ::treesitter_types::Span {
9670        match self {
9671            Self::Expression(inner) => inner.span(),
9672            Self::ExpressionList(inner) => inner.span(),
9673        }
9674    }
9675}
9676#[derive(Debug, Clone, PartialEq, Eq)]
9677pub enum RelativeImportChildren<'tree> {
9678    DottedName(::std::boxed::Box<DottedName<'tree>>),
9679    ImportPrefix(::std::boxed::Box<ImportPrefix<'tree>>),
9680}
9681impl<'tree> ::treesitter_types::FromNode<'tree> for RelativeImportChildren<'tree> {
9682    #[allow(clippy::collapsible_else_if)]
9683    fn from_node(
9684        node: ::treesitter_types::tree_sitter::Node<'tree>,
9685        src: &'tree [u8],
9686    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
9687        match node.kind() {
9688            "dotted_name" => Ok(Self::DottedName(::std::boxed::Box::new(
9689                ::treesitter_types::runtime::maybe_grow_stack(|| {
9690                    <DottedName as ::treesitter_types::FromNode>::from_node(node, src)
9691                })?,
9692            ))),
9693            "import_prefix" => Ok(Self::ImportPrefix(::std::boxed::Box::new(
9694                ::treesitter_types::runtime::maybe_grow_stack(|| {
9695                    <ImportPrefix as ::treesitter_types::FromNode>::from_node(node, src)
9696                })?,
9697            ))),
9698            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
9699        }
9700    }
9701}
9702impl ::treesitter_types::Spanned for RelativeImportChildren<'_> {
9703    fn span(&self) -> ::treesitter_types::Span {
9704        match self {
9705            Self::DottedName(inner) => inner.span(),
9706            Self::ImportPrefix(inner) => inner.span(),
9707        }
9708    }
9709}
9710#[derive(Debug, Clone, PartialEq, Eq)]
9711pub enum ReturnStatementChildren<'tree> {
9712    Expression(::std::boxed::Box<Expression<'tree>>),
9713    ExpressionList(::std::boxed::Box<ExpressionList<'tree>>),
9714}
9715impl<'tree> ::treesitter_types::FromNode<'tree> for ReturnStatementChildren<'tree> {
9716    #[allow(clippy::collapsible_else_if)]
9717    fn from_node(
9718        node: ::treesitter_types::tree_sitter::Node<'tree>,
9719        src: &'tree [u8],
9720    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
9721        match node.kind() {
9722            "expression_list" => Ok(Self::ExpressionList(::std::boxed::Box::new(
9723                ::treesitter_types::runtime::maybe_grow_stack(|| {
9724                    <ExpressionList as ::treesitter_types::FromNode>::from_node(node, src)
9725                })?,
9726            ))),
9727            _other => {
9728                if let Ok(v) = ::treesitter_types::runtime::maybe_grow_stack(|| {
9729                    <Expression as ::treesitter_types::FromNode>::from_node(node, src)
9730                }) {
9731                    Ok(Self::Expression(::std::boxed::Box::new(v)))
9732                } else {
9733                    Err(::treesitter_types::ParseError::unexpected_kind(
9734                        _other, node,
9735                    ))
9736                }
9737            }
9738        }
9739    }
9740}
9741impl ::treesitter_types::Spanned for ReturnStatementChildren<'_> {
9742    fn span(&self) -> ::treesitter_types::Span {
9743        match self {
9744            Self::Expression(inner) => inner.span(),
9745            Self::ExpressionList(inner) => inner.span(),
9746        }
9747    }
9748}
9749#[derive(Debug, Clone, PartialEq, Eq)]
9750pub enum SetChildren<'tree> {
9751    Expression(::std::boxed::Box<Expression<'tree>>),
9752    ListSplat(::std::boxed::Box<ListSplat<'tree>>),
9753    ParenthesizedListSplat(::std::boxed::Box<ParenthesizedListSplat<'tree>>),
9754    Yield(::std::boxed::Box<Yield<'tree>>),
9755}
9756impl<'tree> ::treesitter_types::FromNode<'tree> for SetChildren<'tree> {
9757    #[allow(clippy::collapsible_else_if)]
9758    fn from_node(
9759        node: ::treesitter_types::tree_sitter::Node<'tree>,
9760        src: &'tree [u8],
9761    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
9762        match node.kind() {
9763            "list_splat" => Ok(Self::ListSplat(::std::boxed::Box::new(
9764                ::treesitter_types::runtime::maybe_grow_stack(|| {
9765                    <ListSplat as ::treesitter_types::FromNode>::from_node(node, src)
9766                })?,
9767            ))),
9768            "parenthesized_list_splat" => Ok(Self::ParenthesizedListSplat(::std::boxed::Box::new(
9769                ::treesitter_types::runtime::maybe_grow_stack(|| {
9770                    <ParenthesizedListSplat as ::treesitter_types::FromNode>::from_node(node, src)
9771                })?,
9772            ))),
9773            "yield" => Ok(Self::Yield(::std::boxed::Box::new(
9774                ::treesitter_types::runtime::maybe_grow_stack(|| {
9775                    <Yield as ::treesitter_types::FromNode>::from_node(node, src)
9776                })?,
9777            ))),
9778            _other => {
9779                if let Ok(v) = ::treesitter_types::runtime::maybe_grow_stack(|| {
9780                    <Expression as ::treesitter_types::FromNode>::from_node(node, src)
9781                }) {
9782                    Ok(Self::Expression(::std::boxed::Box::new(v)))
9783                } else {
9784                    Err(::treesitter_types::ParseError::unexpected_kind(
9785                        _other, node,
9786                    ))
9787                }
9788            }
9789        }
9790    }
9791}
9792impl ::treesitter_types::Spanned for SetChildren<'_> {
9793    fn span(&self) -> ::treesitter_types::Span {
9794        match self {
9795            Self::Expression(inner) => inner.span(),
9796            Self::ListSplat(inner) => inner.span(),
9797            Self::ParenthesizedListSplat(inner) => inner.span(),
9798            Self::Yield(inner) => inner.span(),
9799        }
9800    }
9801}
9802#[derive(Debug, Clone, PartialEq, Eq)]
9803pub enum SetComprehensionChildren<'tree> {
9804    ForInClause(::std::boxed::Box<ForInClause<'tree>>),
9805    IfClause(::std::boxed::Box<IfClause<'tree>>),
9806}
9807impl<'tree> ::treesitter_types::FromNode<'tree> for SetComprehensionChildren<'tree> {
9808    #[allow(clippy::collapsible_else_if)]
9809    fn from_node(
9810        node: ::treesitter_types::tree_sitter::Node<'tree>,
9811        src: &'tree [u8],
9812    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
9813        match node.kind() {
9814            "for_in_clause" => Ok(Self::ForInClause(::std::boxed::Box::new(
9815                ::treesitter_types::runtime::maybe_grow_stack(|| {
9816                    <ForInClause as ::treesitter_types::FromNode>::from_node(node, src)
9817                })?,
9818            ))),
9819            "if_clause" => Ok(Self::IfClause(::std::boxed::Box::new(
9820                ::treesitter_types::runtime::maybe_grow_stack(|| {
9821                    <IfClause as ::treesitter_types::FromNode>::from_node(node, src)
9822                })?,
9823            ))),
9824            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
9825        }
9826    }
9827}
9828impl ::treesitter_types::Spanned for SetComprehensionChildren<'_> {
9829    fn span(&self) -> ::treesitter_types::Span {
9830        match self {
9831            Self::ForInClause(inner) => inner.span(),
9832            Self::IfClause(inner) => inner.span(),
9833        }
9834    }
9835}
9836#[derive(Debug, Clone, PartialEq, Eq)]
9837pub enum StringChildren<'tree> {
9838    Interpolation(::std::boxed::Box<Interpolation<'tree>>),
9839    StringContent(::std::boxed::Box<StringContent<'tree>>),
9840    StringEnd(::std::boxed::Box<StringEnd<'tree>>),
9841    StringStart(::std::boxed::Box<StringStart<'tree>>),
9842}
9843impl<'tree> ::treesitter_types::FromNode<'tree> for StringChildren<'tree> {
9844    #[allow(clippy::collapsible_else_if)]
9845    fn from_node(
9846        node: ::treesitter_types::tree_sitter::Node<'tree>,
9847        src: &'tree [u8],
9848    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
9849        match node.kind() {
9850            "interpolation" => Ok(Self::Interpolation(::std::boxed::Box::new(
9851                ::treesitter_types::runtime::maybe_grow_stack(|| {
9852                    <Interpolation as ::treesitter_types::FromNode>::from_node(node, src)
9853                })?,
9854            ))),
9855            "string_content" => Ok(Self::StringContent(::std::boxed::Box::new(
9856                ::treesitter_types::runtime::maybe_grow_stack(|| {
9857                    <StringContent as ::treesitter_types::FromNode>::from_node(node, src)
9858                })?,
9859            ))),
9860            "string_end" => Ok(Self::StringEnd(::std::boxed::Box::new(
9861                ::treesitter_types::runtime::maybe_grow_stack(|| {
9862                    <StringEnd as ::treesitter_types::FromNode>::from_node(node, src)
9863                })?,
9864            ))),
9865            "string_start" => Ok(Self::StringStart(::std::boxed::Box::new(
9866                ::treesitter_types::runtime::maybe_grow_stack(|| {
9867                    <StringStart as ::treesitter_types::FromNode>::from_node(node, src)
9868                })?,
9869            ))),
9870            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
9871        }
9872    }
9873}
9874impl ::treesitter_types::Spanned for StringChildren<'_> {
9875    fn span(&self) -> ::treesitter_types::Span {
9876        match self {
9877            Self::Interpolation(inner) => inner.span(),
9878            Self::StringContent(inner) => inner.span(),
9879            Self::StringEnd(inner) => inner.span(),
9880            Self::StringStart(inner) => inner.span(),
9881        }
9882    }
9883}
9884#[derive(Debug, Clone, PartialEq, Eq)]
9885pub enum StringContentChildren<'tree> {
9886    EscapeInterpolation(::std::boxed::Box<EscapeInterpolation<'tree>>),
9887    EscapeSequence(::std::boxed::Box<EscapeSequence<'tree>>),
9888}
9889impl<'tree> ::treesitter_types::FromNode<'tree> for StringContentChildren<'tree> {
9890    #[allow(clippy::collapsible_else_if)]
9891    fn from_node(
9892        node: ::treesitter_types::tree_sitter::Node<'tree>,
9893        src: &'tree [u8],
9894    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
9895        match node.kind() {
9896            "escape_interpolation" => Ok(Self::EscapeInterpolation(::std::boxed::Box::new(
9897                ::treesitter_types::runtime::maybe_grow_stack(|| {
9898                    <EscapeInterpolation as ::treesitter_types::FromNode>::from_node(node, src)
9899                })?,
9900            ))),
9901            "escape_sequence" => Ok(Self::EscapeSequence(::std::boxed::Box::new(
9902                ::treesitter_types::runtime::maybe_grow_stack(|| {
9903                    <EscapeSequence as ::treesitter_types::FromNode>::from_node(node, src)
9904                })?,
9905            ))),
9906            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
9907        }
9908    }
9909}
9910impl ::treesitter_types::Spanned for StringContentChildren<'_> {
9911    fn span(&self) -> ::treesitter_types::Span {
9912        match self {
9913            Self::EscapeInterpolation(inner) => inner.span(),
9914            Self::EscapeSequence(inner) => inner.span(),
9915        }
9916    }
9917}
9918#[derive(Debug, Clone, PartialEq, Eq)]
9919pub enum SubscriptSubscript<'tree> {
9920    Expression(::std::boxed::Box<Expression<'tree>>),
9921    Slice(::std::boxed::Box<Slice<'tree>>),
9922}
9923impl<'tree> ::treesitter_types::FromNode<'tree> for SubscriptSubscript<'tree> {
9924    #[allow(clippy::collapsible_else_if)]
9925    fn from_node(
9926        node: ::treesitter_types::tree_sitter::Node<'tree>,
9927        src: &'tree [u8],
9928    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
9929        match node.kind() {
9930            "slice" => Ok(Self::Slice(::std::boxed::Box::new(
9931                ::treesitter_types::runtime::maybe_grow_stack(|| {
9932                    <Slice as ::treesitter_types::FromNode>::from_node(node, src)
9933                })?,
9934            ))),
9935            _other => {
9936                if let Ok(v) = ::treesitter_types::runtime::maybe_grow_stack(|| {
9937                    <Expression as ::treesitter_types::FromNode>::from_node(node, src)
9938                }) {
9939                    Ok(Self::Expression(::std::boxed::Box::new(v)))
9940                } else {
9941                    Err(::treesitter_types::ParseError::unexpected_kind(
9942                        _other, node,
9943                    ))
9944                }
9945            }
9946        }
9947    }
9948}
9949impl ::treesitter_types::Spanned for SubscriptSubscript<'_> {
9950    fn span(&self) -> ::treesitter_types::Span {
9951        match self {
9952            Self::Expression(inner) => inner.span(),
9953            Self::Slice(inner) => inner.span(),
9954        }
9955    }
9956}
9957#[derive(Debug, Clone, PartialEq, Eq)]
9958pub enum TryStatementChildren<'tree> {
9959    ElseClause(::std::boxed::Box<ElseClause<'tree>>),
9960    ExceptClause(::std::boxed::Box<ExceptClause<'tree>>),
9961    FinallyClause(::std::boxed::Box<FinallyClause<'tree>>),
9962}
9963impl<'tree> ::treesitter_types::FromNode<'tree> for TryStatementChildren<'tree> {
9964    #[allow(clippy::collapsible_else_if)]
9965    fn from_node(
9966        node: ::treesitter_types::tree_sitter::Node<'tree>,
9967        src: &'tree [u8],
9968    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
9969        match node.kind() {
9970            "else_clause" => Ok(Self::ElseClause(::std::boxed::Box::new(
9971                ::treesitter_types::runtime::maybe_grow_stack(|| {
9972                    <ElseClause as ::treesitter_types::FromNode>::from_node(node, src)
9973                })?,
9974            ))),
9975            "except_clause" => Ok(Self::ExceptClause(::std::boxed::Box::new(
9976                ::treesitter_types::runtime::maybe_grow_stack(|| {
9977                    <ExceptClause as ::treesitter_types::FromNode>::from_node(node, src)
9978                })?,
9979            ))),
9980            "finally_clause" => Ok(Self::FinallyClause(::std::boxed::Box::new(
9981                ::treesitter_types::runtime::maybe_grow_stack(|| {
9982                    <FinallyClause as ::treesitter_types::FromNode>::from_node(node, src)
9983                })?,
9984            ))),
9985            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
9986        }
9987    }
9988}
9989impl ::treesitter_types::Spanned for TryStatementChildren<'_> {
9990    fn span(&self) -> ::treesitter_types::Span {
9991        match self {
9992            Self::ElseClause(inner) => inner.span(),
9993            Self::ExceptClause(inner) => inner.span(),
9994            Self::FinallyClause(inner) => inner.span(),
9995        }
9996    }
9997}
9998#[derive(Debug, Clone, PartialEq, Eq)]
9999pub enum TupleChildren<'tree> {
10000    Expression(::std::boxed::Box<Expression<'tree>>),
10001    ListSplat(::std::boxed::Box<ListSplat<'tree>>),
10002    ParenthesizedListSplat(::std::boxed::Box<ParenthesizedListSplat<'tree>>),
10003    Yield(::std::boxed::Box<Yield<'tree>>),
10004}
10005impl<'tree> ::treesitter_types::FromNode<'tree> for TupleChildren<'tree> {
10006    #[allow(clippy::collapsible_else_if)]
10007    fn from_node(
10008        node: ::treesitter_types::tree_sitter::Node<'tree>,
10009        src: &'tree [u8],
10010    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
10011        match node.kind() {
10012            "list_splat" => Ok(Self::ListSplat(::std::boxed::Box::new(
10013                ::treesitter_types::runtime::maybe_grow_stack(|| {
10014                    <ListSplat as ::treesitter_types::FromNode>::from_node(node, src)
10015                })?,
10016            ))),
10017            "parenthesized_list_splat" => Ok(Self::ParenthesizedListSplat(::std::boxed::Box::new(
10018                ::treesitter_types::runtime::maybe_grow_stack(|| {
10019                    <ParenthesizedListSplat as ::treesitter_types::FromNode>::from_node(node, src)
10020                })?,
10021            ))),
10022            "yield" => Ok(Self::Yield(::std::boxed::Box::new(
10023                ::treesitter_types::runtime::maybe_grow_stack(|| {
10024                    <Yield as ::treesitter_types::FromNode>::from_node(node, src)
10025                })?,
10026            ))),
10027            _other => {
10028                if let Ok(v) = ::treesitter_types::runtime::maybe_grow_stack(|| {
10029                    <Expression as ::treesitter_types::FromNode>::from_node(node, src)
10030                }) {
10031                    Ok(Self::Expression(::std::boxed::Box::new(v)))
10032                } else {
10033                    Err(::treesitter_types::ParseError::unexpected_kind(
10034                        _other, node,
10035                    ))
10036                }
10037            }
10038        }
10039    }
10040}
10041impl ::treesitter_types::Spanned for TupleChildren<'_> {
10042    fn span(&self) -> ::treesitter_types::Span {
10043        match self {
10044            Self::Expression(inner) => inner.span(),
10045            Self::ListSplat(inner) => inner.span(),
10046            Self::ParenthesizedListSplat(inner) => inner.span(),
10047            Self::Yield(inner) => inner.span(),
10048        }
10049    }
10050}
10051#[derive(Debug, Clone, PartialEq, Eq)]
10052pub enum TuplePatternChildren<'tree> {
10053    CasePattern(::std::boxed::Box<CasePattern<'tree>>),
10054    Pattern(::std::boxed::Box<Pattern<'tree>>),
10055}
10056impl<'tree> ::treesitter_types::FromNode<'tree> for TuplePatternChildren<'tree> {
10057    #[allow(clippy::collapsible_else_if)]
10058    fn from_node(
10059        node: ::treesitter_types::tree_sitter::Node<'tree>,
10060        src: &'tree [u8],
10061    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
10062        match node.kind() {
10063            "case_pattern" => Ok(Self::CasePattern(::std::boxed::Box::new(
10064                ::treesitter_types::runtime::maybe_grow_stack(|| {
10065                    <CasePattern as ::treesitter_types::FromNode>::from_node(node, src)
10066                })?,
10067            ))),
10068            _other => {
10069                if let Ok(v) = ::treesitter_types::runtime::maybe_grow_stack(|| {
10070                    <Pattern as ::treesitter_types::FromNode>::from_node(node, src)
10071                }) {
10072                    Ok(Self::Pattern(::std::boxed::Box::new(v)))
10073                } else {
10074                    Err(::treesitter_types::ParseError::unexpected_kind(
10075                        _other, node,
10076                    ))
10077                }
10078            }
10079        }
10080    }
10081}
10082impl ::treesitter_types::Spanned for TuplePatternChildren<'_> {
10083    fn span(&self) -> ::treesitter_types::Span {
10084        match self {
10085            Self::CasePattern(inner) => inner.span(),
10086            Self::Pattern(inner) => inner.span(),
10087        }
10088    }
10089}
10090#[derive(Debug, Clone, PartialEq, Eq)]
10091pub enum TypeChildren<'tree> {
10092    ConstrainedType(::std::boxed::Box<ConstrainedType<'tree>>),
10093    Expression(::std::boxed::Box<Expression<'tree>>),
10094    GenericType(::std::boxed::Box<GenericType<'tree>>),
10095    MemberType(::std::boxed::Box<MemberType<'tree>>),
10096    SplatType(::std::boxed::Box<SplatType<'tree>>),
10097    UnionType(::std::boxed::Box<UnionType<'tree>>),
10098}
10099impl<'tree> ::treesitter_types::FromNode<'tree> for TypeChildren<'tree> {
10100    #[allow(clippy::collapsible_else_if)]
10101    fn from_node(
10102        node: ::treesitter_types::tree_sitter::Node<'tree>,
10103        src: &'tree [u8],
10104    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
10105        match node.kind() {
10106            "constrained_type" => Ok(Self::ConstrainedType(::std::boxed::Box::new(
10107                ::treesitter_types::runtime::maybe_grow_stack(|| {
10108                    <ConstrainedType as ::treesitter_types::FromNode>::from_node(node, src)
10109                })?,
10110            ))),
10111            "generic_type" => Ok(Self::GenericType(::std::boxed::Box::new(
10112                ::treesitter_types::runtime::maybe_grow_stack(|| {
10113                    <GenericType as ::treesitter_types::FromNode>::from_node(node, src)
10114                })?,
10115            ))),
10116            "member_type" => Ok(Self::MemberType(::std::boxed::Box::new(
10117                ::treesitter_types::runtime::maybe_grow_stack(|| {
10118                    <MemberType as ::treesitter_types::FromNode>::from_node(node, src)
10119                })?,
10120            ))),
10121            "splat_type" => Ok(Self::SplatType(::std::boxed::Box::new(
10122                ::treesitter_types::runtime::maybe_grow_stack(|| {
10123                    <SplatType as ::treesitter_types::FromNode>::from_node(node, src)
10124                })?,
10125            ))),
10126            "union_type" => Ok(Self::UnionType(::std::boxed::Box::new(
10127                ::treesitter_types::runtime::maybe_grow_stack(|| {
10128                    <UnionType as ::treesitter_types::FromNode>::from_node(node, src)
10129                })?,
10130            ))),
10131            _other => {
10132                if let Ok(v) = ::treesitter_types::runtime::maybe_grow_stack(|| {
10133                    <Expression as ::treesitter_types::FromNode>::from_node(node, src)
10134                }) {
10135                    Ok(Self::Expression(::std::boxed::Box::new(v)))
10136                } else {
10137                    Err(::treesitter_types::ParseError::unexpected_kind(
10138                        _other, node,
10139                    ))
10140                }
10141            }
10142        }
10143    }
10144}
10145impl ::treesitter_types::Spanned for TypeChildren<'_> {
10146    fn span(&self) -> ::treesitter_types::Span {
10147        match self {
10148            Self::ConstrainedType(inner) => inner.span(),
10149            Self::Expression(inner) => inner.span(),
10150            Self::GenericType(inner) => inner.span(),
10151            Self::MemberType(inner) => inner.span(),
10152            Self::SplatType(inner) => inner.span(),
10153            Self::UnionType(inner) => inner.span(),
10154        }
10155    }
10156}
10157#[derive(Debug, Clone, PartialEq, Eq)]
10158pub enum TypedParameterChildren<'tree> {
10159    DictionarySplatPattern(::std::boxed::Box<DictionarySplatPattern<'tree>>),
10160    Identifier(::std::boxed::Box<Identifier<'tree>>),
10161    ListSplatPattern(::std::boxed::Box<ListSplatPattern<'tree>>),
10162}
10163impl<'tree> ::treesitter_types::FromNode<'tree> for TypedParameterChildren<'tree> {
10164    #[allow(clippy::collapsible_else_if)]
10165    fn from_node(
10166        node: ::treesitter_types::tree_sitter::Node<'tree>,
10167        src: &'tree [u8],
10168    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
10169        match node.kind() {
10170            "dictionary_splat_pattern" => Ok(Self::DictionarySplatPattern(::std::boxed::Box::new(
10171                ::treesitter_types::runtime::maybe_grow_stack(|| {
10172                    <DictionarySplatPattern as ::treesitter_types::FromNode>::from_node(node, src)
10173                })?,
10174            ))),
10175            "identifier" => Ok(Self::Identifier(::std::boxed::Box::new(
10176                ::treesitter_types::runtime::maybe_grow_stack(|| {
10177                    <Identifier as ::treesitter_types::FromNode>::from_node(node, src)
10178                })?,
10179            ))),
10180            "list_splat_pattern" => Ok(Self::ListSplatPattern(::std::boxed::Box::new(
10181                ::treesitter_types::runtime::maybe_grow_stack(|| {
10182                    <ListSplatPattern as ::treesitter_types::FromNode>::from_node(node, src)
10183                })?,
10184            ))),
10185            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
10186        }
10187    }
10188}
10189impl ::treesitter_types::Spanned for TypedParameterChildren<'_> {
10190    fn span(&self) -> ::treesitter_types::Span {
10191        match self {
10192            Self::DictionarySplatPattern(inner) => inner.span(),
10193            Self::Identifier(inner) => inner.span(),
10194            Self::ListSplatPattern(inner) => inner.span(),
10195        }
10196    }
10197}
10198#[derive(Debug, Clone, PartialEq, Eq)]
10199pub enum UnaryOperatorOperator {
10200    Plus(::treesitter_types::Span),
10201    Minus(::treesitter_types::Span),
10202    Tilde(::treesitter_types::Span),
10203}
10204impl<'tree> ::treesitter_types::FromNode<'tree> for UnaryOperatorOperator {
10205    #[allow(clippy::collapsible_else_if)]
10206    fn from_node(
10207        node: ::treesitter_types::tree_sitter::Node<'tree>,
10208        _src: &'tree [u8],
10209    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
10210        match node.kind() {
10211            "+" => Ok(Self::Plus(::treesitter_types::Span::from(node))),
10212            "-" => Ok(Self::Minus(::treesitter_types::Span::from(node))),
10213            "~" => Ok(Self::Tilde(::treesitter_types::Span::from(node))),
10214            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
10215        }
10216    }
10217}
10218impl ::treesitter_types::Spanned for UnaryOperatorOperator {
10219    fn span(&self) -> ::treesitter_types::Span {
10220        match self {
10221            Self::Plus(span) => *span,
10222            Self::Minus(span) => *span,
10223            Self::Tilde(span) => *span,
10224        }
10225    }
10226}
10227#[derive(Debug, Clone, PartialEq, Eq)]
10228pub enum UnionPatternChildren<'tree> {
10229    ClassPattern(::std::boxed::Box<ClassPattern<'tree>>),
10230    ComplexPattern(::std::boxed::Box<ComplexPattern<'tree>>),
10231    ConcatenatedString(::std::boxed::Box<ConcatenatedString<'tree>>),
10232    DictPattern(::std::boxed::Box<DictPattern<'tree>>),
10233    DottedName(::std::boxed::Box<DottedName<'tree>>),
10234    False(::std::boxed::Box<False<'tree>>),
10235    Float(::std::boxed::Box<Float<'tree>>),
10236    Integer(::std::boxed::Box<Integer<'tree>>),
10237    ListPattern(::std::boxed::Box<ListPattern<'tree>>),
10238    None(::std::boxed::Box<None<'tree>>),
10239    SplatPattern(::std::boxed::Box<SplatPattern<'tree>>),
10240    String(::std::boxed::Box<String<'tree>>),
10241    True(::std::boxed::Box<True<'tree>>),
10242    TuplePattern(::std::boxed::Box<TuplePattern<'tree>>),
10243    UnionPattern(::std::boxed::Box<UnionPattern<'tree>>),
10244}
10245impl<'tree> ::treesitter_types::FromNode<'tree> for UnionPatternChildren<'tree> {
10246    #[allow(clippy::collapsible_else_if)]
10247    fn from_node(
10248        node: ::treesitter_types::tree_sitter::Node<'tree>,
10249        src: &'tree [u8],
10250    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
10251        match node.kind() {
10252            "class_pattern" => Ok(Self::ClassPattern(::std::boxed::Box::new(
10253                ::treesitter_types::runtime::maybe_grow_stack(|| {
10254                    <ClassPattern as ::treesitter_types::FromNode>::from_node(node, src)
10255                })?,
10256            ))),
10257            "complex_pattern" => Ok(Self::ComplexPattern(::std::boxed::Box::new(
10258                ::treesitter_types::runtime::maybe_grow_stack(|| {
10259                    <ComplexPattern as ::treesitter_types::FromNode>::from_node(node, src)
10260                })?,
10261            ))),
10262            "concatenated_string" => Ok(Self::ConcatenatedString(::std::boxed::Box::new(
10263                ::treesitter_types::runtime::maybe_grow_stack(|| {
10264                    <ConcatenatedString as ::treesitter_types::FromNode>::from_node(node, src)
10265                })?,
10266            ))),
10267            "dict_pattern" => Ok(Self::DictPattern(::std::boxed::Box::new(
10268                ::treesitter_types::runtime::maybe_grow_stack(|| {
10269                    <DictPattern as ::treesitter_types::FromNode>::from_node(node, src)
10270                })?,
10271            ))),
10272            "dotted_name" => Ok(Self::DottedName(::std::boxed::Box::new(
10273                ::treesitter_types::runtime::maybe_grow_stack(|| {
10274                    <DottedName as ::treesitter_types::FromNode>::from_node(node, src)
10275                })?,
10276            ))),
10277            "false" => Ok(Self::False(::std::boxed::Box::new(
10278                ::treesitter_types::runtime::maybe_grow_stack(|| {
10279                    <False as ::treesitter_types::FromNode>::from_node(node, src)
10280                })?,
10281            ))),
10282            "float" => Ok(Self::Float(::std::boxed::Box::new(
10283                ::treesitter_types::runtime::maybe_grow_stack(|| {
10284                    <Float as ::treesitter_types::FromNode>::from_node(node, src)
10285                })?,
10286            ))),
10287            "integer" => Ok(Self::Integer(::std::boxed::Box::new(
10288                ::treesitter_types::runtime::maybe_grow_stack(|| {
10289                    <Integer as ::treesitter_types::FromNode>::from_node(node, src)
10290                })?,
10291            ))),
10292            "list_pattern" => Ok(Self::ListPattern(::std::boxed::Box::new(
10293                ::treesitter_types::runtime::maybe_grow_stack(|| {
10294                    <ListPattern as ::treesitter_types::FromNode>::from_node(node, src)
10295                })?,
10296            ))),
10297            "none" => Ok(Self::None(::std::boxed::Box::new(
10298                ::treesitter_types::runtime::maybe_grow_stack(|| {
10299                    <None as ::treesitter_types::FromNode>::from_node(node, src)
10300                })?,
10301            ))),
10302            "splat_pattern" => Ok(Self::SplatPattern(::std::boxed::Box::new(
10303                ::treesitter_types::runtime::maybe_grow_stack(|| {
10304                    <SplatPattern as ::treesitter_types::FromNode>::from_node(node, src)
10305                })?,
10306            ))),
10307            "string" => Ok(Self::String(::std::boxed::Box::new(
10308                ::treesitter_types::runtime::maybe_grow_stack(|| {
10309                    <String as ::treesitter_types::FromNode>::from_node(node, src)
10310                })?,
10311            ))),
10312            "true" => Ok(Self::True(::std::boxed::Box::new(
10313                ::treesitter_types::runtime::maybe_grow_stack(|| {
10314                    <True as ::treesitter_types::FromNode>::from_node(node, src)
10315                })?,
10316            ))),
10317            "tuple_pattern" => Ok(Self::TuplePattern(::std::boxed::Box::new(
10318                ::treesitter_types::runtime::maybe_grow_stack(|| {
10319                    <TuplePattern as ::treesitter_types::FromNode>::from_node(node, src)
10320                })?,
10321            ))),
10322            "union_pattern" => Ok(Self::UnionPattern(::std::boxed::Box::new(
10323                ::treesitter_types::runtime::maybe_grow_stack(|| {
10324                    <UnionPattern as ::treesitter_types::FromNode>::from_node(node, src)
10325                })?,
10326            ))),
10327            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
10328        }
10329    }
10330}
10331impl ::treesitter_types::Spanned for UnionPatternChildren<'_> {
10332    fn span(&self) -> ::treesitter_types::Span {
10333        match self {
10334            Self::ClassPattern(inner) => inner.span(),
10335            Self::ComplexPattern(inner) => inner.span(),
10336            Self::ConcatenatedString(inner) => inner.span(),
10337            Self::DictPattern(inner) => inner.span(),
10338            Self::DottedName(inner) => inner.span(),
10339            Self::False(inner) => inner.span(),
10340            Self::Float(inner) => inner.span(),
10341            Self::Integer(inner) => inner.span(),
10342            Self::ListPattern(inner) => inner.span(),
10343            Self::None(inner) => inner.span(),
10344            Self::SplatPattern(inner) => inner.span(),
10345            Self::String(inner) => inner.span(),
10346            Self::True(inner) => inner.span(),
10347            Self::TuplePattern(inner) => inner.span(),
10348            Self::UnionPattern(inner) => inner.span(),
10349        }
10350    }
10351}
10352#[derive(Debug, Clone, PartialEq, Eq)]
10353pub enum YieldChildren<'tree> {
10354    Expression(::std::boxed::Box<Expression<'tree>>),
10355    ExpressionList(::std::boxed::Box<ExpressionList<'tree>>),
10356}
10357impl<'tree> ::treesitter_types::FromNode<'tree> for YieldChildren<'tree> {
10358    #[allow(clippy::collapsible_else_if)]
10359    fn from_node(
10360        node: ::treesitter_types::tree_sitter::Node<'tree>,
10361        src: &'tree [u8],
10362    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
10363        match node.kind() {
10364            "expression_list" => Ok(Self::ExpressionList(::std::boxed::Box::new(
10365                ::treesitter_types::runtime::maybe_grow_stack(|| {
10366                    <ExpressionList as ::treesitter_types::FromNode>::from_node(node, src)
10367                })?,
10368            ))),
10369            _other => {
10370                if let Ok(v) = ::treesitter_types::runtime::maybe_grow_stack(|| {
10371                    <Expression as ::treesitter_types::FromNode>::from_node(node, src)
10372                }) {
10373                    Ok(Self::Expression(::std::boxed::Box::new(v)))
10374                } else {
10375                    Err(::treesitter_types::ParseError::unexpected_kind(
10376                        _other, node,
10377                    ))
10378                }
10379            }
10380        }
10381    }
10382}
10383impl ::treesitter_types::Spanned for YieldChildren<'_> {
10384    fn span(&self) -> ::treesitter_types::Span {
10385        match self {
10386            Self::Expression(inner) => inner.span(),
10387            Self::ExpressionList(inner) => inner.span(),
10388        }
10389    }
10390}
10391#[derive(Debug, Clone, PartialEq, Eq)]
10392pub enum AnyNode<'tree> {
10393    CompoundStatement(CompoundStatement<'tree>),
10394    SimpleStatement(SimpleStatement<'tree>),
10395    Expression(Expression<'tree>),
10396    Parameter(Parameter<'tree>),
10397    Pattern(Pattern<'tree>),
10398    PrimaryExpression(PrimaryExpression<'tree>),
10399    AliasedImport(AliasedImport<'tree>),
10400    ArgumentList(ArgumentList<'tree>),
10401    AsPattern(AsPattern<'tree>),
10402    AssertStatement(AssertStatement<'tree>),
10403    Assignment(Assignment<'tree>),
10404    Attribute(Attribute<'tree>),
10405    AugmentedAssignment(AugmentedAssignment<'tree>),
10406    Await(Await<'tree>),
10407    BinaryOperator(BinaryOperator<'tree>),
10408    Block(Block<'tree>),
10409    BooleanOperator(BooleanOperator<'tree>),
10410    BreakStatement(BreakStatement<'tree>),
10411    Call(Call<'tree>),
10412    CaseClause(CaseClause<'tree>),
10413    CasePattern(CasePattern<'tree>),
10414    Chevron(Chevron<'tree>),
10415    ClassDefinition(ClassDefinition<'tree>),
10416    ClassPattern(ClassPattern<'tree>),
10417    ComparisonOperator(ComparisonOperator<'tree>),
10418    ComplexPattern(ComplexPattern<'tree>),
10419    ConcatenatedString(ConcatenatedString<'tree>),
10420    ConditionalExpression(ConditionalExpression<'tree>),
10421    ConstrainedType(ConstrainedType<'tree>),
10422    ContinueStatement(ContinueStatement<'tree>),
10423    DecoratedDefinition(DecoratedDefinition<'tree>),
10424    Decorator(Decorator<'tree>),
10425    DefaultParameter(DefaultParameter<'tree>),
10426    DeleteStatement(DeleteStatement<'tree>),
10427    DictPattern(DictPattern<'tree>),
10428    Dictionary(Dictionary<'tree>),
10429    DictionaryComprehension(DictionaryComprehension<'tree>),
10430    DictionarySplat(DictionarySplat<'tree>),
10431    DictionarySplatPattern(DictionarySplatPattern<'tree>),
10432    DottedName(DottedName<'tree>),
10433    ElifClause(ElifClause<'tree>),
10434    ElseClause(ElseClause<'tree>),
10435    ExceptClause(ExceptClause<'tree>),
10436    ExecStatement(ExecStatement<'tree>),
10437    ExpressionList(ExpressionList<'tree>),
10438    ExpressionStatement(ExpressionStatement<'tree>),
10439    FinallyClause(FinallyClause<'tree>),
10440    ForInClause(ForInClause<'tree>),
10441    ForStatement(ForStatement<'tree>),
10442    FormatExpression(FormatExpression<'tree>),
10443    FormatSpecifier(FormatSpecifier<'tree>),
10444    FunctionDefinition(FunctionDefinition<'tree>),
10445    FutureImportStatement(FutureImportStatement<'tree>),
10446    GeneratorExpression(GeneratorExpression<'tree>),
10447    GenericType(GenericType<'tree>),
10448    GlobalStatement(GlobalStatement<'tree>),
10449    IfClause(IfClause<'tree>),
10450    IfStatement(IfStatement<'tree>),
10451    ImportFromStatement(ImportFromStatement<'tree>),
10452    ImportPrefix(ImportPrefix<'tree>),
10453    ImportStatement(ImportStatement<'tree>),
10454    Interpolation(Interpolation<'tree>),
10455    KeywordArgument(KeywordArgument<'tree>),
10456    KeywordPattern(KeywordPattern<'tree>),
10457    KeywordSeparator(KeywordSeparator<'tree>),
10458    Lambda(Lambda<'tree>),
10459    LambdaParameters(LambdaParameters<'tree>),
10460    List(List<'tree>),
10461    ListComprehension(ListComprehension<'tree>),
10462    ListPattern(ListPattern<'tree>),
10463    ListSplat(ListSplat<'tree>),
10464    ListSplatPattern(ListSplatPattern<'tree>),
10465    MatchStatement(MatchStatement<'tree>),
10466    MemberType(MemberType<'tree>),
10467    Module(Module<'tree>),
10468    NamedExpression(NamedExpression<'tree>),
10469    NonlocalStatement(NonlocalStatement<'tree>),
10470    NotOperator(NotOperator<'tree>),
10471    Pair(Pair<'tree>),
10472    Parameters(Parameters<'tree>),
10473    ParenthesizedExpression(ParenthesizedExpression<'tree>),
10474    ParenthesizedListSplat(ParenthesizedListSplat<'tree>),
10475    PassStatement(PassStatement<'tree>),
10476    PatternList(PatternList<'tree>),
10477    PositionalSeparator(PositionalSeparator<'tree>),
10478    PrintStatement(PrintStatement<'tree>),
10479    RaiseStatement(RaiseStatement<'tree>),
10480    RelativeImport(RelativeImport<'tree>),
10481    ReturnStatement(ReturnStatement<'tree>),
10482    Set(Set<'tree>),
10483    SetComprehension(SetComprehension<'tree>),
10484    Slice(Slice<'tree>),
10485    SplatPattern(SplatPattern<'tree>),
10486    SplatType(SplatType<'tree>),
10487    String(String<'tree>),
10488    StringContent(StringContent<'tree>),
10489    Subscript(Subscript<'tree>),
10490    TryStatement(TryStatement<'tree>),
10491    Tuple(Tuple<'tree>),
10492    TuplePattern(TuplePattern<'tree>),
10493    Type(Type<'tree>),
10494    TypeAliasStatement(TypeAliasStatement<'tree>),
10495    TypeParameter(TypeParameter<'tree>),
10496    TypedDefaultParameter(TypedDefaultParameter<'tree>),
10497    TypedParameter(TypedParameter<'tree>),
10498    UnaryOperator(UnaryOperator<'tree>),
10499    UnionPattern(UnionPattern<'tree>),
10500    UnionType(UnionType<'tree>),
10501    WhileStatement(WhileStatement<'tree>),
10502    WildcardImport(WildcardImport<'tree>),
10503    WithClause(WithClause<'tree>),
10504    WithItem(WithItem<'tree>),
10505    WithStatement(WithStatement<'tree>),
10506    Yield(Yield<'tree>),
10507    Comment(Comment<'tree>),
10508    Ellipsis(Ellipsis<'tree>),
10509    EscapeInterpolation(EscapeInterpolation<'tree>),
10510    EscapeSequence(EscapeSequence<'tree>),
10511    False(False<'tree>),
10512    Float(Float<'tree>),
10513    Identifier(Identifier<'tree>),
10514    Integer(Integer<'tree>),
10515    LineContinuation(LineContinuation<'tree>),
10516    None(None<'tree>),
10517    StringEnd(StringEnd<'tree>),
10518    StringStart(StringStart<'tree>),
10519    True(True<'tree>),
10520    TypeConversion(TypeConversion<'tree>),
10521    AsPatternTarget(AsPatternTarget<'tree>),
10522    Unknown(::treesitter_types::tree_sitter::Node<'tree>),
10523}
10524impl<'tree> AnyNode<'tree> {
10525    pub fn from_node(node: ::treesitter_types::tree_sitter::Node<'tree>, src: &'tree [u8]) -> Self {
10526        match node.kind() {
10527            "_compound_statement" => ::treesitter_types::runtime::maybe_grow_stack(|| {
10528                <CompoundStatement as ::treesitter_types::FromNode>::from_node(node, src)
10529            })
10530            .map(Self::CompoundStatement)
10531            .unwrap_or(Self::Unknown(node)),
10532            "_simple_statement" => ::treesitter_types::runtime::maybe_grow_stack(|| {
10533                <SimpleStatement as ::treesitter_types::FromNode>::from_node(node, src)
10534            })
10535            .map(Self::SimpleStatement)
10536            .unwrap_or(Self::Unknown(node)),
10537            "expression" => ::treesitter_types::runtime::maybe_grow_stack(|| {
10538                <Expression as ::treesitter_types::FromNode>::from_node(node, src)
10539            })
10540            .map(Self::Expression)
10541            .unwrap_or(Self::Unknown(node)),
10542            "parameter" => ::treesitter_types::runtime::maybe_grow_stack(|| {
10543                <Parameter as ::treesitter_types::FromNode>::from_node(node, src)
10544            })
10545            .map(Self::Parameter)
10546            .unwrap_or(Self::Unknown(node)),
10547            "pattern" => ::treesitter_types::runtime::maybe_grow_stack(|| {
10548                <Pattern as ::treesitter_types::FromNode>::from_node(node, src)
10549            })
10550            .map(Self::Pattern)
10551            .unwrap_or(Self::Unknown(node)),
10552            "primary_expression" => ::treesitter_types::runtime::maybe_grow_stack(|| {
10553                <PrimaryExpression as ::treesitter_types::FromNode>::from_node(node, src)
10554            })
10555            .map(Self::PrimaryExpression)
10556            .unwrap_or(Self::Unknown(node)),
10557            "aliased_import" => ::treesitter_types::runtime::maybe_grow_stack(|| {
10558                <AliasedImport as ::treesitter_types::FromNode>::from_node(node, src)
10559            })
10560            .map(Self::AliasedImport)
10561            .unwrap_or(Self::Unknown(node)),
10562            "argument_list" => ::treesitter_types::runtime::maybe_grow_stack(|| {
10563                <ArgumentList as ::treesitter_types::FromNode>::from_node(node, src)
10564            })
10565            .map(Self::ArgumentList)
10566            .unwrap_or(Self::Unknown(node)),
10567            "as_pattern" => ::treesitter_types::runtime::maybe_grow_stack(|| {
10568                <AsPattern as ::treesitter_types::FromNode>::from_node(node, src)
10569            })
10570            .map(Self::AsPattern)
10571            .unwrap_or(Self::Unknown(node)),
10572            "assert_statement" => ::treesitter_types::runtime::maybe_grow_stack(|| {
10573                <AssertStatement as ::treesitter_types::FromNode>::from_node(node, src)
10574            })
10575            .map(Self::AssertStatement)
10576            .unwrap_or(Self::Unknown(node)),
10577            "assignment" => ::treesitter_types::runtime::maybe_grow_stack(|| {
10578                <Assignment as ::treesitter_types::FromNode>::from_node(node, src)
10579            })
10580            .map(Self::Assignment)
10581            .unwrap_or(Self::Unknown(node)),
10582            "attribute" => ::treesitter_types::runtime::maybe_grow_stack(|| {
10583                <Attribute as ::treesitter_types::FromNode>::from_node(node, src)
10584            })
10585            .map(Self::Attribute)
10586            .unwrap_or(Self::Unknown(node)),
10587            "augmented_assignment" => ::treesitter_types::runtime::maybe_grow_stack(|| {
10588                <AugmentedAssignment as ::treesitter_types::FromNode>::from_node(node, src)
10589            })
10590            .map(Self::AugmentedAssignment)
10591            .unwrap_or(Self::Unknown(node)),
10592            "await" => ::treesitter_types::runtime::maybe_grow_stack(|| {
10593                <Await as ::treesitter_types::FromNode>::from_node(node, src)
10594            })
10595            .map(Self::Await)
10596            .unwrap_or(Self::Unknown(node)),
10597            "binary_operator" => ::treesitter_types::runtime::maybe_grow_stack(|| {
10598                <BinaryOperator as ::treesitter_types::FromNode>::from_node(node, src)
10599            })
10600            .map(Self::BinaryOperator)
10601            .unwrap_or(Self::Unknown(node)),
10602            "block" => ::treesitter_types::runtime::maybe_grow_stack(|| {
10603                <Block as ::treesitter_types::FromNode>::from_node(node, src)
10604            })
10605            .map(Self::Block)
10606            .unwrap_or(Self::Unknown(node)),
10607            "boolean_operator" => ::treesitter_types::runtime::maybe_grow_stack(|| {
10608                <BooleanOperator as ::treesitter_types::FromNode>::from_node(node, src)
10609            })
10610            .map(Self::BooleanOperator)
10611            .unwrap_or(Self::Unknown(node)),
10612            "break_statement" => ::treesitter_types::runtime::maybe_grow_stack(|| {
10613                <BreakStatement as ::treesitter_types::FromNode>::from_node(node, src)
10614            })
10615            .map(Self::BreakStatement)
10616            .unwrap_or(Self::Unknown(node)),
10617            "call" => ::treesitter_types::runtime::maybe_grow_stack(|| {
10618                <Call as ::treesitter_types::FromNode>::from_node(node, src)
10619            })
10620            .map(Self::Call)
10621            .unwrap_or(Self::Unknown(node)),
10622            "case_clause" => ::treesitter_types::runtime::maybe_grow_stack(|| {
10623                <CaseClause as ::treesitter_types::FromNode>::from_node(node, src)
10624            })
10625            .map(Self::CaseClause)
10626            .unwrap_or(Self::Unknown(node)),
10627            "case_pattern" => ::treesitter_types::runtime::maybe_grow_stack(|| {
10628                <CasePattern as ::treesitter_types::FromNode>::from_node(node, src)
10629            })
10630            .map(Self::CasePattern)
10631            .unwrap_or(Self::Unknown(node)),
10632            "chevron" => ::treesitter_types::runtime::maybe_grow_stack(|| {
10633                <Chevron as ::treesitter_types::FromNode>::from_node(node, src)
10634            })
10635            .map(Self::Chevron)
10636            .unwrap_or(Self::Unknown(node)),
10637            "class_definition" => ::treesitter_types::runtime::maybe_grow_stack(|| {
10638                <ClassDefinition as ::treesitter_types::FromNode>::from_node(node, src)
10639            })
10640            .map(Self::ClassDefinition)
10641            .unwrap_or(Self::Unknown(node)),
10642            "class_pattern" => ::treesitter_types::runtime::maybe_grow_stack(|| {
10643                <ClassPattern as ::treesitter_types::FromNode>::from_node(node, src)
10644            })
10645            .map(Self::ClassPattern)
10646            .unwrap_or(Self::Unknown(node)),
10647            "comparison_operator" => ::treesitter_types::runtime::maybe_grow_stack(|| {
10648                <ComparisonOperator as ::treesitter_types::FromNode>::from_node(node, src)
10649            })
10650            .map(Self::ComparisonOperator)
10651            .unwrap_or(Self::Unknown(node)),
10652            "complex_pattern" => ::treesitter_types::runtime::maybe_grow_stack(|| {
10653                <ComplexPattern as ::treesitter_types::FromNode>::from_node(node, src)
10654            })
10655            .map(Self::ComplexPattern)
10656            .unwrap_or(Self::Unknown(node)),
10657            "concatenated_string" => ::treesitter_types::runtime::maybe_grow_stack(|| {
10658                <ConcatenatedString as ::treesitter_types::FromNode>::from_node(node, src)
10659            })
10660            .map(Self::ConcatenatedString)
10661            .unwrap_or(Self::Unknown(node)),
10662            "conditional_expression" => ::treesitter_types::runtime::maybe_grow_stack(|| {
10663                <ConditionalExpression as ::treesitter_types::FromNode>::from_node(node, src)
10664            })
10665            .map(Self::ConditionalExpression)
10666            .unwrap_or(Self::Unknown(node)),
10667            "constrained_type" => ::treesitter_types::runtime::maybe_grow_stack(|| {
10668                <ConstrainedType as ::treesitter_types::FromNode>::from_node(node, src)
10669            })
10670            .map(Self::ConstrainedType)
10671            .unwrap_or(Self::Unknown(node)),
10672            "continue_statement" => ::treesitter_types::runtime::maybe_grow_stack(|| {
10673                <ContinueStatement as ::treesitter_types::FromNode>::from_node(node, src)
10674            })
10675            .map(Self::ContinueStatement)
10676            .unwrap_or(Self::Unknown(node)),
10677            "decorated_definition" => ::treesitter_types::runtime::maybe_grow_stack(|| {
10678                <DecoratedDefinition as ::treesitter_types::FromNode>::from_node(node, src)
10679            })
10680            .map(Self::DecoratedDefinition)
10681            .unwrap_or(Self::Unknown(node)),
10682            "decorator" => ::treesitter_types::runtime::maybe_grow_stack(|| {
10683                <Decorator as ::treesitter_types::FromNode>::from_node(node, src)
10684            })
10685            .map(Self::Decorator)
10686            .unwrap_or(Self::Unknown(node)),
10687            "default_parameter" => ::treesitter_types::runtime::maybe_grow_stack(|| {
10688                <DefaultParameter as ::treesitter_types::FromNode>::from_node(node, src)
10689            })
10690            .map(Self::DefaultParameter)
10691            .unwrap_or(Self::Unknown(node)),
10692            "delete_statement" => ::treesitter_types::runtime::maybe_grow_stack(|| {
10693                <DeleteStatement as ::treesitter_types::FromNode>::from_node(node, src)
10694            })
10695            .map(Self::DeleteStatement)
10696            .unwrap_or(Self::Unknown(node)),
10697            "dict_pattern" => ::treesitter_types::runtime::maybe_grow_stack(|| {
10698                <DictPattern as ::treesitter_types::FromNode>::from_node(node, src)
10699            })
10700            .map(Self::DictPattern)
10701            .unwrap_or(Self::Unknown(node)),
10702            "dictionary" => ::treesitter_types::runtime::maybe_grow_stack(|| {
10703                <Dictionary as ::treesitter_types::FromNode>::from_node(node, src)
10704            })
10705            .map(Self::Dictionary)
10706            .unwrap_or(Self::Unknown(node)),
10707            "dictionary_comprehension" => ::treesitter_types::runtime::maybe_grow_stack(|| {
10708                <DictionaryComprehension as ::treesitter_types::FromNode>::from_node(node, src)
10709            })
10710            .map(Self::DictionaryComprehension)
10711            .unwrap_or(Self::Unknown(node)),
10712            "dictionary_splat" => ::treesitter_types::runtime::maybe_grow_stack(|| {
10713                <DictionarySplat as ::treesitter_types::FromNode>::from_node(node, src)
10714            })
10715            .map(Self::DictionarySplat)
10716            .unwrap_or(Self::Unknown(node)),
10717            "dictionary_splat_pattern" => ::treesitter_types::runtime::maybe_grow_stack(|| {
10718                <DictionarySplatPattern as ::treesitter_types::FromNode>::from_node(node, src)
10719            })
10720            .map(Self::DictionarySplatPattern)
10721            .unwrap_or(Self::Unknown(node)),
10722            "dotted_name" => ::treesitter_types::runtime::maybe_grow_stack(|| {
10723                <DottedName as ::treesitter_types::FromNode>::from_node(node, src)
10724            })
10725            .map(Self::DottedName)
10726            .unwrap_or(Self::Unknown(node)),
10727            "elif_clause" => ::treesitter_types::runtime::maybe_grow_stack(|| {
10728                <ElifClause as ::treesitter_types::FromNode>::from_node(node, src)
10729            })
10730            .map(Self::ElifClause)
10731            .unwrap_or(Self::Unknown(node)),
10732            "else_clause" => ::treesitter_types::runtime::maybe_grow_stack(|| {
10733                <ElseClause as ::treesitter_types::FromNode>::from_node(node, src)
10734            })
10735            .map(Self::ElseClause)
10736            .unwrap_or(Self::Unknown(node)),
10737            "except_clause" => ::treesitter_types::runtime::maybe_grow_stack(|| {
10738                <ExceptClause as ::treesitter_types::FromNode>::from_node(node, src)
10739            })
10740            .map(Self::ExceptClause)
10741            .unwrap_or(Self::Unknown(node)),
10742            "exec_statement" => ::treesitter_types::runtime::maybe_grow_stack(|| {
10743                <ExecStatement as ::treesitter_types::FromNode>::from_node(node, src)
10744            })
10745            .map(Self::ExecStatement)
10746            .unwrap_or(Self::Unknown(node)),
10747            "expression_list" => ::treesitter_types::runtime::maybe_grow_stack(|| {
10748                <ExpressionList as ::treesitter_types::FromNode>::from_node(node, src)
10749            })
10750            .map(Self::ExpressionList)
10751            .unwrap_or(Self::Unknown(node)),
10752            "expression_statement" => ::treesitter_types::runtime::maybe_grow_stack(|| {
10753                <ExpressionStatement as ::treesitter_types::FromNode>::from_node(node, src)
10754            })
10755            .map(Self::ExpressionStatement)
10756            .unwrap_or(Self::Unknown(node)),
10757            "finally_clause" => ::treesitter_types::runtime::maybe_grow_stack(|| {
10758                <FinallyClause as ::treesitter_types::FromNode>::from_node(node, src)
10759            })
10760            .map(Self::FinallyClause)
10761            .unwrap_or(Self::Unknown(node)),
10762            "for_in_clause" => ::treesitter_types::runtime::maybe_grow_stack(|| {
10763                <ForInClause as ::treesitter_types::FromNode>::from_node(node, src)
10764            })
10765            .map(Self::ForInClause)
10766            .unwrap_or(Self::Unknown(node)),
10767            "for_statement" => ::treesitter_types::runtime::maybe_grow_stack(|| {
10768                <ForStatement as ::treesitter_types::FromNode>::from_node(node, src)
10769            })
10770            .map(Self::ForStatement)
10771            .unwrap_or(Self::Unknown(node)),
10772            "format_expression" => ::treesitter_types::runtime::maybe_grow_stack(|| {
10773                <FormatExpression as ::treesitter_types::FromNode>::from_node(node, src)
10774            })
10775            .map(Self::FormatExpression)
10776            .unwrap_or(Self::Unknown(node)),
10777            "format_specifier" => ::treesitter_types::runtime::maybe_grow_stack(|| {
10778                <FormatSpecifier as ::treesitter_types::FromNode>::from_node(node, src)
10779            })
10780            .map(Self::FormatSpecifier)
10781            .unwrap_or(Self::Unknown(node)),
10782            "function_definition" => ::treesitter_types::runtime::maybe_grow_stack(|| {
10783                <FunctionDefinition as ::treesitter_types::FromNode>::from_node(node, src)
10784            })
10785            .map(Self::FunctionDefinition)
10786            .unwrap_or(Self::Unknown(node)),
10787            "future_import_statement" => ::treesitter_types::runtime::maybe_grow_stack(|| {
10788                <FutureImportStatement as ::treesitter_types::FromNode>::from_node(node, src)
10789            })
10790            .map(Self::FutureImportStatement)
10791            .unwrap_or(Self::Unknown(node)),
10792            "generator_expression" => ::treesitter_types::runtime::maybe_grow_stack(|| {
10793                <GeneratorExpression as ::treesitter_types::FromNode>::from_node(node, src)
10794            })
10795            .map(Self::GeneratorExpression)
10796            .unwrap_or(Self::Unknown(node)),
10797            "generic_type" => ::treesitter_types::runtime::maybe_grow_stack(|| {
10798                <GenericType as ::treesitter_types::FromNode>::from_node(node, src)
10799            })
10800            .map(Self::GenericType)
10801            .unwrap_or(Self::Unknown(node)),
10802            "global_statement" => ::treesitter_types::runtime::maybe_grow_stack(|| {
10803                <GlobalStatement as ::treesitter_types::FromNode>::from_node(node, src)
10804            })
10805            .map(Self::GlobalStatement)
10806            .unwrap_or(Self::Unknown(node)),
10807            "if_clause" => ::treesitter_types::runtime::maybe_grow_stack(|| {
10808                <IfClause as ::treesitter_types::FromNode>::from_node(node, src)
10809            })
10810            .map(Self::IfClause)
10811            .unwrap_or(Self::Unknown(node)),
10812            "if_statement" => ::treesitter_types::runtime::maybe_grow_stack(|| {
10813                <IfStatement as ::treesitter_types::FromNode>::from_node(node, src)
10814            })
10815            .map(Self::IfStatement)
10816            .unwrap_or(Self::Unknown(node)),
10817            "import_from_statement" => ::treesitter_types::runtime::maybe_grow_stack(|| {
10818                <ImportFromStatement as ::treesitter_types::FromNode>::from_node(node, src)
10819            })
10820            .map(Self::ImportFromStatement)
10821            .unwrap_or(Self::Unknown(node)),
10822            "import_prefix" => ::treesitter_types::runtime::maybe_grow_stack(|| {
10823                <ImportPrefix as ::treesitter_types::FromNode>::from_node(node, src)
10824            })
10825            .map(Self::ImportPrefix)
10826            .unwrap_or(Self::Unknown(node)),
10827            "import_statement" => ::treesitter_types::runtime::maybe_grow_stack(|| {
10828                <ImportStatement as ::treesitter_types::FromNode>::from_node(node, src)
10829            })
10830            .map(Self::ImportStatement)
10831            .unwrap_or(Self::Unknown(node)),
10832            "interpolation" => ::treesitter_types::runtime::maybe_grow_stack(|| {
10833                <Interpolation as ::treesitter_types::FromNode>::from_node(node, src)
10834            })
10835            .map(Self::Interpolation)
10836            .unwrap_or(Self::Unknown(node)),
10837            "keyword_argument" => ::treesitter_types::runtime::maybe_grow_stack(|| {
10838                <KeywordArgument as ::treesitter_types::FromNode>::from_node(node, src)
10839            })
10840            .map(Self::KeywordArgument)
10841            .unwrap_or(Self::Unknown(node)),
10842            "keyword_pattern" => ::treesitter_types::runtime::maybe_grow_stack(|| {
10843                <KeywordPattern as ::treesitter_types::FromNode>::from_node(node, src)
10844            })
10845            .map(Self::KeywordPattern)
10846            .unwrap_or(Self::Unknown(node)),
10847            "keyword_separator" => ::treesitter_types::runtime::maybe_grow_stack(|| {
10848                <KeywordSeparator as ::treesitter_types::FromNode>::from_node(node, src)
10849            })
10850            .map(Self::KeywordSeparator)
10851            .unwrap_or(Self::Unknown(node)),
10852            "lambda" => ::treesitter_types::runtime::maybe_grow_stack(|| {
10853                <Lambda as ::treesitter_types::FromNode>::from_node(node, src)
10854            })
10855            .map(Self::Lambda)
10856            .unwrap_or(Self::Unknown(node)),
10857            "lambda_parameters" => ::treesitter_types::runtime::maybe_grow_stack(|| {
10858                <LambdaParameters as ::treesitter_types::FromNode>::from_node(node, src)
10859            })
10860            .map(Self::LambdaParameters)
10861            .unwrap_or(Self::Unknown(node)),
10862            "list" => ::treesitter_types::runtime::maybe_grow_stack(|| {
10863                <List as ::treesitter_types::FromNode>::from_node(node, src)
10864            })
10865            .map(Self::List)
10866            .unwrap_or(Self::Unknown(node)),
10867            "list_comprehension" => ::treesitter_types::runtime::maybe_grow_stack(|| {
10868                <ListComprehension as ::treesitter_types::FromNode>::from_node(node, src)
10869            })
10870            .map(Self::ListComprehension)
10871            .unwrap_or(Self::Unknown(node)),
10872            "list_pattern" => ::treesitter_types::runtime::maybe_grow_stack(|| {
10873                <ListPattern as ::treesitter_types::FromNode>::from_node(node, src)
10874            })
10875            .map(Self::ListPattern)
10876            .unwrap_or(Self::Unknown(node)),
10877            "list_splat" => ::treesitter_types::runtime::maybe_grow_stack(|| {
10878                <ListSplat as ::treesitter_types::FromNode>::from_node(node, src)
10879            })
10880            .map(Self::ListSplat)
10881            .unwrap_or(Self::Unknown(node)),
10882            "list_splat_pattern" => ::treesitter_types::runtime::maybe_grow_stack(|| {
10883                <ListSplatPattern as ::treesitter_types::FromNode>::from_node(node, src)
10884            })
10885            .map(Self::ListSplatPattern)
10886            .unwrap_or(Self::Unknown(node)),
10887            "match_statement" => ::treesitter_types::runtime::maybe_grow_stack(|| {
10888                <MatchStatement as ::treesitter_types::FromNode>::from_node(node, src)
10889            })
10890            .map(Self::MatchStatement)
10891            .unwrap_or(Self::Unknown(node)),
10892            "member_type" => ::treesitter_types::runtime::maybe_grow_stack(|| {
10893                <MemberType as ::treesitter_types::FromNode>::from_node(node, src)
10894            })
10895            .map(Self::MemberType)
10896            .unwrap_or(Self::Unknown(node)),
10897            "module" => ::treesitter_types::runtime::maybe_grow_stack(|| {
10898                <Module as ::treesitter_types::FromNode>::from_node(node, src)
10899            })
10900            .map(Self::Module)
10901            .unwrap_or(Self::Unknown(node)),
10902            "named_expression" => ::treesitter_types::runtime::maybe_grow_stack(|| {
10903                <NamedExpression as ::treesitter_types::FromNode>::from_node(node, src)
10904            })
10905            .map(Self::NamedExpression)
10906            .unwrap_or(Self::Unknown(node)),
10907            "nonlocal_statement" => ::treesitter_types::runtime::maybe_grow_stack(|| {
10908                <NonlocalStatement as ::treesitter_types::FromNode>::from_node(node, src)
10909            })
10910            .map(Self::NonlocalStatement)
10911            .unwrap_or(Self::Unknown(node)),
10912            "not_operator" => ::treesitter_types::runtime::maybe_grow_stack(|| {
10913                <NotOperator as ::treesitter_types::FromNode>::from_node(node, src)
10914            })
10915            .map(Self::NotOperator)
10916            .unwrap_or(Self::Unknown(node)),
10917            "pair" => ::treesitter_types::runtime::maybe_grow_stack(|| {
10918                <Pair as ::treesitter_types::FromNode>::from_node(node, src)
10919            })
10920            .map(Self::Pair)
10921            .unwrap_or(Self::Unknown(node)),
10922            "parameters" => ::treesitter_types::runtime::maybe_grow_stack(|| {
10923                <Parameters as ::treesitter_types::FromNode>::from_node(node, src)
10924            })
10925            .map(Self::Parameters)
10926            .unwrap_or(Self::Unknown(node)),
10927            "parenthesized_expression" => ::treesitter_types::runtime::maybe_grow_stack(|| {
10928                <ParenthesizedExpression as ::treesitter_types::FromNode>::from_node(node, src)
10929            })
10930            .map(Self::ParenthesizedExpression)
10931            .unwrap_or(Self::Unknown(node)),
10932            "parenthesized_list_splat" => ::treesitter_types::runtime::maybe_grow_stack(|| {
10933                <ParenthesizedListSplat as ::treesitter_types::FromNode>::from_node(node, src)
10934            })
10935            .map(Self::ParenthesizedListSplat)
10936            .unwrap_or(Self::Unknown(node)),
10937            "pass_statement" => ::treesitter_types::runtime::maybe_grow_stack(|| {
10938                <PassStatement as ::treesitter_types::FromNode>::from_node(node, src)
10939            })
10940            .map(Self::PassStatement)
10941            .unwrap_or(Self::Unknown(node)),
10942            "pattern_list" => ::treesitter_types::runtime::maybe_grow_stack(|| {
10943                <PatternList as ::treesitter_types::FromNode>::from_node(node, src)
10944            })
10945            .map(Self::PatternList)
10946            .unwrap_or(Self::Unknown(node)),
10947            "positional_separator" => ::treesitter_types::runtime::maybe_grow_stack(|| {
10948                <PositionalSeparator as ::treesitter_types::FromNode>::from_node(node, src)
10949            })
10950            .map(Self::PositionalSeparator)
10951            .unwrap_or(Self::Unknown(node)),
10952            "print_statement" => ::treesitter_types::runtime::maybe_grow_stack(|| {
10953                <PrintStatement as ::treesitter_types::FromNode>::from_node(node, src)
10954            })
10955            .map(Self::PrintStatement)
10956            .unwrap_or(Self::Unknown(node)),
10957            "raise_statement" => ::treesitter_types::runtime::maybe_grow_stack(|| {
10958                <RaiseStatement as ::treesitter_types::FromNode>::from_node(node, src)
10959            })
10960            .map(Self::RaiseStatement)
10961            .unwrap_or(Self::Unknown(node)),
10962            "relative_import" => ::treesitter_types::runtime::maybe_grow_stack(|| {
10963                <RelativeImport as ::treesitter_types::FromNode>::from_node(node, src)
10964            })
10965            .map(Self::RelativeImport)
10966            .unwrap_or(Self::Unknown(node)),
10967            "return_statement" => ::treesitter_types::runtime::maybe_grow_stack(|| {
10968                <ReturnStatement as ::treesitter_types::FromNode>::from_node(node, src)
10969            })
10970            .map(Self::ReturnStatement)
10971            .unwrap_or(Self::Unknown(node)),
10972            "set" => ::treesitter_types::runtime::maybe_grow_stack(|| {
10973                <Set as ::treesitter_types::FromNode>::from_node(node, src)
10974            })
10975            .map(Self::Set)
10976            .unwrap_or(Self::Unknown(node)),
10977            "set_comprehension" => ::treesitter_types::runtime::maybe_grow_stack(|| {
10978                <SetComprehension as ::treesitter_types::FromNode>::from_node(node, src)
10979            })
10980            .map(Self::SetComprehension)
10981            .unwrap_or(Self::Unknown(node)),
10982            "slice" => ::treesitter_types::runtime::maybe_grow_stack(|| {
10983                <Slice as ::treesitter_types::FromNode>::from_node(node, src)
10984            })
10985            .map(Self::Slice)
10986            .unwrap_or(Self::Unknown(node)),
10987            "splat_pattern" => ::treesitter_types::runtime::maybe_grow_stack(|| {
10988                <SplatPattern as ::treesitter_types::FromNode>::from_node(node, src)
10989            })
10990            .map(Self::SplatPattern)
10991            .unwrap_or(Self::Unknown(node)),
10992            "splat_type" => ::treesitter_types::runtime::maybe_grow_stack(|| {
10993                <SplatType as ::treesitter_types::FromNode>::from_node(node, src)
10994            })
10995            .map(Self::SplatType)
10996            .unwrap_or(Self::Unknown(node)),
10997            "string" => ::treesitter_types::runtime::maybe_grow_stack(|| {
10998                <String as ::treesitter_types::FromNode>::from_node(node, src)
10999            })
11000            .map(Self::String)
11001            .unwrap_or(Self::Unknown(node)),
11002            "string_content" => ::treesitter_types::runtime::maybe_grow_stack(|| {
11003                <StringContent as ::treesitter_types::FromNode>::from_node(node, src)
11004            })
11005            .map(Self::StringContent)
11006            .unwrap_or(Self::Unknown(node)),
11007            "subscript" => ::treesitter_types::runtime::maybe_grow_stack(|| {
11008                <Subscript as ::treesitter_types::FromNode>::from_node(node, src)
11009            })
11010            .map(Self::Subscript)
11011            .unwrap_or(Self::Unknown(node)),
11012            "try_statement" => ::treesitter_types::runtime::maybe_grow_stack(|| {
11013                <TryStatement as ::treesitter_types::FromNode>::from_node(node, src)
11014            })
11015            .map(Self::TryStatement)
11016            .unwrap_or(Self::Unknown(node)),
11017            "tuple" => ::treesitter_types::runtime::maybe_grow_stack(|| {
11018                <Tuple as ::treesitter_types::FromNode>::from_node(node, src)
11019            })
11020            .map(Self::Tuple)
11021            .unwrap_or(Self::Unknown(node)),
11022            "tuple_pattern" => ::treesitter_types::runtime::maybe_grow_stack(|| {
11023                <TuplePattern as ::treesitter_types::FromNode>::from_node(node, src)
11024            })
11025            .map(Self::TuplePattern)
11026            .unwrap_or(Self::Unknown(node)),
11027            "type" => ::treesitter_types::runtime::maybe_grow_stack(|| {
11028                <Type as ::treesitter_types::FromNode>::from_node(node, src)
11029            })
11030            .map(Self::Type)
11031            .unwrap_or(Self::Unknown(node)),
11032            "type_alias_statement" => ::treesitter_types::runtime::maybe_grow_stack(|| {
11033                <TypeAliasStatement as ::treesitter_types::FromNode>::from_node(node, src)
11034            })
11035            .map(Self::TypeAliasStatement)
11036            .unwrap_or(Self::Unknown(node)),
11037            "type_parameter" => ::treesitter_types::runtime::maybe_grow_stack(|| {
11038                <TypeParameter as ::treesitter_types::FromNode>::from_node(node, src)
11039            })
11040            .map(Self::TypeParameter)
11041            .unwrap_or(Self::Unknown(node)),
11042            "typed_default_parameter" => ::treesitter_types::runtime::maybe_grow_stack(|| {
11043                <TypedDefaultParameter as ::treesitter_types::FromNode>::from_node(node, src)
11044            })
11045            .map(Self::TypedDefaultParameter)
11046            .unwrap_or(Self::Unknown(node)),
11047            "typed_parameter" => ::treesitter_types::runtime::maybe_grow_stack(|| {
11048                <TypedParameter as ::treesitter_types::FromNode>::from_node(node, src)
11049            })
11050            .map(Self::TypedParameter)
11051            .unwrap_or(Self::Unknown(node)),
11052            "unary_operator" => ::treesitter_types::runtime::maybe_grow_stack(|| {
11053                <UnaryOperator as ::treesitter_types::FromNode>::from_node(node, src)
11054            })
11055            .map(Self::UnaryOperator)
11056            .unwrap_or(Self::Unknown(node)),
11057            "union_pattern" => ::treesitter_types::runtime::maybe_grow_stack(|| {
11058                <UnionPattern as ::treesitter_types::FromNode>::from_node(node, src)
11059            })
11060            .map(Self::UnionPattern)
11061            .unwrap_or(Self::Unknown(node)),
11062            "union_type" => ::treesitter_types::runtime::maybe_grow_stack(|| {
11063                <UnionType as ::treesitter_types::FromNode>::from_node(node, src)
11064            })
11065            .map(Self::UnionType)
11066            .unwrap_or(Self::Unknown(node)),
11067            "while_statement" => ::treesitter_types::runtime::maybe_grow_stack(|| {
11068                <WhileStatement as ::treesitter_types::FromNode>::from_node(node, src)
11069            })
11070            .map(Self::WhileStatement)
11071            .unwrap_or(Self::Unknown(node)),
11072            "wildcard_import" => ::treesitter_types::runtime::maybe_grow_stack(|| {
11073                <WildcardImport as ::treesitter_types::FromNode>::from_node(node, src)
11074            })
11075            .map(Self::WildcardImport)
11076            .unwrap_or(Self::Unknown(node)),
11077            "with_clause" => ::treesitter_types::runtime::maybe_grow_stack(|| {
11078                <WithClause as ::treesitter_types::FromNode>::from_node(node, src)
11079            })
11080            .map(Self::WithClause)
11081            .unwrap_or(Self::Unknown(node)),
11082            "with_item" => ::treesitter_types::runtime::maybe_grow_stack(|| {
11083                <WithItem as ::treesitter_types::FromNode>::from_node(node, src)
11084            })
11085            .map(Self::WithItem)
11086            .unwrap_or(Self::Unknown(node)),
11087            "with_statement" => ::treesitter_types::runtime::maybe_grow_stack(|| {
11088                <WithStatement as ::treesitter_types::FromNode>::from_node(node, src)
11089            })
11090            .map(Self::WithStatement)
11091            .unwrap_or(Self::Unknown(node)),
11092            "yield" => ::treesitter_types::runtime::maybe_grow_stack(|| {
11093                <Yield as ::treesitter_types::FromNode>::from_node(node, src)
11094            })
11095            .map(Self::Yield)
11096            .unwrap_or(Self::Unknown(node)),
11097            "comment" => ::treesitter_types::runtime::maybe_grow_stack(|| {
11098                <Comment as ::treesitter_types::FromNode>::from_node(node, src)
11099            })
11100            .map(Self::Comment)
11101            .unwrap_or(Self::Unknown(node)),
11102            "ellipsis" => ::treesitter_types::runtime::maybe_grow_stack(|| {
11103                <Ellipsis as ::treesitter_types::FromNode>::from_node(node, src)
11104            })
11105            .map(Self::Ellipsis)
11106            .unwrap_or(Self::Unknown(node)),
11107            "escape_interpolation" => ::treesitter_types::runtime::maybe_grow_stack(|| {
11108                <EscapeInterpolation as ::treesitter_types::FromNode>::from_node(node, src)
11109            })
11110            .map(Self::EscapeInterpolation)
11111            .unwrap_or(Self::Unknown(node)),
11112            "escape_sequence" => ::treesitter_types::runtime::maybe_grow_stack(|| {
11113                <EscapeSequence as ::treesitter_types::FromNode>::from_node(node, src)
11114            })
11115            .map(Self::EscapeSequence)
11116            .unwrap_or(Self::Unknown(node)),
11117            "false" => ::treesitter_types::runtime::maybe_grow_stack(|| {
11118                <False as ::treesitter_types::FromNode>::from_node(node, src)
11119            })
11120            .map(Self::False)
11121            .unwrap_or(Self::Unknown(node)),
11122            "float" => ::treesitter_types::runtime::maybe_grow_stack(|| {
11123                <Float as ::treesitter_types::FromNode>::from_node(node, src)
11124            })
11125            .map(Self::Float)
11126            .unwrap_or(Self::Unknown(node)),
11127            "identifier" => ::treesitter_types::runtime::maybe_grow_stack(|| {
11128                <Identifier as ::treesitter_types::FromNode>::from_node(node, src)
11129            })
11130            .map(Self::Identifier)
11131            .unwrap_or(Self::Unknown(node)),
11132            "integer" => ::treesitter_types::runtime::maybe_grow_stack(|| {
11133                <Integer as ::treesitter_types::FromNode>::from_node(node, src)
11134            })
11135            .map(Self::Integer)
11136            .unwrap_or(Self::Unknown(node)),
11137            "line_continuation" => ::treesitter_types::runtime::maybe_grow_stack(|| {
11138                <LineContinuation as ::treesitter_types::FromNode>::from_node(node, src)
11139            })
11140            .map(Self::LineContinuation)
11141            .unwrap_or(Self::Unknown(node)),
11142            "none" => ::treesitter_types::runtime::maybe_grow_stack(|| {
11143                <None as ::treesitter_types::FromNode>::from_node(node, src)
11144            })
11145            .map(Self::None)
11146            .unwrap_or(Self::Unknown(node)),
11147            "string_end" => ::treesitter_types::runtime::maybe_grow_stack(|| {
11148                <StringEnd as ::treesitter_types::FromNode>::from_node(node, src)
11149            })
11150            .map(Self::StringEnd)
11151            .unwrap_or(Self::Unknown(node)),
11152            "string_start" => ::treesitter_types::runtime::maybe_grow_stack(|| {
11153                <StringStart as ::treesitter_types::FromNode>::from_node(node, src)
11154            })
11155            .map(Self::StringStart)
11156            .unwrap_or(Self::Unknown(node)),
11157            "true" => ::treesitter_types::runtime::maybe_grow_stack(|| {
11158                <True as ::treesitter_types::FromNode>::from_node(node, src)
11159            })
11160            .map(Self::True)
11161            .unwrap_or(Self::Unknown(node)),
11162            "type_conversion" => ::treesitter_types::runtime::maybe_grow_stack(|| {
11163                <TypeConversion as ::treesitter_types::FromNode>::from_node(node, src)
11164            })
11165            .map(Self::TypeConversion)
11166            .unwrap_or(Self::Unknown(node)),
11167            "as_pattern_target" => ::treesitter_types::runtime::maybe_grow_stack(|| {
11168                <AsPatternTarget as ::treesitter_types::FromNode>::from_node(node, src)
11169            })
11170            .map(Self::AsPatternTarget)
11171            .unwrap_or(Self::Unknown(node)),
11172            _ => Self::Unknown(node),
11173        }
11174    }
11175}
11176impl ::treesitter_types::Spanned for AnyNode<'_> {
11177    fn span(&self) -> ::treesitter_types::Span {
11178        match self {
11179            Self::CompoundStatement(inner) => inner.span(),
11180            Self::SimpleStatement(inner) => inner.span(),
11181            Self::Expression(inner) => inner.span(),
11182            Self::Parameter(inner) => inner.span(),
11183            Self::Pattern(inner) => inner.span(),
11184            Self::PrimaryExpression(inner) => inner.span(),
11185            Self::AliasedImport(inner) => inner.span(),
11186            Self::ArgumentList(inner) => inner.span(),
11187            Self::AsPattern(inner) => inner.span(),
11188            Self::AssertStatement(inner) => inner.span(),
11189            Self::Assignment(inner) => inner.span(),
11190            Self::Attribute(inner) => inner.span(),
11191            Self::AugmentedAssignment(inner) => inner.span(),
11192            Self::Await(inner) => inner.span(),
11193            Self::BinaryOperator(inner) => inner.span(),
11194            Self::Block(inner) => inner.span(),
11195            Self::BooleanOperator(inner) => inner.span(),
11196            Self::BreakStatement(inner) => inner.span(),
11197            Self::Call(inner) => inner.span(),
11198            Self::CaseClause(inner) => inner.span(),
11199            Self::CasePattern(inner) => inner.span(),
11200            Self::Chevron(inner) => inner.span(),
11201            Self::ClassDefinition(inner) => inner.span(),
11202            Self::ClassPattern(inner) => inner.span(),
11203            Self::ComparisonOperator(inner) => inner.span(),
11204            Self::ComplexPattern(inner) => inner.span(),
11205            Self::ConcatenatedString(inner) => inner.span(),
11206            Self::ConditionalExpression(inner) => inner.span(),
11207            Self::ConstrainedType(inner) => inner.span(),
11208            Self::ContinueStatement(inner) => inner.span(),
11209            Self::DecoratedDefinition(inner) => inner.span(),
11210            Self::Decorator(inner) => inner.span(),
11211            Self::DefaultParameter(inner) => inner.span(),
11212            Self::DeleteStatement(inner) => inner.span(),
11213            Self::DictPattern(inner) => inner.span(),
11214            Self::Dictionary(inner) => inner.span(),
11215            Self::DictionaryComprehension(inner) => inner.span(),
11216            Self::DictionarySplat(inner) => inner.span(),
11217            Self::DictionarySplatPattern(inner) => inner.span(),
11218            Self::DottedName(inner) => inner.span(),
11219            Self::ElifClause(inner) => inner.span(),
11220            Self::ElseClause(inner) => inner.span(),
11221            Self::ExceptClause(inner) => inner.span(),
11222            Self::ExecStatement(inner) => inner.span(),
11223            Self::ExpressionList(inner) => inner.span(),
11224            Self::ExpressionStatement(inner) => inner.span(),
11225            Self::FinallyClause(inner) => inner.span(),
11226            Self::ForInClause(inner) => inner.span(),
11227            Self::ForStatement(inner) => inner.span(),
11228            Self::FormatExpression(inner) => inner.span(),
11229            Self::FormatSpecifier(inner) => inner.span(),
11230            Self::FunctionDefinition(inner) => inner.span(),
11231            Self::FutureImportStatement(inner) => inner.span(),
11232            Self::GeneratorExpression(inner) => inner.span(),
11233            Self::GenericType(inner) => inner.span(),
11234            Self::GlobalStatement(inner) => inner.span(),
11235            Self::IfClause(inner) => inner.span(),
11236            Self::IfStatement(inner) => inner.span(),
11237            Self::ImportFromStatement(inner) => inner.span(),
11238            Self::ImportPrefix(inner) => inner.span(),
11239            Self::ImportStatement(inner) => inner.span(),
11240            Self::Interpolation(inner) => inner.span(),
11241            Self::KeywordArgument(inner) => inner.span(),
11242            Self::KeywordPattern(inner) => inner.span(),
11243            Self::KeywordSeparator(inner) => inner.span(),
11244            Self::Lambda(inner) => inner.span(),
11245            Self::LambdaParameters(inner) => inner.span(),
11246            Self::List(inner) => inner.span(),
11247            Self::ListComprehension(inner) => inner.span(),
11248            Self::ListPattern(inner) => inner.span(),
11249            Self::ListSplat(inner) => inner.span(),
11250            Self::ListSplatPattern(inner) => inner.span(),
11251            Self::MatchStatement(inner) => inner.span(),
11252            Self::MemberType(inner) => inner.span(),
11253            Self::Module(inner) => inner.span(),
11254            Self::NamedExpression(inner) => inner.span(),
11255            Self::NonlocalStatement(inner) => inner.span(),
11256            Self::NotOperator(inner) => inner.span(),
11257            Self::Pair(inner) => inner.span(),
11258            Self::Parameters(inner) => inner.span(),
11259            Self::ParenthesizedExpression(inner) => inner.span(),
11260            Self::ParenthesizedListSplat(inner) => inner.span(),
11261            Self::PassStatement(inner) => inner.span(),
11262            Self::PatternList(inner) => inner.span(),
11263            Self::PositionalSeparator(inner) => inner.span(),
11264            Self::PrintStatement(inner) => inner.span(),
11265            Self::RaiseStatement(inner) => inner.span(),
11266            Self::RelativeImport(inner) => inner.span(),
11267            Self::ReturnStatement(inner) => inner.span(),
11268            Self::Set(inner) => inner.span(),
11269            Self::SetComprehension(inner) => inner.span(),
11270            Self::Slice(inner) => inner.span(),
11271            Self::SplatPattern(inner) => inner.span(),
11272            Self::SplatType(inner) => inner.span(),
11273            Self::String(inner) => inner.span(),
11274            Self::StringContent(inner) => inner.span(),
11275            Self::Subscript(inner) => inner.span(),
11276            Self::TryStatement(inner) => inner.span(),
11277            Self::Tuple(inner) => inner.span(),
11278            Self::TuplePattern(inner) => inner.span(),
11279            Self::Type(inner) => inner.span(),
11280            Self::TypeAliasStatement(inner) => inner.span(),
11281            Self::TypeParameter(inner) => inner.span(),
11282            Self::TypedDefaultParameter(inner) => inner.span(),
11283            Self::TypedParameter(inner) => inner.span(),
11284            Self::UnaryOperator(inner) => inner.span(),
11285            Self::UnionPattern(inner) => inner.span(),
11286            Self::UnionType(inner) => inner.span(),
11287            Self::WhileStatement(inner) => inner.span(),
11288            Self::WildcardImport(inner) => inner.span(),
11289            Self::WithClause(inner) => inner.span(),
11290            Self::WithItem(inner) => inner.span(),
11291            Self::WithStatement(inner) => inner.span(),
11292            Self::Yield(inner) => inner.span(),
11293            Self::Comment(inner) => inner.span(),
11294            Self::Ellipsis(inner) => inner.span(),
11295            Self::EscapeInterpolation(inner) => inner.span(),
11296            Self::EscapeSequence(inner) => inner.span(),
11297            Self::False(inner) => inner.span(),
11298            Self::Float(inner) => inner.span(),
11299            Self::Identifier(inner) => inner.span(),
11300            Self::Integer(inner) => inner.span(),
11301            Self::LineContinuation(inner) => inner.span(),
11302            Self::None(inner) => inner.span(),
11303            Self::StringEnd(inner) => inner.span(),
11304            Self::StringStart(inner) => inner.span(),
11305            Self::True(inner) => inner.span(),
11306            Self::TypeConversion(inner) => inner.span(),
11307            Self::AsPatternTarget(inner) => inner.span(),
11308            Self::Unknown(node) => ::treesitter_types::Span::from(*node),
11309        }
11310    }
11311}