Skip to main content

treesitter_types_python/
generated.rs

1#[derive(Debug, Clone)]
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: ::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                <ClassDefinition as ::treesitter_types::FromNode>::from_node(node, src)?,
22            ))),
23            "decorated_definition" => Ok(Self::DecoratedDefinition(::std::boxed::Box::new(
24                <DecoratedDefinition as ::treesitter_types::FromNode>::from_node(node, src)?,
25            ))),
26            "for_statement" => Ok(Self::ForStatement(::std::boxed::Box::new(
27                <ForStatement as ::treesitter_types::FromNode>::from_node(node, src)?,
28            ))),
29            "function_definition" => Ok(Self::FunctionDefinition(::std::boxed::Box::new(
30                <FunctionDefinition as ::treesitter_types::FromNode>::from_node(node, src)?,
31            ))),
32            "if_statement" => Ok(Self::IfStatement(::std::boxed::Box::new(
33                <IfStatement as ::treesitter_types::FromNode>::from_node(node, src)?,
34            ))),
35            "match_statement" => Ok(Self::MatchStatement(::std::boxed::Box::new(
36                <MatchStatement as ::treesitter_types::FromNode>::from_node(node, src)?,
37            ))),
38            "try_statement" => Ok(Self::TryStatement(::std::boxed::Box::new(
39                <TryStatement as ::treesitter_types::FromNode>::from_node(node, src)?,
40            ))),
41            "while_statement" => Ok(Self::WhileStatement(::std::boxed::Box::new(
42                <WhileStatement as ::treesitter_types::FromNode>::from_node(node, src)?,
43            ))),
44            "with_statement" => Ok(Self::WithStatement(::std::boxed::Box::new(
45                <WithStatement as ::treesitter_types::FromNode>::from_node(node, src)?,
46            ))),
47            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
48        }
49    }
50}
51impl ::treesitter_types::Spanned for CompoundStatement<'_> {
52    fn span(&self) -> ::treesitter_types::Span {
53        match self {
54            Self::ClassDefinition(inner) => inner.span(),
55            Self::DecoratedDefinition(inner) => inner.span(),
56            Self::ForStatement(inner) => inner.span(),
57            Self::FunctionDefinition(inner) => inner.span(),
58            Self::IfStatement(inner) => inner.span(),
59            Self::MatchStatement(inner) => inner.span(),
60            Self::TryStatement(inner) => inner.span(),
61            Self::WhileStatement(inner) => inner.span(),
62            Self::WithStatement(inner) => inner.span(),
63        }
64    }
65}
66#[derive(Debug, Clone)]
67pub enum SimpleStatement<'tree> {
68    AssertStatement(::std::boxed::Box<AssertStatement<'tree>>),
69    BreakStatement(::std::boxed::Box<BreakStatement<'tree>>),
70    ContinueStatement(::std::boxed::Box<ContinueStatement<'tree>>),
71    DeleteStatement(::std::boxed::Box<DeleteStatement<'tree>>),
72    ExecStatement(::std::boxed::Box<ExecStatement<'tree>>),
73    ExpressionStatement(::std::boxed::Box<ExpressionStatement<'tree>>),
74    FutureImportStatement(::std::boxed::Box<FutureImportStatement<'tree>>),
75    GlobalStatement(::std::boxed::Box<GlobalStatement<'tree>>),
76    ImportFromStatement(::std::boxed::Box<ImportFromStatement<'tree>>),
77    ImportStatement(::std::boxed::Box<ImportStatement<'tree>>),
78    NonlocalStatement(::std::boxed::Box<NonlocalStatement<'tree>>),
79    PassStatement(::std::boxed::Box<PassStatement<'tree>>),
80    PrintStatement(::std::boxed::Box<PrintStatement<'tree>>),
81    RaiseStatement(::std::boxed::Box<RaiseStatement<'tree>>),
82    ReturnStatement(::std::boxed::Box<ReturnStatement<'tree>>),
83    TypeAliasStatement(::std::boxed::Box<TypeAliasStatement<'tree>>),
84}
85impl<'tree> ::treesitter_types::FromNode<'tree> for SimpleStatement<'tree> {
86    #[allow(clippy::collapsible_else_if)]
87    fn from_node(
88        node: ::tree_sitter::Node<'tree>,
89        src: &'tree [u8],
90    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
91        match node.kind() {
92            "assert_statement" => Ok(Self::AssertStatement(::std::boxed::Box::new(
93                <AssertStatement as ::treesitter_types::FromNode>::from_node(node, src)?,
94            ))),
95            "break_statement" => Ok(Self::BreakStatement(::std::boxed::Box::new(
96                <BreakStatement as ::treesitter_types::FromNode>::from_node(node, src)?,
97            ))),
98            "continue_statement" => Ok(Self::ContinueStatement(::std::boxed::Box::new(
99                <ContinueStatement as ::treesitter_types::FromNode>::from_node(node, src)?,
100            ))),
101            "delete_statement" => Ok(Self::DeleteStatement(::std::boxed::Box::new(
102                <DeleteStatement as ::treesitter_types::FromNode>::from_node(node, src)?,
103            ))),
104            "exec_statement" => Ok(Self::ExecStatement(::std::boxed::Box::new(
105                <ExecStatement as ::treesitter_types::FromNode>::from_node(node, src)?,
106            ))),
107            "expression_statement" => Ok(Self::ExpressionStatement(::std::boxed::Box::new(
108                <ExpressionStatement as ::treesitter_types::FromNode>::from_node(node, src)?,
109            ))),
110            "future_import_statement" => Ok(Self::FutureImportStatement(::std::boxed::Box::new(
111                <FutureImportStatement as ::treesitter_types::FromNode>::from_node(node, src)?,
112            ))),
113            "global_statement" => Ok(Self::GlobalStatement(::std::boxed::Box::new(
114                <GlobalStatement as ::treesitter_types::FromNode>::from_node(node, src)?,
115            ))),
116            "import_from_statement" => Ok(Self::ImportFromStatement(::std::boxed::Box::new(
117                <ImportFromStatement as ::treesitter_types::FromNode>::from_node(node, src)?,
118            ))),
119            "import_statement" => Ok(Self::ImportStatement(::std::boxed::Box::new(
120                <ImportStatement as ::treesitter_types::FromNode>::from_node(node, src)?,
121            ))),
122            "nonlocal_statement" => Ok(Self::NonlocalStatement(::std::boxed::Box::new(
123                <NonlocalStatement as ::treesitter_types::FromNode>::from_node(node, src)?,
124            ))),
125            "pass_statement" => Ok(Self::PassStatement(::std::boxed::Box::new(
126                <PassStatement as ::treesitter_types::FromNode>::from_node(node, src)?,
127            ))),
128            "print_statement" => Ok(Self::PrintStatement(::std::boxed::Box::new(
129                <PrintStatement as ::treesitter_types::FromNode>::from_node(node, src)?,
130            ))),
131            "raise_statement" => Ok(Self::RaiseStatement(::std::boxed::Box::new(
132                <RaiseStatement as ::treesitter_types::FromNode>::from_node(node, src)?,
133            ))),
134            "return_statement" => Ok(Self::ReturnStatement(::std::boxed::Box::new(
135                <ReturnStatement as ::treesitter_types::FromNode>::from_node(node, src)?,
136            ))),
137            "type_alias_statement" => Ok(Self::TypeAliasStatement(::std::boxed::Box::new(
138                <TypeAliasStatement as ::treesitter_types::FromNode>::from_node(node, src)?,
139            ))),
140            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
141        }
142    }
143}
144impl ::treesitter_types::Spanned for SimpleStatement<'_> {
145    fn span(&self) -> ::treesitter_types::Span {
146        match self {
147            Self::AssertStatement(inner) => inner.span(),
148            Self::BreakStatement(inner) => inner.span(),
149            Self::ContinueStatement(inner) => inner.span(),
150            Self::DeleteStatement(inner) => inner.span(),
151            Self::ExecStatement(inner) => inner.span(),
152            Self::ExpressionStatement(inner) => inner.span(),
153            Self::FutureImportStatement(inner) => inner.span(),
154            Self::GlobalStatement(inner) => inner.span(),
155            Self::ImportFromStatement(inner) => inner.span(),
156            Self::ImportStatement(inner) => inner.span(),
157            Self::NonlocalStatement(inner) => inner.span(),
158            Self::PassStatement(inner) => inner.span(),
159            Self::PrintStatement(inner) => inner.span(),
160            Self::RaiseStatement(inner) => inner.span(),
161            Self::ReturnStatement(inner) => inner.span(),
162            Self::TypeAliasStatement(inner) => inner.span(),
163        }
164    }
165}
166#[derive(Debug, Clone)]
167pub enum Expression<'tree> {
168    AsPattern(::std::boxed::Box<AsPattern<'tree>>),
169    BooleanOperator(::std::boxed::Box<BooleanOperator<'tree>>),
170    ComparisonOperator(::std::boxed::Box<ComparisonOperator<'tree>>),
171    ConditionalExpression(::std::boxed::Box<ConditionalExpression<'tree>>),
172    Lambda(::std::boxed::Box<Lambda<'tree>>),
173    NamedExpression(::std::boxed::Box<NamedExpression<'tree>>),
174    NotOperator(::std::boxed::Box<NotOperator<'tree>>),
175    PrimaryExpression(::std::boxed::Box<PrimaryExpression<'tree>>),
176}
177impl<'tree> ::treesitter_types::FromNode<'tree> for Expression<'tree> {
178    #[allow(clippy::collapsible_else_if)]
179    fn from_node(
180        node: ::tree_sitter::Node<'tree>,
181        src: &'tree [u8],
182    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
183        match node.kind() {
184            "as_pattern" => Ok(Self::AsPattern(::std::boxed::Box::new(
185                <AsPattern as ::treesitter_types::FromNode>::from_node(node, src)?,
186            ))),
187            "boolean_operator" => Ok(Self::BooleanOperator(::std::boxed::Box::new(
188                <BooleanOperator as ::treesitter_types::FromNode>::from_node(node, src)?,
189            ))),
190            "comparison_operator" => Ok(Self::ComparisonOperator(::std::boxed::Box::new(
191                <ComparisonOperator as ::treesitter_types::FromNode>::from_node(node, src)?,
192            ))),
193            "conditional_expression" => Ok(Self::ConditionalExpression(::std::boxed::Box::new(
194                <ConditionalExpression as ::treesitter_types::FromNode>::from_node(node, src)?,
195            ))),
196            "lambda" => Ok(Self::Lambda(::std::boxed::Box::new(
197                <Lambda as ::treesitter_types::FromNode>::from_node(node, src)?,
198            ))),
199            "named_expression" => Ok(Self::NamedExpression(::std::boxed::Box::new(
200                <NamedExpression as ::treesitter_types::FromNode>::from_node(node, src)?,
201            ))),
202            "not_operator" => Ok(Self::NotOperator(::std::boxed::Box::new(
203                <NotOperator as ::treesitter_types::FromNode>::from_node(node, src)?,
204            ))),
205            _other => {
206                if let Ok(v) =
207                    <PrimaryExpression as ::treesitter_types::FromNode>::from_node(node, src)
208                {
209                    Ok(Self::PrimaryExpression(::std::boxed::Box::new(v)))
210                } else {
211                    Err(::treesitter_types::ParseError::unexpected_kind(
212                        _other, node,
213                    ))
214                }
215            }
216        }
217    }
218}
219impl ::treesitter_types::Spanned for Expression<'_> {
220    fn span(&self) -> ::treesitter_types::Span {
221        match self {
222            Self::AsPattern(inner) => inner.span(),
223            Self::BooleanOperator(inner) => inner.span(),
224            Self::ComparisonOperator(inner) => inner.span(),
225            Self::ConditionalExpression(inner) => inner.span(),
226            Self::Lambda(inner) => inner.span(),
227            Self::NamedExpression(inner) => inner.span(),
228            Self::NotOperator(inner) => inner.span(),
229            Self::PrimaryExpression(inner) => inner.span(),
230        }
231    }
232}
233#[derive(Debug, Clone)]
234pub enum Parameter<'tree> {
235    DefaultParameter(::std::boxed::Box<DefaultParameter<'tree>>),
236    DictionarySplatPattern(::std::boxed::Box<DictionarySplatPattern<'tree>>),
237    Identifier(::std::boxed::Box<Identifier<'tree>>),
238    KeywordSeparator(::std::boxed::Box<KeywordSeparator<'tree>>),
239    ListSplatPattern(::std::boxed::Box<ListSplatPattern<'tree>>),
240    PositionalSeparator(::std::boxed::Box<PositionalSeparator<'tree>>),
241    TuplePattern(::std::boxed::Box<TuplePattern<'tree>>),
242    TypedDefaultParameter(::std::boxed::Box<TypedDefaultParameter<'tree>>),
243    TypedParameter(::std::boxed::Box<TypedParameter<'tree>>),
244}
245impl<'tree> ::treesitter_types::FromNode<'tree> for Parameter<'tree> {
246    #[allow(clippy::collapsible_else_if)]
247    fn from_node(
248        node: ::tree_sitter::Node<'tree>,
249        src: &'tree [u8],
250    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
251        match node.kind() {
252            "default_parameter" => Ok(Self::DefaultParameter(::std::boxed::Box::new(
253                <DefaultParameter as ::treesitter_types::FromNode>::from_node(node, src)?,
254            ))),
255            "dictionary_splat_pattern" => Ok(Self::DictionarySplatPattern(::std::boxed::Box::new(
256                <DictionarySplatPattern as ::treesitter_types::FromNode>::from_node(node, src)?,
257            ))),
258            "identifier" => Ok(Self::Identifier(::std::boxed::Box::new(
259                <Identifier as ::treesitter_types::FromNode>::from_node(node, src)?,
260            ))),
261            "keyword_separator" => Ok(Self::KeywordSeparator(::std::boxed::Box::new(
262                <KeywordSeparator as ::treesitter_types::FromNode>::from_node(node, src)?,
263            ))),
264            "list_splat_pattern" => Ok(Self::ListSplatPattern(::std::boxed::Box::new(
265                <ListSplatPattern as ::treesitter_types::FromNode>::from_node(node, src)?,
266            ))),
267            "positional_separator" => Ok(Self::PositionalSeparator(::std::boxed::Box::new(
268                <PositionalSeparator as ::treesitter_types::FromNode>::from_node(node, src)?,
269            ))),
270            "tuple_pattern" => Ok(Self::TuplePattern(::std::boxed::Box::new(
271                <TuplePattern as ::treesitter_types::FromNode>::from_node(node, src)?,
272            ))),
273            "typed_default_parameter" => Ok(Self::TypedDefaultParameter(::std::boxed::Box::new(
274                <TypedDefaultParameter as ::treesitter_types::FromNode>::from_node(node, src)?,
275            ))),
276            "typed_parameter" => Ok(Self::TypedParameter(::std::boxed::Box::new(
277                <TypedParameter as ::treesitter_types::FromNode>::from_node(node, src)?,
278            ))),
279            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
280        }
281    }
282}
283impl ::treesitter_types::Spanned for Parameter<'_> {
284    fn span(&self) -> ::treesitter_types::Span {
285        match self {
286            Self::DefaultParameter(inner) => inner.span(),
287            Self::DictionarySplatPattern(inner) => inner.span(),
288            Self::Identifier(inner) => inner.span(),
289            Self::KeywordSeparator(inner) => inner.span(),
290            Self::ListSplatPattern(inner) => inner.span(),
291            Self::PositionalSeparator(inner) => inner.span(),
292            Self::TuplePattern(inner) => inner.span(),
293            Self::TypedDefaultParameter(inner) => inner.span(),
294            Self::TypedParameter(inner) => inner.span(),
295        }
296    }
297}
298#[derive(Debug, Clone)]
299pub enum Pattern<'tree> {
300    Attribute(::std::boxed::Box<Attribute<'tree>>),
301    Identifier(::std::boxed::Box<Identifier<'tree>>),
302    ListPattern(::std::boxed::Box<ListPattern<'tree>>),
303    ListSplatPattern(::std::boxed::Box<ListSplatPattern<'tree>>),
304    Subscript(::std::boxed::Box<Subscript<'tree>>),
305    TuplePattern(::std::boxed::Box<TuplePattern<'tree>>),
306}
307impl<'tree> ::treesitter_types::FromNode<'tree> for Pattern<'tree> {
308    #[allow(clippy::collapsible_else_if)]
309    fn from_node(
310        node: ::tree_sitter::Node<'tree>,
311        src: &'tree [u8],
312    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
313        match node.kind() {
314            "attribute" => Ok(Self::Attribute(::std::boxed::Box::new(
315                <Attribute as ::treesitter_types::FromNode>::from_node(node, src)?,
316            ))),
317            "identifier" => Ok(Self::Identifier(::std::boxed::Box::new(
318                <Identifier as ::treesitter_types::FromNode>::from_node(node, src)?,
319            ))),
320            "list_pattern" => Ok(Self::ListPattern(::std::boxed::Box::new(
321                <ListPattern as ::treesitter_types::FromNode>::from_node(node, src)?,
322            ))),
323            "list_splat_pattern" => Ok(Self::ListSplatPattern(::std::boxed::Box::new(
324                <ListSplatPattern as ::treesitter_types::FromNode>::from_node(node, src)?,
325            ))),
326            "subscript" => Ok(Self::Subscript(::std::boxed::Box::new(
327                <Subscript as ::treesitter_types::FromNode>::from_node(node, src)?,
328            ))),
329            "tuple_pattern" => Ok(Self::TuplePattern(::std::boxed::Box::new(
330                <TuplePattern as ::treesitter_types::FromNode>::from_node(node, src)?,
331            ))),
332            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
333        }
334    }
335}
336impl ::treesitter_types::Spanned for Pattern<'_> {
337    fn span(&self) -> ::treesitter_types::Span {
338        match self {
339            Self::Attribute(inner) => inner.span(),
340            Self::Identifier(inner) => inner.span(),
341            Self::ListPattern(inner) => inner.span(),
342            Self::ListSplatPattern(inner) => inner.span(),
343            Self::Subscript(inner) => inner.span(),
344            Self::TuplePattern(inner) => inner.span(),
345        }
346    }
347}
348#[derive(Debug, Clone)]
349pub enum PrimaryExpression<'tree> {
350    Attribute(::std::boxed::Box<Attribute<'tree>>),
351    Await(::std::boxed::Box<Await<'tree>>),
352    BinaryOperator(::std::boxed::Box<BinaryOperator<'tree>>),
353    Call(::std::boxed::Box<Call<'tree>>),
354    ConcatenatedString(::std::boxed::Box<ConcatenatedString<'tree>>),
355    Dictionary(::std::boxed::Box<Dictionary<'tree>>),
356    DictionaryComprehension(::std::boxed::Box<DictionaryComprehension<'tree>>),
357    Ellipsis(::std::boxed::Box<Ellipsis<'tree>>),
358    False(::std::boxed::Box<False<'tree>>),
359    Float(::std::boxed::Box<Float<'tree>>),
360    GeneratorExpression(::std::boxed::Box<GeneratorExpression<'tree>>),
361    Identifier(::std::boxed::Box<Identifier<'tree>>),
362    Integer(::std::boxed::Box<Integer<'tree>>),
363    List(::std::boxed::Box<List<'tree>>),
364    ListComprehension(::std::boxed::Box<ListComprehension<'tree>>),
365    ListSplat(::std::boxed::Box<ListSplat<'tree>>),
366    None(::std::boxed::Box<None<'tree>>),
367    ParenthesizedExpression(::std::boxed::Box<ParenthesizedExpression<'tree>>),
368    Set(::std::boxed::Box<Set<'tree>>),
369    SetComprehension(::std::boxed::Box<SetComprehension<'tree>>),
370    String(::std::boxed::Box<String<'tree>>),
371    Subscript(::std::boxed::Box<Subscript<'tree>>),
372    True(::std::boxed::Box<True<'tree>>),
373    Tuple(::std::boxed::Box<Tuple<'tree>>),
374    UnaryOperator(::std::boxed::Box<UnaryOperator<'tree>>),
375}
376impl<'tree> ::treesitter_types::FromNode<'tree> for PrimaryExpression<'tree> {
377    #[allow(clippy::collapsible_else_if)]
378    fn from_node(
379        node: ::tree_sitter::Node<'tree>,
380        src: &'tree [u8],
381    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
382        match node.kind() {
383            "attribute" => Ok(Self::Attribute(::std::boxed::Box::new(
384                <Attribute as ::treesitter_types::FromNode>::from_node(node, src)?,
385            ))),
386            "await" => Ok(Self::Await(::std::boxed::Box::new(
387                <Await as ::treesitter_types::FromNode>::from_node(node, src)?,
388            ))),
389            "binary_operator" => Ok(Self::BinaryOperator(::std::boxed::Box::new(
390                <BinaryOperator as ::treesitter_types::FromNode>::from_node(node, src)?,
391            ))),
392            "call" => Ok(Self::Call(::std::boxed::Box::new(
393                <Call as ::treesitter_types::FromNode>::from_node(node, src)?,
394            ))),
395            "concatenated_string" => Ok(Self::ConcatenatedString(::std::boxed::Box::new(
396                <ConcatenatedString as ::treesitter_types::FromNode>::from_node(node, src)?,
397            ))),
398            "dictionary" => Ok(Self::Dictionary(::std::boxed::Box::new(
399                <Dictionary as ::treesitter_types::FromNode>::from_node(node, src)?,
400            ))),
401            "dictionary_comprehension" => {
402                Ok(Self::DictionaryComprehension(::std::boxed::Box::new(
403                    <DictionaryComprehension as ::treesitter_types::FromNode>::from_node(
404                        node, src,
405                    )?,
406                )))
407            }
408            "ellipsis" => Ok(Self::Ellipsis(::std::boxed::Box::new(
409                <Ellipsis as ::treesitter_types::FromNode>::from_node(node, src)?,
410            ))),
411            "false" => Ok(Self::False(::std::boxed::Box::new(
412                <False as ::treesitter_types::FromNode>::from_node(node, src)?,
413            ))),
414            "float" => Ok(Self::Float(::std::boxed::Box::new(
415                <Float as ::treesitter_types::FromNode>::from_node(node, src)?,
416            ))),
417            "generator_expression" => Ok(Self::GeneratorExpression(::std::boxed::Box::new(
418                <GeneratorExpression as ::treesitter_types::FromNode>::from_node(node, src)?,
419            ))),
420            "identifier" => Ok(Self::Identifier(::std::boxed::Box::new(
421                <Identifier as ::treesitter_types::FromNode>::from_node(node, src)?,
422            ))),
423            "integer" => Ok(Self::Integer(::std::boxed::Box::new(
424                <Integer as ::treesitter_types::FromNode>::from_node(node, src)?,
425            ))),
426            "list" => Ok(Self::List(::std::boxed::Box::new(
427                <List as ::treesitter_types::FromNode>::from_node(node, src)?,
428            ))),
429            "list_comprehension" => Ok(Self::ListComprehension(::std::boxed::Box::new(
430                <ListComprehension as ::treesitter_types::FromNode>::from_node(node, src)?,
431            ))),
432            "list_splat" => Ok(Self::ListSplat(::std::boxed::Box::new(
433                <ListSplat as ::treesitter_types::FromNode>::from_node(node, src)?,
434            ))),
435            "none" => Ok(Self::None(::std::boxed::Box::new(
436                <None as ::treesitter_types::FromNode>::from_node(node, src)?,
437            ))),
438            "parenthesized_expression" => {
439                Ok(Self::ParenthesizedExpression(::std::boxed::Box::new(
440                    <ParenthesizedExpression as ::treesitter_types::FromNode>::from_node(
441                        node, src,
442                    )?,
443                )))
444            }
445            "set" => Ok(Self::Set(::std::boxed::Box::new(
446                <Set as ::treesitter_types::FromNode>::from_node(node, src)?,
447            ))),
448            "set_comprehension" => Ok(Self::SetComprehension(::std::boxed::Box::new(
449                <SetComprehension as ::treesitter_types::FromNode>::from_node(node, src)?,
450            ))),
451            "string" => Ok(Self::String(::std::boxed::Box::new(
452                <String as ::treesitter_types::FromNode>::from_node(node, src)?,
453            ))),
454            "subscript" => Ok(Self::Subscript(::std::boxed::Box::new(
455                <Subscript as ::treesitter_types::FromNode>::from_node(node, src)?,
456            ))),
457            "true" => Ok(Self::True(::std::boxed::Box::new(
458                <True as ::treesitter_types::FromNode>::from_node(node, src)?,
459            ))),
460            "tuple" => Ok(Self::Tuple(::std::boxed::Box::new(
461                <Tuple as ::treesitter_types::FromNode>::from_node(node, src)?,
462            ))),
463            "unary_operator" => Ok(Self::UnaryOperator(::std::boxed::Box::new(
464                <UnaryOperator as ::treesitter_types::FromNode>::from_node(node, src)?,
465            ))),
466            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
467        }
468    }
469}
470impl ::treesitter_types::Spanned for PrimaryExpression<'_> {
471    fn span(&self) -> ::treesitter_types::Span {
472        match self {
473            Self::Attribute(inner) => inner.span(),
474            Self::Await(inner) => inner.span(),
475            Self::BinaryOperator(inner) => inner.span(),
476            Self::Call(inner) => inner.span(),
477            Self::ConcatenatedString(inner) => inner.span(),
478            Self::Dictionary(inner) => inner.span(),
479            Self::DictionaryComprehension(inner) => inner.span(),
480            Self::Ellipsis(inner) => inner.span(),
481            Self::False(inner) => inner.span(),
482            Self::Float(inner) => inner.span(),
483            Self::GeneratorExpression(inner) => inner.span(),
484            Self::Identifier(inner) => inner.span(),
485            Self::Integer(inner) => inner.span(),
486            Self::List(inner) => inner.span(),
487            Self::ListComprehension(inner) => inner.span(),
488            Self::ListSplat(inner) => inner.span(),
489            Self::None(inner) => inner.span(),
490            Self::ParenthesizedExpression(inner) => inner.span(),
491            Self::Set(inner) => inner.span(),
492            Self::SetComprehension(inner) => inner.span(),
493            Self::String(inner) => inner.span(),
494            Self::Subscript(inner) => inner.span(),
495            Self::True(inner) => inner.span(),
496            Self::Tuple(inner) => inner.span(),
497            Self::UnaryOperator(inner) => inner.span(),
498        }
499    }
500}
501#[derive(Debug, Clone)]
502pub struct AliasedImport<'tree> {
503    pub span: ::treesitter_types::Span,
504    pub alias: Identifier<'tree>,
505    pub name: DottedName<'tree>,
506}
507impl<'tree> ::treesitter_types::FromNode<'tree> for AliasedImport<'tree> {
508    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
509    fn from_node(
510        node: ::tree_sitter::Node<'tree>,
511        src: &'tree [u8],
512    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
513        debug_assert_eq!(node.kind(), "aliased_import");
514        Ok(Self {
515            span: ::treesitter_types::Span::from(node),
516            alias: {
517                let child = node
518                    .child_by_field_name("alias")
519                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("alias", node))?;
520                <Identifier as ::treesitter_types::FromNode>::from_node(child, src)?
521            },
522            name: {
523                let child = node
524                    .child_by_field_name("name")
525                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("name", node))?;
526                <DottedName as ::treesitter_types::FromNode>::from_node(child, src)?
527            },
528        })
529    }
530}
531impl ::treesitter_types::Spanned for AliasedImport<'_> {
532    fn span(&self) -> ::treesitter_types::Span {
533        self.span
534    }
535}
536#[derive(Debug, Clone)]
537pub struct ArgumentList<'tree> {
538    pub span: ::treesitter_types::Span,
539    pub children: ::std::vec::Vec<ArgumentListChildren<'tree>>,
540}
541impl<'tree> ::treesitter_types::FromNode<'tree> for ArgumentList<'tree> {
542    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
543    fn from_node(
544        node: ::tree_sitter::Node<'tree>,
545        src: &'tree [u8],
546    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
547        debug_assert_eq!(node.kind(), "argument_list");
548        Ok(Self {
549            span: ::treesitter_types::Span::from(node),
550            children: {
551                #[allow(clippy::suspicious_else_formatting)]
552                let non_field_children = {
553                    let mut cursor = node.walk();
554                    let mut result = ::std::vec::Vec::new();
555                    if cursor.goto_first_child() {
556                        loop {
557                            if cursor.field_name().is_none()
558                                && cursor.node().is_named()
559                                && !cursor.node().is_extra()
560                            {
561                                result.push(cursor.node());
562                            }
563                            if !cursor.goto_next_sibling() {
564                                break;
565                            }
566                        }
567                    }
568                    result
569                };
570                let mut items = ::std::vec::Vec::new();
571                for child in non_field_children {
572                    items.push(
573                        <ArgumentListChildren as ::treesitter_types::FromNode>::from_node(
574                            child, src,
575                        )?,
576                    );
577                }
578                items
579            },
580        })
581    }
582}
583impl ::treesitter_types::Spanned for ArgumentList<'_> {
584    fn span(&self) -> ::treesitter_types::Span {
585        self.span
586    }
587}
588#[derive(Debug, Clone)]
589pub struct AsPattern<'tree> {
590    pub span: ::treesitter_types::Span,
591    pub alias: ::core::option::Option<AsPatternTarget<'tree>>,
592    pub children: ::std::vec::Vec<AsPatternChildren<'tree>>,
593}
594impl<'tree> ::treesitter_types::FromNode<'tree> for AsPattern<'tree> {
595    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
596    fn from_node(
597        node: ::tree_sitter::Node<'tree>,
598        src: &'tree [u8],
599    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
600        debug_assert_eq!(node.kind(), "as_pattern");
601        Ok(Self {
602            span: ::treesitter_types::Span::from(node),
603            alias: match node.child_by_field_name("alias") {
604                Some(child) => {
605                    Some(<AsPatternTarget as ::treesitter_types::FromNode>::from_node(child, src)?)
606                }
607                None => None,
608            },
609            children: {
610                #[allow(clippy::suspicious_else_formatting)]
611                let non_field_children = {
612                    let mut cursor = node.walk();
613                    let mut result = ::std::vec::Vec::new();
614                    if cursor.goto_first_child() {
615                        loop {
616                            if cursor.field_name().is_none()
617                                && cursor.node().is_named()
618                                && !cursor.node().is_extra()
619                            {
620                                result.push(cursor.node());
621                            }
622                            if !cursor.goto_next_sibling() {
623                                break;
624                            }
625                        }
626                    }
627                    result
628                };
629                let mut items = ::std::vec::Vec::new();
630                for child in non_field_children {
631                    items.push(
632                        <AsPatternChildren as ::treesitter_types::FromNode>::from_node(child, src)?,
633                    );
634                }
635                items
636            },
637        })
638    }
639}
640impl ::treesitter_types::Spanned for AsPattern<'_> {
641    fn span(&self) -> ::treesitter_types::Span {
642        self.span
643    }
644}
645#[derive(Debug, Clone)]
646pub struct AssertStatement<'tree> {
647    pub span: ::treesitter_types::Span,
648    pub children: ::std::vec::Vec<Expression<'tree>>,
649}
650impl<'tree> ::treesitter_types::FromNode<'tree> for AssertStatement<'tree> {
651    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
652    fn from_node(
653        node: ::tree_sitter::Node<'tree>,
654        src: &'tree [u8],
655    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
656        debug_assert_eq!(node.kind(), "assert_statement");
657        Ok(Self {
658            span: ::treesitter_types::Span::from(node),
659            children: {
660                #[allow(clippy::suspicious_else_formatting)]
661                let non_field_children = {
662                    let mut cursor = node.walk();
663                    let mut result = ::std::vec::Vec::new();
664                    if cursor.goto_first_child() {
665                        loop {
666                            if cursor.field_name().is_none()
667                                && cursor.node().is_named()
668                                && !cursor.node().is_extra()
669                            {
670                                result.push(cursor.node());
671                            }
672                            if !cursor.goto_next_sibling() {
673                                break;
674                            }
675                        }
676                    }
677                    result
678                };
679                let mut items = ::std::vec::Vec::new();
680                for child in non_field_children {
681                    items.push(<Expression as ::treesitter_types::FromNode>::from_node(
682                        child, src,
683                    )?);
684                }
685                items
686            },
687        })
688    }
689}
690impl ::treesitter_types::Spanned for AssertStatement<'_> {
691    fn span(&self) -> ::treesitter_types::Span {
692        self.span
693    }
694}
695#[derive(Debug, Clone)]
696pub struct Assignment<'tree> {
697    pub span: ::treesitter_types::Span,
698    pub left: AssignmentLeft<'tree>,
699    pub right: ::core::option::Option<AssignmentRight<'tree>>,
700    pub r#type: ::core::option::Option<Type<'tree>>,
701}
702impl<'tree> ::treesitter_types::FromNode<'tree> for Assignment<'tree> {
703    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
704    fn from_node(
705        node: ::tree_sitter::Node<'tree>,
706        src: &'tree [u8],
707    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
708        debug_assert_eq!(node.kind(), "assignment");
709        Ok(Self {
710            span: ::treesitter_types::Span::from(node),
711            left: {
712                let child = node
713                    .child_by_field_name("left")
714                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("left", node))?;
715                <AssignmentLeft as ::treesitter_types::FromNode>::from_node(child, src)?
716            },
717            right: match node.child_by_field_name("right") {
718                Some(child) => {
719                    Some(<AssignmentRight as ::treesitter_types::FromNode>::from_node(child, src)?)
720                }
721                None => None,
722            },
723            r#type: match node.child_by_field_name("type") {
724                Some(child) => Some(<Type as ::treesitter_types::FromNode>::from_node(
725                    child, src,
726                )?),
727                None => None,
728            },
729        })
730    }
731}
732impl ::treesitter_types::Spanned for Assignment<'_> {
733    fn span(&self) -> ::treesitter_types::Span {
734        self.span
735    }
736}
737#[derive(Debug, Clone)]
738pub struct Attribute<'tree> {
739    pub span: ::treesitter_types::Span,
740    pub attribute: Identifier<'tree>,
741    pub object: PrimaryExpression<'tree>,
742}
743impl<'tree> ::treesitter_types::FromNode<'tree> for Attribute<'tree> {
744    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
745    fn from_node(
746        node: ::tree_sitter::Node<'tree>,
747        src: &'tree [u8],
748    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
749        debug_assert_eq!(node.kind(), "attribute");
750        Ok(Self {
751            span: ::treesitter_types::Span::from(node),
752            attribute: {
753                let child = node.child_by_field_name("attribute").ok_or_else(|| {
754                    ::treesitter_types::ParseError::missing_field("attribute", node)
755                })?;
756                <Identifier as ::treesitter_types::FromNode>::from_node(child, src)?
757            },
758            object: {
759                let child = node
760                    .child_by_field_name("object")
761                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("object", node))?;
762                <PrimaryExpression as ::treesitter_types::FromNode>::from_node(child, src)?
763            },
764        })
765    }
766}
767impl ::treesitter_types::Spanned for Attribute<'_> {
768    fn span(&self) -> ::treesitter_types::Span {
769        self.span
770    }
771}
772#[derive(Debug, Clone)]
773pub struct AugmentedAssignment<'tree> {
774    pub span: ::treesitter_types::Span,
775    pub left: AugmentedAssignmentLeft<'tree>,
776    pub operator: AugmentedAssignmentOperator,
777    pub right: AugmentedAssignmentRight<'tree>,
778}
779impl<'tree> ::treesitter_types::FromNode<'tree> for AugmentedAssignment<'tree> {
780    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
781    fn from_node(
782        node: ::tree_sitter::Node<'tree>,
783        src: &'tree [u8],
784    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
785        debug_assert_eq!(node.kind(), "augmented_assignment");
786        Ok(Self {
787            span: ::treesitter_types::Span::from(node),
788            left: {
789                let child = node
790                    .child_by_field_name("left")
791                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("left", node))?;
792                <AugmentedAssignmentLeft as ::treesitter_types::FromNode>::from_node(child, src)?
793            },
794            operator: {
795                let child = node.child_by_field_name("operator").ok_or_else(|| {
796                    ::treesitter_types::ParseError::missing_field("operator", node)
797                })?;
798                <AugmentedAssignmentOperator as ::treesitter_types::FromNode>::from_node(
799                    child, src,
800                )?
801            },
802            right: {
803                let child = node
804                    .child_by_field_name("right")
805                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("right", node))?;
806                <AugmentedAssignmentRight as ::treesitter_types::FromNode>::from_node(child, src)?
807            },
808        })
809    }
810}
811impl ::treesitter_types::Spanned for AugmentedAssignment<'_> {
812    fn span(&self) -> ::treesitter_types::Span {
813        self.span
814    }
815}
816#[derive(Debug, Clone)]
817pub struct Await<'tree> {
818    pub span: ::treesitter_types::Span,
819    pub children: PrimaryExpression<'tree>,
820}
821impl<'tree> ::treesitter_types::FromNode<'tree> for Await<'tree> {
822    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
823    fn from_node(
824        node: ::tree_sitter::Node<'tree>,
825        src: &'tree [u8],
826    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
827        debug_assert_eq!(node.kind(), "await");
828        Ok(Self {
829            span: ::treesitter_types::Span::from(node),
830            children: {
831                #[allow(clippy::suspicious_else_formatting)]
832                let non_field_children = {
833                    let mut cursor = node.walk();
834                    let mut result = ::std::vec::Vec::new();
835                    if cursor.goto_first_child() {
836                        loop {
837                            if cursor.field_name().is_none()
838                                && cursor.node().is_named()
839                                && !cursor.node().is_extra()
840                            {
841                                result.push(cursor.node());
842                            }
843                            if !cursor.goto_next_sibling() {
844                                break;
845                            }
846                        }
847                    }
848                    result
849                };
850                let child = if let Some(&c) = non_field_children.first() {
851                    c
852                } else {
853                    let mut fallback_cursor = node.walk();
854                    let mut fallback_child = None;
855                    if fallback_cursor.goto_first_child() {
856                        loop {
857                            if fallback_cursor.field_name().is_none()
858                                && !fallback_cursor.node().is_extra()
859                            {
860                                let candidate = fallback_cursor.node();
861                                #[allow(clippy::needless_question_mark)]
862                                if (|| -> ::core::result::Result<
863                                    _,
864                                    ::treesitter_types::ParseError,
865                                > {
866                                    let child = candidate;
867                                    Ok(
868                                        <PrimaryExpression as ::treesitter_types::FromNode>::from_node(
869                                            child,
870                                            src,
871                                        )?,
872                                    )
873                                })()
874                                    .is_ok()
875                                {
876                                    fallback_child = Some(candidate);
877                                    break;
878                                }
879                            }
880                            if !fallback_cursor.goto_next_sibling() {
881                                break;
882                            }
883                        }
884                    }
885                    if fallback_child.is_none() {
886                        let mut cursor2 = node.walk();
887                        if cursor2.goto_first_child() {
888                            loop {
889                                if cursor2.node().is_named() && !cursor2.node().is_extra() {
890                                    let candidate = cursor2.node();
891                                    #[allow(clippy::needless_question_mark)]
892                                    if (|| -> ::core::result::Result<
893                                        _,
894                                        ::treesitter_types::ParseError,
895                                    > {
896                                        let child = candidate;
897                                        Ok(
898                                            <PrimaryExpression as ::treesitter_types::FromNode>::from_node(
899                                                child,
900                                                src,
901                                            )?,
902                                        )
903                                    })()
904                                        .is_ok()
905                                    {
906                                        fallback_child = Some(candidate);
907                                        break;
908                                    }
909                                }
910                                if !cursor2.goto_next_sibling() {
911                                    break;
912                                }
913                            }
914                        }
915                    }
916                    fallback_child.ok_or_else(|| {
917                        ::treesitter_types::ParseError::missing_field("children", node)
918                    })?
919                };
920                <PrimaryExpression as ::treesitter_types::FromNode>::from_node(child, src)?
921            },
922        })
923    }
924}
925impl ::treesitter_types::Spanned for Await<'_> {
926    fn span(&self) -> ::treesitter_types::Span {
927        self.span
928    }
929}
930#[derive(Debug, Clone)]
931pub struct BinaryOperator<'tree> {
932    pub span: ::treesitter_types::Span,
933    pub left: PrimaryExpression<'tree>,
934    pub operator: BinaryOperatorOperator,
935    pub right: PrimaryExpression<'tree>,
936}
937impl<'tree> ::treesitter_types::FromNode<'tree> for BinaryOperator<'tree> {
938    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
939    fn from_node(
940        node: ::tree_sitter::Node<'tree>,
941        src: &'tree [u8],
942    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
943        debug_assert_eq!(node.kind(), "binary_operator");
944        Ok(Self {
945            span: ::treesitter_types::Span::from(node),
946            left: {
947                let child = node
948                    .child_by_field_name("left")
949                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("left", node))?;
950                <PrimaryExpression as ::treesitter_types::FromNode>::from_node(child, src)?
951            },
952            operator: {
953                let child = node.child_by_field_name("operator").ok_or_else(|| {
954                    ::treesitter_types::ParseError::missing_field("operator", node)
955                })?;
956                <BinaryOperatorOperator as ::treesitter_types::FromNode>::from_node(child, src)?
957            },
958            right: {
959                let child = node
960                    .child_by_field_name("right")
961                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("right", node))?;
962                <PrimaryExpression as ::treesitter_types::FromNode>::from_node(child, src)?
963            },
964        })
965    }
966}
967impl ::treesitter_types::Spanned for BinaryOperator<'_> {
968    fn span(&self) -> ::treesitter_types::Span {
969        self.span
970    }
971}
972#[derive(Debug, Clone)]
973pub struct Block<'tree> {
974    pub span: ::treesitter_types::Span,
975    pub alternative: ::std::vec::Vec<CaseClause<'tree>>,
976    pub children: ::std::vec::Vec<BlockChildren<'tree>>,
977}
978impl<'tree> ::treesitter_types::FromNode<'tree> for Block<'tree> {
979    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
980    fn from_node(
981        node: ::tree_sitter::Node<'tree>,
982        src: &'tree [u8],
983    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
984        debug_assert_eq!(node.kind(), "block");
985        Ok(Self {
986            span: ::treesitter_types::Span::from(node),
987            alternative: {
988                let mut cursor = node.walk();
989                let mut items = ::std::vec::Vec::new();
990                for child in node.children_by_field_name("alternative", &mut cursor) {
991                    items.push(<CaseClause as ::treesitter_types::FromNode>::from_node(
992                        child, src,
993                    )?);
994                }
995                items
996            },
997            children: {
998                #[allow(clippy::suspicious_else_formatting)]
999                let non_field_children = {
1000                    let mut cursor = node.walk();
1001                    let mut result = ::std::vec::Vec::new();
1002                    if cursor.goto_first_child() {
1003                        loop {
1004                            if cursor.field_name().is_none()
1005                                && cursor.node().is_named()
1006                                && !cursor.node().is_extra()
1007                            {
1008                                result.push(cursor.node());
1009                            }
1010                            if !cursor.goto_next_sibling() {
1011                                break;
1012                            }
1013                        }
1014                    }
1015                    result
1016                };
1017                let mut items = ::std::vec::Vec::new();
1018                for child in non_field_children {
1019                    items.push(<BlockChildren as ::treesitter_types::FromNode>::from_node(
1020                        child, src,
1021                    )?);
1022                }
1023                items
1024            },
1025        })
1026    }
1027}
1028impl ::treesitter_types::Spanned for Block<'_> {
1029    fn span(&self) -> ::treesitter_types::Span {
1030        self.span
1031    }
1032}
1033#[derive(Debug, Clone)]
1034pub struct BooleanOperator<'tree> {
1035    pub span: ::treesitter_types::Span,
1036    pub left: Expression<'tree>,
1037    pub operator: BooleanOperatorOperator,
1038    pub right: Expression<'tree>,
1039}
1040impl<'tree> ::treesitter_types::FromNode<'tree> for BooleanOperator<'tree> {
1041    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
1042    fn from_node(
1043        node: ::tree_sitter::Node<'tree>,
1044        src: &'tree [u8],
1045    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
1046        debug_assert_eq!(node.kind(), "boolean_operator");
1047        Ok(Self {
1048            span: ::treesitter_types::Span::from(node),
1049            left: {
1050                let child = node
1051                    .child_by_field_name("left")
1052                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("left", node))?;
1053                <Expression as ::treesitter_types::FromNode>::from_node(child, src)?
1054            },
1055            operator: {
1056                let child = node.child_by_field_name("operator").ok_or_else(|| {
1057                    ::treesitter_types::ParseError::missing_field("operator", node)
1058                })?;
1059                <BooleanOperatorOperator as ::treesitter_types::FromNode>::from_node(child, src)?
1060            },
1061            right: {
1062                let child = node
1063                    .child_by_field_name("right")
1064                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("right", node))?;
1065                <Expression as ::treesitter_types::FromNode>::from_node(child, src)?
1066            },
1067        })
1068    }
1069}
1070impl ::treesitter_types::Spanned for BooleanOperator<'_> {
1071    fn span(&self) -> ::treesitter_types::Span {
1072        self.span
1073    }
1074}
1075#[derive(Debug, Clone)]
1076pub struct BreakStatement<'tree> {
1077    pub span: ::treesitter_types::Span,
1078    text: &'tree str,
1079}
1080impl<'tree> ::treesitter_types::FromNode<'tree> for BreakStatement<'tree> {
1081    fn from_node(
1082        node: ::tree_sitter::Node<'tree>,
1083        src: &'tree [u8],
1084    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
1085        debug_assert_eq!(node.kind(), "break_statement");
1086        Ok(Self {
1087            span: ::treesitter_types::Span::from(node),
1088            text: node.utf8_text(src)?,
1089        })
1090    }
1091}
1092impl<'tree> ::treesitter_types::LeafNode<'tree> for BreakStatement<'tree> {
1093    fn text(&self) -> &'tree str {
1094        self.text
1095    }
1096}
1097impl ::treesitter_types::Spanned for BreakStatement<'_> {
1098    fn span(&self) -> ::treesitter_types::Span {
1099        self.span
1100    }
1101}
1102#[derive(Debug, Clone)]
1103pub struct Call<'tree> {
1104    pub span: ::treesitter_types::Span,
1105    pub arguments: CallArguments<'tree>,
1106    pub function: PrimaryExpression<'tree>,
1107}
1108impl<'tree> ::treesitter_types::FromNode<'tree> for Call<'tree> {
1109    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
1110    fn from_node(
1111        node: ::tree_sitter::Node<'tree>,
1112        src: &'tree [u8],
1113    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
1114        debug_assert_eq!(node.kind(), "call");
1115        Ok(Self {
1116            span: ::treesitter_types::Span::from(node),
1117            arguments: {
1118                let child = node.child_by_field_name("arguments").ok_or_else(|| {
1119                    ::treesitter_types::ParseError::missing_field("arguments", node)
1120                })?;
1121                <CallArguments as ::treesitter_types::FromNode>::from_node(child, src)?
1122            },
1123            function: {
1124                let child = node.child_by_field_name("function").ok_or_else(|| {
1125                    ::treesitter_types::ParseError::missing_field("function", node)
1126                })?;
1127                <PrimaryExpression as ::treesitter_types::FromNode>::from_node(child, src)?
1128            },
1129        })
1130    }
1131}
1132impl ::treesitter_types::Spanned for Call<'_> {
1133    fn span(&self) -> ::treesitter_types::Span {
1134        self.span
1135    }
1136}
1137#[derive(Debug, Clone)]
1138pub struct CaseClause<'tree> {
1139    pub span: ::treesitter_types::Span,
1140    pub consequence: Block<'tree>,
1141    pub guard: ::core::option::Option<IfClause<'tree>>,
1142    pub children: ::std::vec::Vec<CasePattern<'tree>>,
1143}
1144impl<'tree> ::treesitter_types::FromNode<'tree> for CaseClause<'tree> {
1145    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
1146    fn from_node(
1147        node: ::tree_sitter::Node<'tree>,
1148        src: &'tree [u8],
1149    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
1150        debug_assert_eq!(node.kind(), "case_clause");
1151        Ok(Self {
1152            span: ::treesitter_types::Span::from(node),
1153            consequence: {
1154                let child = node.child_by_field_name("consequence").ok_or_else(|| {
1155                    ::treesitter_types::ParseError::missing_field("consequence", node)
1156                })?;
1157                <Block as ::treesitter_types::FromNode>::from_node(child, src)?
1158            },
1159            guard: match node.child_by_field_name("guard") {
1160                Some(child) => Some(<IfClause as ::treesitter_types::FromNode>::from_node(
1161                    child, src,
1162                )?),
1163                None => None,
1164            },
1165            children: {
1166                #[allow(clippy::suspicious_else_formatting)]
1167                let non_field_children = {
1168                    let mut cursor = node.walk();
1169                    let mut result = ::std::vec::Vec::new();
1170                    if cursor.goto_first_child() {
1171                        loop {
1172                            if cursor.field_name().is_none()
1173                                && cursor.node().is_named()
1174                                && !cursor.node().is_extra()
1175                            {
1176                                result.push(cursor.node());
1177                            }
1178                            if !cursor.goto_next_sibling() {
1179                                break;
1180                            }
1181                        }
1182                    }
1183                    result
1184                };
1185                let mut items = ::std::vec::Vec::new();
1186                for child in non_field_children {
1187                    items.push(<CasePattern as ::treesitter_types::FromNode>::from_node(
1188                        child, src,
1189                    )?);
1190                }
1191                items
1192            },
1193        })
1194    }
1195}
1196impl ::treesitter_types::Spanned for CaseClause<'_> {
1197    fn span(&self) -> ::treesitter_types::Span {
1198        self.span
1199    }
1200}
1201#[derive(Debug, Clone)]
1202pub struct CasePattern<'tree> {
1203    pub span: ::treesitter_types::Span,
1204    pub children: ::core::option::Option<CasePatternChildren<'tree>>,
1205}
1206impl<'tree> ::treesitter_types::FromNode<'tree> for CasePattern<'tree> {
1207    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
1208    fn from_node(
1209        node: ::tree_sitter::Node<'tree>,
1210        src: &'tree [u8],
1211    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
1212        debug_assert_eq!(node.kind(), "case_pattern");
1213        Ok(Self {
1214            span: ::treesitter_types::Span::from(node),
1215            children: {
1216                #[allow(clippy::suspicious_else_formatting)]
1217                let non_field_children = {
1218                    let mut cursor = node.walk();
1219                    let mut result = ::std::vec::Vec::new();
1220                    if cursor.goto_first_child() {
1221                        loop {
1222                            if cursor.field_name().is_none()
1223                                && cursor.node().is_named()
1224                                && !cursor.node().is_extra()
1225                            {
1226                                result.push(cursor.node());
1227                            }
1228                            if !cursor.goto_next_sibling() {
1229                                break;
1230                            }
1231                        }
1232                    }
1233                    result
1234                };
1235                match non_field_children.first() {
1236                    Some(&child) => Some(
1237                        <CasePatternChildren as ::treesitter_types::FromNode>::from_node(
1238                            child, src,
1239                        )?,
1240                    ),
1241                    None => None,
1242                }
1243            },
1244        })
1245    }
1246}
1247impl ::treesitter_types::Spanned for CasePattern<'_> {
1248    fn span(&self) -> ::treesitter_types::Span {
1249        self.span
1250    }
1251}
1252#[derive(Debug, Clone)]
1253pub struct Chevron<'tree> {
1254    pub span: ::treesitter_types::Span,
1255    pub children: Expression<'tree>,
1256}
1257impl<'tree> ::treesitter_types::FromNode<'tree> for Chevron<'tree> {
1258    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
1259    fn from_node(
1260        node: ::tree_sitter::Node<'tree>,
1261        src: &'tree [u8],
1262    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
1263        debug_assert_eq!(node.kind(), "chevron");
1264        Ok(Self {
1265            span: ::treesitter_types::Span::from(node),
1266            children: {
1267                #[allow(clippy::suspicious_else_formatting)]
1268                let non_field_children = {
1269                    let mut cursor = node.walk();
1270                    let mut result = ::std::vec::Vec::new();
1271                    if cursor.goto_first_child() {
1272                        loop {
1273                            if cursor.field_name().is_none()
1274                                && cursor.node().is_named()
1275                                && !cursor.node().is_extra()
1276                            {
1277                                result.push(cursor.node());
1278                            }
1279                            if !cursor.goto_next_sibling() {
1280                                break;
1281                            }
1282                        }
1283                    }
1284                    result
1285                };
1286                let child = if let Some(&c) = non_field_children.first() {
1287                    c
1288                } else {
1289                    let mut fallback_cursor = node.walk();
1290                    let mut fallback_child = None;
1291                    if fallback_cursor.goto_first_child() {
1292                        loop {
1293                            if fallback_cursor.field_name().is_none()
1294                                && !fallback_cursor.node().is_extra()
1295                            {
1296                                let candidate = fallback_cursor.node();
1297                                #[allow(clippy::needless_question_mark)]
1298                                if (|| -> ::core::result::Result<
1299                                    _,
1300                                    ::treesitter_types::ParseError,
1301                                > {
1302                                    let child = candidate;
1303                                    Ok(
1304                                        <Expression as ::treesitter_types::FromNode>::from_node(
1305                                            child,
1306                                            src,
1307                                        )?,
1308                                    )
1309                                })()
1310                                    .is_ok()
1311                                {
1312                                    fallback_child = Some(candidate);
1313                                    break;
1314                                }
1315                            }
1316                            if !fallback_cursor.goto_next_sibling() {
1317                                break;
1318                            }
1319                        }
1320                    }
1321                    if fallback_child.is_none() {
1322                        let mut cursor2 = node.walk();
1323                        if cursor2.goto_first_child() {
1324                            loop {
1325                                if cursor2.node().is_named() && !cursor2.node().is_extra() {
1326                                    let candidate = cursor2.node();
1327                                    #[allow(clippy::needless_question_mark)]
1328                                    if (|| -> ::core::result::Result<
1329                                        _,
1330                                        ::treesitter_types::ParseError,
1331                                    > {
1332                                        let child = candidate;
1333                                        Ok(
1334                                            <Expression as ::treesitter_types::FromNode>::from_node(
1335                                                child,
1336                                                src,
1337                                            )?,
1338                                        )
1339                                    })()
1340                                        .is_ok()
1341                                    {
1342                                        fallback_child = Some(candidate);
1343                                        break;
1344                                    }
1345                                }
1346                                if !cursor2.goto_next_sibling() {
1347                                    break;
1348                                }
1349                            }
1350                        }
1351                    }
1352                    fallback_child.ok_or_else(|| {
1353                        ::treesitter_types::ParseError::missing_field("children", node)
1354                    })?
1355                };
1356                <Expression as ::treesitter_types::FromNode>::from_node(child, src)?
1357            },
1358        })
1359    }
1360}
1361impl ::treesitter_types::Spanned for Chevron<'_> {
1362    fn span(&self) -> ::treesitter_types::Span {
1363        self.span
1364    }
1365}
1366#[derive(Debug, Clone)]
1367pub struct ClassDefinition<'tree> {
1368    pub span: ::treesitter_types::Span,
1369    pub body: Block<'tree>,
1370    pub name: Identifier<'tree>,
1371    pub superclasses: ::core::option::Option<ArgumentList<'tree>>,
1372    pub type_parameters: ::core::option::Option<TypeParameter<'tree>>,
1373}
1374impl<'tree> ::treesitter_types::FromNode<'tree> for ClassDefinition<'tree> {
1375    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
1376    fn from_node(
1377        node: ::tree_sitter::Node<'tree>,
1378        src: &'tree [u8],
1379    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
1380        debug_assert_eq!(node.kind(), "class_definition");
1381        Ok(Self {
1382            span: ::treesitter_types::Span::from(node),
1383            body: {
1384                let child = node
1385                    .child_by_field_name("body")
1386                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("body", node))?;
1387                <Block as ::treesitter_types::FromNode>::from_node(child, src)?
1388            },
1389            name: {
1390                let child = node
1391                    .child_by_field_name("name")
1392                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("name", node))?;
1393                <Identifier as ::treesitter_types::FromNode>::from_node(child, src)?
1394            },
1395            superclasses: match node.child_by_field_name("superclasses") {
1396                Some(child) => Some(<ArgumentList as ::treesitter_types::FromNode>::from_node(
1397                    child, src,
1398                )?),
1399                None => None,
1400            },
1401            type_parameters: match node.child_by_field_name("type_parameters") {
1402                Some(child) => Some(<TypeParameter as ::treesitter_types::FromNode>::from_node(
1403                    child, src,
1404                )?),
1405                None => None,
1406            },
1407        })
1408    }
1409}
1410impl ::treesitter_types::Spanned for ClassDefinition<'_> {
1411    fn span(&self) -> ::treesitter_types::Span {
1412        self.span
1413    }
1414}
1415#[derive(Debug, Clone)]
1416pub struct ClassPattern<'tree> {
1417    pub span: ::treesitter_types::Span,
1418    pub children: ::std::vec::Vec<ClassPatternChildren<'tree>>,
1419}
1420impl<'tree> ::treesitter_types::FromNode<'tree> for ClassPattern<'tree> {
1421    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
1422    fn from_node(
1423        node: ::tree_sitter::Node<'tree>,
1424        src: &'tree [u8],
1425    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
1426        debug_assert_eq!(node.kind(), "class_pattern");
1427        Ok(Self {
1428            span: ::treesitter_types::Span::from(node),
1429            children: {
1430                #[allow(clippy::suspicious_else_formatting)]
1431                let non_field_children = {
1432                    let mut cursor = node.walk();
1433                    let mut result = ::std::vec::Vec::new();
1434                    if cursor.goto_first_child() {
1435                        loop {
1436                            if cursor.field_name().is_none()
1437                                && cursor.node().is_named()
1438                                && !cursor.node().is_extra()
1439                            {
1440                                result.push(cursor.node());
1441                            }
1442                            if !cursor.goto_next_sibling() {
1443                                break;
1444                            }
1445                        }
1446                    }
1447                    result
1448                };
1449                let mut items = ::std::vec::Vec::new();
1450                for child in non_field_children {
1451                    items.push(
1452                        <ClassPatternChildren as ::treesitter_types::FromNode>::from_node(
1453                            child, src,
1454                        )?,
1455                    );
1456                }
1457                items
1458            },
1459        })
1460    }
1461}
1462impl ::treesitter_types::Spanned for ClassPattern<'_> {
1463    fn span(&self) -> ::treesitter_types::Span {
1464        self.span
1465    }
1466}
1467#[derive(Debug, Clone)]
1468pub struct ComparisonOperator<'tree> {
1469    pub span: ::treesitter_types::Span,
1470    pub operators: ::std::vec::Vec<ComparisonOperatorOperators>,
1471    pub children: ::std::vec::Vec<PrimaryExpression<'tree>>,
1472}
1473impl<'tree> ::treesitter_types::FromNode<'tree> for ComparisonOperator<'tree> {
1474    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
1475    fn from_node(
1476        node: ::tree_sitter::Node<'tree>,
1477        src: &'tree [u8],
1478    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
1479        debug_assert_eq!(node.kind(), "comparison_operator");
1480        Ok(Self {
1481            span: ::treesitter_types::Span::from(node),
1482            operators: {
1483                let mut cursor = node.walk();
1484                let mut items = ::std::vec::Vec::new();
1485                for child in node.children_by_field_name("operators", &mut cursor) {
1486                    items.push(
1487                        <ComparisonOperatorOperators as ::treesitter_types::FromNode>::from_node(
1488                            child, src,
1489                        )?,
1490                    );
1491                }
1492                items
1493            },
1494            children: {
1495                #[allow(clippy::suspicious_else_formatting)]
1496                let non_field_children = {
1497                    let mut cursor = node.walk();
1498                    let mut result = ::std::vec::Vec::new();
1499                    if cursor.goto_first_child() {
1500                        loop {
1501                            if cursor.field_name().is_none()
1502                                && cursor.node().is_named()
1503                                && !cursor.node().is_extra()
1504                            {
1505                                result.push(cursor.node());
1506                            }
1507                            if !cursor.goto_next_sibling() {
1508                                break;
1509                            }
1510                        }
1511                    }
1512                    result
1513                };
1514                let mut items = ::std::vec::Vec::new();
1515                for child in non_field_children {
1516                    items.push(
1517                        <PrimaryExpression as ::treesitter_types::FromNode>::from_node(child, src)?,
1518                    );
1519                }
1520                items
1521            },
1522        })
1523    }
1524}
1525impl ::treesitter_types::Spanned for ComparisonOperator<'_> {
1526    fn span(&self) -> ::treesitter_types::Span {
1527        self.span
1528    }
1529}
1530#[derive(Debug, Clone)]
1531pub struct ComplexPattern<'tree> {
1532    pub span: ::treesitter_types::Span,
1533    pub children: ::std::vec::Vec<ComplexPatternChildren<'tree>>,
1534}
1535impl<'tree> ::treesitter_types::FromNode<'tree> for ComplexPattern<'tree> {
1536    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
1537    fn from_node(
1538        node: ::tree_sitter::Node<'tree>,
1539        src: &'tree [u8],
1540    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
1541        debug_assert_eq!(node.kind(), "complex_pattern");
1542        Ok(Self {
1543            span: ::treesitter_types::Span::from(node),
1544            children: {
1545                #[allow(clippy::suspicious_else_formatting)]
1546                let non_field_children = {
1547                    let mut cursor = node.walk();
1548                    let mut result = ::std::vec::Vec::new();
1549                    if cursor.goto_first_child() {
1550                        loop {
1551                            if cursor.field_name().is_none()
1552                                && cursor.node().is_named()
1553                                && !cursor.node().is_extra()
1554                            {
1555                                result.push(cursor.node());
1556                            }
1557                            if !cursor.goto_next_sibling() {
1558                                break;
1559                            }
1560                        }
1561                    }
1562                    result
1563                };
1564                let mut items = ::std::vec::Vec::new();
1565                for child in non_field_children {
1566                    items.push(
1567                        <ComplexPatternChildren as ::treesitter_types::FromNode>::from_node(
1568                            child, src,
1569                        )?,
1570                    );
1571                }
1572                items
1573            },
1574        })
1575    }
1576}
1577impl ::treesitter_types::Spanned for ComplexPattern<'_> {
1578    fn span(&self) -> ::treesitter_types::Span {
1579        self.span
1580    }
1581}
1582#[derive(Debug, Clone)]
1583pub struct ConcatenatedString<'tree> {
1584    pub span: ::treesitter_types::Span,
1585    pub children: ::std::vec::Vec<String<'tree>>,
1586}
1587impl<'tree> ::treesitter_types::FromNode<'tree> for ConcatenatedString<'tree> {
1588    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
1589    fn from_node(
1590        node: ::tree_sitter::Node<'tree>,
1591        src: &'tree [u8],
1592    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
1593        debug_assert_eq!(node.kind(), "concatenated_string");
1594        Ok(Self {
1595            span: ::treesitter_types::Span::from(node),
1596            children: {
1597                #[allow(clippy::suspicious_else_formatting)]
1598                let non_field_children = {
1599                    let mut cursor = node.walk();
1600                    let mut result = ::std::vec::Vec::new();
1601                    if cursor.goto_first_child() {
1602                        loop {
1603                            if cursor.field_name().is_none()
1604                                && cursor.node().is_named()
1605                                && !cursor.node().is_extra()
1606                            {
1607                                result.push(cursor.node());
1608                            }
1609                            if !cursor.goto_next_sibling() {
1610                                break;
1611                            }
1612                        }
1613                    }
1614                    result
1615                };
1616                let mut items = ::std::vec::Vec::new();
1617                for child in non_field_children {
1618                    items.push(<String as ::treesitter_types::FromNode>::from_node(
1619                        child, src,
1620                    )?);
1621                }
1622                items
1623            },
1624        })
1625    }
1626}
1627impl ::treesitter_types::Spanned for ConcatenatedString<'_> {
1628    fn span(&self) -> ::treesitter_types::Span {
1629        self.span
1630    }
1631}
1632#[derive(Debug, Clone)]
1633pub struct ConditionalExpression<'tree> {
1634    pub span: ::treesitter_types::Span,
1635    pub children: ::std::vec::Vec<Expression<'tree>>,
1636}
1637impl<'tree> ::treesitter_types::FromNode<'tree> for ConditionalExpression<'tree> {
1638    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
1639    fn from_node(
1640        node: ::tree_sitter::Node<'tree>,
1641        src: &'tree [u8],
1642    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
1643        debug_assert_eq!(node.kind(), "conditional_expression");
1644        Ok(Self {
1645            span: ::treesitter_types::Span::from(node),
1646            children: {
1647                #[allow(clippy::suspicious_else_formatting)]
1648                let non_field_children = {
1649                    let mut cursor = node.walk();
1650                    let mut result = ::std::vec::Vec::new();
1651                    if cursor.goto_first_child() {
1652                        loop {
1653                            if cursor.field_name().is_none()
1654                                && cursor.node().is_named()
1655                                && !cursor.node().is_extra()
1656                            {
1657                                result.push(cursor.node());
1658                            }
1659                            if !cursor.goto_next_sibling() {
1660                                break;
1661                            }
1662                        }
1663                    }
1664                    result
1665                };
1666                let mut items = ::std::vec::Vec::new();
1667                for child in non_field_children {
1668                    items.push(<Expression as ::treesitter_types::FromNode>::from_node(
1669                        child, src,
1670                    )?);
1671                }
1672                items
1673            },
1674        })
1675    }
1676}
1677impl ::treesitter_types::Spanned for ConditionalExpression<'_> {
1678    fn span(&self) -> ::treesitter_types::Span {
1679        self.span
1680    }
1681}
1682#[derive(Debug, Clone)]
1683pub struct ConstrainedType<'tree> {
1684    pub span: ::treesitter_types::Span,
1685    pub children: ::std::vec::Vec<Type<'tree>>,
1686}
1687impl<'tree> ::treesitter_types::FromNode<'tree> for ConstrainedType<'tree> {
1688    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
1689    fn from_node(
1690        node: ::tree_sitter::Node<'tree>,
1691        src: &'tree [u8],
1692    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
1693        debug_assert_eq!(node.kind(), "constrained_type");
1694        Ok(Self {
1695            span: ::treesitter_types::Span::from(node),
1696            children: {
1697                #[allow(clippy::suspicious_else_formatting)]
1698                let non_field_children = {
1699                    let mut cursor = node.walk();
1700                    let mut result = ::std::vec::Vec::new();
1701                    if cursor.goto_first_child() {
1702                        loop {
1703                            if cursor.field_name().is_none()
1704                                && cursor.node().is_named()
1705                                && !cursor.node().is_extra()
1706                            {
1707                                result.push(cursor.node());
1708                            }
1709                            if !cursor.goto_next_sibling() {
1710                                break;
1711                            }
1712                        }
1713                    }
1714                    result
1715                };
1716                let mut items = ::std::vec::Vec::new();
1717                for child in non_field_children {
1718                    items.push(<Type as ::treesitter_types::FromNode>::from_node(
1719                        child, src,
1720                    )?);
1721                }
1722                items
1723            },
1724        })
1725    }
1726}
1727impl ::treesitter_types::Spanned for ConstrainedType<'_> {
1728    fn span(&self) -> ::treesitter_types::Span {
1729        self.span
1730    }
1731}
1732#[derive(Debug, Clone)]
1733pub struct ContinueStatement<'tree> {
1734    pub span: ::treesitter_types::Span,
1735    text: &'tree str,
1736}
1737impl<'tree> ::treesitter_types::FromNode<'tree> for ContinueStatement<'tree> {
1738    fn from_node(
1739        node: ::tree_sitter::Node<'tree>,
1740        src: &'tree [u8],
1741    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
1742        debug_assert_eq!(node.kind(), "continue_statement");
1743        Ok(Self {
1744            span: ::treesitter_types::Span::from(node),
1745            text: node.utf8_text(src)?,
1746        })
1747    }
1748}
1749impl<'tree> ::treesitter_types::LeafNode<'tree> for ContinueStatement<'tree> {
1750    fn text(&self) -> &'tree str {
1751        self.text
1752    }
1753}
1754impl ::treesitter_types::Spanned for ContinueStatement<'_> {
1755    fn span(&self) -> ::treesitter_types::Span {
1756        self.span
1757    }
1758}
1759#[derive(Debug, Clone)]
1760pub struct DecoratedDefinition<'tree> {
1761    pub span: ::treesitter_types::Span,
1762    pub definition: DecoratedDefinitionDefinition<'tree>,
1763    pub children: ::std::vec::Vec<Decorator<'tree>>,
1764}
1765impl<'tree> ::treesitter_types::FromNode<'tree> for DecoratedDefinition<'tree> {
1766    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
1767    fn from_node(
1768        node: ::tree_sitter::Node<'tree>,
1769        src: &'tree [u8],
1770    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
1771        debug_assert_eq!(node.kind(), "decorated_definition");
1772        Ok(Self {
1773            span: ::treesitter_types::Span::from(node),
1774            definition: {
1775                let child = node.child_by_field_name("definition").ok_or_else(|| {
1776                    ::treesitter_types::ParseError::missing_field("definition", node)
1777                })?;
1778                <DecoratedDefinitionDefinition as ::treesitter_types::FromNode>::from_node(
1779                    child, src,
1780                )?
1781            },
1782            children: {
1783                #[allow(clippy::suspicious_else_formatting)]
1784                let non_field_children = {
1785                    let mut cursor = node.walk();
1786                    let mut result = ::std::vec::Vec::new();
1787                    if cursor.goto_first_child() {
1788                        loop {
1789                            if cursor.field_name().is_none()
1790                                && cursor.node().is_named()
1791                                && !cursor.node().is_extra()
1792                            {
1793                                result.push(cursor.node());
1794                            }
1795                            if !cursor.goto_next_sibling() {
1796                                break;
1797                            }
1798                        }
1799                    }
1800                    result
1801                };
1802                let mut items = ::std::vec::Vec::new();
1803                for child in non_field_children {
1804                    items.push(<Decorator as ::treesitter_types::FromNode>::from_node(
1805                        child, src,
1806                    )?);
1807                }
1808                items
1809            },
1810        })
1811    }
1812}
1813impl ::treesitter_types::Spanned for DecoratedDefinition<'_> {
1814    fn span(&self) -> ::treesitter_types::Span {
1815        self.span
1816    }
1817}
1818#[derive(Debug, Clone)]
1819pub struct Decorator<'tree> {
1820    pub span: ::treesitter_types::Span,
1821    pub children: Expression<'tree>,
1822}
1823impl<'tree> ::treesitter_types::FromNode<'tree> for Decorator<'tree> {
1824    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
1825    fn from_node(
1826        node: ::tree_sitter::Node<'tree>,
1827        src: &'tree [u8],
1828    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
1829        debug_assert_eq!(node.kind(), "decorator");
1830        Ok(Self {
1831            span: ::treesitter_types::Span::from(node),
1832            children: {
1833                #[allow(clippy::suspicious_else_formatting)]
1834                let non_field_children = {
1835                    let mut cursor = node.walk();
1836                    let mut result = ::std::vec::Vec::new();
1837                    if cursor.goto_first_child() {
1838                        loop {
1839                            if cursor.field_name().is_none()
1840                                && cursor.node().is_named()
1841                                && !cursor.node().is_extra()
1842                            {
1843                                result.push(cursor.node());
1844                            }
1845                            if !cursor.goto_next_sibling() {
1846                                break;
1847                            }
1848                        }
1849                    }
1850                    result
1851                };
1852                let child = if let Some(&c) = non_field_children.first() {
1853                    c
1854                } else {
1855                    let mut fallback_cursor = node.walk();
1856                    let mut fallback_child = None;
1857                    if fallback_cursor.goto_first_child() {
1858                        loop {
1859                            if fallback_cursor.field_name().is_none()
1860                                && !fallback_cursor.node().is_extra()
1861                            {
1862                                let candidate = fallback_cursor.node();
1863                                #[allow(clippy::needless_question_mark)]
1864                                if (|| -> ::core::result::Result<
1865                                    _,
1866                                    ::treesitter_types::ParseError,
1867                                > {
1868                                    let child = candidate;
1869                                    Ok(
1870                                        <Expression as ::treesitter_types::FromNode>::from_node(
1871                                            child,
1872                                            src,
1873                                        )?,
1874                                    )
1875                                })()
1876                                    .is_ok()
1877                                {
1878                                    fallback_child = Some(candidate);
1879                                    break;
1880                                }
1881                            }
1882                            if !fallback_cursor.goto_next_sibling() {
1883                                break;
1884                            }
1885                        }
1886                    }
1887                    if fallback_child.is_none() {
1888                        let mut cursor2 = node.walk();
1889                        if cursor2.goto_first_child() {
1890                            loop {
1891                                if cursor2.node().is_named() && !cursor2.node().is_extra() {
1892                                    let candidate = cursor2.node();
1893                                    #[allow(clippy::needless_question_mark)]
1894                                    if (|| -> ::core::result::Result<
1895                                        _,
1896                                        ::treesitter_types::ParseError,
1897                                    > {
1898                                        let child = candidate;
1899                                        Ok(
1900                                            <Expression as ::treesitter_types::FromNode>::from_node(
1901                                                child,
1902                                                src,
1903                                            )?,
1904                                        )
1905                                    })()
1906                                        .is_ok()
1907                                    {
1908                                        fallback_child = Some(candidate);
1909                                        break;
1910                                    }
1911                                }
1912                                if !cursor2.goto_next_sibling() {
1913                                    break;
1914                                }
1915                            }
1916                        }
1917                    }
1918                    fallback_child.ok_or_else(|| {
1919                        ::treesitter_types::ParseError::missing_field("children", node)
1920                    })?
1921                };
1922                <Expression as ::treesitter_types::FromNode>::from_node(child, src)?
1923            },
1924        })
1925    }
1926}
1927impl ::treesitter_types::Spanned for Decorator<'_> {
1928    fn span(&self) -> ::treesitter_types::Span {
1929        self.span
1930    }
1931}
1932#[derive(Debug, Clone)]
1933pub struct DefaultParameter<'tree> {
1934    pub span: ::treesitter_types::Span,
1935    pub name: DefaultParameterName<'tree>,
1936    pub value: Expression<'tree>,
1937}
1938impl<'tree> ::treesitter_types::FromNode<'tree> for DefaultParameter<'tree> {
1939    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
1940    fn from_node(
1941        node: ::tree_sitter::Node<'tree>,
1942        src: &'tree [u8],
1943    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
1944        debug_assert_eq!(node.kind(), "default_parameter");
1945        Ok(Self {
1946            span: ::treesitter_types::Span::from(node),
1947            name: {
1948                let child = node
1949                    .child_by_field_name("name")
1950                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("name", node))?;
1951                <DefaultParameterName as ::treesitter_types::FromNode>::from_node(child, src)?
1952            },
1953            value: {
1954                let child = node
1955                    .child_by_field_name("value")
1956                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("value", node))?;
1957                <Expression as ::treesitter_types::FromNode>::from_node(child, src)?
1958            },
1959        })
1960    }
1961}
1962impl ::treesitter_types::Spanned for DefaultParameter<'_> {
1963    fn span(&self) -> ::treesitter_types::Span {
1964        self.span
1965    }
1966}
1967#[derive(Debug, Clone)]
1968pub struct DeleteStatement<'tree> {
1969    pub span: ::treesitter_types::Span,
1970    pub children: DeleteStatementChildren<'tree>,
1971}
1972impl<'tree> ::treesitter_types::FromNode<'tree> for DeleteStatement<'tree> {
1973    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
1974    fn from_node(
1975        node: ::tree_sitter::Node<'tree>,
1976        src: &'tree [u8],
1977    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
1978        debug_assert_eq!(node.kind(), "delete_statement");
1979        Ok(Self {
1980            span: ::treesitter_types::Span::from(node),
1981            children: {
1982                #[allow(clippy::suspicious_else_formatting)]
1983                let non_field_children = {
1984                    let mut cursor = node.walk();
1985                    let mut result = ::std::vec::Vec::new();
1986                    if cursor.goto_first_child() {
1987                        loop {
1988                            if cursor.field_name().is_none()
1989                                && cursor.node().is_named()
1990                                && !cursor.node().is_extra()
1991                            {
1992                                result.push(cursor.node());
1993                            }
1994                            if !cursor.goto_next_sibling() {
1995                                break;
1996                            }
1997                        }
1998                    }
1999                    result
2000                };
2001                let child = if let Some(&c) = non_field_children.first() {
2002                    c
2003                } else {
2004                    let mut fallback_cursor = node.walk();
2005                    let mut fallback_child = None;
2006                    if fallback_cursor.goto_first_child() {
2007                        loop {
2008                            if fallback_cursor.field_name().is_none()
2009                                && !fallback_cursor.node().is_extra()
2010                            {
2011                                let candidate = fallback_cursor.node();
2012                                #[allow(clippy::needless_question_mark)]
2013                                if (|| -> ::core::result::Result<
2014                                    _,
2015                                    ::treesitter_types::ParseError,
2016                                > {
2017                                    let child = candidate;
2018                                    Ok(
2019                                        <DeleteStatementChildren as ::treesitter_types::FromNode>::from_node(
2020                                            child,
2021                                            src,
2022                                        )?,
2023                                    )
2024                                })()
2025                                    .is_ok()
2026                                {
2027                                    fallback_child = Some(candidate);
2028                                    break;
2029                                }
2030                            }
2031                            if !fallback_cursor.goto_next_sibling() {
2032                                break;
2033                            }
2034                        }
2035                    }
2036                    if fallback_child.is_none() {
2037                        let mut cursor2 = node.walk();
2038                        if cursor2.goto_first_child() {
2039                            loop {
2040                                if cursor2.node().is_named() && !cursor2.node().is_extra() {
2041                                    let candidate = cursor2.node();
2042                                    #[allow(clippy::needless_question_mark)]
2043                                    if (|| -> ::core::result::Result<
2044                                        _,
2045                                        ::treesitter_types::ParseError,
2046                                    > {
2047                                        let child = candidate;
2048                                        Ok(
2049                                            <DeleteStatementChildren as ::treesitter_types::FromNode>::from_node(
2050                                                child,
2051                                                src,
2052                                            )?,
2053                                        )
2054                                    })()
2055                                        .is_ok()
2056                                    {
2057                                        fallback_child = Some(candidate);
2058                                        break;
2059                                    }
2060                                }
2061                                if !cursor2.goto_next_sibling() {
2062                                    break;
2063                                }
2064                            }
2065                        }
2066                    }
2067                    fallback_child.ok_or_else(|| {
2068                        ::treesitter_types::ParseError::missing_field("children", node)
2069                    })?
2070                };
2071                <DeleteStatementChildren as ::treesitter_types::FromNode>::from_node(child, src)?
2072            },
2073        })
2074    }
2075}
2076impl ::treesitter_types::Spanned for DeleteStatement<'_> {
2077    fn span(&self) -> ::treesitter_types::Span {
2078        self.span
2079    }
2080}
2081#[derive(Debug, Clone)]
2082pub struct DictPattern<'tree> {
2083    pub span: ::treesitter_types::Span,
2084    pub key: ::std::vec::Vec<DictPatternKey<'tree>>,
2085    pub value: ::std::vec::Vec<CasePattern<'tree>>,
2086    pub children: ::std::vec::Vec<SplatPattern<'tree>>,
2087}
2088impl<'tree> ::treesitter_types::FromNode<'tree> for DictPattern<'tree> {
2089    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
2090    fn from_node(
2091        node: ::tree_sitter::Node<'tree>,
2092        src: &'tree [u8],
2093    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
2094        debug_assert_eq!(node.kind(), "dict_pattern");
2095        Ok(Self {
2096            span: ::treesitter_types::Span::from(node),
2097            key: {
2098                let mut cursor = node.walk();
2099                let mut items = ::std::vec::Vec::new();
2100                for child in node.children_by_field_name("key", &mut cursor) {
2101                    items.push(<DictPatternKey as ::treesitter_types::FromNode>::from_node(
2102                        child, src,
2103                    )?);
2104                }
2105                items
2106            },
2107            value: {
2108                let mut cursor = node.walk();
2109                let mut items = ::std::vec::Vec::new();
2110                for child in node.children_by_field_name("value", &mut cursor) {
2111                    items.push(<CasePattern as ::treesitter_types::FromNode>::from_node(
2112                        child, src,
2113                    )?);
2114                }
2115                items
2116            },
2117            children: {
2118                #[allow(clippy::suspicious_else_formatting)]
2119                let non_field_children = {
2120                    let mut cursor = node.walk();
2121                    let mut result = ::std::vec::Vec::new();
2122                    if cursor.goto_first_child() {
2123                        loop {
2124                            if cursor.field_name().is_none()
2125                                && cursor.node().is_named()
2126                                && !cursor.node().is_extra()
2127                            {
2128                                result.push(cursor.node());
2129                            }
2130                            if !cursor.goto_next_sibling() {
2131                                break;
2132                            }
2133                        }
2134                    }
2135                    result
2136                };
2137                let mut items = ::std::vec::Vec::new();
2138                for child in non_field_children {
2139                    items.push(<SplatPattern as ::treesitter_types::FromNode>::from_node(
2140                        child, src,
2141                    )?);
2142                }
2143                items
2144            },
2145        })
2146    }
2147}
2148impl ::treesitter_types::Spanned for DictPattern<'_> {
2149    fn span(&self) -> ::treesitter_types::Span {
2150        self.span
2151    }
2152}
2153#[derive(Debug, Clone)]
2154pub struct Dictionary<'tree> {
2155    pub span: ::treesitter_types::Span,
2156    pub children: ::std::vec::Vec<DictionaryChildren<'tree>>,
2157}
2158impl<'tree> ::treesitter_types::FromNode<'tree> for Dictionary<'tree> {
2159    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
2160    fn from_node(
2161        node: ::tree_sitter::Node<'tree>,
2162        src: &'tree [u8],
2163    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
2164        debug_assert_eq!(node.kind(), "dictionary");
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 mut items = ::std::vec::Vec::new();
2188                for child in non_field_children {
2189                    items.push(
2190                        <DictionaryChildren as ::treesitter_types::FromNode>::from_node(
2191                            child, src,
2192                        )?,
2193                    );
2194                }
2195                items
2196            },
2197        })
2198    }
2199}
2200impl ::treesitter_types::Spanned for Dictionary<'_> {
2201    fn span(&self) -> ::treesitter_types::Span {
2202        self.span
2203    }
2204}
2205#[derive(Debug, Clone)]
2206pub struct DictionaryComprehension<'tree> {
2207    pub span: ::treesitter_types::Span,
2208    pub body: Pair<'tree>,
2209    pub children: ::std::vec::Vec<DictionaryComprehensionChildren<'tree>>,
2210}
2211impl<'tree> ::treesitter_types::FromNode<'tree> for DictionaryComprehension<'tree> {
2212    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
2213    fn from_node(
2214        node: ::tree_sitter::Node<'tree>,
2215        src: &'tree [u8],
2216    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
2217        debug_assert_eq!(node.kind(), "dictionary_comprehension");
2218        Ok(Self {
2219            span: ::treesitter_types::Span::from(node),
2220            body: {
2221                let child = node
2222                    .child_by_field_name("body")
2223                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("body", node))?;
2224                <Pair as ::treesitter_types::FromNode>::from_node(child, src)?
2225            },
2226            children: {
2227                #[allow(clippy::suspicious_else_formatting)]
2228                let non_field_children = {
2229                    let mut cursor = node.walk();
2230                    let mut result = ::std::vec::Vec::new();
2231                    if cursor.goto_first_child() {
2232                        loop {
2233                            if cursor.field_name().is_none()
2234                                && cursor.node().is_named()
2235                                && !cursor.node().is_extra()
2236                            {
2237                                result.push(cursor.node());
2238                            }
2239                            if !cursor.goto_next_sibling() {
2240                                break;
2241                            }
2242                        }
2243                    }
2244                    result
2245                };
2246                let mut items = ::std::vec::Vec::new();
2247                for child in non_field_children {
2248                    items
2249                        .push(
2250                            <DictionaryComprehensionChildren as ::treesitter_types::FromNode>::from_node(
2251                                child,
2252                                src,
2253                            )?,
2254                        );
2255                }
2256                items
2257            },
2258        })
2259    }
2260}
2261impl ::treesitter_types::Spanned for DictionaryComprehension<'_> {
2262    fn span(&self) -> ::treesitter_types::Span {
2263        self.span
2264    }
2265}
2266#[derive(Debug, Clone)]
2267pub struct DictionarySplat<'tree> {
2268    pub span: ::treesitter_types::Span,
2269    pub children: Expression<'tree>,
2270}
2271impl<'tree> ::treesitter_types::FromNode<'tree> for DictionarySplat<'tree> {
2272    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
2273    fn from_node(
2274        node: ::tree_sitter::Node<'tree>,
2275        src: &'tree [u8],
2276    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
2277        debug_assert_eq!(node.kind(), "dictionary_splat");
2278        Ok(Self {
2279            span: ::treesitter_types::Span::from(node),
2280            children: {
2281                #[allow(clippy::suspicious_else_formatting)]
2282                let non_field_children = {
2283                    let mut cursor = node.walk();
2284                    let mut result = ::std::vec::Vec::new();
2285                    if cursor.goto_first_child() {
2286                        loop {
2287                            if cursor.field_name().is_none()
2288                                && cursor.node().is_named()
2289                                && !cursor.node().is_extra()
2290                            {
2291                                result.push(cursor.node());
2292                            }
2293                            if !cursor.goto_next_sibling() {
2294                                break;
2295                            }
2296                        }
2297                    }
2298                    result
2299                };
2300                let child = if let Some(&c) = non_field_children.first() {
2301                    c
2302                } else {
2303                    let mut fallback_cursor = node.walk();
2304                    let mut fallback_child = None;
2305                    if fallback_cursor.goto_first_child() {
2306                        loop {
2307                            if fallback_cursor.field_name().is_none()
2308                                && !fallback_cursor.node().is_extra()
2309                            {
2310                                let candidate = fallback_cursor.node();
2311                                #[allow(clippy::needless_question_mark)]
2312                                if (|| -> ::core::result::Result<
2313                                    _,
2314                                    ::treesitter_types::ParseError,
2315                                > {
2316                                    let child = candidate;
2317                                    Ok(
2318                                        <Expression as ::treesitter_types::FromNode>::from_node(
2319                                            child,
2320                                            src,
2321                                        )?,
2322                                    )
2323                                })()
2324                                    .is_ok()
2325                                {
2326                                    fallback_child = Some(candidate);
2327                                    break;
2328                                }
2329                            }
2330                            if !fallback_cursor.goto_next_sibling() {
2331                                break;
2332                            }
2333                        }
2334                    }
2335                    if fallback_child.is_none() {
2336                        let mut cursor2 = node.walk();
2337                        if cursor2.goto_first_child() {
2338                            loop {
2339                                if cursor2.node().is_named() && !cursor2.node().is_extra() {
2340                                    let candidate = cursor2.node();
2341                                    #[allow(clippy::needless_question_mark)]
2342                                    if (|| -> ::core::result::Result<
2343                                        _,
2344                                        ::treesitter_types::ParseError,
2345                                    > {
2346                                        let child = candidate;
2347                                        Ok(
2348                                            <Expression as ::treesitter_types::FromNode>::from_node(
2349                                                child,
2350                                                src,
2351                                            )?,
2352                                        )
2353                                    })()
2354                                        .is_ok()
2355                                    {
2356                                        fallback_child = Some(candidate);
2357                                        break;
2358                                    }
2359                                }
2360                                if !cursor2.goto_next_sibling() {
2361                                    break;
2362                                }
2363                            }
2364                        }
2365                    }
2366                    fallback_child.ok_or_else(|| {
2367                        ::treesitter_types::ParseError::missing_field("children", node)
2368                    })?
2369                };
2370                <Expression as ::treesitter_types::FromNode>::from_node(child, src)?
2371            },
2372        })
2373    }
2374}
2375impl ::treesitter_types::Spanned for DictionarySplat<'_> {
2376    fn span(&self) -> ::treesitter_types::Span {
2377        self.span
2378    }
2379}
2380#[derive(Debug, Clone)]
2381pub struct DictionarySplatPattern<'tree> {
2382    pub span: ::treesitter_types::Span,
2383    pub children: DictionarySplatPatternChildren<'tree>,
2384}
2385impl<'tree> ::treesitter_types::FromNode<'tree> for DictionarySplatPattern<'tree> {
2386    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
2387    fn from_node(
2388        node: ::tree_sitter::Node<'tree>,
2389        src: &'tree [u8],
2390    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
2391        debug_assert_eq!(node.kind(), "dictionary_splat_pattern");
2392        Ok(Self {
2393            span: ::treesitter_types::Span::from(node),
2394            children: {
2395                #[allow(clippy::suspicious_else_formatting)]
2396                let non_field_children = {
2397                    let mut cursor = node.walk();
2398                    let mut result = ::std::vec::Vec::new();
2399                    if cursor.goto_first_child() {
2400                        loop {
2401                            if cursor.field_name().is_none()
2402                                && cursor.node().is_named()
2403                                && !cursor.node().is_extra()
2404                            {
2405                                result.push(cursor.node());
2406                            }
2407                            if !cursor.goto_next_sibling() {
2408                                break;
2409                            }
2410                        }
2411                    }
2412                    result
2413                };
2414                let child = if let Some(&c) = non_field_children.first() {
2415                    c
2416                } else {
2417                    let mut fallback_cursor = node.walk();
2418                    let mut fallback_child = None;
2419                    if fallback_cursor.goto_first_child() {
2420                        loop {
2421                            if fallback_cursor.field_name().is_none()
2422                                && !fallback_cursor.node().is_extra()
2423                            {
2424                                let candidate = fallback_cursor.node();
2425                                #[allow(clippy::needless_question_mark)]
2426                                if (|| -> ::core::result::Result<
2427                                    _,
2428                                    ::treesitter_types::ParseError,
2429                                > {
2430                                    let child = candidate;
2431                                    Ok(
2432                                        <DictionarySplatPatternChildren as ::treesitter_types::FromNode>::from_node(
2433                                            child,
2434                                            src,
2435                                        )?,
2436                                    )
2437                                })()
2438                                    .is_ok()
2439                                {
2440                                    fallback_child = Some(candidate);
2441                                    break;
2442                                }
2443                            }
2444                            if !fallback_cursor.goto_next_sibling() {
2445                                break;
2446                            }
2447                        }
2448                    }
2449                    if fallback_child.is_none() {
2450                        let mut cursor2 = node.walk();
2451                        if cursor2.goto_first_child() {
2452                            loop {
2453                                if cursor2.node().is_named() && !cursor2.node().is_extra() {
2454                                    let candidate = cursor2.node();
2455                                    #[allow(clippy::needless_question_mark)]
2456                                    if (|| -> ::core::result::Result<
2457                                        _,
2458                                        ::treesitter_types::ParseError,
2459                                    > {
2460                                        let child = candidate;
2461                                        Ok(
2462                                            <DictionarySplatPatternChildren as ::treesitter_types::FromNode>::from_node(
2463                                                child,
2464                                                src,
2465                                            )?,
2466                                        )
2467                                    })()
2468                                        .is_ok()
2469                                    {
2470                                        fallback_child = Some(candidate);
2471                                        break;
2472                                    }
2473                                }
2474                                if !cursor2.goto_next_sibling() {
2475                                    break;
2476                                }
2477                            }
2478                        }
2479                    }
2480                    fallback_child.ok_or_else(|| {
2481                        ::treesitter_types::ParseError::missing_field("children", node)
2482                    })?
2483                };
2484                <DictionarySplatPatternChildren as ::treesitter_types::FromNode>::from_node(
2485                    child, src,
2486                )?
2487            },
2488        })
2489    }
2490}
2491impl ::treesitter_types::Spanned for DictionarySplatPattern<'_> {
2492    fn span(&self) -> ::treesitter_types::Span {
2493        self.span
2494    }
2495}
2496#[derive(Debug, Clone)]
2497pub struct DottedName<'tree> {
2498    pub span: ::treesitter_types::Span,
2499    pub children: ::std::vec::Vec<Identifier<'tree>>,
2500}
2501impl<'tree> ::treesitter_types::FromNode<'tree> for DottedName<'tree> {
2502    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
2503    fn from_node(
2504        node: ::tree_sitter::Node<'tree>,
2505        src: &'tree [u8],
2506    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
2507        debug_assert_eq!(node.kind(), "dotted_name");
2508        Ok(Self {
2509            span: ::treesitter_types::Span::from(node),
2510            children: {
2511                #[allow(clippy::suspicious_else_formatting)]
2512                let non_field_children = {
2513                    let mut cursor = node.walk();
2514                    let mut result = ::std::vec::Vec::new();
2515                    if cursor.goto_first_child() {
2516                        loop {
2517                            if cursor.field_name().is_none()
2518                                && cursor.node().is_named()
2519                                && !cursor.node().is_extra()
2520                            {
2521                                result.push(cursor.node());
2522                            }
2523                            if !cursor.goto_next_sibling() {
2524                                break;
2525                            }
2526                        }
2527                    }
2528                    result
2529                };
2530                let mut items = ::std::vec::Vec::new();
2531                for child in non_field_children {
2532                    items.push(<Identifier as ::treesitter_types::FromNode>::from_node(
2533                        child, src,
2534                    )?);
2535                }
2536                items
2537            },
2538        })
2539    }
2540}
2541impl ::treesitter_types::Spanned for DottedName<'_> {
2542    fn span(&self) -> ::treesitter_types::Span {
2543        self.span
2544    }
2545}
2546#[derive(Debug, Clone)]
2547pub struct ElifClause<'tree> {
2548    pub span: ::treesitter_types::Span,
2549    pub condition: Expression<'tree>,
2550    pub consequence: Block<'tree>,
2551}
2552impl<'tree> ::treesitter_types::FromNode<'tree> for ElifClause<'tree> {
2553    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
2554    fn from_node(
2555        node: ::tree_sitter::Node<'tree>,
2556        src: &'tree [u8],
2557    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
2558        debug_assert_eq!(node.kind(), "elif_clause");
2559        Ok(Self {
2560            span: ::treesitter_types::Span::from(node),
2561            condition: {
2562                let child = node.child_by_field_name("condition").ok_or_else(|| {
2563                    ::treesitter_types::ParseError::missing_field("condition", node)
2564                })?;
2565                <Expression as ::treesitter_types::FromNode>::from_node(child, src)?
2566            },
2567            consequence: {
2568                let child = node.child_by_field_name("consequence").ok_or_else(|| {
2569                    ::treesitter_types::ParseError::missing_field("consequence", node)
2570                })?;
2571                <Block as ::treesitter_types::FromNode>::from_node(child, src)?
2572            },
2573        })
2574    }
2575}
2576impl ::treesitter_types::Spanned for ElifClause<'_> {
2577    fn span(&self) -> ::treesitter_types::Span {
2578        self.span
2579    }
2580}
2581#[derive(Debug, Clone)]
2582pub struct ElseClause<'tree> {
2583    pub span: ::treesitter_types::Span,
2584    pub body: Block<'tree>,
2585}
2586impl<'tree> ::treesitter_types::FromNode<'tree> for ElseClause<'tree> {
2587    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
2588    fn from_node(
2589        node: ::tree_sitter::Node<'tree>,
2590        src: &'tree [u8],
2591    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
2592        debug_assert_eq!(node.kind(), "else_clause");
2593        Ok(Self {
2594            span: ::treesitter_types::Span::from(node),
2595            body: {
2596                let child = node
2597                    .child_by_field_name("body")
2598                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("body", node))?;
2599                <Block as ::treesitter_types::FromNode>::from_node(child, src)?
2600            },
2601        })
2602    }
2603}
2604impl ::treesitter_types::Spanned for ElseClause<'_> {
2605    fn span(&self) -> ::treesitter_types::Span {
2606        self.span
2607    }
2608}
2609#[derive(Debug, Clone)]
2610pub struct ExceptClause<'tree> {
2611    pub span: ::treesitter_types::Span,
2612    pub alias: ::core::option::Option<Expression<'tree>>,
2613    pub value: ::std::vec::Vec<Expression<'tree>>,
2614    pub children: Block<'tree>,
2615}
2616impl<'tree> ::treesitter_types::FromNode<'tree> for ExceptClause<'tree> {
2617    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
2618    fn from_node(
2619        node: ::tree_sitter::Node<'tree>,
2620        src: &'tree [u8],
2621    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
2622        debug_assert_eq!(node.kind(), "except_clause");
2623        Ok(Self {
2624            span: ::treesitter_types::Span::from(node),
2625            alias: match node.child_by_field_name("alias") {
2626                Some(child) => Some(<Expression as ::treesitter_types::FromNode>::from_node(
2627                    child, src,
2628                )?),
2629                None => None,
2630            },
2631            value: {
2632                let mut cursor = node.walk();
2633                let mut items = ::std::vec::Vec::new();
2634                for child in node.children_by_field_name("value", &mut cursor) {
2635                    items.push(<Expression as ::treesitter_types::FromNode>::from_node(
2636                        child, src,
2637                    )?);
2638                }
2639                items
2640            },
2641            children: {
2642                #[allow(clippy::suspicious_else_formatting)]
2643                let non_field_children = {
2644                    let mut cursor = node.walk();
2645                    let mut result = ::std::vec::Vec::new();
2646                    if cursor.goto_first_child() {
2647                        loop {
2648                            if cursor.field_name().is_none()
2649                                && cursor.node().is_named()
2650                                && !cursor.node().is_extra()
2651                            {
2652                                result.push(cursor.node());
2653                            }
2654                            if !cursor.goto_next_sibling() {
2655                                break;
2656                            }
2657                        }
2658                    }
2659                    result
2660                };
2661                let child = if let Some(&c) = non_field_children.first() {
2662                    c
2663                } else {
2664                    let mut fallback_cursor = node.walk();
2665                    let mut fallback_child = None;
2666                    if fallback_cursor.goto_first_child() {
2667                        loop {
2668                            if fallback_cursor.field_name().is_none()
2669                                && !fallback_cursor.node().is_extra()
2670                            {
2671                                let candidate = fallback_cursor.node();
2672                                #[allow(clippy::needless_question_mark)]
2673                                if (|| -> ::core::result::Result<
2674                                    _,
2675                                    ::treesitter_types::ParseError,
2676                                > {
2677                                    let child = candidate;
2678                                    Ok(
2679                                        <Block as ::treesitter_types::FromNode>::from_node(
2680                                            child,
2681                                            src,
2682                                        )?,
2683                                    )
2684                                })()
2685                                    .is_ok()
2686                                {
2687                                    fallback_child = Some(candidate);
2688                                    break;
2689                                }
2690                            }
2691                            if !fallback_cursor.goto_next_sibling() {
2692                                break;
2693                            }
2694                        }
2695                    }
2696                    if fallback_child.is_none() {
2697                        let mut cursor2 = node.walk();
2698                        if cursor2.goto_first_child() {
2699                            loop {
2700                                if cursor2.node().is_named() && !cursor2.node().is_extra() {
2701                                    let candidate = cursor2.node();
2702                                    #[allow(clippy::needless_question_mark)]
2703                                    if (|| -> ::core::result::Result<
2704                                        _,
2705                                        ::treesitter_types::ParseError,
2706                                    > {
2707                                        let child = candidate;
2708                                        Ok(
2709                                            <Block as ::treesitter_types::FromNode>::from_node(
2710                                                child,
2711                                                src,
2712                                            )?,
2713                                        )
2714                                    })()
2715                                        .is_ok()
2716                                    {
2717                                        fallback_child = Some(candidate);
2718                                        break;
2719                                    }
2720                                }
2721                                if !cursor2.goto_next_sibling() {
2722                                    break;
2723                                }
2724                            }
2725                        }
2726                    }
2727                    fallback_child.ok_or_else(|| {
2728                        ::treesitter_types::ParseError::missing_field("children", node)
2729                    })?
2730                };
2731                <Block as ::treesitter_types::FromNode>::from_node(child, src)?
2732            },
2733        })
2734    }
2735}
2736impl ::treesitter_types::Spanned for ExceptClause<'_> {
2737    fn span(&self) -> ::treesitter_types::Span {
2738        self.span
2739    }
2740}
2741#[derive(Debug, Clone)]
2742pub struct ExecStatement<'tree> {
2743    pub span: ::treesitter_types::Span,
2744    pub code: ExecStatementCode<'tree>,
2745    pub children: ::std::vec::Vec<Expression<'tree>>,
2746}
2747impl<'tree> ::treesitter_types::FromNode<'tree> for ExecStatement<'tree> {
2748    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
2749    fn from_node(
2750        node: ::tree_sitter::Node<'tree>,
2751        src: &'tree [u8],
2752    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
2753        debug_assert_eq!(node.kind(), "exec_statement");
2754        Ok(Self {
2755            span: ::treesitter_types::Span::from(node),
2756            code: {
2757                let child = node
2758                    .child_by_field_name("code")
2759                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("code", node))?;
2760                <ExecStatementCode as ::treesitter_types::FromNode>::from_node(child, src)?
2761            },
2762            children: {
2763                #[allow(clippy::suspicious_else_formatting)]
2764                let non_field_children = {
2765                    let mut cursor = node.walk();
2766                    let mut result = ::std::vec::Vec::new();
2767                    if cursor.goto_first_child() {
2768                        loop {
2769                            if cursor.field_name().is_none()
2770                                && cursor.node().is_named()
2771                                && !cursor.node().is_extra()
2772                            {
2773                                result.push(cursor.node());
2774                            }
2775                            if !cursor.goto_next_sibling() {
2776                                break;
2777                            }
2778                        }
2779                    }
2780                    result
2781                };
2782                let mut items = ::std::vec::Vec::new();
2783                for child in non_field_children {
2784                    items.push(<Expression as ::treesitter_types::FromNode>::from_node(
2785                        child, src,
2786                    )?);
2787                }
2788                items
2789            },
2790        })
2791    }
2792}
2793impl ::treesitter_types::Spanned for ExecStatement<'_> {
2794    fn span(&self) -> ::treesitter_types::Span {
2795        self.span
2796    }
2797}
2798#[derive(Debug, Clone)]
2799pub struct ExpressionList<'tree> {
2800    pub span: ::treesitter_types::Span,
2801    pub children: ::std::vec::Vec<Expression<'tree>>,
2802}
2803impl<'tree> ::treesitter_types::FromNode<'tree> for ExpressionList<'tree> {
2804    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
2805    fn from_node(
2806        node: ::tree_sitter::Node<'tree>,
2807        src: &'tree [u8],
2808    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
2809        debug_assert_eq!(node.kind(), "expression_list");
2810        Ok(Self {
2811            span: ::treesitter_types::Span::from(node),
2812            children: {
2813                #[allow(clippy::suspicious_else_formatting)]
2814                let non_field_children = {
2815                    let mut cursor = node.walk();
2816                    let mut result = ::std::vec::Vec::new();
2817                    if cursor.goto_first_child() {
2818                        loop {
2819                            if cursor.field_name().is_none()
2820                                && cursor.node().is_named()
2821                                && !cursor.node().is_extra()
2822                            {
2823                                result.push(cursor.node());
2824                            }
2825                            if !cursor.goto_next_sibling() {
2826                                break;
2827                            }
2828                        }
2829                    }
2830                    result
2831                };
2832                let mut items = ::std::vec::Vec::new();
2833                for child in non_field_children {
2834                    items.push(<Expression as ::treesitter_types::FromNode>::from_node(
2835                        child, src,
2836                    )?);
2837                }
2838                items
2839            },
2840        })
2841    }
2842}
2843impl ::treesitter_types::Spanned for ExpressionList<'_> {
2844    fn span(&self) -> ::treesitter_types::Span {
2845        self.span
2846    }
2847}
2848#[derive(Debug, Clone)]
2849pub struct ExpressionStatement<'tree> {
2850    pub span: ::treesitter_types::Span,
2851    pub children: ::std::vec::Vec<ExpressionStatementChildren<'tree>>,
2852}
2853impl<'tree> ::treesitter_types::FromNode<'tree> for ExpressionStatement<'tree> {
2854    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
2855    fn from_node(
2856        node: ::tree_sitter::Node<'tree>,
2857        src: &'tree [u8],
2858    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
2859        debug_assert_eq!(node.kind(), "expression_statement");
2860        Ok(Self {
2861            span: ::treesitter_types::Span::from(node),
2862            children: {
2863                #[allow(clippy::suspicious_else_formatting)]
2864                let non_field_children = {
2865                    let mut cursor = node.walk();
2866                    let mut result = ::std::vec::Vec::new();
2867                    if cursor.goto_first_child() {
2868                        loop {
2869                            if cursor.field_name().is_none()
2870                                && cursor.node().is_named()
2871                                && !cursor.node().is_extra()
2872                            {
2873                                result.push(cursor.node());
2874                            }
2875                            if !cursor.goto_next_sibling() {
2876                                break;
2877                            }
2878                        }
2879                    }
2880                    result
2881                };
2882                let mut items = ::std::vec::Vec::new();
2883                for child in non_field_children {
2884                    items.push(
2885                        <ExpressionStatementChildren as ::treesitter_types::FromNode>::from_node(
2886                            child, src,
2887                        )?,
2888                    );
2889                }
2890                items
2891            },
2892        })
2893    }
2894}
2895impl ::treesitter_types::Spanned for ExpressionStatement<'_> {
2896    fn span(&self) -> ::treesitter_types::Span {
2897        self.span
2898    }
2899}
2900#[derive(Debug, Clone)]
2901pub struct FinallyClause<'tree> {
2902    pub span: ::treesitter_types::Span,
2903    pub children: Block<'tree>,
2904}
2905impl<'tree> ::treesitter_types::FromNode<'tree> for FinallyClause<'tree> {
2906    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
2907    fn from_node(
2908        node: ::tree_sitter::Node<'tree>,
2909        src: &'tree [u8],
2910    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
2911        debug_assert_eq!(node.kind(), "finally_clause");
2912        Ok(Self {
2913            span: ::treesitter_types::Span::from(node),
2914            children: {
2915                #[allow(clippy::suspicious_else_formatting)]
2916                let non_field_children = {
2917                    let mut cursor = node.walk();
2918                    let mut result = ::std::vec::Vec::new();
2919                    if cursor.goto_first_child() {
2920                        loop {
2921                            if cursor.field_name().is_none()
2922                                && cursor.node().is_named()
2923                                && !cursor.node().is_extra()
2924                            {
2925                                result.push(cursor.node());
2926                            }
2927                            if !cursor.goto_next_sibling() {
2928                                break;
2929                            }
2930                        }
2931                    }
2932                    result
2933                };
2934                let child = if let Some(&c) = non_field_children.first() {
2935                    c
2936                } else {
2937                    let mut fallback_cursor = node.walk();
2938                    let mut fallback_child = None;
2939                    if fallback_cursor.goto_first_child() {
2940                        loop {
2941                            if fallback_cursor.field_name().is_none()
2942                                && !fallback_cursor.node().is_extra()
2943                            {
2944                                let candidate = fallback_cursor.node();
2945                                #[allow(clippy::needless_question_mark)]
2946                                if (|| -> ::core::result::Result<
2947                                    _,
2948                                    ::treesitter_types::ParseError,
2949                                > {
2950                                    let child = candidate;
2951                                    Ok(
2952                                        <Block as ::treesitter_types::FromNode>::from_node(
2953                                            child,
2954                                            src,
2955                                        )?,
2956                                    )
2957                                })()
2958                                    .is_ok()
2959                                {
2960                                    fallback_child = Some(candidate);
2961                                    break;
2962                                }
2963                            }
2964                            if !fallback_cursor.goto_next_sibling() {
2965                                break;
2966                            }
2967                        }
2968                    }
2969                    if fallback_child.is_none() {
2970                        let mut cursor2 = node.walk();
2971                        if cursor2.goto_first_child() {
2972                            loop {
2973                                if cursor2.node().is_named() && !cursor2.node().is_extra() {
2974                                    let candidate = cursor2.node();
2975                                    #[allow(clippy::needless_question_mark)]
2976                                    if (|| -> ::core::result::Result<
2977                                        _,
2978                                        ::treesitter_types::ParseError,
2979                                    > {
2980                                        let child = candidate;
2981                                        Ok(
2982                                            <Block as ::treesitter_types::FromNode>::from_node(
2983                                                child,
2984                                                src,
2985                                            )?,
2986                                        )
2987                                    })()
2988                                        .is_ok()
2989                                    {
2990                                        fallback_child = Some(candidate);
2991                                        break;
2992                                    }
2993                                }
2994                                if !cursor2.goto_next_sibling() {
2995                                    break;
2996                                }
2997                            }
2998                        }
2999                    }
3000                    fallback_child.ok_or_else(|| {
3001                        ::treesitter_types::ParseError::missing_field("children", node)
3002                    })?
3003                };
3004                <Block as ::treesitter_types::FromNode>::from_node(child, src)?
3005            },
3006        })
3007    }
3008}
3009impl ::treesitter_types::Spanned for FinallyClause<'_> {
3010    fn span(&self) -> ::treesitter_types::Span {
3011        self.span
3012    }
3013}
3014#[derive(Debug, Clone)]
3015pub struct ForInClause<'tree> {
3016    pub span: ::treesitter_types::Span,
3017    pub left: ForInClauseLeft<'tree>,
3018    pub right: ::std::vec::Vec<ForInClauseRight<'tree>>,
3019}
3020impl<'tree> ::treesitter_types::FromNode<'tree> for ForInClause<'tree> {
3021    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
3022    fn from_node(
3023        node: ::tree_sitter::Node<'tree>,
3024        src: &'tree [u8],
3025    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
3026        debug_assert_eq!(node.kind(), "for_in_clause");
3027        Ok(Self {
3028            span: ::treesitter_types::Span::from(node),
3029            left: {
3030                let child = node
3031                    .child_by_field_name("left")
3032                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("left", node))?;
3033                <ForInClauseLeft as ::treesitter_types::FromNode>::from_node(child, src)?
3034            },
3035            right: {
3036                let mut cursor = node.walk();
3037                let mut items = ::std::vec::Vec::new();
3038                for child in node.children_by_field_name("right", &mut cursor) {
3039                    items.push(
3040                        <ForInClauseRight as ::treesitter_types::FromNode>::from_node(child, src)?,
3041                    );
3042                }
3043                items
3044            },
3045        })
3046    }
3047}
3048impl ::treesitter_types::Spanned for ForInClause<'_> {
3049    fn span(&self) -> ::treesitter_types::Span {
3050        self.span
3051    }
3052}
3053#[derive(Debug, Clone)]
3054pub struct ForStatement<'tree> {
3055    pub span: ::treesitter_types::Span,
3056    pub alternative: ::core::option::Option<ElseClause<'tree>>,
3057    pub body: Block<'tree>,
3058    pub left: ForStatementLeft<'tree>,
3059    pub right: ForStatementRight<'tree>,
3060}
3061impl<'tree> ::treesitter_types::FromNode<'tree> for ForStatement<'tree> {
3062    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
3063    fn from_node(
3064        node: ::tree_sitter::Node<'tree>,
3065        src: &'tree [u8],
3066    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
3067        debug_assert_eq!(node.kind(), "for_statement");
3068        Ok(Self {
3069            span: ::treesitter_types::Span::from(node),
3070            alternative: match node.child_by_field_name("alternative") {
3071                Some(child) => Some(<ElseClause as ::treesitter_types::FromNode>::from_node(
3072                    child, src,
3073                )?),
3074                None => None,
3075            },
3076            body: {
3077                let child = node
3078                    .child_by_field_name("body")
3079                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("body", node))?;
3080                <Block as ::treesitter_types::FromNode>::from_node(child, src)?
3081            },
3082            left: {
3083                let child = node
3084                    .child_by_field_name("left")
3085                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("left", node))?;
3086                <ForStatementLeft as ::treesitter_types::FromNode>::from_node(child, src)?
3087            },
3088            right: {
3089                let child = node
3090                    .child_by_field_name("right")
3091                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("right", node))?;
3092                <ForStatementRight as ::treesitter_types::FromNode>::from_node(child, src)?
3093            },
3094        })
3095    }
3096}
3097impl ::treesitter_types::Spanned for ForStatement<'_> {
3098    fn span(&self) -> ::treesitter_types::Span {
3099        self.span
3100    }
3101}
3102#[derive(Debug, Clone)]
3103pub struct FormatExpression<'tree> {
3104    pub span: ::treesitter_types::Span,
3105    pub expression: FormatExpressionExpression<'tree>,
3106    pub format_specifier: ::core::option::Option<FormatSpecifier<'tree>>,
3107    pub type_conversion: ::core::option::Option<TypeConversion<'tree>>,
3108}
3109impl<'tree> ::treesitter_types::FromNode<'tree> for FormatExpression<'tree> {
3110    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
3111    fn from_node(
3112        node: ::tree_sitter::Node<'tree>,
3113        src: &'tree [u8],
3114    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
3115        debug_assert_eq!(node.kind(), "format_expression");
3116        Ok(Self {
3117            span: ::treesitter_types::Span::from(node),
3118            expression: {
3119                let child = node.child_by_field_name("expression").ok_or_else(|| {
3120                    ::treesitter_types::ParseError::missing_field("expression", node)
3121                })?;
3122                <FormatExpressionExpression as ::treesitter_types::FromNode>::from_node(child, src)?
3123            },
3124            format_specifier: match node.child_by_field_name("format_specifier") {
3125                Some(child) => {
3126                    Some(<FormatSpecifier as ::treesitter_types::FromNode>::from_node(child, src)?)
3127                }
3128                None => None,
3129            },
3130            type_conversion: match node.child_by_field_name("type_conversion") {
3131                Some(child) => Some(<TypeConversion as ::treesitter_types::FromNode>::from_node(
3132                    child, src,
3133                )?),
3134                None => None,
3135            },
3136        })
3137    }
3138}
3139impl ::treesitter_types::Spanned for FormatExpression<'_> {
3140    fn span(&self) -> ::treesitter_types::Span {
3141        self.span
3142    }
3143}
3144#[derive(Debug, Clone)]
3145pub struct FormatSpecifier<'tree> {
3146    pub span: ::treesitter_types::Span,
3147    pub children: ::std::vec::Vec<FormatExpression<'tree>>,
3148}
3149impl<'tree> ::treesitter_types::FromNode<'tree> for FormatSpecifier<'tree> {
3150    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
3151    fn from_node(
3152        node: ::tree_sitter::Node<'tree>,
3153        src: &'tree [u8],
3154    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
3155        debug_assert_eq!(node.kind(), "format_specifier");
3156        Ok(Self {
3157            span: ::treesitter_types::Span::from(node),
3158            children: {
3159                #[allow(clippy::suspicious_else_formatting)]
3160                let non_field_children = {
3161                    let mut cursor = node.walk();
3162                    let mut result = ::std::vec::Vec::new();
3163                    if cursor.goto_first_child() {
3164                        loop {
3165                            if cursor.field_name().is_none()
3166                                && cursor.node().is_named()
3167                                && !cursor.node().is_extra()
3168                            {
3169                                result.push(cursor.node());
3170                            }
3171                            if !cursor.goto_next_sibling() {
3172                                break;
3173                            }
3174                        }
3175                    }
3176                    result
3177                };
3178                let mut items = ::std::vec::Vec::new();
3179                for child in non_field_children {
3180                    items.push(
3181                        <FormatExpression as ::treesitter_types::FromNode>::from_node(child, src)?,
3182                    );
3183                }
3184                items
3185            },
3186        })
3187    }
3188}
3189impl ::treesitter_types::Spanned for FormatSpecifier<'_> {
3190    fn span(&self) -> ::treesitter_types::Span {
3191        self.span
3192    }
3193}
3194#[derive(Debug, Clone)]
3195pub struct FunctionDefinition<'tree> {
3196    pub span: ::treesitter_types::Span,
3197    pub body: Block<'tree>,
3198    pub name: Identifier<'tree>,
3199    pub parameters: Parameters<'tree>,
3200    pub return_type: ::core::option::Option<Type<'tree>>,
3201    pub type_parameters: ::core::option::Option<TypeParameter<'tree>>,
3202}
3203impl<'tree> ::treesitter_types::FromNode<'tree> for FunctionDefinition<'tree> {
3204    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
3205    fn from_node(
3206        node: ::tree_sitter::Node<'tree>,
3207        src: &'tree [u8],
3208    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
3209        debug_assert_eq!(node.kind(), "function_definition");
3210        Ok(Self {
3211            span: ::treesitter_types::Span::from(node),
3212            body: {
3213                let child = node
3214                    .child_by_field_name("body")
3215                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("body", node))?;
3216                <Block as ::treesitter_types::FromNode>::from_node(child, src)?
3217            },
3218            name: {
3219                let child = node
3220                    .child_by_field_name("name")
3221                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("name", node))?;
3222                <Identifier as ::treesitter_types::FromNode>::from_node(child, src)?
3223            },
3224            parameters: {
3225                let child = node.child_by_field_name("parameters").ok_or_else(|| {
3226                    ::treesitter_types::ParseError::missing_field("parameters", node)
3227                })?;
3228                <Parameters as ::treesitter_types::FromNode>::from_node(child, src)?
3229            },
3230            return_type: match node.child_by_field_name("return_type") {
3231                Some(child) => Some(<Type as ::treesitter_types::FromNode>::from_node(
3232                    child, src,
3233                )?),
3234                None => None,
3235            },
3236            type_parameters: match node.child_by_field_name("type_parameters") {
3237                Some(child) => Some(<TypeParameter as ::treesitter_types::FromNode>::from_node(
3238                    child, src,
3239                )?),
3240                None => None,
3241            },
3242        })
3243    }
3244}
3245impl ::treesitter_types::Spanned for FunctionDefinition<'_> {
3246    fn span(&self) -> ::treesitter_types::Span {
3247        self.span
3248    }
3249}
3250#[derive(Debug, Clone)]
3251pub struct FutureImportStatement<'tree> {
3252    pub span: ::treesitter_types::Span,
3253    pub name: ::std::vec::Vec<FutureImportStatementName<'tree>>,
3254}
3255impl<'tree> ::treesitter_types::FromNode<'tree> for FutureImportStatement<'tree> {
3256    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
3257    fn from_node(
3258        node: ::tree_sitter::Node<'tree>,
3259        src: &'tree [u8],
3260    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
3261        debug_assert_eq!(node.kind(), "future_import_statement");
3262        Ok(Self {
3263            span: ::treesitter_types::Span::from(node),
3264            name: {
3265                let mut cursor = node.walk();
3266                let mut items = ::std::vec::Vec::new();
3267                for child in node.children_by_field_name("name", &mut cursor) {
3268                    items.push(
3269                        <FutureImportStatementName as ::treesitter_types::FromNode>::from_node(
3270                            child, src,
3271                        )?,
3272                    );
3273                }
3274                items
3275            },
3276        })
3277    }
3278}
3279impl ::treesitter_types::Spanned for FutureImportStatement<'_> {
3280    fn span(&self) -> ::treesitter_types::Span {
3281        self.span
3282    }
3283}
3284#[derive(Debug, Clone)]
3285pub struct GeneratorExpression<'tree> {
3286    pub span: ::treesitter_types::Span,
3287    pub body: Expression<'tree>,
3288    pub children: ::std::vec::Vec<GeneratorExpressionChildren<'tree>>,
3289}
3290impl<'tree> ::treesitter_types::FromNode<'tree> for GeneratorExpression<'tree> {
3291    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
3292    fn from_node(
3293        node: ::tree_sitter::Node<'tree>,
3294        src: &'tree [u8],
3295    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
3296        debug_assert_eq!(node.kind(), "generator_expression");
3297        Ok(Self {
3298            span: ::treesitter_types::Span::from(node),
3299            body: {
3300                let child = node
3301                    .child_by_field_name("body")
3302                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("body", node))?;
3303                <Expression as ::treesitter_types::FromNode>::from_node(child, src)?
3304            },
3305            children: {
3306                #[allow(clippy::suspicious_else_formatting)]
3307                let non_field_children = {
3308                    let mut cursor = node.walk();
3309                    let mut result = ::std::vec::Vec::new();
3310                    if cursor.goto_first_child() {
3311                        loop {
3312                            if cursor.field_name().is_none()
3313                                && cursor.node().is_named()
3314                                && !cursor.node().is_extra()
3315                            {
3316                                result.push(cursor.node());
3317                            }
3318                            if !cursor.goto_next_sibling() {
3319                                break;
3320                            }
3321                        }
3322                    }
3323                    result
3324                };
3325                let mut items = ::std::vec::Vec::new();
3326                for child in non_field_children {
3327                    items.push(
3328                        <GeneratorExpressionChildren as ::treesitter_types::FromNode>::from_node(
3329                            child, src,
3330                        )?,
3331                    );
3332                }
3333                items
3334            },
3335        })
3336    }
3337}
3338impl ::treesitter_types::Spanned for GeneratorExpression<'_> {
3339    fn span(&self) -> ::treesitter_types::Span {
3340        self.span
3341    }
3342}
3343#[derive(Debug, Clone)]
3344pub struct GenericType<'tree> {
3345    pub span: ::treesitter_types::Span,
3346    pub children: ::std::vec::Vec<GenericTypeChildren<'tree>>,
3347}
3348impl<'tree> ::treesitter_types::FromNode<'tree> for GenericType<'tree> {
3349    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
3350    fn from_node(
3351        node: ::tree_sitter::Node<'tree>,
3352        src: &'tree [u8],
3353    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
3354        debug_assert_eq!(node.kind(), "generic_type");
3355        Ok(Self {
3356            span: ::treesitter_types::Span::from(node),
3357            children: {
3358                #[allow(clippy::suspicious_else_formatting)]
3359                let non_field_children = {
3360                    let mut cursor = node.walk();
3361                    let mut result = ::std::vec::Vec::new();
3362                    if cursor.goto_first_child() {
3363                        loop {
3364                            if cursor.field_name().is_none()
3365                                && cursor.node().is_named()
3366                                && !cursor.node().is_extra()
3367                            {
3368                                result.push(cursor.node());
3369                            }
3370                            if !cursor.goto_next_sibling() {
3371                                break;
3372                            }
3373                        }
3374                    }
3375                    result
3376                };
3377                let mut items = ::std::vec::Vec::new();
3378                for child in non_field_children {
3379                    items.push(
3380                        <GenericTypeChildren as ::treesitter_types::FromNode>::from_node(
3381                            child, src,
3382                        )?,
3383                    );
3384                }
3385                items
3386            },
3387        })
3388    }
3389}
3390impl ::treesitter_types::Spanned for GenericType<'_> {
3391    fn span(&self) -> ::treesitter_types::Span {
3392        self.span
3393    }
3394}
3395#[derive(Debug, Clone)]
3396pub struct GlobalStatement<'tree> {
3397    pub span: ::treesitter_types::Span,
3398    pub children: ::std::vec::Vec<Identifier<'tree>>,
3399}
3400impl<'tree> ::treesitter_types::FromNode<'tree> for GlobalStatement<'tree> {
3401    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
3402    fn from_node(
3403        node: ::tree_sitter::Node<'tree>,
3404        src: &'tree [u8],
3405    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
3406        debug_assert_eq!(node.kind(), "global_statement");
3407        Ok(Self {
3408            span: ::treesitter_types::Span::from(node),
3409            children: {
3410                #[allow(clippy::suspicious_else_formatting)]
3411                let non_field_children = {
3412                    let mut cursor = node.walk();
3413                    let mut result = ::std::vec::Vec::new();
3414                    if cursor.goto_first_child() {
3415                        loop {
3416                            if cursor.field_name().is_none()
3417                                && cursor.node().is_named()
3418                                && !cursor.node().is_extra()
3419                            {
3420                                result.push(cursor.node());
3421                            }
3422                            if !cursor.goto_next_sibling() {
3423                                break;
3424                            }
3425                        }
3426                    }
3427                    result
3428                };
3429                let mut items = ::std::vec::Vec::new();
3430                for child in non_field_children {
3431                    items.push(<Identifier as ::treesitter_types::FromNode>::from_node(
3432                        child, src,
3433                    )?);
3434                }
3435                items
3436            },
3437        })
3438    }
3439}
3440impl ::treesitter_types::Spanned for GlobalStatement<'_> {
3441    fn span(&self) -> ::treesitter_types::Span {
3442        self.span
3443    }
3444}
3445#[derive(Debug, Clone)]
3446pub struct IfClause<'tree> {
3447    pub span: ::treesitter_types::Span,
3448    pub children: Expression<'tree>,
3449}
3450impl<'tree> ::treesitter_types::FromNode<'tree> for IfClause<'tree> {
3451    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
3452    fn from_node(
3453        node: ::tree_sitter::Node<'tree>,
3454        src: &'tree [u8],
3455    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
3456        debug_assert_eq!(node.kind(), "if_clause");
3457        Ok(Self {
3458            span: ::treesitter_types::Span::from(node),
3459            children: {
3460                #[allow(clippy::suspicious_else_formatting)]
3461                let non_field_children = {
3462                    let mut cursor = node.walk();
3463                    let mut result = ::std::vec::Vec::new();
3464                    if cursor.goto_first_child() {
3465                        loop {
3466                            if cursor.field_name().is_none()
3467                                && cursor.node().is_named()
3468                                && !cursor.node().is_extra()
3469                            {
3470                                result.push(cursor.node());
3471                            }
3472                            if !cursor.goto_next_sibling() {
3473                                break;
3474                            }
3475                        }
3476                    }
3477                    result
3478                };
3479                let child = if let Some(&c) = non_field_children.first() {
3480                    c
3481                } else {
3482                    let mut fallback_cursor = node.walk();
3483                    let mut fallback_child = None;
3484                    if fallback_cursor.goto_first_child() {
3485                        loop {
3486                            if fallback_cursor.field_name().is_none()
3487                                && !fallback_cursor.node().is_extra()
3488                            {
3489                                let candidate = fallback_cursor.node();
3490                                #[allow(clippy::needless_question_mark)]
3491                                if (|| -> ::core::result::Result<
3492                                    _,
3493                                    ::treesitter_types::ParseError,
3494                                > {
3495                                    let child = candidate;
3496                                    Ok(
3497                                        <Expression as ::treesitter_types::FromNode>::from_node(
3498                                            child,
3499                                            src,
3500                                        )?,
3501                                    )
3502                                })()
3503                                    .is_ok()
3504                                {
3505                                    fallback_child = Some(candidate);
3506                                    break;
3507                                }
3508                            }
3509                            if !fallback_cursor.goto_next_sibling() {
3510                                break;
3511                            }
3512                        }
3513                    }
3514                    if fallback_child.is_none() {
3515                        let mut cursor2 = node.walk();
3516                        if cursor2.goto_first_child() {
3517                            loop {
3518                                if cursor2.node().is_named() && !cursor2.node().is_extra() {
3519                                    let candidate = cursor2.node();
3520                                    #[allow(clippy::needless_question_mark)]
3521                                    if (|| -> ::core::result::Result<
3522                                        _,
3523                                        ::treesitter_types::ParseError,
3524                                    > {
3525                                        let child = candidate;
3526                                        Ok(
3527                                            <Expression as ::treesitter_types::FromNode>::from_node(
3528                                                child,
3529                                                src,
3530                                            )?,
3531                                        )
3532                                    })()
3533                                        .is_ok()
3534                                    {
3535                                        fallback_child = Some(candidate);
3536                                        break;
3537                                    }
3538                                }
3539                                if !cursor2.goto_next_sibling() {
3540                                    break;
3541                                }
3542                            }
3543                        }
3544                    }
3545                    fallback_child.ok_or_else(|| {
3546                        ::treesitter_types::ParseError::missing_field("children", node)
3547                    })?
3548                };
3549                <Expression as ::treesitter_types::FromNode>::from_node(child, src)?
3550            },
3551        })
3552    }
3553}
3554impl ::treesitter_types::Spanned for IfClause<'_> {
3555    fn span(&self) -> ::treesitter_types::Span {
3556        self.span
3557    }
3558}
3559#[derive(Debug, Clone)]
3560pub struct IfStatement<'tree> {
3561    pub span: ::treesitter_types::Span,
3562    pub alternative: ::std::vec::Vec<IfStatementAlternative<'tree>>,
3563    pub condition: Expression<'tree>,
3564    pub consequence: Block<'tree>,
3565}
3566impl<'tree> ::treesitter_types::FromNode<'tree> for IfStatement<'tree> {
3567    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
3568    fn from_node(
3569        node: ::tree_sitter::Node<'tree>,
3570        src: &'tree [u8],
3571    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
3572        debug_assert_eq!(node.kind(), "if_statement");
3573        Ok(Self {
3574            span: ::treesitter_types::Span::from(node),
3575            alternative: {
3576                let mut cursor = node.walk();
3577                let mut items = ::std::vec::Vec::new();
3578                for child in node.children_by_field_name("alternative", &mut cursor) {
3579                    items.push(
3580                        <IfStatementAlternative as ::treesitter_types::FromNode>::from_node(
3581                            child, src,
3582                        )?,
3583                    );
3584                }
3585                items
3586            },
3587            condition: {
3588                let child = node.child_by_field_name("condition").ok_or_else(|| {
3589                    ::treesitter_types::ParseError::missing_field("condition", node)
3590                })?;
3591                <Expression as ::treesitter_types::FromNode>::from_node(child, src)?
3592            },
3593            consequence: {
3594                let child = node.child_by_field_name("consequence").ok_or_else(|| {
3595                    ::treesitter_types::ParseError::missing_field("consequence", node)
3596                })?;
3597                <Block as ::treesitter_types::FromNode>::from_node(child, src)?
3598            },
3599        })
3600    }
3601}
3602impl ::treesitter_types::Spanned for IfStatement<'_> {
3603    fn span(&self) -> ::treesitter_types::Span {
3604        self.span
3605    }
3606}
3607#[derive(Debug, Clone)]
3608pub struct ImportFromStatement<'tree> {
3609    pub span: ::treesitter_types::Span,
3610    pub module_name: ImportFromStatementModuleName<'tree>,
3611    pub name: ::std::vec::Vec<ImportFromStatementName<'tree>>,
3612    pub children: ::core::option::Option<WildcardImport<'tree>>,
3613}
3614impl<'tree> ::treesitter_types::FromNode<'tree> for ImportFromStatement<'tree> {
3615    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
3616    fn from_node(
3617        node: ::tree_sitter::Node<'tree>,
3618        src: &'tree [u8],
3619    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
3620        debug_assert_eq!(node.kind(), "import_from_statement");
3621        Ok(Self {
3622            span: ::treesitter_types::Span::from(node),
3623            module_name: {
3624                let child = node.child_by_field_name("module_name").ok_or_else(|| {
3625                    ::treesitter_types::ParseError::missing_field("module_name", node)
3626                })?;
3627                <ImportFromStatementModuleName as ::treesitter_types::FromNode>::from_node(
3628                    child, src,
3629                )?
3630            },
3631            name: {
3632                let mut cursor = node.walk();
3633                let mut items = ::std::vec::Vec::new();
3634                for child in node.children_by_field_name("name", &mut cursor) {
3635                    items.push(
3636                        <ImportFromStatementName as ::treesitter_types::FromNode>::from_node(
3637                            child, src,
3638                        )?,
3639                    );
3640                }
3641                items
3642            },
3643            children: {
3644                #[allow(clippy::suspicious_else_formatting)]
3645                let non_field_children = {
3646                    let mut cursor = node.walk();
3647                    let mut result = ::std::vec::Vec::new();
3648                    if cursor.goto_first_child() {
3649                        loop {
3650                            if cursor.field_name().is_none()
3651                                && cursor.node().is_named()
3652                                && !cursor.node().is_extra()
3653                            {
3654                                result.push(cursor.node());
3655                            }
3656                            if !cursor.goto_next_sibling() {
3657                                break;
3658                            }
3659                        }
3660                    }
3661                    result
3662                };
3663                match non_field_children.first() {
3664                    Some(&child) => Some(
3665                        <WildcardImport as ::treesitter_types::FromNode>::from_node(child, src)?,
3666                    ),
3667                    None => None,
3668                }
3669            },
3670        })
3671    }
3672}
3673impl ::treesitter_types::Spanned for ImportFromStatement<'_> {
3674    fn span(&self) -> ::treesitter_types::Span {
3675        self.span
3676    }
3677}
3678#[derive(Debug, Clone)]
3679pub struct ImportPrefix<'tree> {
3680    pub span: ::treesitter_types::Span,
3681    text: &'tree str,
3682}
3683impl<'tree> ::treesitter_types::FromNode<'tree> for ImportPrefix<'tree> {
3684    fn from_node(
3685        node: ::tree_sitter::Node<'tree>,
3686        src: &'tree [u8],
3687    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
3688        debug_assert_eq!(node.kind(), "import_prefix");
3689        Ok(Self {
3690            span: ::treesitter_types::Span::from(node),
3691            text: node.utf8_text(src)?,
3692        })
3693    }
3694}
3695impl<'tree> ::treesitter_types::LeafNode<'tree> for ImportPrefix<'tree> {
3696    fn text(&self) -> &'tree str {
3697        self.text
3698    }
3699}
3700impl ::treesitter_types::Spanned for ImportPrefix<'_> {
3701    fn span(&self) -> ::treesitter_types::Span {
3702        self.span
3703    }
3704}
3705#[derive(Debug, Clone)]
3706pub struct ImportStatement<'tree> {
3707    pub span: ::treesitter_types::Span,
3708    pub name: ::std::vec::Vec<ImportStatementName<'tree>>,
3709}
3710impl<'tree> ::treesitter_types::FromNode<'tree> for ImportStatement<'tree> {
3711    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
3712    fn from_node(
3713        node: ::tree_sitter::Node<'tree>,
3714        src: &'tree [u8],
3715    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
3716        debug_assert_eq!(node.kind(), "import_statement");
3717        Ok(Self {
3718            span: ::treesitter_types::Span::from(node),
3719            name: {
3720                let mut cursor = node.walk();
3721                let mut items = ::std::vec::Vec::new();
3722                for child in node.children_by_field_name("name", &mut cursor) {
3723                    items.push(
3724                        <ImportStatementName as ::treesitter_types::FromNode>::from_node(
3725                            child, src,
3726                        )?,
3727                    );
3728                }
3729                items
3730            },
3731        })
3732    }
3733}
3734impl ::treesitter_types::Spanned for ImportStatement<'_> {
3735    fn span(&self) -> ::treesitter_types::Span {
3736        self.span
3737    }
3738}
3739#[derive(Debug, Clone)]
3740pub struct Interpolation<'tree> {
3741    pub span: ::treesitter_types::Span,
3742    pub expression: InterpolationExpression<'tree>,
3743    pub format_specifier: ::core::option::Option<FormatSpecifier<'tree>>,
3744    pub type_conversion: ::core::option::Option<TypeConversion<'tree>>,
3745}
3746impl<'tree> ::treesitter_types::FromNode<'tree> for Interpolation<'tree> {
3747    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
3748    fn from_node(
3749        node: ::tree_sitter::Node<'tree>,
3750        src: &'tree [u8],
3751    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
3752        debug_assert_eq!(node.kind(), "interpolation");
3753        Ok(Self {
3754            span: ::treesitter_types::Span::from(node),
3755            expression: {
3756                let child = node.child_by_field_name("expression").ok_or_else(|| {
3757                    ::treesitter_types::ParseError::missing_field("expression", node)
3758                })?;
3759                <InterpolationExpression as ::treesitter_types::FromNode>::from_node(child, src)?
3760            },
3761            format_specifier: match node.child_by_field_name("format_specifier") {
3762                Some(child) => {
3763                    Some(<FormatSpecifier as ::treesitter_types::FromNode>::from_node(child, src)?)
3764                }
3765                None => None,
3766            },
3767            type_conversion: match node.child_by_field_name("type_conversion") {
3768                Some(child) => Some(<TypeConversion as ::treesitter_types::FromNode>::from_node(
3769                    child, src,
3770                )?),
3771                None => None,
3772            },
3773        })
3774    }
3775}
3776impl ::treesitter_types::Spanned for Interpolation<'_> {
3777    fn span(&self) -> ::treesitter_types::Span {
3778        self.span
3779    }
3780}
3781#[derive(Debug, Clone)]
3782pub struct KeywordArgument<'tree> {
3783    pub span: ::treesitter_types::Span,
3784    pub name: Identifier<'tree>,
3785    pub value: Expression<'tree>,
3786}
3787impl<'tree> ::treesitter_types::FromNode<'tree> for KeywordArgument<'tree> {
3788    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
3789    fn from_node(
3790        node: ::tree_sitter::Node<'tree>,
3791        src: &'tree [u8],
3792    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
3793        debug_assert_eq!(node.kind(), "keyword_argument");
3794        Ok(Self {
3795            span: ::treesitter_types::Span::from(node),
3796            name: {
3797                let child = node
3798                    .child_by_field_name("name")
3799                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("name", node))?;
3800                <Identifier as ::treesitter_types::FromNode>::from_node(child, src)?
3801            },
3802            value: {
3803                let child = node
3804                    .child_by_field_name("value")
3805                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("value", node))?;
3806                <Expression as ::treesitter_types::FromNode>::from_node(child, src)?
3807            },
3808        })
3809    }
3810}
3811impl ::treesitter_types::Spanned for KeywordArgument<'_> {
3812    fn span(&self) -> ::treesitter_types::Span {
3813        self.span
3814    }
3815}
3816#[derive(Debug, Clone)]
3817pub struct KeywordPattern<'tree> {
3818    pub span: ::treesitter_types::Span,
3819    pub children: ::std::vec::Vec<KeywordPatternChildren<'tree>>,
3820}
3821impl<'tree> ::treesitter_types::FromNode<'tree> for KeywordPattern<'tree> {
3822    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
3823    fn from_node(
3824        node: ::tree_sitter::Node<'tree>,
3825        src: &'tree [u8],
3826    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
3827        debug_assert_eq!(node.kind(), "keyword_pattern");
3828        Ok(Self {
3829            span: ::treesitter_types::Span::from(node),
3830            children: {
3831                #[allow(clippy::suspicious_else_formatting)]
3832                let non_field_children = {
3833                    let mut cursor = node.walk();
3834                    let mut result = ::std::vec::Vec::new();
3835                    if cursor.goto_first_child() {
3836                        loop {
3837                            if cursor.field_name().is_none()
3838                                && cursor.node().is_named()
3839                                && !cursor.node().is_extra()
3840                            {
3841                                result.push(cursor.node());
3842                            }
3843                            if !cursor.goto_next_sibling() {
3844                                break;
3845                            }
3846                        }
3847                    }
3848                    result
3849                };
3850                let mut items = ::std::vec::Vec::new();
3851                for child in non_field_children {
3852                    items.push(
3853                        <KeywordPatternChildren as ::treesitter_types::FromNode>::from_node(
3854                            child, src,
3855                        )?,
3856                    );
3857                }
3858                items
3859            },
3860        })
3861    }
3862}
3863impl ::treesitter_types::Spanned for KeywordPattern<'_> {
3864    fn span(&self) -> ::treesitter_types::Span {
3865        self.span
3866    }
3867}
3868#[derive(Debug, Clone)]
3869pub struct KeywordSeparator<'tree> {
3870    pub span: ::treesitter_types::Span,
3871    text: &'tree str,
3872}
3873impl<'tree> ::treesitter_types::FromNode<'tree> for KeywordSeparator<'tree> {
3874    fn from_node(
3875        node: ::tree_sitter::Node<'tree>,
3876        src: &'tree [u8],
3877    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
3878        debug_assert_eq!(node.kind(), "keyword_separator");
3879        Ok(Self {
3880            span: ::treesitter_types::Span::from(node),
3881            text: node.utf8_text(src)?,
3882        })
3883    }
3884}
3885impl<'tree> ::treesitter_types::LeafNode<'tree> for KeywordSeparator<'tree> {
3886    fn text(&self) -> &'tree str {
3887        self.text
3888    }
3889}
3890impl ::treesitter_types::Spanned for KeywordSeparator<'_> {
3891    fn span(&self) -> ::treesitter_types::Span {
3892        self.span
3893    }
3894}
3895#[derive(Debug, Clone)]
3896pub struct Lambda<'tree> {
3897    pub span: ::treesitter_types::Span,
3898    pub body: Expression<'tree>,
3899    pub parameters: ::core::option::Option<LambdaParameters<'tree>>,
3900}
3901impl<'tree> ::treesitter_types::FromNode<'tree> for Lambda<'tree> {
3902    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
3903    fn from_node(
3904        node: ::tree_sitter::Node<'tree>,
3905        src: &'tree [u8],
3906    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
3907        debug_assert_eq!(node.kind(), "lambda");
3908        Ok(Self {
3909            span: ::treesitter_types::Span::from(node),
3910            body: {
3911                let child = node
3912                    .child_by_field_name("body")
3913                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("body", node))?;
3914                <Expression as ::treesitter_types::FromNode>::from_node(child, src)?
3915            },
3916            parameters: match node.child_by_field_name("parameters") {
3917                Some(child) => {
3918                    Some(<LambdaParameters as ::treesitter_types::FromNode>::from_node(child, src)?)
3919                }
3920                None => None,
3921            },
3922        })
3923    }
3924}
3925impl ::treesitter_types::Spanned for Lambda<'_> {
3926    fn span(&self) -> ::treesitter_types::Span {
3927        self.span
3928    }
3929}
3930#[derive(Debug, Clone)]
3931pub struct LambdaParameters<'tree> {
3932    pub span: ::treesitter_types::Span,
3933    pub children: ::std::vec::Vec<Parameter<'tree>>,
3934}
3935impl<'tree> ::treesitter_types::FromNode<'tree> for LambdaParameters<'tree> {
3936    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
3937    fn from_node(
3938        node: ::tree_sitter::Node<'tree>,
3939        src: &'tree [u8],
3940    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
3941        debug_assert_eq!(node.kind(), "lambda_parameters");
3942        Ok(Self {
3943            span: ::treesitter_types::Span::from(node),
3944            children: {
3945                #[allow(clippy::suspicious_else_formatting)]
3946                let non_field_children = {
3947                    let mut cursor = node.walk();
3948                    let mut result = ::std::vec::Vec::new();
3949                    if cursor.goto_first_child() {
3950                        loop {
3951                            if cursor.field_name().is_none()
3952                                && cursor.node().is_named()
3953                                && !cursor.node().is_extra()
3954                            {
3955                                result.push(cursor.node());
3956                            }
3957                            if !cursor.goto_next_sibling() {
3958                                break;
3959                            }
3960                        }
3961                    }
3962                    result
3963                };
3964                let mut items = ::std::vec::Vec::new();
3965                for child in non_field_children {
3966                    items.push(<Parameter as ::treesitter_types::FromNode>::from_node(
3967                        child, src,
3968                    )?);
3969                }
3970                items
3971            },
3972        })
3973    }
3974}
3975impl ::treesitter_types::Spanned for LambdaParameters<'_> {
3976    fn span(&self) -> ::treesitter_types::Span {
3977        self.span
3978    }
3979}
3980#[derive(Debug, Clone)]
3981pub struct List<'tree> {
3982    pub span: ::treesitter_types::Span,
3983    pub children: ::std::vec::Vec<ListChildren<'tree>>,
3984}
3985impl<'tree> ::treesitter_types::FromNode<'tree> for List<'tree> {
3986    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
3987    fn from_node(
3988        node: ::tree_sitter::Node<'tree>,
3989        src: &'tree [u8],
3990    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
3991        debug_assert_eq!(node.kind(), "list");
3992        Ok(Self {
3993            span: ::treesitter_types::Span::from(node),
3994            children: {
3995                #[allow(clippy::suspicious_else_formatting)]
3996                let non_field_children = {
3997                    let mut cursor = node.walk();
3998                    let mut result = ::std::vec::Vec::new();
3999                    if cursor.goto_first_child() {
4000                        loop {
4001                            if cursor.field_name().is_none()
4002                                && cursor.node().is_named()
4003                                && !cursor.node().is_extra()
4004                            {
4005                                result.push(cursor.node());
4006                            }
4007                            if !cursor.goto_next_sibling() {
4008                                break;
4009                            }
4010                        }
4011                    }
4012                    result
4013                };
4014                let mut items = ::std::vec::Vec::new();
4015                for child in non_field_children {
4016                    items.push(<ListChildren as ::treesitter_types::FromNode>::from_node(
4017                        child, src,
4018                    )?);
4019                }
4020                items
4021            },
4022        })
4023    }
4024}
4025impl ::treesitter_types::Spanned for List<'_> {
4026    fn span(&self) -> ::treesitter_types::Span {
4027        self.span
4028    }
4029}
4030#[derive(Debug, Clone)]
4031pub struct ListComprehension<'tree> {
4032    pub span: ::treesitter_types::Span,
4033    pub body: Expression<'tree>,
4034    pub children: ::std::vec::Vec<ListComprehensionChildren<'tree>>,
4035}
4036impl<'tree> ::treesitter_types::FromNode<'tree> for ListComprehension<'tree> {
4037    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
4038    fn from_node(
4039        node: ::tree_sitter::Node<'tree>,
4040        src: &'tree [u8],
4041    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
4042        debug_assert_eq!(node.kind(), "list_comprehension");
4043        Ok(Self {
4044            span: ::treesitter_types::Span::from(node),
4045            body: {
4046                let child = node
4047                    .child_by_field_name("body")
4048                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("body", node))?;
4049                <Expression as ::treesitter_types::FromNode>::from_node(child, src)?
4050            },
4051            children: {
4052                #[allow(clippy::suspicious_else_formatting)]
4053                let non_field_children = {
4054                    let mut cursor = node.walk();
4055                    let mut result = ::std::vec::Vec::new();
4056                    if cursor.goto_first_child() {
4057                        loop {
4058                            if cursor.field_name().is_none()
4059                                && cursor.node().is_named()
4060                                && !cursor.node().is_extra()
4061                            {
4062                                result.push(cursor.node());
4063                            }
4064                            if !cursor.goto_next_sibling() {
4065                                break;
4066                            }
4067                        }
4068                    }
4069                    result
4070                };
4071                let mut items = ::std::vec::Vec::new();
4072                for child in non_field_children {
4073                    items.push(
4074                        <ListComprehensionChildren as ::treesitter_types::FromNode>::from_node(
4075                            child, src,
4076                        )?,
4077                    );
4078                }
4079                items
4080            },
4081        })
4082    }
4083}
4084impl ::treesitter_types::Spanned for ListComprehension<'_> {
4085    fn span(&self) -> ::treesitter_types::Span {
4086        self.span
4087    }
4088}
4089#[derive(Debug, Clone)]
4090pub struct ListPattern<'tree> {
4091    pub span: ::treesitter_types::Span,
4092    pub children: ::std::vec::Vec<ListPatternChildren<'tree>>,
4093}
4094impl<'tree> ::treesitter_types::FromNode<'tree> for ListPattern<'tree> {
4095    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
4096    fn from_node(
4097        node: ::tree_sitter::Node<'tree>,
4098        src: &'tree [u8],
4099    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
4100        debug_assert_eq!(node.kind(), "list_pattern");
4101        Ok(Self {
4102            span: ::treesitter_types::Span::from(node),
4103            children: {
4104                #[allow(clippy::suspicious_else_formatting)]
4105                let non_field_children = {
4106                    let mut cursor = node.walk();
4107                    let mut result = ::std::vec::Vec::new();
4108                    if cursor.goto_first_child() {
4109                        loop {
4110                            if cursor.field_name().is_none()
4111                                && cursor.node().is_named()
4112                                && !cursor.node().is_extra()
4113                            {
4114                                result.push(cursor.node());
4115                            }
4116                            if !cursor.goto_next_sibling() {
4117                                break;
4118                            }
4119                        }
4120                    }
4121                    result
4122                };
4123                let mut items = ::std::vec::Vec::new();
4124                for child in non_field_children {
4125                    items.push(
4126                        <ListPatternChildren as ::treesitter_types::FromNode>::from_node(
4127                            child, src,
4128                        )?,
4129                    );
4130                }
4131                items
4132            },
4133        })
4134    }
4135}
4136impl ::treesitter_types::Spanned for ListPattern<'_> {
4137    fn span(&self) -> ::treesitter_types::Span {
4138        self.span
4139    }
4140}
4141#[derive(Debug, Clone)]
4142pub struct ListSplat<'tree> {
4143    pub span: ::treesitter_types::Span,
4144    pub children: ListSplatChildren<'tree>,
4145}
4146impl<'tree> ::treesitter_types::FromNode<'tree> for ListSplat<'tree> {
4147    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
4148    fn from_node(
4149        node: ::tree_sitter::Node<'tree>,
4150        src: &'tree [u8],
4151    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
4152        debug_assert_eq!(node.kind(), "list_splat");
4153        Ok(Self {
4154            span: ::treesitter_types::Span::from(node),
4155            children: {
4156                #[allow(clippy::suspicious_else_formatting)]
4157                let non_field_children = {
4158                    let mut cursor = node.walk();
4159                    let mut result = ::std::vec::Vec::new();
4160                    if cursor.goto_first_child() {
4161                        loop {
4162                            if cursor.field_name().is_none()
4163                                && cursor.node().is_named()
4164                                && !cursor.node().is_extra()
4165                            {
4166                                result.push(cursor.node());
4167                            }
4168                            if !cursor.goto_next_sibling() {
4169                                break;
4170                            }
4171                        }
4172                    }
4173                    result
4174                };
4175                let child = if let Some(&c) = non_field_children.first() {
4176                    c
4177                } else {
4178                    let mut fallback_cursor = node.walk();
4179                    let mut fallback_child = None;
4180                    if fallback_cursor.goto_first_child() {
4181                        loop {
4182                            if fallback_cursor.field_name().is_none()
4183                                && !fallback_cursor.node().is_extra()
4184                            {
4185                                let candidate = fallback_cursor.node();
4186                                #[allow(clippy::needless_question_mark)]
4187                                if (|| -> ::core::result::Result<
4188                                    _,
4189                                    ::treesitter_types::ParseError,
4190                                > {
4191                                    let child = candidate;
4192                                    Ok(
4193                                        <ListSplatChildren as ::treesitter_types::FromNode>::from_node(
4194                                            child,
4195                                            src,
4196                                        )?,
4197                                    )
4198                                })()
4199                                    .is_ok()
4200                                {
4201                                    fallback_child = Some(candidate);
4202                                    break;
4203                                }
4204                            }
4205                            if !fallback_cursor.goto_next_sibling() {
4206                                break;
4207                            }
4208                        }
4209                    }
4210                    if fallback_child.is_none() {
4211                        let mut cursor2 = node.walk();
4212                        if cursor2.goto_first_child() {
4213                            loop {
4214                                if cursor2.node().is_named() && !cursor2.node().is_extra() {
4215                                    let candidate = cursor2.node();
4216                                    #[allow(clippy::needless_question_mark)]
4217                                    if (|| -> ::core::result::Result<
4218                                        _,
4219                                        ::treesitter_types::ParseError,
4220                                    > {
4221                                        let child = candidate;
4222                                        Ok(
4223                                            <ListSplatChildren as ::treesitter_types::FromNode>::from_node(
4224                                                child,
4225                                                src,
4226                                            )?,
4227                                        )
4228                                    })()
4229                                        .is_ok()
4230                                    {
4231                                        fallback_child = Some(candidate);
4232                                        break;
4233                                    }
4234                                }
4235                                if !cursor2.goto_next_sibling() {
4236                                    break;
4237                                }
4238                            }
4239                        }
4240                    }
4241                    fallback_child.ok_or_else(|| {
4242                        ::treesitter_types::ParseError::missing_field("children", node)
4243                    })?
4244                };
4245                <ListSplatChildren as ::treesitter_types::FromNode>::from_node(child, src)?
4246            },
4247        })
4248    }
4249}
4250impl ::treesitter_types::Spanned for ListSplat<'_> {
4251    fn span(&self) -> ::treesitter_types::Span {
4252        self.span
4253    }
4254}
4255#[derive(Debug, Clone)]
4256pub struct ListSplatPattern<'tree> {
4257    pub span: ::treesitter_types::Span,
4258    pub children: ListSplatPatternChildren<'tree>,
4259}
4260impl<'tree> ::treesitter_types::FromNode<'tree> for ListSplatPattern<'tree> {
4261    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
4262    fn from_node(
4263        node: ::tree_sitter::Node<'tree>,
4264        src: &'tree [u8],
4265    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
4266        debug_assert_eq!(node.kind(), "list_splat_pattern");
4267        Ok(Self {
4268            span: ::treesitter_types::Span::from(node),
4269            children: {
4270                #[allow(clippy::suspicious_else_formatting)]
4271                let non_field_children = {
4272                    let mut cursor = node.walk();
4273                    let mut result = ::std::vec::Vec::new();
4274                    if cursor.goto_first_child() {
4275                        loop {
4276                            if cursor.field_name().is_none()
4277                                && cursor.node().is_named()
4278                                && !cursor.node().is_extra()
4279                            {
4280                                result.push(cursor.node());
4281                            }
4282                            if !cursor.goto_next_sibling() {
4283                                break;
4284                            }
4285                        }
4286                    }
4287                    result
4288                };
4289                let child = if let Some(&c) = non_field_children.first() {
4290                    c
4291                } else {
4292                    let mut fallback_cursor = node.walk();
4293                    let mut fallback_child = None;
4294                    if fallback_cursor.goto_first_child() {
4295                        loop {
4296                            if fallback_cursor.field_name().is_none()
4297                                && !fallback_cursor.node().is_extra()
4298                            {
4299                                let candidate = fallback_cursor.node();
4300                                #[allow(clippy::needless_question_mark)]
4301                                if (|| -> ::core::result::Result<
4302                                    _,
4303                                    ::treesitter_types::ParseError,
4304                                > {
4305                                    let child = candidate;
4306                                    Ok(
4307                                        <ListSplatPatternChildren as ::treesitter_types::FromNode>::from_node(
4308                                            child,
4309                                            src,
4310                                        )?,
4311                                    )
4312                                })()
4313                                    .is_ok()
4314                                {
4315                                    fallback_child = Some(candidate);
4316                                    break;
4317                                }
4318                            }
4319                            if !fallback_cursor.goto_next_sibling() {
4320                                break;
4321                            }
4322                        }
4323                    }
4324                    if fallback_child.is_none() {
4325                        let mut cursor2 = node.walk();
4326                        if cursor2.goto_first_child() {
4327                            loop {
4328                                if cursor2.node().is_named() && !cursor2.node().is_extra() {
4329                                    let candidate = cursor2.node();
4330                                    #[allow(clippy::needless_question_mark)]
4331                                    if (|| -> ::core::result::Result<
4332                                        _,
4333                                        ::treesitter_types::ParseError,
4334                                    > {
4335                                        let child = candidate;
4336                                        Ok(
4337                                            <ListSplatPatternChildren as ::treesitter_types::FromNode>::from_node(
4338                                                child,
4339                                                src,
4340                                            )?,
4341                                        )
4342                                    })()
4343                                        .is_ok()
4344                                    {
4345                                        fallback_child = Some(candidate);
4346                                        break;
4347                                    }
4348                                }
4349                                if !cursor2.goto_next_sibling() {
4350                                    break;
4351                                }
4352                            }
4353                        }
4354                    }
4355                    fallback_child.ok_or_else(|| {
4356                        ::treesitter_types::ParseError::missing_field("children", node)
4357                    })?
4358                };
4359                <ListSplatPatternChildren as ::treesitter_types::FromNode>::from_node(child, src)?
4360            },
4361        })
4362    }
4363}
4364impl ::treesitter_types::Spanned for ListSplatPattern<'_> {
4365    fn span(&self) -> ::treesitter_types::Span {
4366        self.span
4367    }
4368}
4369#[derive(Debug, Clone)]
4370pub struct MatchStatement<'tree> {
4371    pub span: ::treesitter_types::Span,
4372    pub body: Block<'tree>,
4373    pub subject: ::std::vec::Vec<Expression<'tree>>,
4374}
4375impl<'tree> ::treesitter_types::FromNode<'tree> for MatchStatement<'tree> {
4376    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
4377    fn from_node(
4378        node: ::tree_sitter::Node<'tree>,
4379        src: &'tree [u8],
4380    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
4381        debug_assert_eq!(node.kind(), "match_statement");
4382        Ok(Self {
4383            span: ::treesitter_types::Span::from(node),
4384            body: {
4385                let child = node
4386                    .child_by_field_name("body")
4387                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("body", node))?;
4388                <Block as ::treesitter_types::FromNode>::from_node(child, src)?
4389            },
4390            subject: {
4391                let mut cursor = node.walk();
4392                let mut items = ::std::vec::Vec::new();
4393                for child in node.children_by_field_name("subject", &mut cursor) {
4394                    items.push(<Expression as ::treesitter_types::FromNode>::from_node(
4395                        child, src,
4396                    )?);
4397                }
4398                items
4399            },
4400        })
4401    }
4402}
4403impl ::treesitter_types::Spanned for MatchStatement<'_> {
4404    fn span(&self) -> ::treesitter_types::Span {
4405        self.span
4406    }
4407}
4408#[derive(Debug, Clone)]
4409pub struct MemberType<'tree> {
4410    pub span: ::treesitter_types::Span,
4411    pub children: ::std::vec::Vec<MemberTypeChildren<'tree>>,
4412}
4413impl<'tree> ::treesitter_types::FromNode<'tree> for MemberType<'tree> {
4414    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
4415    fn from_node(
4416        node: ::tree_sitter::Node<'tree>,
4417        src: &'tree [u8],
4418    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
4419        debug_assert_eq!(node.kind(), "member_type");
4420        Ok(Self {
4421            span: ::treesitter_types::Span::from(node),
4422            children: {
4423                #[allow(clippy::suspicious_else_formatting)]
4424                let non_field_children = {
4425                    let mut cursor = node.walk();
4426                    let mut result = ::std::vec::Vec::new();
4427                    if cursor.goto_first_child() {
4428                        loop {
4429                            if cursor.field_name().is_none()
4430                                && cursor.node().is_named()
4431                                && !cursor.node().is_extra()
4432                            {
4433                                result.push(cursor.node());
4434                            }
4435                            if !cursor.goto_next_sibling() {
4436                                break;
4437                            }
4438                        }
4439                    }
4440                    result
4441                };
4442                let mut items = ::std::vec::Vec::new();
4443                for child in non_field_children {
4444                    items.push(
4445                        <MemberTypeChildren as ::treesitter_types::FromNode>::from_node(
4446                            child, src,
4447                        )?,
4448                    );
4449                }
4450                items
4451            },
4452        })
4453    }
4454}
4455impl ::treesitter_types::Spanned for MemberType<'_> {
4456    fn span(&self) -> ::treesitter_types::Span {
4457        self.span
4458    }
4459}
4460#[derive(Debug, Clone)]
4461pub struct Module<'tree> {
4462    pub span: ::treesitter_types::Span,
4463    pub children: ::std::vec::Vec<ModuleChildren<'tree>>,
4464}
4465impl<'tree> ::treesitter_types::FromNode<'tree> for Module<'tree> {
4466    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
4467    fn from_node(
4468        node: ::tree_sitter::Node<'tree>,
4469        src: &'tree [u8],
4470    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
4471        debug_assert_eq!(node.kind(), "module");
4472        Ok(Self {
4473            span: ::treesitter_types::Span::from(node),
4474            children: {
4475                #[allow(clippy::suspicious_else_formatting)]
4476                let non_field_children = {
4477                    let mut cursor = node.walk();
4478                    let mut result = ::std::vec::Vec::new();
4479                    if cursor.goto_first_child() {
4480                        loop {
4481                            if cursor.field_name().is_none()
4482                                && cursor.node().is_named()
4483                                && !cursor.node().is_extra()
4484                            {
4485                                result.push(cursor.node());
4486                            }
4487                            if !cursor.goto_next_sibling() {
4488                                break;
4489                            }
4490                        }
4491                    }
4492                    result
4493                };
4494                let mut items = ::std::vec::Vec::new();
4495                for child in non_field_children {
4496                    items.push(<ModuleChildren as ::treesitter_types::FromNode>::from_node(
4497                        child, src,
4498                    )?);
4499                }
4500                items
4501            },
4502        })
4503    }
4504}
4505impl ::treesitter_types::Spanned for Module<'_> {
4506    fn span(&self) -> ::treesitter_types::Span {
4507        self.span
4508    }
4509}
4510#[derive(Debug, Clone)]
4511pub struct NamedExpression<'tree> {
4512    pub span: ::treesitter_types::Span,
4513    pub name: Identifier<'tree>,
4514    pub value: Expression<'tree>,
4515}
4516impl<'tree> ::treesitter_types::FromNode<'tree> for NamedExpression<'tree> {
4517    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
4518    fn from_node(
4519        node: ::tree_sitter::Node<'tree>,
4520        src: &'tree [u8],
4521    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
4522        debug_assert_eq!(node.kind(), "named_expression");
4523        Ok(Self {
4524            span: ::treesitter_types::Span::from(node),
4525            name: {
4526                let child = node
4527                    .child_by_field_name("name")
4528                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("name", node))?;
4529                <Identifier as ::treesitter_types::FromNode>::from_node(child, src)?
4530            },
4531            value: {
4532                let child = node
4533                    .child_by_field_name("value")
4534                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("value", node))?;
4535                <Expression as ::treesitter_types::FromNode>::from_node(child, src)?
4536            },
4537        })
4538    }
4539}
4540impl ::treesitter_types::Spanned for NamedExpression<'_> {
4541    fn span(&self) -> ::treesitter_types::Span {
4542        self.span
4543    }
4544}
4545#[derive(Debug, Clone)]
4546pub struct NonlocalStatement<'tree> {
4547    pub span: ::treesitter_types::Span,
4548    pub children: ::std::vec::Vec<Identifier<'tree>>,
4549}
4550impl<'tree> ::treesitter_types::FromNode<'tree> for NonlocalStatement<'tree> {
4551    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
4552    fn from_node(
4553        node: ::tree_sitter::Node<'tree>,
4554        src: &'tree [u8],
4555    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
4556        debug_assert_eq!(node.kind(), "nonlocal_statement");
4557        Ok(Self {
4558            span: ::treesitter_types::Span::from(node),
4559            children: {
4560                #[allow(clippy::suspicious_else_formatting)]
4561                let non_field_children = {
4562                    let mut cursor = node.walk();
4563                    let mut result = ::std::vec::Vec::new();
4564                    if cursor.goto_first_child() {
4565                        loop {
4566                            if cursor.field_name().is_none()
4567                                && cursor.node().is_named()
4568                                && !cursor.node().is_extra()
4569                            {
4570                                result.push(cursor.node());
4571                            }
4572                            if !cursor.goto_next_sibling() {
4573                                break;
4574                            }
4575                        }
4576                    }
4577                    result
4578                };
4579                let mut items = ::std::vec::Vec::new();
4580                for child in non_field_children {
4581                    items.push(<Identifier as ::treesitter_types::FromNode>::from_node(
4582                        child, src,
4583                    )?);
4584                }
4585                items
4586            },
4587        })
4588    }
4589}
4590impl ::treesitter_types::Spanned for NonlocalStatement<'_> {
4591    fn span(&self) -> ::treesitter_types::Span {
4592        self.span
4593    }
4594}
4595#[derive(Debug, Clone)]
4596pub struct NotOperator<'tree> {
4597    pub span: ::treesitter_types::Span,
4598    pub argument: Expression<'tree>,
4599}
4600impl<'tree> ::treesitter_types::FromNode<'tree> for NotOperator<'tree> {
4601    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
4602    fn from_node(
4603        node: ::tree_sitter::Node<'tree>,
4604        src: &'tree [u8],
4605    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
4606        debug_assert_eq!(node.kind(), "not_operator");
4607        Ok(Self {
4608            span: ::treesitter_types::Span::from(node),
4609            argument: {
4610                let child = node.child_by_field_name("argument").ok_or_else(|| {
4611                    ::treesitter_types::ParseError::missing_field("argument", node)
4612                })?;
4613                <Expression as ::treesitter_types::FromNode>::from_node(child, src)?
4614            },
4615        })
4616    }
4617}
4618impl ::treesitter_types::Spanned for NotOperator<'_> {
4619    fn span(&self) -> ::treesitter_types::Span {
4620        self.span
4621    }
4622}
4623#[derive(Debug, Clone)]
4624pub struct Pair<'tree> {
4625    pub span: ::treesitter_types::Span,
4626    pub key: Expression<'tree>,
4627    pub value: Expression<'tree>,
4628}
4629impl<'tree> ::treesitter_types::FromNode<'tree> for Pair<'tree> {
4630    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
4631    fn from_node(
4632        node: ::tree_sitter::Node<'tree>,
4633        src: &'tree [u8],
4634    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
4635        debug_assert_eq!(node.kind(), "pair");
4636        Ok(Self {
4637            span: ::treesitter_types::Span::from(node),
4638            key: {
4639                let child = node
4640                    .child_by_field_name("key")
4641                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("key", node))?;
4642                <Expression as ::treesitter_types::FromNode>::from_node(child, src)?
4643            },
4644            value: {
4645                let child = node
4646                    .child_by_field_name("value")
4647                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("value", node))?;
4648                <Expression as ::treesitter_types::FromNode>::from_node(child, src)?
4649            },
4650        })
4651    }
4652}
4653impl ::treesitter_types::Spanned for Pair<'_> {
4654    fn span(&self) -> ::treesitter_types::Span {
4655        self.span
4656    }
4657}
4658#[derive(Debug, Clone)]
4659pub struct Parameters<'tree> {
4660    pub span: ::treesitter_types::Span,
4661    pub children: ::std::vec::Vec<Parameter<'tree>>,
4662}
4663impl<'tree> ::treesitter_types::FromNode<'tree> for Parameters<'tree> {
4664    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
4665    fn from_node(
4666        node: ::tree_sitter::Node<'tree>,
4667        src: &'tree [u8],
4668    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
4669        debug_assert_eq!(node.kind(), "parameters");
4670        Ok(Self {
4671            span: ::treesitter_types::Span::from(node),
4672            children: {
4673                #[allow(clippy::suspicious_else_formatting)]
4674                let non_field_children = {
4675                    let mut cursor = node.walk();
4676                    let mut result = ::std::vec::Vec::new();
4677                    if cursor.goto_first_child() {
4678                        loop {
4679                            if cursor.field_name().is_none()
4680                                && cursor.node().is_named()
4681                                && !cursor.node().is_extra()
4682                            {
4683                                result.push(cursor.node());
4684                            }
4685                            if !cursor.goto_next_sibling() {
4686                                break;
4687                            }
4688                        }
4689                    }
4690                    result
4691                };
4692                let mut items = ::std::vec::Vec::new();
4693                for child in non_field_children {
4694                    items.push(<Parameter as ::treesitter_types::FromNode>::from_node(
4695                        child, src,
4696                    )?);
4697                }
4698                items
4699            },
4700        })
4701    }
4702}
4703impl ::treesitter_types::Spanned for Parameters<'_> {
4704    fn span(&self) -> ::treesitter_types::Span {
4705        self.span
4706    }
4707}
4708#[derive(Debug, Clone)]
4709pub struct ParenthesizedExpression<'tree> {
4710    pub span: ::treesitter_types::Span,
4711    pub children: ParenthesizedExpressionChildren<'tree>,
4712}
4713impl<'tree> ::treesitter_types::FromNode<'tree> for ParenthesizedExpression<'tree> {
4714    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
4715    fn from_node(
4716        node: ::tree_sitter::Node<'tree>,
4717        src: &'tree [u8],
4718    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
4719        debug_assert_eq!(node.kind(), "parenthesized_expression");
4720        Ok(Self {
4721            span: ::treesitter_types::Span::from(node),
4722            children: {
4723                #[allow(clippy::suspicious_else_formatting)]
4724                let non_field_children = {
4725                    let mut cursor = node.walk();
4726                    let mut result = ::std::vec::Vec::new();
4727                    if cursor.goto_first_child() {
4728                        loop {
4729                            if cursor.field_name().is_none()
4730                                && cursor.node().is_named()
4731                                && !cursor.node().is_extra()
4732                            {
4733                                result.push(cursor.node());
4734                            }
4735                            if !cursor.goto_next_sibling() {
4736                                break;
4737                            }
4738                        }
4739                    }
4740                    result
4741                };
4742                let child = if let Some(&c) = non_field_children.first() {
4743                    c
4744                } else {
4745                    let mut fallback_cursor = node.walk();
4746                    let mut fallback_child = None;
4747                    if fallback_cursor.goto_first_child() {
4748                        loop {
4749                            if fallback_cursor.field_name().is_none()
4750                                && !fallback_cursor.node().is_extra()
4751                            {
4752                                let candidate = fallback_cursor.node();
4753                                #[allow(clippy::needless_question_mark)]
4754                                if (|| -> ::core::result::Result<
4755                                    _,
4756                                    ::treesitter_types::ParseError,
4757                                > {
4758                                    let child = candidate;
4759                                    Ok(
4760                                        <ParenthesizedExpressionChildren as ::treesitter_types::FromNode>::from_node(
4761                                            child,
4762                                            src,
4763                                        )?,
4764                                    )
4765                                })()
4766                                    .is_ok()
4767                                {
4768                                    fallback_child = Some(candidate);
4769                                    break;
4770                                }
4771                            }
4772                            if !fallback_cursor.goto_next_sibling() {
4773                                break;
4774                            }
4775                        }
4776                    }
4777                    if fallback_child.is_none() {
4778                        let mut cursor2 = node.walk();
4779                        if cursor2.goto_first_child() {
4780                            loop {
4781                                if cursor2.node().is_named() && !cursor2.node().is_extra() {
4782                                    let candidate = cursor2.node();
4783                                    #[allow(clippy::needless_question_mark)]
4784                                    if (|| -> ::core::result::Result<
4785                                        _,
4786                                        ::treesitter_types::ParseError,
4787                                    > {
4788                                        let child = candidate;
4789                                        Ok(
4790                                            <ParenthesizedExpressionChildren as ::treesitter_types::FromNode>::from_node(
4791                                                child,
4792                                                src,
4793                                            )?,
4794                                        )
4795                                    })()
4796                                        .is_ok()
4797                                    {
4798                                        fallback_child = Some(candidate);
4799                                        break;
4800                                    }
4801                                }
4802                                if !cursor2.goto_next_sibling() {
4803                                    break;
4804                                }
4805                            }
4806                        }
4807                    }
4808                    fallback_child.ok_or_else(|| {
4809                        ::treesitter_types::ParseError::missing_field("children", node)
4810                    })?
4811                };
4812                <ParenthesizedExpressionChildren as ::treesitter_types::FromNode>::from_node(
4813                    child, src,
4814                )?
4815            },
4816        })
4817    }
4818}
4819impl ::treesitter_types::Spanned for ParenthesizedExpression<'_> {
4820    fn span(&self) -> ::treesitter_types::Span {
4821        self.span
4822    }
4823}
4824#[derive(Debug, Clone)]
4825pub struct ParenthesizedListSplat<'tree> {
4826    pub span: ::treesitter_types::Span,
4827    pub children: ParenthesizedListSplatChildren<'tree>,
4828}
4829impl<'tree> ::treesitter_types::FromNode<'tree> for ParenthesizedListSplat<'tree> {
4830    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
4831    fn from_node(
4832        node: ::tree_sitter::Node<'tree>,
4833        src: &'tree [u8],
4834    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
4835        debug_assert_eq!(node.kind(), "parenthesized_list_splat");
4836        Ok(Self {
4837            span: ::treesitter_types::Span::from(node),
4838            children: {
4839                #[allow(clippy::suspicious_else_formatting)]
4840                let non_field_children = {
4841                    let mut cursor = node.walk();
4842                    let mut result = ::std::vec::Vec::new();
4843                    if cursor.goto_first_child() {
4844                        loop {
4845                            if cursor.field_name().is_none()
4846                                && cursor.node().is_named()
4847                                && !cursor.node().is_extra()
4848                            {
4849                                result.push(cursor.node());
4850                            }
4851                            if !cursor.goto_next_sibling() {
4852                                break;
4853                            }
4854                        }
4855                    }
4856                    result
4857                };
4858                let child = if let Some(&c) = non_field_children.first() {
4859                    c
4860                } else {
4861                    let mut fallback_cursor = node.walk();
4862                    let mut fallback_child = None;
4863                    if fallback_cursor.goto_first_child() {
4864                        loop {
4865                            if fallback_cursor.field_name().is_none()
4866                                && !fallback_cursor.node().is_extra()
4867                            {
4868                                let candidate = fallback_cursor.node();
4869                                #[allow(clippy::needless_question_mark)]
4870                                if (|| -> ::core::result::Result<
4871                                    _,
4872                                    ::treesitter_types::ParseError,
4873                                > {
4874                                    let child = candidate;
4875                                    Ok(
4876                                        <ParenthesizedListSplatChildren as ::treesitter_types::FromNode>::from_node(
4877                                            child,
4878                                            src,
4879                                        )?,
4880                                    )
4881                                })()
4882                                    .is_ok()
4883                                {
4884                                    fallback_child = Some(candidate);
4885                                    break;
4886                                }
4887                            }
4888                            if !fallback_cursor.goto_next_sibling() {
4889                                break;
4890                            }
4891                        }
4892                    }
4893                    if fallback_child.is_none() {
4894                        let mut cursor2 = node.walk();
4895                        if cursor2.goto_first_child() {
4896                            loop {
4897                                if cursor2.node().is_named() && !cursor2.node().is_extra() {
4898                                    let candidate = cursor2.node();
4899                                    #[allow(clippy::needless_question_mark)]
4900                                    if (|| -> ::core::result::Result<
4901                                        _,
4902                                        ::treesitter_types::ParseError,
4903                                    > {
4904                                        let child = candidate;
4905                                        Ok(
4906                                            <ParenthesizedListSplatChildren as ::treesitter_types::FromNode>::from_node(
4907                                                child,
4908                                                src,
4909                                            )?,
4910                                        )
4911                                    })()
4912                                        .is_ok()
4913                                    {
4914                                        fallback_child = Some(candidate);
4915                                        break;
4916                                    }
4917                                }
4918                                if !cursor2.goto_next_sibling() {
4919                                    break;
4920                                }
4921                            }
4922                        }
4923                    }
4924                    fallback_child.ok_or_else(|| {
4925                        ::treesitter_types::ParseError::missing_field("children", node)
4926                    })?
4927                };
4928                <ParenthesizedListSplatChildren as ::treesitter_types::FromNode>::from_node(
4929                    child, src,
4930                )?
4931            },
4932        })
4933    }
4934}
4935impl ::treesitter_types::Spanned for ParenthesizedListSplat<'_> {
4936    fn span(&self) -> ::treesitter_types::Span {
4937        self.span
4938    }
4939}
4940#[derive(Debug, Clone)]
4941pub struct PassStatement<'tree> {
4942    pub span: ::treesitter_types::Span,
4943    text: &'tree str,
4944}
4945impl<'tree> ::treesitter_types::FromNode<'tree> for PassStatement<'tree> {
4946    fn from_node(
4947        node: ::tree_sitter::Node<'tree>,
4948        src: &'tree [u8],
4949    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
4950        debug_assert_eq!(node.kind(), "pass_statement");
4951        Ok(Self {
4952            span: ::treesitter_types::Span::from(node),
4953            text: node.utf8_text(src)?,
4954        })
4955    }
4956}
4957impl<'tree> ::treesitter_types::LeafNode<'tree> for PassStatement<'tree> {
4958    fn text(&self) -> &'tree str {
4959        self.text
4960    }
4961}
4962impl ::treesitter_types::Spanned for PassStatement<'_> {
4963    fn span(&self) -> ::treesitter_types::Span {
4964        self.span
4965    }
4966}
4967#[derive(Debug, Clone)]
4968pub struct PatternList<'tree> {
4969    pub span: ::treesitter_types::Span,
4970    pub children: ::std::vec::Vec<Pattern<'tree>>,
4971}
4972impl<'tree> ::treesitter_types::FromNode<'tree> for PatternList<'tree> {
4973    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
4974    fn from_node(
4975        node: ::tree_sitter::Node<'tree>,
4976        src: &'tree [u8],
4977    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
4978        debug_assert_eq!(node.kind(), "pattern_list");
4979        Ok(Self {
4980            span: ::treesitter_types::Span::from(node),
4981            children: {
4982                #[allow(clippy::suspicious_else_formatting)]
4983                let non_field_children = {
4984                    let mut cursor = node.walk();
4985                    let mut result = ::std::vec::Vec::new();
4986                    if cursor.goto_first_child() {
4987                        loop {
4988                            if cursor.field_name().is_none()
4989                                && cursor.node().is_named()
4990                                && !cursor.node().is_extra()
4991                            {
4992                                result.push(cursor.node());
4993                            }
4994                            if !cursor.goto_next_sibling() {
4995                                break;
4996                            }
4997                        }
4998                    }
4999                    result
5000                };
5001                let mut items = ::std::vec::Vec::new();
5002                for child in non_field_children {
5003                    items.push(<Pattern as ::treesitter_types::FromNode>::from_node(
5004                        child, src,
5005                    )?);
5006                }
5007                items
5008            },
5009        })
5010    }
5011}
5012impl ::treesitter_types::Spanned for PatternList<'_> {
5013    fn span(&self) -> ::treesitter_types::Span {
5014        self.span
5015    }
5016}
5017#[derive(Debug, Clone)]
5018pub struct PositionalSeparator<'tree> {
5019    pub span: ::treesitter_types::Span,
5020    text: &'tree str,
5021}
5022impl<'tree> ::treesitter_types::FromNode<'tree> for PositionalSeparator<'tree> {
5023    fn from_node(
5024        node: ::tree_sitter::Node<'tree>,
5025        src: &'tree [u8],
5026    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
5027        debug_assert_eq!(node.kind(), "positional_separator");
5028        Ok(Self {
5029            span: ::treesitter_types::Span::from(node),
5030            text: node.utf8_text(src)?,
5031        })
5032    }
5033}
5034impl<'tree> ::treesitter_types::LeafNode<'tree> for PositionalSeparator<'tree> {
5035    fn text(&self) -> &'tree str {
5036        self.text
5037    }
5038}
5039impl ::treesitter_types::Spanned for PositionalSeparator<'_> {
5040    fn span(&self) -> ::treesitter_types::Span {
5041        self.span
5042    }
5043}
5044#[derive(Debug, Clone)]
5045pub struct PrintStatement<'tree> {
5046    pub span: ::treesitter_types::Span,
5047    pub argument: ::std::vec::Vec<Expression<'tree>>,
5048    pub children: ::core::option::Option<Chevron<'tree>>,
5049}
5050impl<'tree> ::treesitter_types::FromNode<'tree> for PrintStatement<'tree> {
5051    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
5052    fn from_node(
5053        node: ::tree_sitter::Node<'tree>,
5054        src: &'tree [u8],
5055    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
5056        debug_assert_eq!(node.kind(), "print_statement");
5057        Ok(Self {
5058            span: ::treesitter_types::Span::from(node),
5059            argument: {
5060                let mut cursor = node.walk();
5061                let mut items = ::std::vec::Vec::new();
5062                for child in node.children_by_field_name("argument", &mut cursor) {
5063                    items.push(<Expression as ::treesitter_types::FromNode>::from_node(
5064                        child, src,
5065                    )?);
5066                }
5067                items
5068            },
5069            children: {
5070                #[allow(clippy::suspicious_else_formatting)]
5071                let non_field_children = {
5072                    let mut cursor = node.walk();
5073                    let mut result = ::std::vec::Vec::new();
5074                    if cursor.goto_first_child() {
5075                        loop {
5076                            if cursor.field_name().is_none()
5077                                && cursor.node().is_named()
5078                                && !cursor.node().is_extra()
5079                            {
5080                                result.push(cursor.node());
5081                            }
5082                            if !cursor.goto_next_sibling() {
5083                                break;
5084                            }
5085                        }
5086                    }
5087                    result
5088                };
5089                match non_field_children.first() {
5090                    Some(&child) => Some(<Chevron as ::treesitter_types::FromNode>::from_node(
5091                        child, src,
5092                    )?),
5093                    None => None,
5094                }
5095            },
5096        })
5097    }
5098}
5099impl ::treesitter_types::Spanned for PrintStatement<'_> {
5100    fn span(&self) -> ::treesitter_types::Span {
5101        self.span
5102    }
5103}
5104#[derive(Debug, Clone)]
5105pub struct RaiseStatement<'tree> {
5106    pub span: ::treesitter_types::Span,
5107    pub cause: ::core::option::Option<Expression<'tree>>,
5108    pub children: ::core::option::Option<RaiseStatementChildren<'tree>>,
5109}
5110impl<'tree> ::treesitter_types::FromNode<'tree> for RaiseStatement<'tree> {
5111    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
5112    fn from_node(
5113        node: ::tree_sitter::Node<'tree>,
5114        src: &'tree [u8],
5115    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
5116        debug_assert_eq!(node.kind(), "raise_statement");
5117        Ok(Self {
5118            span: ::treesitter_types::Span::from(node),
5119            cause: match node.child_by_field_name("cause") {
5120                Some(child) => Some(<Expression as ::treesitter_types::FromNode>::from_node(
5121                    child, src,
5122                )?),
5123                None => None,
5124            },
5125            children: {
5126                #[allow(clippy::suspicious_else_formatting)]
5127                let non_field_children = {
5128                    let mut cursor = node.walk();
5129                    let mut result = ::std::vec::Vec::new();
5130                    if cursor.goto_first_child() {
5131                        loop {
5132                            if cursor.field_name().is_none()
5133                                && cursor.node().is_named()
5134                                && !cursor.node().is_extra()
5135                            {
5136                                result.push(cursor.node());
5137                            }
5138                            if !cursor.goto_next_sibling() {
5139                                break;
5140                            }
5141                        }
5142                    }
5143                    result
5144                };
5145                match non_field_children.first() {
5146                    Some(&child) => Some(
5147                        <RaiseStatementChildren as ::treesitter_types::FromNode>::from_node(
5148                            child, src,
5149                        )?,
5150                    ),
5151                    None => None,
5152                }
5153            },
5154        })
5155    }
5156}
5157impl ::treesitter_types::Spanned for RaiseStatement<'_> {
5158    fn span(&self) -> ::treesitter_types::Span {
5159        self.span
5160    }
5161}
5162#[derive(Debug, Clone)]
5163pub struct RelativeImport<'tree> {
5164    pub span: ::treesitter_types::Span,
5165    pub children: ::std::vec::Vec<RelativeImportChildren<'tree>>,
5166}
5167impl<'tree> ::treesitter_types::FromNode<'tree> for RelativeImport<'tree> {
5168    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
5169    fn from_node(
5170        node: ::tree_sitter::Node<'tree>,
5171        src: &'tree [u8],
5172    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
5173        debug_assert_eq!(node.kind(), "relative_import");
5174        Ok(Self {
5175            span: ::treesitter_types::Span::from(node),
5176            children: {
5177                #[allow(clippy::suspicious_else_formatting)]
5178                let non_field_children = {
5179                    let mut cursor = node.walk();
5180                    let mut result = ::std::vec::Vec::new();
5181                    if cursor.goto_first_child() {
5182                        loop {
5183                            if cursor.field_name().is_none()
5184                                && cursor.node().is_named()
5185                                && !cursor.node().is_extra()
5186                            {
5187                                result.push(cursor.node());
5188                            }
5189                            if !cursor.goto_next_sibling() {
5190                                break;
5191                            }
5192                        }
5193                    }
5194                    result
5195                };
5196                let mut items = ::std::vec::Vec::new();
5197                for child in non_field_children {
5198                    items.push(
5199                        <RelativeImportChildren as ::treesitter_types::FromNode>::from_node(
5200                            child, src,
5201                        )?,
5202                    );
5203                }
5204                items
5205            },
5206        })
5207    }
5208}
5209impl ::treesitter_types::Spanned for RelativeImport<'_> {
5210    fn span(&self) -> ::treesitter_types::Span {
5211        self.span
5212    }
5213}
5214#[derive(Debug, Clone)]
5215pub struct ReturnStatement<'tree> {
5216    pub span: ::treesitter_types::Span,
5217    pub children: ::core::option::Option<ReturnStatementChildren<'tree>>,
5218}
5219impl<'tree> ::treesitter_types::FromNode<'tree> for ReturnStatement<'tree> {
5220    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
5221    fn from_node(
5222        node: ::tree_sitter::Node<'tree>,
5223        src: &'tree [u8],
5224    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
5225        debug_assert_eq!(node.kind(), "return_statement");
5226        Ok(Self {
5227            span: ::treesitter_types::Span::from(node),
5228            children: {
5229                #[allow(clippy::suspicious_else_formatting)]
5230                let non_field_children = {
5231                    let mut cursor = node.walk();
5232                    let mut result = ::std::vec::Vec::new();
5233                    if cursor.goto_first_child() {
5234                        loop {
5235                            if cursor.field_name().is_none()
5236                                && cursor.node().is_named()
5237                                && !cursor.node().is_extra()
5238                            {
5239                                result.push(cursor.node());
5240                            }
5241                            if !cursor.goto_next_sibling() {
5242                                break;
5243                            }
5244                        }
5245                    }
5246                    result
5247                };
5248                match non_field_children.first() {
5249                    Some(&child) => Some(
5250                        <ReturnStatementChildren as ::treesitter_types::FromNode>::from_node(
5251                            child, src,
5252                        )?,
5253                    ),
5254                    None => None,
5255                }
5256            },
5257        })
5258    }
5259}
5260impl ::treesitter_types::Spanned for ReturnStatement<'_> {
5261    fn span(&self) -> ::treesitter_types::Span {
5262        self.span
5263    }
5264}
5265#[derive(Debug, Clone)]
5266pub struct Set<'tree> {
5267    pub span: ::treesitter_types::Span,
5268    pub children: ::std::vec::Vec<SetChildren<'tree>>,
5269}
5270impl<'tree> ::treesitter_types::FromNode<'tree> for Set<'tree> {
5271    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
5272    fn from_node(
5273        node: ::tree_sitter::Node<'tree>,
5274        src: &'tree [u8],
5275    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
5276        debug_assert_eq!(node.kind(), "set");
5277        Ok(Self {
5278            span: ::treesitter_types::Span::from(node),
5279            children: {
5280                #[allow(clippy::suspicious_else_formatting)]
5281                let non_field_children = {
5282                    let mut cursor = node.walk();
5283                    let mut result = ::std::vec::Vec::new();
5284                    if cursor.goto_first_child() {
5285                        loop {
5286                            if cursor.field_name().is_none()
5287                                && cursor.node().is_named()
5288                                && !cursor.node().is_extra()
5289                            {
5290                                result.push(cursor.node());
5291                            }
5292                            if !cursor.goto_next_sibling() {
5293                                break;
5294                            }
5295                        }
5296                    }
5297                    result
5298                };
5299                let mut items = ::std::vec::Vec::new();
5300                for child in non_field_children {
5301                    items.push(<SetChildren as ::treesitter_types::FromNode>::from_node(
5302                        child, src,
5303                    )?);
5304                }
5305                items
5306            },
5307        })
5308    }
5309}
5310impl ::treesitter_types::Spanned for Set<'_> {
5311    fn span(&self) -> ::treesitter_types::Span {
5312        self.span
5313    }
5314}
5315#[derive(Debug, Clone)]
5316pub struct SetComprehension<'tree> {
5317    pub span: ::treesitter_types::Span,
5318    pub body: Expression<'tree>,
5319    pub children: ::std::vec::Vec<SetComprehensionChildren<'tree>>,
5320}
5321impl<'tree> ::treesitter_types::FromNode<'tree> for SetComprehension<'tree> {
5322    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
5323    fn from_node(
5324        node: ::tree_sitter::Node<'tree>,
5325        src: &'tree [u8],
5326    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
5327        debug_assert_eq!(node.kind(), "set_comprehension");
5328        Ok(Self {
5329            span: ::treesitter_types::Span::from(node),
5330            body: {
5331                let child = node
5332                    .child_by_field_name("body")
5333                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("body", node))?;
5334                <Expression as ::treesitter_types::FromNode>::from_node(child, src)?
5335            },
5336            children: {
5337                #[allow(clippy::suspicious_else_formatting)]
5338                let non_field_children = {
5339                    let mut cursor = node.walk();
5340                    let mut result = ::std::vec::Vec::new();
5341                    if cursor.goto_first_child() {
5342                        loop {
5343                            if cursor.field_name().is_none()
5344                                && cursor.node().is_named()
5345                                && !cursor.node().is_extra()
5346                            {
5347                                result.push(cursor.node());
5348                            }
5349                            if !cursor.goto_next_sibling() {
5350                                break;
5351                            }
5352                        }
5353                    }
5354                    result
5355                };
5356                let mut items = ::std::vec::Vec::new();
5357                for child in non_field_children {
5358                    items.push(
5359                        <SetComprehensionChildren as ::treesitter_types::FromNode>::from_node(
5360                            child, src,
5361                        )?,
5362                    );
5363                }
5364                items
5365            },
5366        })
5367    }
5368}
5369impl ::treesitter_types::Spanned for SetComprehension<'_> {
5370    fn span(&self) -> ::treesitter_types::Span {
5371        self.span
5372    }
5373}
5374#[derive(Debug, Clone)]
5375pub struct Slice<'tree> {
5376    pub span: ::treesitter_types::Span,
5377    pub children: ::std::vec::Vec<Expression<'tree>>,
5378}
5379impl<'tree> ::treesitter_types::FromNode<'tree> for Slice<'tree> {
5380    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
5381    fn from_node(
5382        node: ::tree_sitter::Node<'tree>,
5383        src: &'tree [u8],
5384    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
5385        debug_assert_eq!(node.kind(), "slice");
5386        Ok(Self {
5387            span: ::treesitter_types::Span::from(node),
5388            children: {
5389                #[allow(clippy::suspicious_else_formatting)]
5390                let non_field_children = {
5391                    let mut cursor = node.walk();
5392                    let mut result = ::std::vec::Vec::new();
5393                    if cursor.goto_first_child() {
5394                        loop {
5395                            if cursor.field_name().is_none()
5396                                && cursor.node().is_named()
5397                                && !cursor.node().is_extra()
5398                            {
5399                                result.push(cursor.node());
5400                            }
5401                            if !cursor.goto_next_sibling() {
5402                                break;
5403                            }
5404                        }
5405                    }
5406                    result
5407                };
5408                let mut items = ::std::vec::Vec::new();
5409                for child in non_field_children {
5410                    items.push(<Expression as ::treesitter_types::FromNode>::from_node(
5411                        child, src,
5412                    )?);
5413                }
5414                items
5415            },
5416        })
5417    }
5418}
5419impl ::treesitter_types::Spanned for Slice<'_> {
5420    fn span(&self) -> ::treesitter_types::Span {
5421        self.span
5422    }
5423}
5424#[derive(Debug, Clone)]
5425pub struct SplatPattern<'tree> {
5426    pub span: ::treesitter_types::Span,
5427    pub children: ::core::option::Option<Identifier<'tree>>,
5428}
5429impl<'tree> ::treesitter_types::FromNode<'tree> for SplatPattern<'tree> {
5430    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
5431    fn from_node(
5432        node: ::tree_sitter::Node<'tree>,
5433        src: &'tree [u8],
5434    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
5435        debug_assert_eq!(node.kind(), "splat_pattern");
5436        Ok(Self {
5437            span: ::treesitter_types::Span::from(node),
5438            children: {
5439                #[allow(clippy::suspicious_else_formatting)]
5440                let non_field_children = {
5441                    let mut cursor = node.walk();
5442                    let mut result = ::std::vec::Vec::new();
5443                    if cursor.goto_first_child() {
5444                        loop {
5445                            if cursor.field_name().is_none()
5446                                && cursor.node().is_named()
5447                                && !cursor.node().is_extra()
5448                            {
5449                                result.push(cursor.node());
5450                            }
5451                            if !cursor.goto_next_sibling() {
5452                                break;
5453                            }
5454                        }
5455                    }
5456                    result
5457                };
5458                match non_field_children.first() {
5459                    Some(&child) => Some(<Identifier as ::treesitter_types::FromNode>::from_node(
5460                        child, src,
5461                    )?),
5462                    None => None,
5463                }
5464            },
5465        })
5466    }
5467}
5468impl ::treesitter_types::Spanned for SplatPattern<'_> {
5469    fn span(&self) -> ::treesitter_types::Span {
5470        self.span
5471    }
5472}
5473#[derive(Debug, Clone)]
5474pub struct SplatType<'tree> {
5475    pub span: ::treesitter_types::Span,
5476    pub children: Identifier<'tree>,
5477}
5478impl<'tree> ::treesitter_types::FromNode<'tree> for SplatType<'tree> {
5479    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
5480    fn from_node(
5481        node: ::tree_sitter::Node<'tree>,
5482        src: &'tree [u8],
5483    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
5484        debug_assert_eq!(node.kind(), "splat_type");
5485        Ok(Self {
5486            span: ::treesitter_types::Span::from(node),
5487            children: {
5488                #[allow(clippy::suspicious_else_formatting)]
5489                let non_field_children = {
5490                    let mut cursor = node.walk();
5491                    let mut result = ::std::vec::Vec::new();
5492                    if cursor.goto_first_child() {
5493                        loop {
5494                            if cursor.field_name().is_none()
5495                                && cursor.node().is_named()
5496                                && !cursor.node().is_extra()
5497                            {
5498                                result.push(cursor.node());
5499                            }
5500                            if !cursor.goto_next_sibling() {
5501                                break;
5502                            }
5503                        }
5504                    }
5505                    result
5506                };
5507                let child = if let Some(&c) = non_field_children.first() {
5508                    c
5509                } else {
5510                    let mut fallback_cursor = node.walk();
5511                    let mut fallback_child = None;
5512                    if fallback_cursor.goto_first_child() {
5513                        loop {
5514                            if fallback_cursor.field_name().is_none()
5515                                && !fallback_cursor.node().is_extra()
5516                            {
5517                                let candidate = fallback_cursor.node();
5518                                #[allow(clippy::needless_question_mark)]
5519                                if (|| -> ::core::result::Result<
5520                                    _,
5521                                    ::treesitter_types::ParseError,
5522                                > {
5523                                    let child = candidate;
5524                                    Ok(
5525                                        <Identifier as ::treesitter_types::FromNode>::from_node(
5526                                            child,
5527                                            src,
5528                                        )?,
5529                                    )
5530                                })()
5531                                    .is_ok()
5532                                {
5533                                    fallback_child = Some(candidate);
5534                                    break;
5535                                }
5536                            }
5537                            if !fallback_cursor.goto_next_sibling() {
5538                                break;
5539                            }
5540                        }
5541                    }
5542                    if fallback_child.is_none() {
5543                        let mut cursor2 = node.walk();
5544                        if cursor2.goto_first_child() {
5545                            loop {
5546                                if cursor2.node().is_named() && !cursor2.node().is_extra() {
5547                                    let candidate = cursor2.node();
5548                                    #[allow(clippy::needless_question_mark)]
5549                                    if (|| -> ::core::result::Result<
5550                                        _,
5551                                        ::treesitter_types::ParseError,
5552                                    > {
5553                                        let child = candidate;
5554                                        Ok(
5555                                            <Identifier as ::treesitter_types::FromNode>::from_node(
5556                                                child,
5557                                                src,
5558                                            )?,
5559                                        )
5560                                    })()
5561                                        .is_ok()
5562                                    {
5563                                        fallback_child = Some(candidate);
5564                                        break;
5565                                    }
5566                                }
5567                                if !cursor2.goto_next_sibling() {
5568                                    break;
5569                                }
5570                            }
5571                        }
5572                    }
5573                    fallback_child.ok_or_else(|| {
5574                        ::treesitter_types::ParseError::missing_field("children", node)
5575                    })?
5576                };
5577                <Identifier as ::treesitter_types::FromNode>::from_node(child, src)?
5578            },
5579        })
5580    }
5581}
5582impl ::treesitter_types::Spanned for SplatType<'_> {
5583    fn span(&self) -> ::treesitter_types::Span {
5584        self.span
5585    }
5586}
5587#[derive(Debug, Clone)]
5588pub struct String<'tree> {
5589    pub span: ::treesitter_types::Span,
5590    pub children: ::std::vec::Vec<StringChildren<'tree>>,
5591}
5592impl<'tree> ::treesitter_types::FromNode<'tree> for String<'tree> {
5593    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
5594    fn from_node(
5595        node: ::tree_sitter::Node<'tree>,
5596        src: &'tree [u8],
5597    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
5598        debug_assert_eq!(node.kind(), "string");
5599        Ok(Self {
5600            span: ::treesitter_types::Span::from(node),
5601            children: {
5602                #[allow(clippy::suspicious_else_formatting)]
5603                let non_field_children = {
5604                    let mut cursor = node.walk();
5605                    let mut result = ::std::vec::Vec::new();
5606                    if cursor.goto_first_child() {
5607                        loop {
5608                            if cursor.field_name().is_none()
5609                                && cursor.node().is_named()
5610                                && !cursor.node().is_extra()
5611                            {
5612                                result.push(cursor.node());
5613                            }
5614                            if !cursor.goto_next_sibling() {
5615                                break;
5616                            }
5617                        }
5618                    }
5619                    result
5620                };
5621                let mut items = ::std::vec::Vec::new();
5622                for child in non_field_children {
5623                    items.push(<StringChildren as ::treesitter_types::FromNode>::from_node(
5624                        child, src,
5625                    )?);
5626                }
5627                items
5628            },
5629        })
5630    }
5631}
5632impl ::treesitter_types::Spanned for String<'_> {
5633    fn span(&self) -> ::treesitter_types::Span {
5634        self.span
5635    }
5636}
5637#[derive(Debug, Clone)]
5638pub struct StringContent<'tree> {
5639    pub span: ::treesitter_types::Span,
5640    pub children: ::std::vec::Vec<StringContentChildren<'tree>>,
5641}
5642impl<'tree> ::treesitter_types::FromNode<'tree> for StringContent<'tree> {
5643    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
5644    fn from_node(
5645        node: ::tree_sitter::Node<'tree>,
5646        src: &'tree [u8],
5647    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
5648        debug_assert_eq!(node.kind(), "string_content");
5649        Ok(Self {
5650            span: ::treesitter_types::Span::from(node),
5651            children: {
5652                #[allow(clippy::suspicious_else_formatting)]
5653                let non_field_children = {
5654                    let mut cursor = node.walk();
5655                    let mut result = ::std::vec::Vec::new();
5656                    if cursor.goto_first_child() {
5657                        loop {
5658                            if cursor.field_name().is_none()
5659                                && cursor.node().is_named()
5660                                && !cursor.node().is_extra()
5661                            {
5662                                result.push(cursor.node());
5663                            }
5664                            if !cursor.goto_next_sibling() {
5665                                break;
5666                            }
5667                        }
5668                    }
5669                    result
5670                };
5671                let mut items = ::std::vec::Vec::new();
5672                for child in non_field_children {
5673                    items.push(
5674                        <StringContentChildren as ::treesitter_types::FromNode>::from_node(
5675                            child, src,
5676                        )?,
5677                    );
5678                }
5679                items
5680            },
5681        })
5682    }
5683}
5684impl ::treesitter_types::Spanned for StringContent<'_> {
5685    fn span(&self) -> ::treesitter_types::Span {
5686        self.span
5687    }
5688}
5689#[derive(Debug, Clone)]
5690pub struct Subscript<'tree> {
5691    pub span: ::treesitter_types::Span,
5692    pub subscript: ::std::vec::Vec<SubscriptSubscript<'tree>>,
5693    pub value: PrimaryExpression<'tree>,
5694}
5695impl<'tree> ::treesitter_types::FromNode<'tree> for Subscript<'tree> {
5696    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
5697    fn from_node(
5698        node: ::tree_sitter::Node<'tree>,
5699        src: &'tree [u8],
5700    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
5701        debug_assert_eq!(node.kind(), "subscript");
5702        Ok(Self {
5703            span: ::treesitter_types::Span::from(node),
5704            subscript: {
5705                let mut cursor = node.walk();
5706                let mut items = ::std::vec::Vec::new();
5707                for child in node.children_by_field_name("subscript", &mut cursor) {
5708                    items.push(
5709                        <SubscriptSubscript as ::treesitter_types::FromNode>::from_node(
5710                            child, src,
5711                        )?,
5712                    );
5713                }
5714                items
5715            },
5716            value: {
5717                let child = node
5718                    .child_by_field_name("value")
5719                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("value", node))?;
5720                <PrimaryExpression as ::treesitter_types::FromNode>::from_node(child, src)?
5721            },
5722        })
5723    }
5724}
5725impl ::treesitter_types::Spanned for Subscript<'_> {
5726    fn span(&self) -> ::treesitter_types::Span {
5727        self.span
5728    }
5729}
5730#[derive(Debug, Clone)]
5731pub struct TryStatement<'tree> {
5732    pub span: ::treesitter_types::Span,
5733    pub body: Block<'tree>,
5734    pub children: ::std::vec::Vec<TryStatementChildren<'tree>>,
5735}
5736impl<'tree> ::treesitter_types::FromNode<'tree> for TryStatement<'tree> {
5737    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
5738    fn from_node(
5739        node: ::tree_sitter::Node<'tree>,
5740        src: &'tree [u8],
5741    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
5742        debug_assert_eq!(node.kind(), "try_statement");
5743        Ok(Self {
5744            span: ::treesitter_types::Span::from(node),
5745            body: {
5746                let child = node
5747                    .child_by_field_name("body")
5748                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("body", node))?;
5749                <Block as ::treesitter_types::FromNode>::from_node(child, src)?
5750            },
5751            children: {
5752                #[allow(clippy::suspicious_else_formatting)]
5753                let non_field_children = {
5754                    let mut cursor = node.walk();
5755                    let mut result = ::std::vec::Vec::new();
5756                    if cursor.goto_first_child() {
5757                        loop {
5758                            if cursor.field_name().is_none()
5759                                && cursor.node().is_named()
5760                                && !cursor.node().is_extra()
5761                            {
5762                                result.push(cursor.node());
5763                            }
5764                            if !cursor.goto_next_sibling() {
5765                                break;
5766                            }
5767                        }
5768                    }
5769                    result
5770                };
5771                let mut items = ::std::vec::Vec::new();
5772                for child in non_field_children {
5773                    items.push(
5774                        <TryStatementChildren as ::treesitter_types::FromNode>::from_node(
5775                            child, src,
5776                        )?,
5777                    );
5778                }
5779                items
5780            },
5781        })
5782    }
5783}
5784impl ::treesitter_types::Spanned for TryStatement<'_> {
5785    fn span(&self) -> ::treesitter_types::Span {
5786        self.span
5787    }
5788}
5789#[derive(Debug, Clone)]
5790pub struct Tuple<'tree> {
5791    pub span: ::treesitter_types::Span,
5792    pub children: ::std::vec::Vec<TupleChildren<'tree>>,
5793}
5794impl<'tree> ::treesitter_types::FromNode<'tree> for Tuple<'tree> {
5795    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
5796    fn from_node(
5797        node: ::tree_sitter::Node<'tree>,
5798        src: &'tree [u8],
5799    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
5800        debug_assert_eq!(node.kind(), "tuple");
5801        Ok(Self {
5802            span: ::treesitter_types::Span::from(node),
5803            children: {
5804                #[allow(clippy::suspicious_else_formatting)]
5805                let non_field_children = {
5806                    let mut cursor = node.walk();
5807                    let mut result = ::std::vec::Vec::new();
5808                    if cursor.goto_first_child() {
5809                        loop {
5810                            if cursor.field_name().is_none()
5811                                && cursor.node().is_named()
5812                                && !cursor.node().is_extra()
5813                            {
5814                                result.push(cursor.node());
5815                            }
5816                            if !cursor.goto_next_sibling() {
5817                                break;
5818                            }
5819                        }
5820                    }
5821                    result
5822                };
5823                let mut items = ::std::vec::Vec::new();
5824                for child in non_field_children {
5825                    items.push(<TupleChildren as ::treesitter_types::FromNode>::from_node(
5826                        child, src,
5827                    )?);
5828                }
5829                items
5830            },
5831        })
5832    }
5833}
5834impl ::treesitter_types::Spanned for Tuple<'_> {
5835    fn span(&self) -> ::treesitter_types::Span {
5836        self.span
5837    }
5838}
5839#[derive(Debug, Clone)]
5840pub struct TuplePattern<'tree> {
5841    pub span: ::treesitter_types::Span,
5842    pub children: ::std::vec::Vec<TuplePatternChildren<'tree>>,
5843}
5844impl<'tree> ::treesitter_types::FromNode<'tree> for TuplePattern<'tree> {
5845    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
5846    fn from_node(
5847        node: ::tree_sitter::Node<'tree>,
5848        src: &'tree [u8],
5849    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
5850        debug_assert_eq!(node.kind(), "tuple_pattern");
5851        Ok(Self {
5852            span: ::treesitter_types::Span::from(node),
5853            children: {
5854                #[allow(clippy::suspicious_else_formatting)]
5855                let non_field_children = {
5856                    let mut cursor = node.walk();
5857                    let mut result = ::std::vec::Vec::new();
5858                    if cursor.goto_first_child() {
5859                        loop {
5860                            if cursor.field_name().is_none()
5861                                && cursor.node().is_named()
5862                                && !cursor.node().is_extra()
5863                            {
5864                                result.push(cursor.node());
5865                            }
5866                            if !cursor.goto_next_sibling() {
5867                                break;
5868                            }
5869                        }
5870                    }
5871                    result
5872                };
5873                let mut items = ::std::vec::Vec::new();
5874                for child in non_field_children {
5875                    items.push(
5876                        <TuplePatternChildren as ::treesitter_types::FromNode>::from_node(
5877                            child, src,
5878                        )?,
5879                    );
5880                }
5881                items
5882            },
5883        })
5884    }
5885}
5886impl ::treesitter_types::Spanned for TuplePattern<'_> {
5887    fn span(&self) -> ::treesitter_types::Span {
5888        self.span
5889    }
5890}
5891#[derive(Debug, Clone)]
5892pub struct Type<'tree> {
5893    pub span: ::treesitter_types::Span,
5894    pub children: TypeChildren<'tree>,
5895}
5896impl<'tree> ::treesitter_types::FromNode<'tree> for Type<'tree> {
5897    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
5898    fn from_node(
5899        node: ::tree_sitter::Node<'tree>,
5900        src: &'tree [u8],
5901    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
5902        debug_assert_eq!(node.kind(), "type");
5903        Ok(Self {
5904            span: ::treesitter_types::Span::from(node),
5905            children: {
5906                #[allow(clippy::suspicious_else_formatting)]
5907                let non_field_children = {
5908                    let mut cursor = node.walk();
5909                    let mut result = ::std::vec::Vec::new();
5910                    if cursor.goto_first_child() {
5911                        loop {
5912                            if cursor.field_name().is_none()
5913                                && cursor.node().is_named()
5914                                && !cursor.node().is_extra()
5915                            {
5916                                result.push(cursor.node());
5917                            }
5918                            if !cursor.goto_next_sibling() {
5919                                break;
5920                            }
5921                        }
5922                    }
5923                    result
5924                };
5925                let child = if let Some(&c) = non_field_children.first() {
5926                    c
5927                } else {
5928                    let mut fallback_cursor = node.walk();
5929                    let mut fallback_child = None;
5930                    if fallback_cursor.goto_first_child() {
5931                        loop {
5932                            if fallback_cursor.field_name().is_none()
5933                                && !fallback_cursor.node().is_extra()
5934                            {
5935                                let candidate = fallback_cursor.node();
5936                                #[allow(clippy::needless_question_mark)]
5937                                if (|| -> ::core::result::Result<
5938                                    _,
5939                                    ::treesitter_types::ParseError,
5940                                > {
5941                                    let child = candidate;
5942                                    Ok(
5943                                        <TypeChildren as ::treesitter_types::FromNode>::from_node(
5944                                            child,
5945                                            src,
5946                                        )?,
5947                                    )
5948                                })()
5949                                    .is_ok()
5950                                {
5951                                    fallback_child = Some(candidate);
5952                                    break;
5953                                }
5954                            }
5955                            if !fallback_cursor.goto_next_sibling() {
5956                                break;
5957                            }
5958                        }
5959                    }
5960                    if fallback_child.is_none() {
5961                        let mut cursor2 = node.walk();
5962                        if cursor2.goto_first_child() {
5963                            loop {
5964                                if cursor2.node().is_named() && !cursor2.node().is_extra() {
5965                                    let candidate = cursor2.node();
5966                                    #[allow(clippy::needless_question_mark)]
5967                                    if (|| -> ::core::result::Result<
5968                                        _,
5969                                        ::treesitter_types::ParseError,
5970                                    > {
5971                                        let child = candidate;
5972                                        Ok(
5973                                            <TypeChildren as ::treesitter_types::FromNode>::from_node(
5974                                                child,
5975                                                src,
5976                                            )?,
5977                                        )
5978                                    })()
5979                                        .is_ok()
5980                                    {
5981                                        fallback_child = Some(candidate);
5982                                        break;
5983                                    }
5984                                }
5985                                if !cursor2.goto_next_sibling() {
5986                                    break;
5987                                }
5988                            }
5989                        }
5990                    }
5991                    fallback_child.ok_or_else(|| {
5992                        ::treesitter_types::ParseError::missing_field("children", node)
5993                    })?
5994                };
5995                <TypeChildren as ::treesitter_types::FromNode>::from_node(child, src)?
5996            },
5997        })
5998    }
5999}
6000impl ::treesitter_types::Spanned for Type<'_> {
6001    fn span(&self) -> ::treesitter_types::Span {
6002        self.span
6003    }
6004}
6005#[derive(Debug, Clone)]
6006pub struct TypeAliasStatement<'tree> {
6007    pub span: ::treesitter_types::Span,
6008    pub left: Type<'tree>,
6009    pub right: Type<'tree>,
6010}
6011impl<'tree> ::treesitter_types::FromNode<'tree> for TypeAliasStatement<'tree> {
6012    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
6013    fn from_node(
6014        node: ::tree_sitter::Node<'tree>,
6015        src: &'tree [u8],
6016    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
6017        debug_assert_eq!(node.kind(), "type_alias_statement");
6018        Ok(Self {
6019            span: ::treesitter_types::Span::from(node),
6020            left: {
6021                let child = node
6022                    .child_by_field_name("left")
6023                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("left", node))?;
6024                <Type as ::treesitter_types::FromNode>::from_node(child, src)?
6025            },
6026            right: {
6027                let child = node
6028                    .child_by_field_name("right")
6029                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("right", node))?;
6030                <Type as ::treesitter_types::FromNode>::from_node(child, src)?
6031            },
6032        })
6033    }
6034}
6035impl ::treesitter_types::Spanned for TypeAliasStatement<'_> {
6036    fn span(&self) -> ::treesitter_types::Span {
6037        self.span
6038    }
6039}
6040#[derive(Debug, Clone)]
6041pub struct TypeParameter<'tree> {
6042    pub span: ::treesitter_types::Span,
6043    pub children: ::std::vec::Vec<Type<'tree>>,
6044}
6045impl<'tree> ::treesitter_types::FromNode<'tree> for TypeParameter<'tree> {
6046    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
6047    fn from_node(
6048        node: ::tree_sitter::Node<'tree>,
6049        src: &'tree [u8],
6050    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
6051        debug_assert_eq!(node.kind(), "type_parameter");
6052        Ok(Self {
6053            span: ::treesitter_types::Span::from(node),
6054            children: {
6055                #[allow(clippy::suspicious_else_formatting)]
6056                let non_field_children = {
6057                    let mut cursor = node.walk();
6058                    let mut result = ::std::vec::Vec::new();
6059                    if cursor.goto_first_child() {
6060                        loop {
6061                            if cursor.field_name().is_none()
6062                                && cursor.node().is_named()
6063                                && !cursor.node().is_extra()
6064                            {
6065                                result.push(cursor.node());
6066                            }
6067                            if !cursor.goto_next_sibling() {
6068                                break;
6069                            }
6070                        }
6071                    }
6072                    result
6073                };
6074                let mut items = ::std::vec::Vec::new();
6075                for child in non_field_children {
6076                    items.push(<Type as ::treesitter_types::FromNode>::from_node(
6077                        child, src,
6078                    )?);
6079                }
6080                items
6081            },
6082        })
6083    }
6084}
6085impl ::treesitter_types::Spanned for TypeParameter<'_> {
6086    fn span(&self) -> ::treesitter_types::Span {
6087        self.span
6088    }
6089}
6090#[derive(Debug, Clone)]
6091pub struct TypedDefaultParameter<'tree> {
6092    pub span: ::treesitter_types::Span,
6093    pub name: Identifier<'tree>,
6094    pub r#type: Type<'tree>,
6095    pub value: Expression<'tree>,
6096}
6097impl<'tree> ::treesitter_types::FromNode<'tree> for TypedDefaultParameter<'tree> {
6098    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
6099    fn from_node(
6100        node: ::tree_sitter::Node<'tree>,
6101        src: &'tree [u8],
6102    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
6103        debug_assert_eq!(node.kind(), "typed_default_parameter");
6104        Ok(Self {
6105            span: ::treesitter_types::Span::from(node),
6106            name: {
6107                let child = node
6108                    .child_by_field_name("name")
6109                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("name", node))?;
6110                <Identifier as ::treesitter_types::FromNode>::from_node(child, src)?
6111            },
6112            r#type: {
6113                let child = node
6114                    .child_by_field_name("type")
6115                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("type", node))?;
6116                <Type as ::treesitter_types::FromNode>::from_node(child, src)?
6117            },
6118            value: {
6119                let child = node
6120                    .child_by_field_name("value")
6121                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("value", node))?;
6122                <Expression as ::treesitter_types::FromNode>::from_node(child, src)?
6123            },
6124        })
6125    }
6126}
6127impl ::treesitter_types::Spanned for TypedDefaultParameter<'_> {
6128    fn span(&self) -> ::treesitter_types::Span {
6129        self.span
6130    }
6131}
6132#[derive(Debug, Clone)]
6133pub struct TypedParameter<'tree> {
6134    pub span: ::treesitter_types::Span,
6135    pub r#type: Type<'tree>,
6136    pub children: TypedParameterChildren<'tree>,
6137}
6138impl<'tree> ::treesitter_types::FromNode<'tree> for TypedParameter<'tree> {
6139    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
6140    fn from_node(
6141        node: ::tree_sitter::Node<'tree>,
6142        src: &'tree [u8],
6143    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
6144        debug_assert_eq!(node.kind(), "typed_parameter");
6145        Ok(Self {
6146            span: ::treesitter_types::Span::from(node),
6147            r#type: {
6148                let child = node
6149                    .child_by_field_name("type")
6150                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("type", node))?;
6151                <Type as ::treesitter_types::FromNode>::from_node(child, src)?
6152            },
6153            children: {
6154                #[allow(clippy::suspicious_else_formatting)]
6155                let non_field_children = {
6156                    let mut cursor = node.walk();
6157                    let mut result = ::std::vec::Vec::new();
6158                    if cursor.goto_first_child() {
6159                        loop {
6160                            if cursor.field_name().is_none()
6161                                && cursor.node().is_named()
6162                                && !cursor.node().is_extra()
6163                            {
6164                                result.push(cursor.node());
6165                            }
6166                            if !cursor.goto_next_sibling() {
6167                                break;
6168                            }
6169                        }
6170                    }
6171                    result
6172                };
6173                let child = if let Some(&c) = non_field_children.first() {
6174                    c
6175                } else {
6176                    let mut fallback_cursor = node.walk();
6177                    let mut fallback_child = None;
6178                    if fallback_cursor.goto_first_child() {
6179                        loop {
6180                            if fallback_cursor.field_name().is_none()
6181                                && !fallback_cursor.node().is_extra()
6182                            {
6183                                let candidate = fallback_cursor.node();
6184                                #[allow(clippy::needless_question_mark)]
6185                                if (|| -> ::core::result::Result<
6186                                    _,
6187                                    ::treesitter_types::ParseError,
6188                                > {
6189                                    let child = candidate;
6190                                    Ok(
6191                                        <TypedParameterChildren as ::treesitter_types::FromNode>::from_node(
6192                                            child,
6193                                            src,
6194                                        )?,
6195                                    )
6196                                })()
6197                                    .is_ok()
6198                                {
6199                                    fallback_child = Some(candidate);
6200                                    break;
6201                                }
6202                            }
6203                            if !fallback_cursor.goto_next_sibling() {
6204                                break;
6205                            }
6206                        }
6207                    }
6208                    if fallback_child.is_none() {
6209                        let mut cursor2 = node.walk();
6210                        if cursor2.goto_first_child() {
6211                            loop {
6212                                if cursor2.node().is_named() && !cursor2.node().is_extra() {
6213                                    let candidate = cursor2.node();
6214                                    #[allow(clippy::needless_question_mark)]
6215                                    if (|| -> ::core::result::Result<
6216                                        _,
6217                                        ::treesitter_types::ParseError,
6218                                    > {
6219                                        let child = candidate;
6220                                        Ok(
6221                                            <TypedParameterChildren as ::treesitter_types::FromNode>::from_node(
6222                                                child,
6223                                                src,
6224                                            )?,
6225                                        )
6226                                    })()
6227                                        .is_ok()
6228                                    {
6229                                        fallback_child = Some(candidate);
6230                                        break;
6231                                    }
6232                                }
6233                                if !cursor2.goto_next_sibling() {
6234                                    break;
6235                                }
6236                            }
6237                        }
6238                    }
6239                    fallback_child.ok_or_else(|| {
6240                        ::treesitter_types::ParseError::missing_field("children", node)
6241                    })?
6242                };
6243                <TypedParameterChildren as ::treesitter_types::FromNode>::from_node(child, src)?
6244            },
6245        })
6246    }
6247}
6248impl ::treesitter_types::Spanned for TypedParameter<'_> {
6249    fn span(&self) -> ::treesitter_types::Span {
6250        self.span
6251    }
6252}
6253#[derive(Debug, Clone)]
6254pub struct UnaryOperator<'tree> {
6255    pub span: ::treesitter_types::Span,
6256    pub argument: PrimaryExpression<'tree>,
6257    pub operator: UnaryOperatorOperator,
6258}
6259impl<'tree> ::treesitter_types::FromNode<'tree> for UnaryOperator<'tree> {
6260    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
6261    fn from_node(
6262        node: ::tree_sitter::Node<'tree>,
6263        src: &'tree [u8],
6264    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
6265        debug_assert_eq!(node.kind(), "unary_operator");
6266        Ok(Self {
6267            span: ::treesitter_types::Span::from(node),
6268            argument: {
6269                let child = node.child_by_field_name("argument").ok_or_else(|| {
6270                    ::treesitter_types::ParseError::missing_field("argument", node)
6271                })?;
6272                <PrimaryExpression as ::treesitter_types::FromNode>::from_node(child, src)?
6273            },
6274            operator: {
6275                let child = node.child_by_field_name("operator").ok_or_else(|| {
6276                    ::treesitter_types::ParseError::missing_field("operator", node)
6277                })?;
6278                <UnaryOperatorOperator as ::treesitter_types::FromNode>::from_node(child, src)?
6279            },
6280        })
6281    }
6282}
6283impl ::treesitter_types::Spanned for UnaryOperator<'_> {
6284    fn span(&self) -> ::treesitter_types::Span {
6285        self.span
6286    }
6287}
6288#[derive(Debug, Clone)]
6289pub struct UnionPattern<'tree> {
6290    pub span: ::treesitter_types::Span,
6291    pub children: ::std::vec::Vec<UnionPatternChildren<'tree>>,
6292}
6293impl<'tree> ::treesitter_types::FromNode<'tree> for UnionPattern<'tree> {
6294    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
6295    fn from_node(
6296        node: ::tree_sitter::Node<'tree>,
6297        src: &'tree [u8],
6298    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
6299        debug_assert_eq!(node.kind(), "union_pattern");
6300        Ok(Self {
6301            span: ::treesitter_types::Span::from(node),
6302            children: {
6303                #[allow(clippy::suspicious_else_formatting)]
6304                let non_field_children = {
6305                    let mut cursor = node.walk();
6306                    let mut result = ::std::vec::Vec::new();
6307                    if cursor.goto_first_child() {
6308                        loop {
6309                            if cursor.field_name().is_none()
6310                                && cursor.node().is_named()
6311                                && !cursor.node().is_extra()
6312                            {
6313                                result.push(cursor.node());
6314                            }
6315                            if !cursor.goto_next_sibling() {
6316                                break;
6317                            }
6318                        }
6319                    }
6320                    result
6321                };
6322                let mut items = ::std::vec::Vec::new();
6323                for child in non_field_children {
6324                    items.push(
6325                        <UnionPatternChildren as ::treesitter_types::FromNode>::from_node(
6326                            child, src,
6327                        )?,
6328                    );
6329                }
6330                items
6331            },
6332        })
6333    }
6334}
6335impl ::treesitter_types::Spanned for UnionPattern<'_> {
6336    fn span(&self) -> ::treesitter_types::Span {
6337        self.span
6338    }
6339}
6340#[derive(Debug, Clone)]
6341pub struct UnionType<'tree> {
6342    pub span: ::treesitter_types::Span,
6343    pub children: ::std::vec::Vec<Type<'tree>>,
6344}
6345impl<'tree> ::treesitter_types::FromNode<'tree> for UnionType<'tree> {
6346    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
6347    fn from_node(
6348        node: ::tree_sitter::Node<'tree>,
6349        src: &'tree [u8],
6350    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
6351        debug_assert_eq!(node.kind(), "union_type");
6352        Ok(Self {
6353            span: ::treesitter_types::Span::from(node),
6354            children: {
6355                #[allow(clippy::suspicious_else_formatting)]
6356                let non_field_children = {
6357                    let mut cursor = node.walk();
6358                    let mut result = ::std::vec::Vec::new();
6359                    if cursor.goto_first_child() {
6360                        loop {
6361                            if cursor.field_name().is_none()
6362                                && cursor.node().is_named()
6363                                && !cursor.node().is_extra()
6364                            {
6365                                result.push(cursor.node());
6366                            }
6367                            if !cursor.goto_next_sibling() {
6368                                break;
6369                            }
6370                        }
6371                    }
6372                    result
6373                };
6374                let mut items = ::std::vec::Vec::new();
6375                for child in non_field_children {
6376                    items.push(<Type as ::treesitter_types::FromNode>::from_node(
6377                        child, src,
6378                    )?);
6379                }
6380                items
6381            },
6382        })
6383    }
6384}
6385impl ::treesitter_types::Spanned for UnionType<'_> {
6386    fn span(&self) -> ::treesitter_types::Span {
6387        self.span
6388    }
6389}
6390#[derive(Debug, Clone)]
6391pub struct WhileStatement<'tree> {
6392    pub span: ::treesitter_types::Span,
6393    pub alternative: ::core::option::Option<ElseClause<'tree>>,
6394    pub body: Block<'tree>,
6395    pub condition: Expression<'tree>,
6396}
6397impl<'tree> ::treesitter_types::FromNode<'tree> for WhileStatement<'tree> {
6398    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
6399    fn from_node(
6400        node: ::tree_sitter::Node<'tree>,
6401        src: &'tree [u8],
6402    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
6403        debug_assert_eq!(node.kind(), "while_statement");
6404        Ok(Self {
6405            span: ::treesitter_types::Span::from(node),
6406            alternative: match node.child_by_field_name("alternative") {
6407                Some(child) => Some(<ElseClause as ::treesitter_types::FromNode>::from_node(
6408                    child, src,
6409                )?),
6410                None => None,
6411            },
6412            body: {
6413                let child = node
6414                    .child_by_field_name("body")
6415                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("body", node))?;
6416                <Block as ::treesitter_types::FromNode>::from_node(child, src)?
6417            },
6418            condition: {
6419                let child = node.child_by_field_name("condition").ok_or_else(|| {
6420                    ::treesitter_types::ParseError::missing_field("condition", node)
6421                })?;
6422                <Expression as ::treesitter_types::FromNode>::from_node(child, src)?
6423            },
6424        })
6425    }
6426}
6427impl ::treesitter_types::Spanned for WhileStatement<'_> {
6428    fn span(&self) -> ::treesitter_types::Span {
6429        self.span
6430    }
6431}
6432#[derive(Debug, Clone)]
6433pub struct WildcardImport<'tree> {
6434    pub span: ::treesitter_types::Span,
6435    text: &'tree str,
6436}
6437impl<'tree> ::treesitter_types::FromNode<'tree> for WildcardImport<'tree> {
6438    fn from_node(
6439        node: ::tree_sitter::Node<'tree>,
6440        src: &'tree [u8],
6441    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
6442        debug_assert_eq!(node.kind(), "wildcard_import");
6443        Ok(Self {
6444            span: ::treesitter_types::Span::from(node),
6445            text: node.utf8_text(src)?,
6446        })
6447    }
6448}
6449impl<'tree> ::treesitter_types::LeafNode<'tree> for WildcardImport<'tree> {
6450    fn text(&self) -> &'tree str {
6451        self.text
6452    }
6453}
6454impl ::treesitter_types::Spanned for WildcardImport<'_> {
6455    fn span(&self) -> ::treesitter_types::Span {
6456        self.span
6457    }
6458}
6459#[derive(Debug, Clone)]
6460pub struct WithClause<'tree> {
6461    pub span: ::treesitter_types::Span,
6462    pub children: ::std::vec::Vec<WithItem<'tree>>,
6463}
6464impl<'tree> ::treesitter_types::FromNode<'tree> for WithClause<'tree> {
6465    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
6466    fn from_node(
6467        node: ::tree_sitter::Node<'tree>,
6468        src: &'tree [u8],
6469    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
6470        debug_assert_eq!(node.kind(), "with_clause");
6471        Ok(Self {
6472            span: ::treesitter_types::Span::from(node),
6473            children: {
6474                #[allow(clippy::suspicious_else_formatting)]
6475                let non_field_children = {
6476                    let mut cursor = node.walk();
6477                    let mut result = ::std::vec::Vec::new();
6478                    if cursor.goto_first_child() {
6479                        loop {
6480                            if cursor.field_name().is_none()
6481                                && cursor.node().is_named()
6482                                && !cursor.node().is_extra()
6483                            {
6484                                result.push(cursor.node());
6485                            }
6486                            if !cursor.goto_next_sibling() {
6487                                break;
6488                            }
6489                        }
6490                    }
6491                    result
6492                };
6493                let mut items = ::std::vec::Vec::new();
6494                for child in non_field_children {
6495                    items.push(<WithItem as ::treesitter_types::FromNode>::from_node(
6496                        child, src,
6497                    )?);
6498                }
6499                items
6500            },
6501        })
6502    }
6503}
6504impl ::treesitter_types::Spanned for WithClause<'_> {
6505    fn span(&self) -> ::treesitter_types::Span {
6506        self.span
6507    }
6508}
6509#[derive(Debug, Clone)]
6510pub struct WithItem<'tree> {
6511    pub span: ::treesitter_types::Span,
6512    pub value: Expression<'tree>,
6513}
6514impl<'tree> ::treesitter_types::FromNode<'tree> for WithItem<'tree> {
6515    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
6516    fn from_node(
6517        node: ::tree_sitter::Node<'tree>,
6518        src: &'tree [u8],
6519    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
6520        debug_assert_eq!(node.kind(), "with_item");
6521        Ok(Self {
6522            span: ::treesitter_types::Span::from(node),
6523            value: {
6524                let child = node
6525                    .child_by_field_name("value")
6526                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("value", node))?;
6527                <Expression as ::treesitter_types::FromNode>::from_node(child, src)?
6528            },
6529        })
6530    }
6531}
6532impl ::treesitter_types::Spanned for WithItem<'_> {
6533    fn span(&self) -> ::treesitter_types::Span {
6534        self.span
6535    }
6536}
6537#[derive(Debug, Clone)]
6538pub struct WithStatement<'tree> {
6539    pub span: ::treesitter_types::Span,
6540    pub body: Block<'tree>,
6541    pub children: WithClause<'tree>,
6542}
6543impl<'tree> ::treesitter_types::FromNode<'tree> for WithStatement<'tree> {
6544    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
6545    fn from_node(
6546        node: ::tree_sitter::Node<'tree>,
6547        src: &'tree [u8],
6548    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
6549        debug_assert_eq!(node.kind(), "with_statement");
6550        Ok(Self {
6551            span: ::treesitter_types::Span::from(node),
6552            body: {
6553                let child = node
6554                    .child_by_field_name("body")
6555                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("body", node))?;
6556                <Block as ::treesitter_types::FromNode>::from_node(child, src)?
6557            },
6558            children: {
6559                #[allow(clippy::suspicious_else_formatting)]
6560                let non_field_children = {
6561                    let mut cursor = node.walk();
6562                    let mut result = ::std::vec::Vec::new();
6563                    if cursor.goto_first_child() {
6564                        loop {
6565                            if cursor.field_name().is_none()
6566                                && cursor.node().is_named()
6567                                && !cursor.node().is_extra()
6568                            {
6569                                result.push(cursor.node());
6570                            }
6571                            if !cursor.goto_next_sibling() {
6572                                break;
6573                            }
6574                        }
6575                    }
6576                    result
6577                };
6578                let child = if let Some(&c) = non_field_children.first() {
6579                    c
6580                } else {
6581                    let mut fallback_cursor = node.walk();
6582                    let mut fallback_child = None;
6583                    if fallback_cursor.goto_first_child() {
6584                        loop {
6585                            if fallback_cursor.field_name().is_none()
6586                                && !fallback_cursor.node().is_extra()
6587                            {
6588                                let candidate = fallback_cursor.node();
6589                                #[allow(clippy::needless_question_mark)]
6590                                if (|| -> ::core::result::Result<
6591                                    _,
6592                                    ::treesitter_types::ParseError,
6593                                > {
6594                                    let child = candidate;
6595                                    Ok(
6596                                        <WithClause as ::treesitter_types::FromNode>::from_node(
6597                                            child,
6598                                            src,
6599                                        )?,
6600                                    )
6601                                })()
6602                                    .is_ok()
6603                                {
6604                                    fallback_child = Some(candidate);
6605                                    break;
6606                                }
6607                            }
6608                            if !fallback_cursor.goto_next_sibling() {
6609                                break;
6610                            }
6611                        }
6612                    }
6613                    if fallback_child.is_none() {
6614                        let mut cursor2 = node.walk();
6615                        if cursor2.goto_first_child() {
6616                            loop {
6617                                if cursor2.node().is_named() && !cursor2.node().is_extra() {
6618                                    let candidate = cursor2.node();
6619                                    #[allow(clippy::needless_question_mark)]
6620                                    if (|| -> ::core::result::Result<
6621                                        _,
6622                                        ::treesitter_types::ParseError,
6623                                    > {
6624                                        let child = candidate;
6625                                        Ok(
6626                                            <WithClause as ::treesitter_types::FromNode>::from_node(
6627                                                child,
6628                                                src,
6629                                            )?,
6630                                        )
6631                                    })()
6632                                        .is_ok()
6633                                    {
6634                                        fallback_child = Some(candidate);
6635                                        break;
6636                                    }
6637                                }
6638                                if !cursor2.goto_next_sibling() {
6639                                    break;
6640                                }
6641                            }
6642                        }
6643                    }
6644                    fallback_child.ok_or_else(|| {
6645                        ::treesitter_types::ParseError::missing_field("children", node)
6646                    })?
6647                };
6648                <WithClause as ::treesitter_types::FromNode>::from_node(child, src)?
6649            },
6650        })
6651    }
6652}
6653impl ::treesitter_types::Spanned for WithStatement<'_> {
6654    fn span(&self) -> ::treesitter_types::Span {
6655        self.span
6656    }
6657}
6658#[derive(Debug, Clone)]
6659pub struct Yield<'tree> {
6660    pub span: ::treesitter_types::Span,
6661    pub children: ::core::option::Option<YieldChildren<'tree>>,
6662}
6663impl<'tree> ::treesitter_types::FromNode<'tree> for Yield<'tree> {
6664    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
6665    fn from_node(
6666        node: ::tree_sitter::Node<'tree>,
6667        src: &'tree [u8],
6668    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
6669        debug_assert_eq!(node.kind(), "yield");
6670        Ok(Self {
6671            span: ::treesitter_types::Span::from(node),
6672            children: {
6673                #[allow(clippy::suspicious_else_formatting)]
6674                let non_field_children = {
6675                    let mut cursor = node.walk();
6676                    let mut result = ::std::vec::Vec::new();
6677                    if cursor.goto_first_child() {
6678                        loop {
6679                            if cursor.field_name().is_none()
6680                                && cursor.node().is_named()
6681                                && !cursor.node().is_extra()
6682                            {
6683                                result.push(cursor.node());
6684                            }
6685                            if !cursor.goto_next_sibling() {
6686                                break;
6687                            }
6688                        }
6689                    }
6690                    result
6691                };
6692                match non_field_children.first() {
6693                    Some(&child) => Some(
6694                        <YieldChildren as ::treesitter_types::FromNode>::from_node(child, src)?,
6695                    ),
6696                    None => None,
6697                }
6698            },
6699        })
6700    }
6701}
6702impl ::treesitter_types::Spanned for Yield<'_> {
6703    fn span(&self) -> ::treesitter_types::Span {
6704        self.span
6705    }
6706}
6707#[derive(Debug, Clone)]
6708pub struct Comment<'tree> {
6709    pub span: ::treesitter_types::Span,
6710    text: &'tree str,
6711}
6712impl<'tree> ::treesitter_types::FromNode<'tree> for Comment<'tree> {
6713    fn from_node(
6714        node: ::tree_sitter::Node<'tree>,
6715        src: &'tree [u8],
6716    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
6717        debug_assert_eq!(node.kind(), "comment");
6718        Ok(Self {
6719            span: ::treesitter_types::Span::from(node),
6720            text: node.utf8_text(src)?,
6721        })
6722    }
6723}
6724impl<'tree> ::treesitter_types::LeafNode<'tree> for Comment<'tree> {
6725    fn text(&self) -> &'tree str {
6726        self.text
6727    }
6728}
6729impl ::treesitter_types::Spanned for Comment<'_> {
6730    fn span(&self) -> ::treesitter_types::Span {
6731        self.span
6732    }
6733}
6734#[derive(Debug, Clone)]
6735pub struct Ellipsis<'tree> {
6736    pub span: ::treesitter_types::Span,
6737    text: &'tree str,
6738}
6739impl<'tree> ::treesitter_types::FromNode<'tree> for Ellipsis<'tree> {
6740    fn from_node(
6741        node: ::tree_sitter::Node<'tree>,
6742        src: &'tree [u8],
6743    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
6744        debug_assert_eq!(node.kind(), "ellipsis");
6745        Ok(Self {
6746            span: ::treesitter_types::Span::from(node),
6747            text: node.utf8_text(src)?,
6748        })
6749    }
6750}
6751impl<'tree> ::treesitter_types::LeafNode<'tree> for Ellipsis<'tree> {
6752    fn text(&self) -> &'tree str {
6753        self.text
6754    }
6755}
6756impl ::treesitter_types::Spanned for Ellipsis<'_> {
6757    fn span(&self) -> ::treesitter_types::Span {
6758        self.span
6759    }
6760}
6761#[derive(Debug, Clone)]
6762pub struct EscapeInterpolation<'tree> {
6763    pub span: ::treesitter_types::Span,
6764    text: &'tree str,
6765}
6766impl<'tree> ::treesitter_types::FromNode<'tree> for EscapeInterpolation<'tree> {
6767    fn from_node(
6768        node: ::tree_sitter::Node<'tree>,
6769        src: &'tree [u8],
6770    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
6771        debug_assert_eq!(node.kind(), "escape_interpolation");
6772        Ok(Self {
6773            span: ::treesitter_types::Span::from(node),
6774            text: node.utf8_text(src)?,
6775        })
6776    }
6777}
6778impl<'tree> ::treesitter_types::LeafNode<'tree> for EscapeInterpolation<'tree> {
6779    fn text(&self) -> &'tree str {
6780        self.text
6781    }
6782}
6783impl ::treesitter_types::Spanned for EscapeInterpolation<'_> {
6784    fn span(&self) -> ::treesitter_types::Span {
6785        self.span
6786    }
6787}
6788#[derive(Debug, Clone)]
6789pub struct EscapeSequence<'tree> {
6790    pub span: ::treesitter_types::Span,
6791    text: &'tree str,
6792}
6793impl<'tree> ::treesitter_types::FromNode<'tree> for EscapeSequence<'tree> {
6794    fn from_node(
6795        node: ::tree_sitter::Node<'tree>,
6796        src: &'tree [u8],
6797    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
6798        debug_assert_eq!(node.kind(), "escape_sequence");
6799        Ok(Self {
6800            span: ::treesitter_types::Span::from(node),
6801            text: node.utf8_text(src)?,
6802        })
6803    }
6804}
6805impl<'tree> ::treesitter_types::LeafNode<'tree> for EscapeSequence<'tree> {
6806    fn text(&self) -> &'tree str {
6807        self.text
6808    }
6809}
6810impl ::treesitter_types::Spanned for EscapeSequence<'_> {
6811    fn span(&self) -> ::treesitter_types::Span {
6812        self.span
6813    }
6814}
6815#[derive(Debug, Clone)]
6816pub struct False<'tree> {
6817    pub span: ::treesitter_types::Span,
6818    text: &'tree str,
6819}
6820impl<'tree> ::treesitter_types::FromNode<'tree> for False<'tree> {
6821    fn from_node(
6822        node: ::tree_sitter::Node<'tree>,
6823        src: &'tree [u8],
6824    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
6825        debug_assert_eq!(node.kind(), "false");
6826        Ok(Self {
6827            span: ::treesitter_types::Span::from(node),
6828            text: node.utf8_text(src)?,
6829        })
6830    }
6831}
6832impl<'tree> ::treesitter_types::LeafNode<'tree> for False<'tree> {
6833    fn text(&self) -> &'tree str {
6834        self.text
6835    }
6836}
6837impl ::treesitter_types::Spanned for False<'_> {
6838    fn span(&self) -> ::treesitter_types::Span {
6839        self.span
6840    }
6841}
6842#[derive(Debug, Clone)]
6843pub struct Float<'tree> {
6844    pub span: ::treesitter_types::Span,
6845    text: &'tree str,
6846}
6847impl<'tree> ::treesitter_types::FromNode<'tree> for Float<'tree> {
6848    fn from_node(
6849        node: ::tree_sitter::Node<'tree>,
6850        src: &'tree [u8],
6851    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
6852        debug_assert_eq!(node.kind(), "float");
6853        Ok(Self {
6854            span: ::treesitter_types::Span::from(node),
6855            text: node.utf8_text(src)?,
6856        })
6857    }
6858}
6859impl<'tree> ::treesitter_types::LeafNode<'tree> for Float<'tree> {
6860    fn text(&self) -> &'tree str {
6861        self.text
6862    }
6863}
6864impl ::treesitter_types::Spanned for Float<'_> {
6865    fn span(&self) -> ::treesitter_types::Span {
6866        self.span
6867    }
6868}
6869#[derive(Debug, Clone)]
6870pub struct Identifier<'tree> {
6871    pub span: ::treesitter_types::Span,
6872    text: &'tree str,
6873}
6874impl<'tree> ::treesitter_types::FromNode<'tree> for Identifier<'tree> {
6875    fn from_node(
6876        node: ::tree_sitter::Node<'tree>,
6877        src: &'tree [u8],
6878    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
6879        debug_assert_eq!(node.kind(), "identifier");
6880        Ok(Self {
6881            span: ::treesitter_types::Span::from(node),
6882            text: node.utf8_text(src)?,
6883        })
6884    }
6885}
6886impl<'tree> ::treesitter_types::LeafNode<'tree> for Identifier<'tree> {
6887    fn text(&self) -> &'tree str {
6888        self.text
6889    }
6890}
6891impl ::treesitter_types::Spanned for Identifier<'_> {
6892    fn span(&self) -> ::treesitter_types::Span {
6893        self.span
6894    }
6895}
6896#[derive(Debug, Clone)]
6897pub struct Integer<'tree> {
6898    pub span: ::treesitter_types::Span,
6899    text: &'tree str,
6900}
6901impl<'tree> ::treesitter_types::FromNode<'tree> for Integer<'tree> {
6902    fn from_node(
6903        node: ::tree_sitter::Node<'tree>,
6904        src: &'tree [u8],
6905    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
6906        debug_assert_eq!(node.kind(), "integer");
6907        Ok(Self {
6908            span: ::treesitter_types::Span::from(node),
6909            text: node.utf8_text(src)?,
6910        })
6911    }
6912}
6913impl<'tree> ::treesitter_types::LeafNode<'tree> for Integer<'tree> {
6914    fn text(&self) -> &'tree str {
6915        self.text
6916    }
6917}
6918impl ::treesitter_types::Spanned for Integer<'_> {
6919    fn span(&self) -> ::treesitter_types::Span {
6920        self.span
6921    }
6922}
6923#[derive(Debug, Clone)]
6924pub struct LineContinuation<'tree> {
6925    pub span: ::treesitter_types::Span,
6926    text: &'tree str,
6927}
6928impl<'tree> ::treesitter_types::FromNode<'tree> for LineContinuation<'tree> {
6929    fn from_node(
6930        node: ::tree_sitter::Node<'tree>,
6931        src: &'tree [u8],
6932    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
6933        debug_assert_eq!(node.kind(), "line_continuation");
6934        Ok(Self {
6935            span: ::treesitter_types::Span::from(node),
6936            text: node.utf8_text(src)?,
6937        })
6938    }
6939}
6940impl<'tree> ::treesitter_types::LeafNode<'tree> for LineContinuation<'tree> {
6941    fn text(&self) -> &'tree str {
6942        self.text
6943    }
6944}
6945impl ::treesitter_types::Spanned for LineContinuation<'_> {
6946    fn span(&self) -> ::treesitter_types::Span {
6947        self.span
6948    }
6949}
6950#[derive(Debug, Clone)]
6951pub struct None<'tree> {
6952    pub span: ::treesitter_types::Span,
6953    text: &'tree str,
6954}
6955impl<'tree> ::treesitter_types::FromNode<'tree> for None<'tree> {
6956    fn from_node(
6957        node: ::tree_sitter::Node<'tree>,
6958        src: &'tree [u8],
6959    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
6960        debug_assert_eq!(node.kind(), "none");
6961        Ok(Self {
6962            span: ::treesitter_types::Span::from(node),
6963            text: node.utf8_text(src)?,
6964        })
6965    }
6966}
6967impl<'tree> ::treesitter_types::LeafNode<'tree> for None<'tree> {
6968    fn text(&self) -> &'tree str {
6969        self.text
6970    }
6971}
6972impl ::treesitter_types::Spanned for None<'_> {
6973    fn span(&self) -> ::treesitter_types::Span {
6974        self.span
6975    }
6976}
6977#[derive(Debug, Clone)]
6978pub struct StringEnd<'tree> {
6979    pub span: ::treesitter_types::Span,
6980    text: &'tree str,
6981}
6982impl<'tree> ::treesitter_types::FromNode<'tree> for StringEnd<'tree> {
6983    fn from_node(
6984        node: ::tree_sitter::Node<'tree>,
6985        src: &'tree [u8],
6986    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
6987        debug_assert_eq!(node.kind(), "string_end");
6988        Ok(Self {
6989            span: ::treesitter_types::Span::from(node),
6990            text: node.utf8_text(src)?,
6991        })
6992    }
6993}
6994impl<'tree> ::treesitter_types::LeafNode<'tree> for StringEnd<'tree> {
6995    fn text(&self) -> &'tree str {
6996        self.text
6997    }
6998}
6999impl ::treesitter_types::Spanned for StringEnd<'_> {
7000    fn span(&self) -> ::treesitter_types::Span {
7001        self.span
7002    }
7003}
7004#[derive(Debug, Clone)]
7005pub struct StringStart<'tree> {
7006    pub span: ::treesitter_types::Span,
7007    text: &'tree str,
7008}
7009impl<'tree> ::treesitter_types::FromNode<'tree> for StringStart<'tree> {
7010    fn from_node(
7011        node: ::tree_sitter::Node<'tree>,
7012        src: &'tree [u8],
7013    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
7014        debug_assert_eq!(node.kind(), "string_start");
7015        Ok(Self {
7016            span: ::treesitter_types::Span::from(node),
7017            text: node.utf8_text(src)?,
7018        })
7019    }
7020}
7021impl<'tree> ::treesitter_types::LeafNode<'tree> for StringStart<'tree> {
7022    fn text(&self) -> &'tree str {
7023        self.text
7024    }
7025}
7026impl ::treesitter_types::Spanned for StringStart<'_> {
7027    fn span(&self) -> ::treesitter_types::Span {
7028        self.span
7029    }
7030}
7031#[derive(Debug, Clone)]
7032pub struct True<'tree> {
7033    pub span: ::treesitter_types::Span,
7034    text: &'tree str,
7035}
7036impl<'tree> ::treesitter_types::FromNode<'tree> for True<'tree> {
7037    fn from_node(
7038        node: ::tree_sitter::Node<'tree>,
7039        src: &'tree [u8],
7040    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
7041        debug_assert_eq!(node.kind(), "true");
7042        Ok(Self {
7043            span: ::treesitter_types::Span::from(node),
7044            text: node.utf8_text(src)?,
7045        })
7046    }
7047}
7048impl<'tree> ::treesitter_types::LeafNode<'tree> for True<'tree> {
7049    fn text(&self) -> &'tree str {
7050        self.text
7051    }
7052}
7053impl ::treesitter_types::Spanned for True<'_> {
7054    fn span(&self) -> ::treesitter_types::Span {
7055        self.span
7056    }
7057}
7058#[derive(Debug, Clone)]
7059pub struct TypeConversion<'tree> {
7060    pub span: ::treesitter_types::Span,
7061    text: &'tree str,
7062}
7063impl<'tree> ::treesitter_types::FromNode<'tree> for TypeConversion<'tree> {
7064    fn from_node(
7065        node: ::tree_sitter::Node<'tree>,
7066        src: &'tree [u8],
7067    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
7068        debug_assert_eq!(node.kind(), "type_conversion");
7069        Ok(Self {
7070            span: ::treesitter_types::Span::from(node),
7071            text: node.utf8_text(src)?,
7072        })
7073    }
7074}
7075impl<'tree> ::treesitter_types::LeafNode<'tree> for TypeConversion<'tree> {
7076    fn text(&self) -> &'tree str {
7077        self.text
7078    }
7079}
7080impl ::treesitter_types::Spanned for TypeConversion<'_> {
7081    fn span(&self) -> ::treesitter_types::Span {
7082        self.span
7083    }
7084}
7085#[derive(Debug, Clone)]
7086pub struct AsPatternTarget<'tree> {
7087    pub span: ::treesitter_types::Span,
7088    text: &'tree str,
7089}
7090impl<'tree> ::treesitter_types::FromNode<'tree> for AsPatternTarget<'tree> {
7091    fn from_node(
7092        node: ::tree_sitter::Node<'tree>,
7093        src: &'tree [u8],
7094    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
7095        debug_assert_eq!(node.kind(), "as_pattern_target");
7096        Ok(Self {
7097            span: ::treesitter_types::Span::from(node),
7098            text: node.utf8_text(src)?,
7099        })
7100    }
7101}
7102impl<'tree> ::treesitter_types::LeafNode<'tree> for AsPatternTarget<'tree> {
7103    fn text(&self) -> &'tree str {
7104        self.text
7105    }
7106}
7107impl ::treesitter_types::Spanned for AsPatternTarget<'_> {
7108    fn span(&self) -> ::treesitter_types::Span {
7109        self.span
7110    }
7111}
7112#[derive(Debug, Clone)]
7113pub enum ArgumentListChildren<'tree> {
7114    DictionarySplat(::std::boxed::Box<DictionarySplat<'tree>>),
7115    Expression(::std::boxed::Box<Expression<'tree>>),
7116    KeywordArgument(::std::boxed::Box<KeywordArgument<'tree>>),
7117    ListSplat(::std::boxed::Box<ListSplat<'tree>>),
7118    ParenthesizedExpression(::std::boxed::Box<ParenthesizedExpression<'tree>>),
7119}
7120impl<'tree> ::treesitter_types::FromNode<'tree> for ArgumentListChildren<'tree> {
7121    #[allow(clippy::collapsible_else_if)]
7122    fn from_node(
7123        node: ::tree_sitter::Node<'tree>,
7124        src: &'tree [u8],
7125    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
7126        match node.kind() {
7127            "dictionary_splat" => Ok(Self::DictionarySplat(::std::boxed::Box::new(
7128                <DictionarySplat as ::treesitter_types::FromNode>::from_node(node, src)?,
7129            ))),
7130            "keyword_argument" => Ok(Self::KeywordArgument(::std::boxed::Box::new(
7131                <KeywordArgument as ::treesitter_types::FromNode>::from_node(node, src)?,
7132            ))),
7133            "list_splat" => Ok(Self::ListSplat(::std::boxed::Box::new(
7134                <ListSplat as ::treesitter_types::FromNode>::from_node(node, src)?,
7135            ))),
7136            "parenthesized_expression" => {
7137                Ok(Self::ParenthesizedExpression(::std::boxed::Box::new(
7138                    <ParenthesizedExpression as ::treesitter_types::FromNode>::from_node(
7139                        node, src,
7140                    )?,
7141                )))
7142            }
7143            _other => {
7144                if let Ok(v) = <Expression as ::treesitter_types::FromNode>::from_node(node, src) {
7145                    Ok(Self::Expression(::std::boxed::Box::new(v)))
7146                } else {
7147                    Err(::treesitter_types::ParseError::unexpected_kind(
7148                        _other, node,
7149                    ))
7150                }
7151            }
7152        }
7153    }
7154}
7155impl ::treesitter_types::Spanned for ArgumentListChildren<'_> {
7156    fn span(&self) -> ::treesitter_types::Span {
7157        match self {
7158            Self::DictionarySplat(inner) => inner.span(),
7159            Self::Expression(inner) => inner.span(),
7160            Self::KeywordArgument(inner) => inner.span(),
7161            Self::ListSplat(inner) => inner.span(),
7162            Self::ParenthesizedExpression(inner) => inner.span(),
7163        }
7164    }
7165}
7166#[derive(Debug, Clone)]
7167pub enum AsPatternChildren<'tree> {
7168    CasePattern(::std::boxed::Box<CasePattern<'tree>>),
7169    Expression(::std::boxed::Box<Expression<'tree>>),
7170    Identifier(::std::boxed::Box<Identifier<'tree>>),
7171}
7172impl<'tree> ::treesitter_types::FromNode<'tree> for AsPatternChildren<'tree> {
7173    #[allow(clippy::collapsible_else_if)]
7174    fn from_node(
7175        node: ::tree_sitter::Node<'tree>,
7176        src: &'tree [u8],
7177    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
7178        match node.kind() {
7179            "case_pattern" => Ok(Self::CasePattern(::std::boxed::Box::new(
7180                <CasePattern as ::treesitter_types::FromNode>::from_node(node, src)?,
7181            ))),
7182            "identifier" => Ok(Self::Identifier(::std::boxed::Box::new(
7183                <Identifier as ::treesitter_types::FromNode>::from_node(node, src)?,
7184            ))),
7185            _other => {
7186                if let Ok(v) = <Expression as ::treesitter_types::FromNode>::from_node(node, src) {
7187                    Ok(Self::Expression(::std::boxed::Box::new(v)))
7188                } else {
7189                    Err(::treesitter_types::ParseError::unexpected_kind(
7190                        _other, node,
7191                    ))
7192                }
7193            }
7194        }
7195    }
7196}
7197impl ::treesitter_types::Spanned for AsPatternChildren<'_> {
7198    fn span(&self) -> ::treesitter_types::Span {
7199        match self {
7200            Self::CasePattern(inner) => inner.span(),
7201            Self::Expression(inner) => inner.span(),
7202            Self::Identifier(inner) => inner.span(),
7203        }
7204    }
7205}
7206#[derive(Debug, Clone)]
7207pub enum AssignmentLeft<'tree> {
7208    Pattern(::std::boxed::Box<Pattern<'tree>>),
7209    PatternList(::std::boxed::Box<PatternList<'tree>>),
7210}
7211impl<'tree> ::treesitter_types::FromNode<'tree> for AssignmentLeft<'tree> {
7212    #[allow(clippy::collapsible_else_if)]
7213    fn from_node(
7214        node: ::tree_sitter::Node<'tree>,
7215        src: &'tree [u8],
7216    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
7217        match node.kind() {
7218            "pattern_list" => Ok(Self::PatternList(::std::boxed::Box::new(
7219                <PatternList as ::treesitter_types::FromNode>::from_node(node, src)?,
7220            ))),
7221            _other => {
7222                if let Ok(v) = <Pattern as ::treesitter_types::FromNode>::from_node(node, src) {
7223                    Ok(Self::Pattern(::std::boxed::Box::new(v)))
7224                } else {
7225                    Err(::treesitter_types::ParseError::unexpected_kind(
7226                        _other, node,
7227                    ))
7228                }
7229            }
7230        }
7231    }
7232}
7233impl ::treesitter_types::Spanned for AssignmentLeft<'_> {
7234    fn span(&self) -> ::treesitter_types::Span {
7235        match self {
7236            Self::Pattern(inner) => inner.span(),
7237            Self::PatternList(inner) => inner.span(),
7238        }
7239    }
7240}
7241#[derive(Debug, Clone)]
7242pub enum AssignmentRight<'tree> {
7243    Assignment(::std::boxed::Box<Assignment<'tree>>),
7244    AugmentedAssignment(::std::boxed::Box<AugmentedAssignment<'tree>>),
7245    Expression(::std::boxed::Box<Expression<'tree>>),
7246    ExpressionList(::std::boxed::Box<ExpressionList<'tree>>),
7247    PatternList(::std::boxed::Box<PatternList<'tree>>),
7248    Yield(::std::boxed::Box<Yield<'tree>>),
7249}
7250impl<'tree> ::treesitter_types::FromNode<'tree> for AssignmentRight<'tree> {
7251    #[allow(clippy::collapsible_else_if)]
7252    fn from_node(
7253        node: ::tree_sitter::Node<'tree>,
7254        src: &'tree [u8],
7255    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
7256        match node.kind() {
7257            "assignment" => Ok(Self::Assignment(::std::boxed::Box::new(
7258                <Assignment as ::treesitter_types::FromNode>::from_node(node, src)?,
7259            ))),
7260            "augmented_assignment" => Ok(Self::AugmentedAssignment(::std::boxed::Box::new(
7261                <AugmentedAssignment as ::treesitter_types::FromNode>::from_node(node, src)?,
7262            ))),
7263            "expression_list" => Ok(Self::ExpressionList(::std::boxed::Box::new(
7264                <ExpressionList as ::treesitter_types::FromNode>::from_node(node, src)?,
7265            ))),
7266            "pattern_list" => Ok(Self::PatternList(::std::boxed::Box::new(
7267                <PatternList as ::treesitter_types::FromNode>::from_node(node, src)?,
7268            ))),
7269            "yield" => Ok(Self::Yield(::std::boxed::Box::new(
7270                <Yield as ::treesitter_types::FromNode>::from_node(node, src)?,
7271            ))),
7272            _other => {
7273                if let Ok(v) = <Expression as ::treesitter_types::FromNode>::from_node(node, src) {
7274                    Ok(Self::Expression(::std::boxed::Box::new(v)))
7275                } else {
7276                    Err(::treesitter_types::ParseError::unexpected_kind(
7277                        _other, node,
7278                    ))
7279                }
7280            }
7281        }
7282    }
7283}
7284impl ::treesitter_types::Spanned for AssignmentRight<'_> {
7285    fn span(&self) -> ::treesitter_types::Span {
7286        match self {
7287            Self::Assignment(inner) => inner.span(),
7288            Self::AugmentedAssignment(inner) => inner.span(),
7289            Self::Expression(inner) => inner.span(),
7290            Self::ExpressionList(inner) => inner.span(),
7291            Self::PatternList(inner) => inner.span(),
7292            Self::Yield(inner) => inner.span(),
7293        }
7294    }
7295}
7296#[derive(Debug, Clone)]
7297pub enum AugmentedAssignmentLeft<'tree> {
7298    Pattern(::std::boxed::Box<Pattern<'tree>>),
7299    PatternList(::std::boxed::Box<PatternList<'tree>>),
7300}
7301impl<'tree> ::treesitter_types::FromNode<'tree> for AugmentedAssignmentLeft<'tree> {
7302    #[allow(clippy::collapsible_else_if)]
7303    fn from_node(
7304        node: ::tree_sitter::Node<'tree>,
7305        src: &'tree [u8],
7306    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
7307        match node.kind() {
7308            "pattern_list" => Ok(Self::PatternList(::std::boxed::Box::new(
7309                <PatternList as ::treesitter_types::FromNode>::from_node(node, src)?,
7310            ))),
7311            _other => {
7312                if let Ok(v) = <Pattern as ::treesitter_types::FromNode>::from_node(node, src) {
7313                    Ok(Self::Pattern(::std::boxed::Box::new(v)))
7314                } else {
7315                    Err(::treesitter_types::ParseError::unexpected_kind(
7316                        _other, node,
7317                    ))
7318                }
7319            }
7320        }
7321    }
7322}
7323impl ::treesitter_types::Spanned for AugmentedAssignmentLeft<'_> {
7324    fn span(&self) -> ::treesitter_types::Span {
7325        match self {
7326            Self::Pattern(inner) => inner.span(),
7327            Self::PatternList(inner) => inner.span(),
7328        }
7329    }
7330}
7331#[derive(Debug, Clone)]
7332pub enum AugmentedAssignmentOperator {
7333    PercentEq(::treesitter_types::Span),
7334    AmpEq(::treesitter_types::Span),
7335    StarStarEq(::treesitter_types::Span),
7336    StarEq(::treesitter_types::Span),
7337    PlusEq(::treesitter_types::Span),
7338    MinusEq(::treesitter_types::Span),
7339    SlashSlashEq(::treesitter_types::Span),
7340    SlashEq(::treesitter_types::Span),
7341    ShlEq(::treesitter_types::Span),
7342    ShrEq(::treesitter_types::Span),
7343    AtEq(::treesitter_types::Span),
7344    CaretEq(::treesitter_types::Span),
7345    PipeEq(::treesitter_types::Span),
7346}
7347impl<'tree> ::treesitter_types::FromNode<'tree> for AugmentedAssignmentOperator {
7348    #[allow(clippy::collapsible_else_if)]
7349    fn from_node(
7350        node: ::tree_sitter::Node<'tree>,
7351        _src: &'tree [u8],
7352    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
7353        match node.kind() {
7354            "%=" => Ok(Self::PercentEq(::treesitter_types::Span::from(node))),
7355            "&=" => Ok(Self::AmpEq(::treesitter_types::Span::from(node))),
7356            "**=" => Ok(Self::StarStarEq(::treesitter_types::Span::from(node))),
7357            "*=" => Ok(Self::StarEq(::treesitter_types::Span::from(node))),
7358            "+=" => Ok(Self::PlusEq(::treesitter_types::Span::from(node))),
7359            "-=" => Ok(Self::MinusEq(::treesitter_types::Span::from(node))),
7360            "//=" => Ok(Self::SlashSlashEq(::treesitter_types::Span::from(node))),
7361            "/=" => Ok(Self::SlashEq(::treesitter_types::Span::from(node))),
7362            "<<=" => Ok(Self::ShlEq(::treesitter_types::Span::from(node))),
7363            ">>=" => Ok(Self::ShrEq(::treesitter_types::Span::from(node))),
7364            "@=" => Ok(Self::AtEq(::treesitter_types::Span::from(node))),
7365            "^=" => Ok(Self::CaretEq(::treesitter_types::Span::from(node))),
7366            "|=" => Ok(Self::PipeEq(::treesitter_types::Span::from(node))),
7367            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
7368        }
7369    }
7370}
7371impl ::treesitter_types::Spanned for AugmentedAssignmentOperator {
7372    fn span(&self) -> ::treesitter_types::Span {
7373        match self {
7374            Self::PercentEq(span) => *span,
7375            Self::AmpEq(span) => *span,
7376            Self::StarStarEq(span) => *span,
7377            Self::StarEq(span) => *span,
7378            Self::PlusEq(span) => *span,
7379            Self::MinusEq(span) => *span,
7380            Self::SlashSlashEq(span) => *span,
7381            Self::SlashEq(span) => *span,
7382            Self::ShlEq(span) => *span,
7383            Self::ShrEq(span) => *span,
7384            Self::AtEq(span) => *span,
7385            Self::CaretEq(span) => *span,
7386            Self::PipeEq(span) => *span,
7387        }
7388    }
7389}
7390#[derive(Debug, Clone)]
7391pub enum AugmentedAssignmentRight<'tree> {
7392    Assignment(::std::boxed::Box<Assignment<'tree>>),
7393    AugmentedAssignment(::std::boxed::Box<AugmentedAssignment<'tree>>),
7394    Expression(::std::boxed::Box<Expression<'tree>>),
7395    ExpressionList(::std::boxed::Box<ExpressionList<'tree>>),
7396    PatternList(::std::boxed::Box<PatternList<'tree>>),
7397    Yield(::std::boxed::Box<Yield<'tree>>),
7398}
7399impl<'tree> ::treesitter_types::FromNode<'tree> for AugmentedAssignmentRight<'tree> {
7400    #[allow(clippy::collapsible_else_if)]
7401    fn from_node(
7402        node: ::tree_sitter::Node<'tree>,
7403        src: &'tree [u8],
7404    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
7405        match node.kind() {
7406            "assignment" => Ok(Self::Assignment(::std::boxed::Box::new(
7407                <Assignment as ::treesitter_types::FromNode>::from_node(node, src)?,
7408            ))),
7409            "augmented_assignment" => Ok(Self::AugmentedAssignment(::std::boxed::Box::new(
7410                <AugmentedAssignment as ::treesitter_types::FromNode>::from_node(node, src)?,
7411            ))),
7412            "expression_list" => Ok(Self::ExpressionList(::std::boxed::Box::new(
7413                <ExpressionList as ::treesitter_types::FromNode>::from_node(node, src)?,
7414            ))),
7415            "pattern_list" => Ok(Self::PatternList(::std::boxed::Box::new(
7416                <PatternList as ::treesitter_types::FromNode>::from_node(node, src)?,
7417            ))),
7418            "yield" => Ok(Self::Yield(::std::boxed::Box::new(
7419                <Yield as ::treesitter_types::FromNode>::from_node(node, src)?,
7420            ))),
7421            _other => {
7422                if let Ok(v) = <Expression as ::treesitter_types::FromNode>::from_node(node, src) {
7423                    Ok(Self::Expression(::std::boxed::Box::new(v)))
7424                } else {
7425                    Err(::treesitter_types::ParseError::unexpected_kind(
7426                        _other, node,
7427                    ))
7428                }
7429            }
7430        }
7431    }
7432}
7433impl ::treesitter_types::Spanned for AugmentedAssignmentRight<'_> {
7434    fn span(&self) -> ::treesitter_types::Span {
7435        match self {
7436            Self::Assignment(inner) => inner.span(),
7437            Self::AugmentedAssignment(inner) => inner.span(),
7438            Self::Expression(inner) => inner.span(),
7439            Self::ExpressionList(inner) => inner.span(),
7440            Self::PatternList(inner) => inner.span(),
7441            Self::Yield(inner) => inner.span(),
7442        }
7443    }
7444}
7445#[derive(Debug, Clone)]
7446pub enum BinaryOperatorOperator {
7447    Percent(::treesitter_types::Span),
7448    Amp(::treesitter_types::Span),
7449    Star(::treesitter_types::Span),
7450    StarStar(::treesitter_types::Span),
7451    Plus(::treesitter_types::Span),
7452    Minus(::treesitter_types::Span),
7453    Slash(::treesitter_types::Span),
7454    SlashSlash(::treesitter_types::Span),
7455    Shl(::treesitter_types::Span),
7456    Shr(::treesitter_types::Span),
7457    At(::treesitter_types::Span),
7458    Caret(::treesitter_types::Span),
7459    Pipe(::treesitter_types::Span),
7460}
7461impl<'tree> ::treesitter_types::FromNode<'tree> for BinaryOperatorOperator {
7462    #[allow(clippy::collapsible_else_if)]
7463    fn from_node(
7464        node: ::tree_sitter::Node<'tree>,
7465        _src: &'tree [u8],
7466    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
7467        match node.kind() {
7468            "%" => Ok(Self::Percent(::treesitter_types::Span::from(node))),
7469            "&" => Ok(Self::Amp(::treesitter_types::Span::from(node))),
7470            "*" => Ok(Self::Star(::treesitter_types::Span::from(node))),
7471            "**" => Ok(Self::StarStar(::treesitter_types::Span::from(node))),
7472            "+" => Ok(Self::Plus(::treesitter_types::Span::from(node))),
7473            "-" => Ok(Self::Minus(::treesitter_types::Span::from(node))),
7474            "/" => Ok(Self::Slash(::treesitter_types::Span::from(node))),
7475            "//" => Ok(Self::SlashSlash(::treesitter_types::Span::from(node))),
7476            "<<" => Ok(Self::Shl(::treesitter_types::Span::from(node))),
7477            ">>" => Ok(Self::Shr(::treesitter_types::Span::from(node))),
7478            "@" => Ok(Self::At(::treesitter_types::Span::from(node))),
7479            "^" => Ok(Self::Caret(::treesitter_types::Span::from(node))),
7480            "|" => Ok(Self::Pipe(::treesitter_types::Span::from(node))),
7481            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
7482        }
7483    }
7484}
7485impl ::treesitter_types::Spanned for BinaryOperatorOperator {
7486    fn span(&self) -> ::treesitter_types::Span {
7487        match self {
7488            Self::Percent(span) => *span,
7489            Self::Amp(span) => *span,
7490            Self::Star(span) => *span,
7491            Self::StarStar(span) => *span,
7492            Self::Plus(span) => *span,
7493            Self::Minus(span) => *span,
7494            Self::Slash(span) => *span,
7495            Self::SlashSlash(span) => *span,
7496            Self::Shl(span) => *span,
7497            Self::Shr(span) => *span,
7498            Self::At(span) => *span,
7499            Self::Caret(span) => *span,
7500            Self::Pipe(span) => *span,
7501        }
7502    }
7503}
7504#[derive(Debug, Clone)]
7505pub enum BlockChildren<'tree> {
7506    CompoundStatement(::std::boxed::Box<CompoundStatement<'tree>>),
7507    SimpleStatement(::std::boxed::Box<SimpleStatement<'tree>>),
7508}
7509impl<'tree> ::treesitter_types::FromNode<'tree> for BlockChildren<'tree> {
7510    #[allow(clippy::collapsible_else_if)]
7511    fn from_node(
7512        node: ::tree_sitter::Node<'tree>,
7513        src: &'tree [u8],
7514    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
7515        if let Ok(v) = <CompoundStatement as ::treesitter_types::FromNode>::from_node(node, src) {
7516            Ok(Self::CompoundStatement(::std::boxed::Box::new(v)))
7517        } else {
7518            if let Ok(v) = <SimpleStatement as ::treesitter_types::FromNode>::from_node(node, src) {
7519                Ok(Self::SimpleStatement(::std::boxed::Box::new(v)))
7520            } else {
7521                Err(::treesitter_types::ParseError::unexpected_kind(
7522                    node.kind(),
7523                    node,
7524                ))
7525            }
7526        }
7527    }
7528}
7529impl ::treesitter_types::Spanned for BlockChildren<'_> {
7530    fn span(&self) -> ::treesitter_types::Span {
7531        match self {
7532            Self::CompoundStatement(inner) => inner.span(),
7533            Self::SimpleStatement(inner) => inner.span(),
7534        }
7535    }
7536}
7537#[derive(Debug, Clone)]
7538pub enum BooleanOperatorOperator {
7539    And(::treesitter_types::Span),
7540    Or(::treesitter_types::Span),
7541}
7542impl<'tree> ::treesitter_types::FromNode<'tree> for BooleanOperatorOperator {
7543    #[allow(clippy::collapsible_else_if)]
7544    fn from_node(
7545        node: ::tree_sitter::Node<'tree>,
7546        _src: &'tree [u8],
7547    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
7548        match node.kind() {
7549            "and" => Ok(Self::And(::treesitter_types::Span::from(node))),
7550            "or" => Ok(Self::Or(::treesitter_types::Span::from(node))),
7551            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
7552        }
7553    }
7554}
7555impl ::treesitter_types::Spanned for BooleanOperatorOperator {
7556    fn span(&self) -> ::treesitter_types::Span {
7557        match self {
7558            Self::And(span) => *span,
7559            Self::Or(span) => *span,
7560        }
7561    }
7562}
7563#[derive(Debug, Clone)]
7564pub enum CallArguments<'tree> {
7565    ArgumentList(::std::boxed::Box<ArgumentList<'tree>>),
7566    GeneratorExpression(::std::boxed::Box<GeneratorExpression<'tree>>),
7567}
7568impl<'tree> ::treesitter_types::FromNode<'tree> for CallArguments<'tree> {
7569    #[allow(clippy::collapsible_else_if)]
7570    fn from_node(
7571        node: ::tree_sitter::Node<'tree>,
7572        src: &'tree [u8],
7573    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
7574        match node.kind() {
7575            "argument_list" => Ok(Self::ArgumentList(::std::boxed::Box::new(
7576                <ArgumentList as ::treesitter_types::FromNode>::from_node(node, src)?,
7577            ))),
7578            "generator_expression" => Ok(Self::GeneratorExpression(::std::boxed::Box::new(
7579                <GeneratorExpression as ::treesitter_types::FromNode>::from_node(node, src)?,
7580            ))),
7581            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
7582        }
7583    }
7584}
7585impl ::treesitter_types::Spanned for CallArguments<'_> {
7586    fn span(&self) -> ::treesitter_types::Span {
7587        match self {
7588            Self::ArgumentList(inner) => inner.span(),
7589            Self::GeneratorExpression(inner) => inner.span(),
7590        }
7591    }
7592}
7593#[derive(Debug, Clone)]
7594pub enum CasePatternChildren<'tree> {
7595    AsPattern(::std::boxed::Box<AsPattern<'tree>>),
7596    ClassPattern(::std::boxed::Box<ClassPattern<'tree>>),
7597    ComplexPattern(::std::boxed::Box<ComplexPattern<'tree>>),
7598    ConcatenatedString(::std::boxed::Box<ConcatenatedString<'tree>>),
7599    DictPattern(::std::boxed::Box<DictPattern<'tree>>),
7600    DottedName(::std::boxed::Box<DottedName<'tree>>),
7601    False(::std::boxed::Box<False<'tree>>),
7602    Float(::std::boxed::Box<Float<'tree>>),
7603    Integer(::std::boxed::Box<Integer<'tree>>),
7604    KeywordPattern(::std::boxed::Box<KeywordPattern<'tree>>),
7605    ListPattern(::std::boxed::Box<ListPattern<'tree>>),
7606    None(::std::boxed::Box<None<'tree>>),
7607    SplatPattern(::std::boxed::Box<SplatPattern<'tree>>),
7608    String(::std::boxed::Box<String<'tree>>),
7609    True(::std::boxed::Box<True<'tree>>),
7610    TuplePattern(::std::boxed::Box<TuplePattern<'tree>>),
7611    UnionPattern(::std::boxed::Box<UnionPattern<'tree>>),
7612}
7613impl<'tree> ::treesitter_types::FromNode<'tree> for CasePatternChildren<'tree> {
7614    #[allow(clippy::collapsible_else_if)]
7615    fn from_node(
7616        node: ::tree_sitter::Node<'tree>,
7617        src: &'tree [u8],
7618    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
7619        match node.kind() {
7620            "as_pattern" => Ok(Self::AsPattern(::std::boxed::Box::new(
7621                <AsPattern as ::treesitter_types::FromNode>::from_node(node, src)?,
7622            ))),
7623            "class_pattern" => Ok(Self::ClassPattern(::std::boxed::Box::new(
7624                <ClassPattern as ::treesitter_types::FromNode>::from_node(node, src)?,
7625            ))),
7626            "complex_pattern" => Ok(Self::ComplexPattern(::std::boxed::Box::new(
7627                <ComplexPattern as ::treesitter_types::FromNode>::from_node(node, src)?,
7628            ))),
7629            "concatenated_string" => Ok(Self::ConcatenatedString(::std::boxed::Box::new(
7630                <ConcatenatedString as ::treesitter_types::FromNode>::from_node(node, src)?,
7631            ))),
7632            "dict_pattern" => Ok(Self::DictPattern(::std::boxed::Box::new(
7633                <DictPattern as ::treesitter_types::FromNode>::from_node(node, src)?,
7634            ))),
7635            "dotted_name" => Ok(Self::DottedName(::std::boxed::Box::new(
7636                <DottedName as ::treesitter_types::FromNode>::from_node(node, src)?,
7637            ))),
7638            "false" => Ok(Self::False(::std::boxed::Box::new(
7639                <False as ::treesitter_types::FromNode>::from_node(node, src)?,
7640            ))),
7641            "float" => Ok(Self::Float(::std::boxed::Box::new(
7642                <Float as ::treesitter_types::FromNode>::from_node(node, src)?,
7643            ))),
7644            "integer" => Ok(Self::Integer(::std::boxed::Box::new(
7645                <Integer as ::treesitter_types::FromNode>::from_node(node, src)?,
7646            ))),
7647            "keyword_pattern" => Ok(Self::KeywordPattern(::std::boxed::Box::new(
7648                <KeywordPattern as ::treesitter_types::FromNode>::from_node(node, src)?,
7649            ))),
7650            "list_pattern" => Ok(Self::ListPattern(::std::boxed::Box::new(
7651                <ListPattern as ::treesitter_types::FromNode>::from_node(node, src)?,
7652            ))),
7653            "none" => Ok(Self::None(::std::boxed::Box::new(
7654                <None as ::treesitter_types::FromNode>::from_node(node, src)?,
7655            ))),
7656            "splat_pattern" => Ok(Self::SplatPattern(::std::boxed::Box::new(
7657                <SplatPattern as ::treesitter_types::FromNode>::from_node(node, src)?,
7658            ))),
7659            "string" => Ok(Self::String(::std::boxed::Box::new(
7660                <String as ::treesitter_types::FromNode>::from_node(node, src)?,
7661            ))),
7662            "true" => Ok(Self::True(::std::boxed::Box::new(
7663                <True as ::treesitter_types::FromNode>::from_node(node, src)?,
7664            ))),
7665            "tuple_pattern" => Ok(Self::TuplePattern(::std::boxed::Box::new(
7666                <TuplePattern as ::treesitter_types::FromNode>::from_node(node, src)?,
7667            ))),
7668            "union_pattern" => Ok(Self::UnionPattern(::std::boxed::Box::new(
7669                <UnionPattern as ::treesitter_types::FromNode>::from_node(node, src)?,
7670            ))),
7671            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
7672        }
7673    }
7674}
7675impl ::treesitter_types::Spanned for CasePatternChildren<'_> {
7676    fn span(&self) -> ::treesitter_types::Span {
7677        match self {
7678            Self::AsPattern(inner) => inner.span(),
7679            Self::ClassPattern(inner) => inner.span(),
7680            Self::ComplexPattern(inner) => inner.span(),
7681            Self::ConcatenatedString(inner) => inner.span(),
7682            Self::DictPattern(inner) => inner.span(),
7683            Self::DottedName(inner) => inner.span(),
7684            Self::False(inner) => inner.span(),
7685            Self::Float(inner) => inner.span(),
7686            Self::Integer(inner) => inner.span(),
7687            Self::KeywordPattern(inner) => inner.span(),
7688            Self::ListPattern(inner) => inner.span(),
7689            Self::None(inner) => inner.span(),
7690            Self::SplatPattern(inner) => inner.span(),
7691            Self::String(inner) => inner.span(),
7692            Self::True(inner) => inner.span(),
7693            Self::TuplePattern(inner) => inner.span(),
7694            Self::UnionPattern(inner) => inner.span(),
7695        }
7696    }
7697}
7698#[derive(Debug, Clone)]
7699pub enum ClassPatternChildren<'tree> {
7700    CasePattern(::std::boxed::Box<CasePattern<'tree>>),
7701    DottedName(::std::boxed::Box<DottedName<'tree>>),
7702}
7703impl<'tree> ::treesitter_types::FromNode<'tree> for ClassPatternChildren<'tree> {
7704    #[allow(clippy::collapsible_else_if)]
7705    fn from_node(
7706        node: ::tree_sitter::Node<'tree>,
7707        src: &'tree [u8],
7708    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
7709        match node.kind() {
7710            "case_pattern" => Ok(Self::CasePattern(::std::boxed::Box::new(
7711                <CasePattern as ::treesitter_types::FromNode>::from_node(node, src)?,
7712            ))),
7713            "dotted_name" => Ok(Self::DottedName(::std::boxed::Box::new(
7714                <DottedName as ::treesitter_types::FromNode>::from_node(node, src)?,
7715            ))),
7716            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
7717        }
7718    }
7719}
7720impl ::treesitter_types::Spanned for ClassPatternChildren<'_> {
7721    fn span(&self) -> ::treesitter_types::Span {
7722        match self {
7723            Self::CasePattern(inner) => inner.span(),
7724            Self::DottedName(inner) => inner.span(),
7725        }
7726    }
7727}
7728#[derive(Debug, Clone)]
7729pub enum ComparisonOperatorOperators {
7730    NotEq(::treesitter_types::Span),
7731    Lt(::treesitter_types::Span),
7732    LtEq(::treesitter_types::Span),
7733    LtGt(::treesitter_types::Span),
7734    EqEq(::treesitter_types::Span),
7735    Gt(::treesitter_types::Span),
7736    GtEq(::treesitter_types::Span),
7737    In(::treesitter_types::Span),
7738    Is(::treesitter_types::Span),
7739    ISXNOT(::treesitter_types::Span),
7740    NOTXIN(::treesitter_types::Span),
7741}
7742impl<'tree> ::treesitter_types::FromNode<'tree> for ComparisonOperatorOperators {
7743    #[allow(clippy::collapsible_else_if)]
7744    fn from_node(
7745        node: ::tree_sitter::Node<'tree>,
7746        _src: &'tree [u8],
7747    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
7748        match node.kind() {
7749            "!=" => Ok(Self::NotEq(::treesitter_types::Span::from(node))),
7750            "<" => Ok(Self::Lt(::treesitter_types::Span::from(node))),
7751            "<=" => Ok(Self::LtEq(::treesitter_types::Span::from(node))),
7752            "<>" => Ok(Self::LtGt(::treesitter_types::Span::from(node))),
7753            "==" => Ok(Self::EqEq(::treesitter_types::Span::from(node))),
7754            ">" => Ok(Self::Gt(::treesitter_types::Span::from(node))),
7755            ">=" => Ok(Self::GtEq(::treesitter_types::Span::from(node))),
7756            "in" => Ok(Self::In(::treesitter_types::Span::from(node))),
7757            "is" => Ok(Self::Is(::treesitter_types::Span::from(node))),
7758            "is not" => Ok(Self::ISXNOT(::treesitter_types::Span::from(node))),
7759            "not in" => Ok(Self::NOTXIN(::treesitter_types::Span::from(node))),
7760            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
7761        }
7762    }
7763}
7764impl ::treesitter_types::Spanned for ComparisonOperatorOperators {
7765    fn span(&self) -> ::treesitter_types::Span {
7766        match self {
7767            Self::NotEq(span) => *span,
7768            Self::Lt(span) => *span,
7769            Self::LtEq(span) => *span,
7770            Self::LtGt(span) => *span,
7771            Self::EqEq(span) => *span,
7772            Self::Gt(span) => *span,
7773            Self::GtEq(span) => *span,
7774            Self::In(span) => *span,
7775            Self::Is(span) => *span,
7776            Self::ISXNOT(span) => *span,
7777            Self::NOTXIN(span) => *span,
7778        }
7779    }
7780}
7781#[derive(Debug, Clone)]
7782pub enum ComplexPatternChildren<'tree> {
7783    Float(::std::boxed::Box<Float<'tree>>),
7784    Integer(::std::boxed::Box<Integer<'tree>>),
7785}
7786impl<'tree> ::treesitter_types::FromNode<'tree> for ComplexPatternChildren<'tree> {
7787    #[allow(clippy::collapsible_else_if)]
7788    fn from_node(
7789        node: ::tree_sitter::Node<'tree>,
7790        src: &'tree [u8],
7791    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
7792        match node.kind() {
7793            "float" => Ok(Self::Float(::std::boxed::Box::new(
7794                <Float as ::treesitter_types::FromNode>::from_node(node, src)?,
7795            ))),
7796            "integer" => Ok(Self::Integer(::std::boxed::Box::new(
7797                <Integer as ::treesitter_types::FromNode>::from_node(node, src)?,
7798            ))),
7799            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
7800        }
7801    }
7802}
7803impl ::treesitter_types::Spanned for ComplexPatternChildren<'_> {
7804    fn span(&self) -> ::treesitter_types::Span {
7805        match self {
7806            Self::Float(inner) => inner.span(),
7807            Self::Integer(inner) => inner.span(),
7808        }
7809    }
7810}
7811#[derive(Debug, Clone)]
7812pub enum DecoratedDefinitionDefinition<'tree> {
7813    ClassDefinition(::std::boxed::Box<ClassDefinition<'tree>>),
7814    FunctionDefinition(::std::boxed::Box<FunctionDefinition<'tree>>),
7815}
7816impl<'tree> ::treesitter_types::FromNode<'tree> for DecoratedDefinitionDefinition<'tree> {
7817    #[allow(clippy::collapsible_else_if)]
7818    fn from_node(
7819        node: ::tree_sitter::Node<'tree>,
7820        src: &'tree [u8],
7821    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
7822        match node.kind() {
7823            "class_definition" => Ok(Self::ClassDefinition(::std::boxed::Box::new(
7824                <ClassDefinition as ::treesitter_types::FromNode>::from_node(node, src)?,
7825            ))),
7826            "function_definition" => Ok(Self::FunctionDefinition(::std::boxed::Box::new(
7827                <FunctionDefinition as ::treesitter_types::FromNode>::from_node(node, src)?,
7828            ))),
7829            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
7830        }
7831    }
7832}
7833impl ::treesitter_types::Spanned for DecoratedDefinitionDefinition<'_> {
7834    fn span(&self) -> ::treesitter_types::Span {
7835        match self {
7836            Self::ClassDefinition(inner) => inner.span(),
7837            Self::FunctionDefinition(inner) => inner.span(),
7838        }
7839    }
7840}
7841#[derive(Debug, Clone)]
7842pub enum DefaultParameterName<'tree> {
7843    Identifier(::std::boxed::Box<Identifier<'tree>>),
7844    TuplePattern(::std::boxed::Box<TuplePattern<'tree>>),
7845}
7846impl<'tree> ::treesitter_types::FromNode<'tree> for DefaultParameterName<'tree> {
7847    #[allow(clippy::collapsible_else_if)]
7848    fn from_node(
7849        node: ::tree_sitter::Node<'tree>,
7850        src: &'tree [u8],
7851    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
7852        match node.kind() {
7853            "identifier" => Ok(Self::Identifier(::std::boxed::Box::new(
7854                <Identifier as ::treesitter_types::FromNode>::from_node(node, src)?,
7855            ))),
7856            "tuple_pattern" => Ok(Self::TuplePattern(::std::boxed::Box::new(
7857                <TuplePattern as ::treesitter_types::FromNode>::from_node(node, src)?,
7858            ))),
7859            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
7860        }
7861    }
7862}
7863impl ::treesitter_types::Spanned for DefaultParameterName<'_> {
7864    fn span(&self) -> ::treesitter_types::Span {
7865        match self {
7866            Self::Identifier(inner) => inner.span(),
7867            Self::TuplePattern(inner) => inner.span(),
7868        }
7869    }
7870}
7871#[derive(Debug, Clone)]
7872pub enum DeleteStatementChildren<'tree> {
7873    Expression(::std::boxed::Box<Expression<'tree>>),
7874    ExpressionList(::std::boxed::Box<ExpressionList<'tree>>),
7875}
7876impl<'tree> ::treesitter_types::FromNode<'tree> for DeleteStatementChildren<'tree> {
7877    #[allow(clippy::collapsible_else_if)]
7878    fn from_node(
7879        node: ::tree_sitter::Node<'tree>,
7880        src: &'tree [u8],
7881    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
7882        match node.kind() {
7883            "expression_list" => Ok(Self::ExpressionList(::std::boxed::Box::new(
7884                <ExpressionList as ::treesitter_types::FromNode>::from_node(node, src)?,
7885            ))),
7886            _other => {
7887                if let Ok(v) = <Expression as ::treesitter_types::FromNode>::from_node(node, src) {
7888                    Ok(Self::Expression(::std::boxed::Box::new(v)))
7889                } else {
7890                    Err(::treesitter_types::ParseError::unexpected_kind(
7891                        _other, node,
7892                    ))
7893                }
7894            }
7895        }
7896    }
7897}
7898impl ::treesitter_types::Spanned for DeleteStatementChildren<'_> {
7899    fn span(&self) -> ::treesitter_types::Span {
7900        match self {
7901            Self::Expression(inner) => inner.span(),
7902            Self::ExpressionList(inner) => inner.span(),
7903        }
7904    }
7905}
7906#[derive(Debug, Clone)]
7907pub enum DictPatternKey<'tree> {
7908    Minus(::treesitter_types::Span),
7909    Blank(::treesitter_types::Span),
7910    ClassPattern(::std::boxed::Box<ClassPattern<'tree>>),
7911    ComplexPattern(::std::boxed::Box<ComplexPattern<'tree>>),
7912    ConcatenatedString(::std::boxed::Box<ConcatenatedString<'tree>>),
7913    DictPattern(::std::boxed::Box<DictPattern<'tree>>),
7914    DottedName(::std::boxed::Box<DottedName<'tree>>),
7915    False(::std::boxed::Box<False<'tree>>),
7916    Float(::std::boxed::Box<Float<'tree>>),
7917    Integer(::std::boxed::Box<Integer<'tree>>),
7918    ListPattern(::std::boxed::Box<ListPattern<'tree>>),
7919    None(::std::boxed::Box<None<'tree>>),
7920    SplatPattern(::std::boxed::Box<SplatPattern<'tree>>),
7921    String(::std::boxed::Box<String<'tree>>),
7922    True(::std::boxed::Box<True<'tree>>),
7923    TuplePattern(::std::boxed::Box<TuplePattern<'tree>>),
7924    UnionPattern(::std::boxed::Box<UnionPattern<'tree>>),
7925}
7926impl<'tree> ::treesitter_types::FromNode<'tree> for DictPatternKey<'tree> {
7927    #[allow(clippy::collapsible_else_if)]
7928    fn from_node(
7929        node: ::tree_sitter::Node<'tree>,
7930        src: &'tree [u8],
7931    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
7932        match node.kind() {
7933            "-" => Ok(Self::Minus(::treesitter_types::Span::from(node))),
7934            "_" => Ok(Self::Blank(::treesitter_types::Span::from(node))),
7935            "class_pattern" => Ok(Self::ClassPattern(::std::boxed::Box::new(
7936                <ClassPattern as ::treesitter_types::FromNode>::from_node(node, src)?,
7937            ))),
7938            "complex_pattern" => Ok(Self::ComplexPattern(::std::boxed::Box::new(
7939                <ComplexPattern as ::treesitter_types::FromNode>::from_node(node, src)?,
7940            ))),
7941            "concatenated_string" => Ok(Self::ConcatenatedString(::std::boxed::Box::new(
7942                <ConcatenatedString as ::treesitter_types::FromNode>::from_node(node, src)?,
7943            ))),
7944            "dict_pattern" => Ok(Self::DictPattern(::std::boxed::Box::new(
7945                <DictPattern as ::treesitter_types::FromNode>::from_node(node, src)?,
7946            ))),
7947            "dotted_name" => Ok(Self::DottedName(::std::boxed::Box::new(
7948                <DottedName as ::treesitter_types::FromNode>::from_node(node, src)?,
7949            ))),
7950            "false" => Ok(Self::False(::std::boxed::Box::new(
7951                <False as ::treesitter_types::FromNode>::from_node(node, src)?,
7952            ))),
7953            "float" => Ok(Self::Float(::std::boxed::Box::new(
7954                <Float as ::treesitter_types::FromNode>::from_node(node, src)?,
7955            ))),
7956            "integer" => Ok(Self::Integer(::std::boxed::Box::new(
7957                <Integer as ::treesitter_types::FromNode>::from_node(node, src)?,
7958            ))),
7959            "list_pattern" => Ok(Self::ListPattern(::std::boxed::Box::new(
7960                <ListPattern as ::treesitter_types::FromNode>::from_node(node, src)?,
7961            ))),
7962            "none" => Ok(Self::None(::std::boxed::Box::new(
7963                <None as ::treesitter_types::FromNode>::from_node(node, src)?,
7964            ))),
7965            "splat_pattern" => Ok(Self::SplatPattern(::std::boxed::Box::new(
7966                <SplatPattern as ::treesitter_types::FromNode>::from_node(node, src)?,
7967            ))),
7968            "string" => Ok(Self::String(::std::boxed::Box::new(
7969                <String as ::treesitter_types::FromNode>::from_node(node, src)?,
7970            ))),
7971            "true" => Ok(Self::True(::std::boxed::Box::new(
7972                <True as ::treesitter_types::FromNode>::from_node(node, src)?,
7973            ))),
7974            "tuple_pattern" => Ok(Self::TuplePattern(::std::boxed::Box::new(
7975                <TuplePattern as ::treesitter_types::FromNode>::from_node(node, src)?,
7976            ))),
7977            "union_pattern" => Ok(Self::UnionPattern(::std::boxed::Box::new(
7978                <UnionPattern as ::treesitter_types::FromNode>::from_node(node, src)?,
7979            ))),
7980            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
7981        }
7982    }
7983}
7984impl ::treesitter_types::Spanned for DictPatternKey<'_> {
7985    fn span(&self) -> ::treesitter_types::Span {
7986        match self {
7987            Self::Minus(span) => *span,
7988            Self::Blank(span) => *span,
7989            Self::ClassPattern(inner) => inner.span(),
7990            Self::ComplexPattern(inner) => inner.span(),
7991            Self::ConcatenatedString(inner) => inner.span(),
7992            Self::DictPattern(inner) => inner.span(),
7993            Self::DottedName(inner) => inner.span(),
7994            Self::False(inner) => inner.span(),
7995            Self::Float(inner) => inner.span(),
7996            Self::Integer(inner) => inner.span(),
7997            Self::ListPattern(inner) => inner.span(),
7998            Self::None(inner) => inner.span(),
7999            Self::SplatPattern(inner) => inner.span(),
8000            Self::String(inner) => inner.span(),
8001            Self::True(inner) => inner.span(),
8002            Self::TuplePattern(inner) => inner.span(),
8003            Self::UnionPattern(inner) => inner.span(),
8004        }
8005    }
8006}
8007#[derive(Debug, Clone)]
8008pub enum DictionaryChildren<'tree> {
8009    DictionarySplat(::std::boxed::Box<DictionarySplat<'tree>>),
8010    Pair(::std::boxed::Box<Pair<'tree>>),
8011}
8012impl<'tree> ::treesitter_types::FromNode<'tree> for DictionaryChildren<'tree> {
8013    #[allow(clippy::collapsible_else_if)]
8014    fn from_node(
8015        node: ::tree_sitter::Node<'tree>,
8016        src: &'tree [u8],
8017    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
8018        match node.kind() {
8019            "dictionary_splat" => Ok(Self::DictionarySplat(::std::boxed::Box::new(
8020                <DictionarySplat as ::treesitter_types::FromNode>::from_node(node, src)?,
8021            ))),
8022            "pair" => Ok(Self::Pair(::std::boxed::Box::new(
8023                <Pair as ::treesitter_types::FromNode>::from_node(node, src)?,
8024            ))),
8025            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
8026        }
8027    }
8028}
8029impl ::treesitter_types::Spanned for DictionaryChildren<'_> {
8030    fn span(&self) -> ::treesitter_types::Span {
8031        match self {
8032            Self::DictionarySplat(inner) => inner.span(),
8033            Self::Pair(inner) => inner.span(),
8034        }
8035    }
8036}
8037#[derive(Debug, Clone)]
8038pub enum DictionaryComprehensionChildren<'tree> {
8039    ForInClause(::std::boxed::Box<ForInClause<'tree>>),
8040    IfClause(::std::boxed::Box<IfClause<'tree>>),
8041}
8042impl<'tree> ::treesitter_types::FromNode<'tree> for DictionaryComprehensionChildren<'tree> {
8043    #[allow(clippy::collapsible_else_if)]
8044    fn from_node(
8045        node: ::tree_sitter::Node<'tree>,
8046        src: &'tree [u8],
8047    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
8048        match node.kind() {
8049            "for_in_clause" => Ok(Self::ForInClause(::std::boxed::Box::new(
8050                <ForInClause as ::treesitter_types::FromNode>::from_node(node, src)?,
8051            ))),
8052            "if_clause" => Ok(Self::IfClause(::std::boxed::Box::new(
8053                <IfClause as ::treesitter_types::FromNode>::from_node(node, src)?,
8054            ))),
8055            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
8056        }
8057    }
8058}
8059impl ::treesitter_types::Spanned for DictionaryComprehensionChildren<'_> {
8060    fn span(&self) -> ::treesitter_types::Span {
8061        match self {
8062            Self::ForInClause(inner) => inner.span(),
8063            Self::IfClause(inner) => inner.span(),
8064        }
8065    }
8066}
8067#[derive(Debug, Clone)]
8068pub enum DictionarySplatPatternChildren<'tree> {
8069    Attribute(::std::boxed::Box<Attribute<'tree>>),
8070    Identifier(::std::boxed::Box<Identifier<'tree>>),
8071    Subscript(::std::boxed::Box<Subscript<'tree>>),
8072}
8073impl<'tree> ::treesitter_types::FromNode<'tree> for DictionarySplatPatternChildren<'tree> {
8074    #[allow(clippy::collapsible_else_if)]
8075    fn from_node(
8076        node: ::tree_sitter::Node<'tree>,
8077        src: &'tree [u8],
8078    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
8079        match node.kind() {
8080            "attribute" => Ok(Self::Attribute(::std::boxed::Box::new(
8081                <Attribute as ::treesitter_types::FromNode>::from_node(node, src)?,
8082            ))),
8083            "identifier" => Ok(Self::Identifier(::std::boxed::Box::new(
8084                <Identifier as ::treesitter_types::FromNode>::from_node(node, src)?,
8085            ))),
8086            "subscript" => Ok(Self::Subscript(::std::boxed::Box::new(
8087                <Subscript as ::treesitter_types::FromNode>::from_node(node, src)?,
8088            ))),
8089            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
8090        }
8091    }
8092}
8093impl ::treesitter_types::Spanned for DictionarySplatPatternChildren<'_> {
8094    fn span(&self) -> ::treesitter_types::Span {
8095        match self {
8096            Self::Attribute(inner) => inner.span(),
8097            Self::Identifier(inner) => inner.span(),
8098            Self::Subscript(inner) => inner.span(),
8099        }
8100    }
8101}
8102#[derive(Debug, Clone)]
8103pub enum ExecStatementCode<'tree> {
8104    Identifier(::std::boxed::Box<Identifier<'tree>>),
8105    String(::std::boxed::Box<String<'tree>>),
8106}
8107impl<'tree> ::treesitter_types::FromNode<'tree> for ExecStatementCode<'tree> {
8108    #[allow(clippy::collapsible_else_if)]
8109    fn from_node(
8110        node: ::tree_sitter::Node<'tree>,
8111        src: &'tree [u8],
8112    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
8113        match node.kind() {
8114            "identifier" => Ok(Self::Identifier(::std::boxed::Box::new(
8115                <Identifier as ::treesitter_types::FromNode>::from_node(node, src)?,
8116            ))),
8117            "string" => Ok(Self::String(::std::boxed::Box::new(
8118                <String as ::treesitter_types::FromNode>::from_node(node, src)?,
8119            ))),
8120            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
8121        }
8122    }
8123}
8124impl ::treesitter_types::Spanned for ExecStatementCode<'_> {
8125    fn span(&self) -> ::treesitter_types::Span {
8126        match self {
8127            Self::Identifier(inner) => inner.span(),
8128            Self::String(inner) => inner.span(),
8129        }
8130    }
8131}
8132#[derive(Debug, Clone)]
8133pub enum ExpressionStatementChildren<'tree> {
8134    Assignment(::std::boxed::Box<Assignment<'tree>>),
8135    AugmentedAssignment(::std::boxed::Box<AugmentedAssignment<'tree>>),
8136    Expression(::std::boxed::Box<Expression<'tree>>),
8137    Yield(::std::boxed::Box<Yield<'tree>>),
8138}
8139impl<'tree> ::treesitter_types::FromNode<'tree> for ExpressionStatementChildren<'tree> {
8140    #[allow(clippy::collapsible_else_if)]
8141    fn from_node(
8142        node: ::tree_sitter::Node<'tree>,
8143        src: &'tree [u8],
8144    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
8145        match node.kind() {
8146            "assignment" => Ok(Self::Assignment(::std::boxed::Box::new(
8147                <Assignment as ::treesitter_types::FromNode>::from_node(node, src)?,
8148            ))),
8149            "augmented_assignment" => Ok(Self::AugmentedAssignment(::std::boxed::Box::new(
8150                <AugmentedAssignment as ::treesitter_types::FromNode>::from_node(node, src)?,
8151            ))),
8152            "yield" => Ok(Self::Yield(::std::boxed::Box::new(
8153                <Yield as ::treesitter_types::FromNode>::from_node(node, src)?,
8154            ))),
8155            _other => {
8156                if let Ok(v) = <Expression as ::treesitter_types::FromNode>::from_node(node, src) {
8157                    Ok(Self::Expression(::std::boxed::Box::new(v)))
8158                } else {
8159                    Err(::treesitter_types::ParseError::unexpected_kind(
8160                        _other, node,
8161                    ))
8162                }
8163            }
8164        }
8165    }
8166}
8167impl ::treesitter_types::Spanned for ExpressionStatementChildren<'_> {
8168    fn span(&self) -> ::treesitter_types::Span {
8169        match self {
8170            Self::Assignment(inner) => inner.span(),
8171            Self::AugmentedAssignment(inner) => inner.span(),
8172            Self::Expression(inner) => inner.span(),
8173            Self::Yield(inner) => inner.span(),
8174        }
8175    }
8176}
8177#[derive(Debug, Clone)]
8178pub enum ForInClauseLeft<'tree> {
8179    Pattern(::std::boxed::Box<Pattern<'tree>>),
8180    PatternList(::std::boxed::Box<PatternList<'tree>>),
8181}
8182impl<'tree> ::treesitter_types::FromNode<'tree> for ForInClauseLeft<'tree> {
8183    #[allow(clippy::collapsible_else_if)]
8184    fn from_node(
8185        node: ::tree_sitter::Node<'tree>,
8186        src: &'tree [u8],
8187    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
8188        match node.kind() {
8189            "pattern_list" => Ok(Self::PatternList(::std::boxed::Box::new(
8190                <PatternList as ::treesitter_types::FromNode>::from_node(node, src)?,
8191            ))),
8192            _other => {
8193                if let Ok(v) = <Pattern as ::treesitter_types::FromNode>::from_node(node, src) {
8194                    Ok(Self::Pattern(::std::boxed::Box::new(v)))
8195                } else {
8196                    Err(::treesitter_types::ParseError::unexpected_kind(
8197                        _other, node,
8198                    ))
8199                }
8200            }
8201        }
8202    }
8203}
8204impl ::treesitter_types::Spanned for ForInClauseLeft<'_> {
8205    fn span(&self) -> ::treesitter_types::Span {
8206        match self {
8207            Self::Pattern(inner) => inner.span(),
8208            Self::PatternList(inner) => inner.span(),
8209        }
8210    }
8211}
8212#[derive(Debug, Clone)]
8213pub enum ForInClauseRight<'tree> {
8214    Comma(::treesitter_types::Span),
8215    Expression(::std::boxed::Box<Expression<'tree>>),
8216}
8217impl<'tree> ::treesitter_types::FromNode<'tree> for ForInClauseRight<'tree> {
8218    #[allow(clippy::collapsible_else_if)]
8219    fn from_node(
8220        node: ::tree_sitter::Node<'tree>,
8221        src: &'tree [u8],
8222    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
8223        match node.kind() {
8224            "," => Ok(Self::Comma(::treesitter_types::Span::from(node))),
8225            _other => {
8226                if let Ok(v) = <Expression as ::treesitter_types::FromNode>::from_node(node, src) {
8227                    Ok(Self::Expression(::std::boxed::Box::new(v)))
8228                } else {
8229                    Err(::treesitter_types::ParseError::unexpected_kind(
8230                        _other, node,
8231                    ))
8232                }
8233            }
8234        }
8235    }
8236}
8237impl ::treesitter_types::Spanned for ForInClauseRight<'_> {
8238    fn span(&self) -> ::treesitter_types::Span {
8239        match self {
8240            Self::Comma(span) => *span,
8241            Self::Expression(inner) => inner.span(),
8242        }
8243    }
8244}
8245#[derive(Debug, Clone)]
8246pub enum ForStatementLeft<'tree> {
8247    Pattern(::std::boxed::Box<Pattern<'tree>>),
8248    PatternList(::std::boxed::Box<PatternList<'tree>>),
8249}
8250impl<'tree> ::treesitter_types::FromNode<'tree> for ForStatementLeft<'tree> {
8251    #[allow(clippy::collapsible_else_if)]
8252    fn from_node(
8253        node: ::tree_sitter::Node<'tree>,
8254        src: &'tree [u8],
8255    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
8256        match node.kind() {
8257            "pattern_list" => Ok(Self::PatternList(::std::boxed::Box::new(
8258                <PatternList as ::treesitter_types::FromNode>::from_node(node, src)?,
8259            ))),
8260            _other => {
8261                if let Ok(v) = <Pattern as ::treesitter_types::FromNode>::from_node(node, src) {
8262                    Ok(Self::Pattern(::std::boxed::Box::new(v)))
8263                } else {
8264                    Err(::treesitter_types::ParseError::unexpected_kind(
8265                        _other, node,
8266                    ))
8267                }
8268            }
8269        }
8270    }
8271}
8272impl ::treesitter_types::Spanned for ForStatementLeft<'_> {
8273    fn span(&self) -> ::treesitter_types::Span {
8274        match self {
8275            Self::Pattern(inner) => inner.span(),
8276            Self::PatternList(inner) => inner.span(),
8277        }
8278    }
8279}
8280#[derive(Debug, Clone)]
8281pub enum ForStatementRight<'tree> {
8282    Expression(::std::boxed::Box<Expression<'tree>>),
8283    ExpressionList(::std::boxed::Box<ExpressionList<'tree>>),
8284}
8285impl<'tree> ::treesitter_types::FromNode<'tree> for ForStatementRight<'tree> {
8286    #[allow(clippy::collapsible_else_if)]
8287    fn from_node(
8288        node: ::tree_sitter::Node<'tree>,
8289        src: &'tree [u8],
8290    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
8291        match node.kind() {
8292            "expression_list" => Ok(Self::ExpressionList(::std::boxed::Box::new(
8293                <ExpressionList as ::treesitter_types::FromNode>::from_node(node, src)?,
8294            ))),
8295            _other => {
8296                if let Ok(v) = <Expression as ::treesitter_types::FromNode>::from_node(node, src) {
8297                    Ok(Self::Expression(::std::boxed::Box::new(v)))
8298                } else {
8299                    Err(::treesitter_types::ParseError::unexpected_kind(
8300                        _other, node,
8301                    ))
8302                }
8303            }
8304        }
8305    }
8306}
8307impl ::treesitter_types::Spanned for ForStatementRight<'_> {
8308    fn span(&self) -> ::treesitter_types::Span {
8309        match self {
8310            Self::Expression(inner) => inner.span(),
8311            Self::ExpressionList(inner) => inner.span(),
8312        }
8313    }
8314}
8315#[derive(Debug, Clone)]
8316pub enum FormatExpressionExpression<'tree> {
8317    Expression(::std::boxed::Box<Expression<'tree>>),
8318    ExpressionList(::std::boxed::Box<ExpressionList<'tree>>),
8319    PatternList(::std::boxed::Box<PatternList<'tree>>),
8320    Yield(::std::boxed::Box<Yield<'tree>>),
8321}
8322impl<'tree> ::treesitter_types::FromNode<'tree> for FormatExpressionExpression<'tree> {
8323    #[allow(clippy::collapsible_else_if)]
8324    fn from_node(
8325        node: ::tree_sitter::Node<'tree>,
8326        src: &'tree [u8],
8327    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
8328        match node.kind() {
8329            "expression_list" => Ok(Self::ExpressionList(::std::boxed::Box::new(
8330                <ExpressionList as ::treesitter_types::FromNode>::from_node(node, src)?,
8331            ))),
8332            "pattern_list" => Ok(Self::PatternList(::std::boxed::Box::new(
8333                <PatternList as ::treesitter_types::FromNode>::from_node(node, src)?,
8334            ))),
8335            "yield" => Ok(Self::Yield(::std::boxed::Box::new(
8336                <Yield as ::treesitter_types::FromNode>::from_node(node, src)?,
8337            ))),
8338            _other => {
8339                if let Ok(v) = <Expression as ::treesitter_types::FromNode>::from_node(node, src) {
8340                    Ok(Self::Expression(::std::boxed::Box::new(v)))
8341                } else {
8342                    Err(::treesitter_types::ParseError::unexpected_kind(
8343                        _other, node,
8344                    ))
8345                }
8346            }
8347        }
8348    }
8349}
8350impl ::treesitter_types::Spanned for FormatExpressionExpression<'_> {
8351    fn span(&self) -> ::treesitter_types::Span {
8352        match self {
8353            Self::Expression(inner) => inner.span(),
8354            Self::ExpressionList(inner) => inner.span(),
8355            Self::PatternList(inner) => inner.span(),
8356            Self::Yield(inner) => inner.span(),
8357        }
8358    }
8359}
8360#[derive(Debug, Clone)]
8361pub enum FutureImportStatementName<'tree> {
8362    AliasedImport(::std::boxed::Box<AliasedImport<'tree>>),
8363    DottedName(::std::boxed::Box<DottedName<'tree>>),
8364}
8365impl<'tree> ::treesitter_types::FromNode<'tree> for FutureImportStatementName<'tree> {
8366    #[allow(clippy::collapsible_else_if)]
8367    fn from_node(
8368        node: ::tree_sitter::Node<'tree>,
8369        src: &'tree [u8],
8370    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
8371        match node.kind() {
8372            "aliased_import" => Ok(Self::AliasedImport(::std::boxed::Box::new(
8373                <AliasedImport as ::treesitter_types::FromNode>::from_node(node, src)?,
8374            ))),
8375            "dotted_name" => Ok(Self::DottedName(::std::boxed::Box::new(
8376                <DottedName as ::treesitter_types::FromNode>::from_node(node, src)?,
8377            ))),
8378            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
8379        }
8380    }
8381}
8382impl ::treesitter_types::Spanned for FutureImportStatementName<'_> {
8383    fn span(&self) -> ::treesitter_types::Span {
8384        match self {
8385            Self::AliasedImport(inner) => inner.span(),
8386            Self::DottedName(inner) => inner.span(),
8387        }
8388    }
8389}
8390#[derive(Debug, Clone)]
8391pub enum GeneratorExpressionChildren<'tree> {
8392    ForInClause(::std::boxed::Box<ForInClause<'tree>>),
8393    IfClause(::std::boxed::Box<IfClause<'tree>>),
8394}
8395impl<'tree> ::treesitter_types::FromNode<'tree> for GeneratorExpressionChildren<'tree> {
8396    #[allow(clippy::collapsible_else_if)]
8397    fn from_node(
8398        node: ::tree_sitter::Node<'tree>,
8399        src: &'tree [u8],
8400    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
8401        match node.kind() {
8402            "for_in_clause" => Ok(Self::ForInClause(::std::boxed::Box::new(
8403                <ForInClause as ::treesitter_types::FromNode>::from_node(node, src)?,
8404            ))),
8405            "if_clause" => Ok(Self::IfClause(::std::boxed::Box::new(
8406                <IfClause as ::treesitter_types::FromNode>::from_node(node, src)?,
8407            ))),
8408            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
8409        }
8410    }
8411}
8412impl ::treesitter_types::Spanned for GeneratorExpressionChildren<'_> {
8413    fn span(&self) -> ::treesitter_types::Span {
8414        match self {
8415            Self::ForInClause(inner) => inner.span(),
8416            Self::IfClause(inner) => inner.span(),
8417        }
8418    }
8419}
8420#[derive(Debug, Clone)]
8421pub enum GenericTypeChildren<'tree> {
8422    Identifier(::std::boxed::Box<Identifier<'tree>>),
8423    TypeParameter(::std::boxed::Box<TypeParameter<'tree>>),
8424}
8425impl<'tree> ::treesitter_types::FromNode<'tree> for GenericTypeChildren<'tree> {
8426    #[allow(clippy::collapsible_else_if)]
8427    fn from_node(
8428        node: ::tree_sitter::Node<'tree>,
8429        src: &'tree [u8],
8430    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
8431        match node.kind() {
8432            "identifier" => Ok(Self::Identifier(::std::boxed::Box::new(
8433                <Identifier as ::treesitter_types::FromNode>::from_node(node, src)?,
8434            ))),
8435            "type_parameter" => Ok(Self::TypeParameter(::std::boxed::Box::new(
8436                <TypeParameter as ::treesitter_types::FromNode>::from_node(node, src)?,
8437            ))),
8438            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
8439        }
8440    }
8441}
8442impl ::treesitter_types::Spanned for GenericTypeChildren<'_> {
8443    fn span(&self) -> ::treesitter_types::Span {
8444        match self {
8445            Self::Identifier(inner) => inner.span(),
8446            Self::TypeParameter(inner) => inner.span(),
8447        }
8448    }
8449}
8450#[derive(Debug, Clone)]
8451pub enum IfStatementAlternative<'tree> {
8452    ElifClause(::std::boxed::Box<ElifClause<'tree>>),
8453    ElseClause(::std::boxed::Box<ElseClause<'tree>>),
8454}
8455impl<'tree> ::treesitter_types::FromNode<'tree> for IfStatementAlternative<'tree> {
8456    #[allow(clippy::collapsible_else_if)]
8457    fn from_node(
8458        node: ::tree_sitter::Node<'tree>,
8459        src: &'tree [u8],
8460    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
8461        match node.kind() {
8462            "elif_clause" => Ok(Self::ElifClause(::std::boxed::Box::new(
8463                <ElifClause as ::treesitter_types::FromNode>::from_node(node, src)?,
8464            ))),
8465            "else_clause" => Ok(Self::ElseClause(::std::boxed::Box::new(
8466                <ElseClause as ::treesitter_types::FromNode>::from_node(node, src)?,
8467            ))),
8468            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
8469        }
8470    }
8471}
8472impl ::treesitter_types::Spanned for IfStatementAlternative<'_> {
8473    fn span(&self) -> ::treesitter_types::Span {
8474        match self {
8475            Self::ElifClause(inner) => inner.span(),
8476            Self::ElseClause(inner) => inner.span(),
8477        }
8478    }
8479}
8480#[derive(Debug, Clone)]
8481pub enum ImportFromStatementModuleName<'tree> {
8482    DottedName(::std::boxed::Box<DottedName<'tree>>),
8483    RelativeImport(::std::boxed::Box<RelativeImport<'tree>>),
8484}
8485impl<'tree> ::treesitter_types::FromNode<'tree> for ImportFromStatementModuleName<'tree> {
8486    #[allow(clippy::collapsible_else_if)]
8487    fn from_node(
8488        node: ::tree_sitter::Node<'tree>,
8489        src: &'tree [u8],
8490    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
8491        match node.kind() {
8492            "dotted_name" => Ok(Self::DottedName(::std::boxed::Box::new(
8493                <DottedName as ::treesitter_types::FromNode>::from_node(node, src)?,
8494            ))),
8495            "relative_import" => Ok(Self::RelativeImport(::std::boxed::Box::new(
8496                <RelativeImport as ::treesitter_types::FromNode>::from_node(node, src)?,
8497            ))),
8498            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
8499        }
8500    }
8501}
8502impl ::treesitter_types::Spanned for ImportFromStatementModuleName<'_> {
8503    fn span(&self) -> ::treesitter_types::Span {
8504        match self {
8505            Self::DottedName(inner) => inner.span(),
8506            Self::RelativeImport(inner) => inner.span(),
8507        }
8508    }
8509}
8510#[derive(Debug, Clone)]
8511pub enum ImportFromStatementName<'tree> {
8512    AliasedImport(::std::boxed::Box<AliasedImport<'tree>>),
8513    DottedName(::std::boxed::Box<DottedName<'tree>>),
8514}
8515impl<'tree> ::treesitter_types::FromNode<'tree> for ImportFromStatementName<'tree> {
8516    #[allow(clippy::collapsible_else_if)]
8517    fn from_node(
8518        node: ::tree_sitter::Node<'tree>,
8519        src: &'tree [u8],
8520    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
8521        match node.kind() {
8522            "aliased_import" => Ok(Self::AliasedImport(::std::boxed::Box::new(
8523                <AliasedImport as ::treesitter_types::FromNode>::from_node(node, src)?,
8524            ))),
8525            "dotted_name" => Ok(Self::DottedName(::std::boxed::Box::new(
8526                <DottedName as ::treesitter_types::FromNode>::from_node(node, src)?,
8527            ))),
8528            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
8529        }
8530    }
8531}
8532impl ::treesitter_types::Spanned for ImportFromStatementName<'_> {
8533    fn span(&self) -> ::treesitter_types::Span {
8534        match self {
8535            Self::AliasedImport(inner) => inner.span(),
8536            Self::DottedName(inner) => inner.span(),
8537        }
8538    }
8539}
8540#[derive(Debug, Clone)]
8541pub enum ImportStatementName<'tree> {
8542    AliasedImport(::std::boxed::Box<AliasedImport<'tree>>),
8543    DottedName(::std::boxed::Box<DottedName<'tree>>),
8544}
8545impl<'tree> ::treesitter_types::FromNode<'tree> for ImportStatementName<'tree> {
8546    #[allow(clippy::collapsible_else_if)]
8547    fn from_node(
8548        node: ::tree_sitter::Node<'tree>,
8549        src: &'tree [u8],
8550    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
8551        match node.kind() {
8552            "aliased_import" => Ok(Self::AliasedImport(::std::boxed::Box::new(
8553                <AliasedImport as ::treesitter_types::FromNode>::from_node(node, src)?,
8554            ))),
8555            "dotted_name" => Ok(Self::DottedName(::std::boxed::Box::new(
8556                <DottedName as ::treesitter_types::FromNode>::from_node(node, src)?,
8557            ))),
8558            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
8559        }
8560    }
8561}
8562impl ::treesitter_types::Spanned for ImportStatementName<'_> {
8563    fn span(&self) -> ::treesitter_types::Span {
8564        match self {
8565            Self::AliasedImport(inner) => inner.span(),
8566            Self::DottedName(inner) => inner.span(),
8567        }
8568    }
8569}
8570#[derive(Debug, Clone)]
8571pub enum InterpolationExpression<'tree> {
8572    Expression(::std::boxed::Box<Expression<'tree>>),
8573    ExpressionList(::std::boxed::Box<ExpressionList<'tree>>),
8574    PatternList(::std::boxed::Box<PatternList<'tree>>),
8575    Yield(::std::boxed::Box<Yield<'tree>>),
8576}
8577impl<'tree> ::treesitter_types::FromNode<'tree> for InterpolationExpression<'tree> {
8578    #[allow(clippy::collapsible_else_if)]
8579    fn from_node(
8580        node: ::tree_sitter::Node<'tree>,
8581        src: &'tree [u8],
8582    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
8583        match node.kind() {
8584            "expression_list" => Ok(Self::ExpressionList(::std::boxed::Box::new(
8585                <ExpressionList as ::treesitter_types::FromNode>::from_node(node, src)?,
8586            ))),
8587            "pattern_list" => Ok(Self::PatternList(::std::boxed::Box::new(
8588                <PatternList as ::treesitter_types::FromNode>::from_node(node, src)?,
8589            ))),
8590            "yield" => Ok(Self::Yield(::std::boxed::Box::new(
8591                <Yield as ::treesitter_types::FromNode>::from_node(node, src)?,
8592            ))),
8593            _other => {
8594                if let Ok(v) = <Expression as ::treesitter_types::FromNode>::from_node(node, src) {
8595                    Ok(Self::Expression(::std::boxed::Box::new(v)))
8596                } else {
8597                    Err(::treesitter_types::ParseError::unexpected_kind(
8598                        _other, node,
8599                    ))
8600                }
8601            }
8602        }
8603    }
8604}
8605impl ::treesitter_types::Spanned for InterpolationExpression<'_> {
8606    fn span(&self) -> ::treesitter_types::Span {
8607        match self {
8608            Self::Expression(inner) => inner.span(),
8609            Self::ExpressionList(inner) => inner.span(),
8610            Self::PatternList(inner) => inner.span(),
8611            Self::Yield(inner) => inner.span(),
8612        }
8613    }
8614}
8615#[derive(Debug, Clone)]
8616pub enum KeywordPatternChildren<'tree> {
8617    ClassPattern(::std::boxed::Box<ClassPattern<'tree>>),
8618    ComplexPattern(::std::boxed::Box<ComplexPattern<'tree>>),
8619    ConcatenatedString(::std::boxed::Box<ConcatenatedString<'tree>>),
8620    DictPattern(::std::boxed::Box<DictPattern<'tree>>),
8621    DottedName(::std::boxed::Box<DottedName<'tree>>),
8622    False(::std::boxed::Box<False<'tree>>),
8623    Float(::std::boxed::Box<Float<'tree>>),
8624    Identifier(::std::boxed::Box<Identifier<'tree>>),
8625    Integer(::std::boxed::Box<Integer<'tree>>),
8626    ListPattern(::std::boxed::Box<ListPattern<'tree>>),
8627    None(::std::boxed::Box<None<'tree>>),
8628    SplatPattern(::std::boxed::Box<SplatPattern<'tree>>),
8629    String(::std::boxed::Box<String<'tree>>),
8630    True(::std::boxed::Box<True<'tree>>),
8631    TuplePattern(::std::boxed::Box<TuplePattern<'tree>>),
8632    UnionPattern(::std::boxed::Box<UnionPattern<'tree>>),
8633}
8634impl<'tree> ::treesitter_types::FromNode<'tree> for KeywordPatternChildren<'tree> {
8635    #[allow(clippy::collapsible_else_if)]
8636    fn from_node(
8637        node: ::tree_sitter::Node<'tree>,
8638        src: &'tree [u8],
8639    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
8640        match node.kind() {
8641            "class_pattern" => Ok(Self::ClassPattern(::std::boxed::Box::new(
8642                <ClassPattern as ::treesitter_types::FromNode>::from_node(node, src)?,
8643            ))),
8644            "complex_pattern" => Ok(Self::ComplexPattern(::std::boxed::Box::new(
8645                <ComplexPattern as ::treesitter_types::FromNode>::from_node(node, src)?,
8646            ))),
8647            "concatenated_string" => Ok(Self::ConcatenatedString(::std::boxed::Box::new(
8648                <ConcatenatedString as ::treesitter_types::FromNode>::from_node(node, src)?,
8649            ))),
8650            "dict_pattern" => Ok(Self::DictPattern(::std::boxed::Box::new(
8651                <DictPattern as ::treesitter_types::FromNode>::from_node(node, src)?,
8652            ))),
8653            "dotted_name" => Ok(Self::DottedName(::std::boxed::Box::new(
8654                <DottedName as ::treesitter_types::FromNode>::from_node(node, src)?,
8655            ))),
8656            "false" => Ok(Self::False(::std::boxed::Box::new(
8657                <False as ::treesitter_types::FromNode>::from_node(node, src)?,
8658            ))),
8659            "float" => Ok(Self::Float(::std::boxed::Box::new(
8660                <Float as ::treesitter_types::FromNode>::from_node(node, src)?,
8661            ))),
8662            "identifier" => Ok(Self::Identifier(::std::boxed::Box::new(
8663                <Identifier as ::treesitter_types::FromNode>::from_node(node, src)?,
8664            ))),
8665            "integer" => Ok(Self::Integer(::std::boxed::Box::new(
8666                <Integer as ::treesitter_types::FromNode>::from_node(node, src)?,
8667            ))),
8668            "list_pattern" => Ok(Self::ListPattern(::std::boxed::Box::new(
8669                <ListPattern as ::treesitter_types::FromNode>::from_node(node, src)?,
8670            ))),
8671            "none" => Ok(Self::None(::std::boxed::Box::new(
8672                <None as ::treesitter_types::FromNode>::from_node(node, src)?,
8673            ))),
8674            "splat_pattern" => Ok(Self::SplatPattern(::std::boxed::Box::new(
8675                <SplatPattern as ::treesitter_types::FromNode>::from_node(node, src)?,
8676            ))),
8677            "string" => Ok(Self::String(::std::boxed::Box::new(
8678                <String as ::treesitter_types::FromNode>::from_node(node, src)?,
8679            ))),
8680            "true" => Ok(Self::True(::std::boxed::Box::new(
8681                <True as ::treesitter_types::FromNode>::from_node(node, src)?,
8682            ))),
8683            "tuple_pattern" => Ok(Self::TuplePattern(::std::boxed::Box::new(
8684                <TuplePattern as ::treesitter_types::FromNode>::from_node(node, src)?,
8685            ))),
8686            "union_pattern" => Ok(Self::UnionPattern(::std::boxed::Box::new(
8687                <UnionPattern as ::treesitter_types::FromNode>::from_node(node, src)?,
8688            ))),
8689            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
8690        }
8691    }
8692}
8693impl ::treesitter_types::Spanned for KeywordPatternChildren<'_> {
8694    fn span(&self) -> ::treesitter_types::Span {
8695        match self {
8696            Self::ClassPattern(inner) => inner.span(),
8697            Self::ComplexPattern(inner) => inner.span(),
8698            Self::ConcatenatedString(inner) => inner.span(),
8699            Self::DictPattern(inner) => inner.span(),
8700            Self::DottedName(inner) => inner.span(),
8701            Self::False(inner) => inner.span(),
8702            Self::Float(inner) => inner.span(),
8703            Self::Identifier(inner) => inner.span(),
8704            Self::Integer(inner) => inner.span(),
8705            Self::ListPattern(inner) => inner.span(),
8706            Self::None(inner) => inner.span(),
8707            Self::SplatPattern(inner) => inner.span(),
8708            Self::String(inner) => inner.span(),
8709            Self::True(inner) => inner.span(),
8710            Self::TuplePattern(inner) => inner.span(),
8711            Self::UnionPattern(inner) => inner.span(),
8712        }
8713    }
8714}
8715#[derive(Debug, Clone)]
8716pub enum ListChildren<'tree> {
8717    Expression(::std::boxed::Box<Expression<'tree>>),
8718    ListSplat(::std::boxed::Box<ListSplat<'tree>>),
8719    ParenthesizedListSplat(::std::boxed::Box<ParenthesizedListSplat<'tree>>),
8720    Yield(::std::boxed::Box<Yield<'tree>>),
8721}
8722impl<'tree> ::treesitter_types::FromNode<'tree> for ListChildren<'tree> {
8723    #[allow(clippy::collapsible_else_if)]
8724    fn from_node(
8725        node: ::tree_sitter::Node<'tree>,
8726        src: &'tree [u8],
8727    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
8728        match node.kind() {
8729            "list_splat" => Ok(Self::ListSplat(::std::boxed::Box::new(
8730                <ListSplat as ::treesitter_types::FromNode>::from_node(node, src)?,
8731            ))),
8732            "parenthesized_list_splat" => Ok(Self::ParenthesizedListSplat(::std::boxed::Box::new(
8733                <ParenthesizedListSplat as ::treesitter_types::FromNode>::from_node(node, src)?,
8734            ))),
8735            "yield" => Ok(Self::Yield(::std::boxed::Box::new(
8736                <Yield as ::treesitter_types::FromNode>::from_node(node, src)?,
8737            ))),
8738            _other => {
8739                if let Ok(v) = <Expression as ::treesitter_types::FromNode>::from_node(node, src) {
8740                    Ok(Self::Expression(::std::boxed::Box::new(v)))
8741                } else {
8742                    Err(::treesitter_types::ParseError::unexpected_kind(
8743                        _other, node,
8744                    ))
8745                }
8746            }
8747        }
8748    }
8749}
8750impl ::treesitter_types::Spanned for ListChildren<'_> {
8751    fn span(&self) -> ::treesitter_types::Span {
8752        match self {
8753            Self::Expression(inner) => inner.span(),
8754            Self::ListSplat(inner) => inner.span(),
8755            Self::ParenthesizedListSplat(inner) => inner.span(),
8756            Self::Yield(inner) => inner.span(),
8757        }
8758    }
8759}
8760#[derive(Debug, Clone)]
8761pub enum ListComprehensionChildren<'tree> {
8762    ForInClause(::std::boxed::Box<ForInClause<'tree>>),
8763    IfClause(::std::boxed::Box<IfClause<'tree>>),
8764}
8765impl<'tree> ::treesitter_types::FromNode<'tree> for ListComprehensionChildren<'tree> {
8766    #[allow(clippy::collapsible_else_if)]
8767    fn from_node(
8768        node: ::tree_sitter::Node<'tree>,
8769        src: &'tree [u8],
8770    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
8771        match node.kind() {
8772            "for_in_clause" => Ok(Self::ForInClause(::std::boxed::Box::new(
8773                <ForInClause as ::treesitter_types::FromNode>::from_node(node, src)?,
8774            ))),
8775            "if_clause" => Ok(Self::IfClause(::std::boxed::Box::new(
8776                <IfClause as ::treesitter_types::FromNode>::from_node(node, src)?,
8777            ))),
8778            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
8779        }
8780    }
8781}
8782impl ::treesitter_types::Spanned for ListComprehensionChildren<'_> {
8783    fn span(&self) -> ::treesitter_types::Span {
8784        match self {
8785            Self::ForInClause(inner) => inner.span(),
8786            Self::IfClause(inner) => inner.span(),
8787        }
8788    }
8789}
8790#[derive(Debug, Clone)]
8791pub enum ListPatternChildren<'tree> {
8792    CasePattern(::std::boxed::Box<CasePattern<'tree>>),
8793    Pattern(::std::boxed::Box<Pattern<'tree>>),
8794}
8795impl<'tree> ::treesitter_types::FromNode<'tree> for ListPatternChildren<'tree> {
8796    #[allow(clippy::collapsible_else_if)]
8797    fn from_node(
8798        node: ::tree_sitter::Node<'tree>,
8799        src: &'tree [u8],
8800    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
8801        match node.kind() {
8802            "case_pattern" => Ok(Self::CasePattern(::std::boxed::Box::new(
8803                <CasePattern as ::treesitter_types::FromNode>::from_node(node, src)?,
8804            ))),
8805            _other => {
8806                if let Ok(v) = <Pattern as ::treesitter_types::FromNode>::from_node(node, src) {
8807                    Ok(Self::Pattern(::std::boxed::Box::new(v)))
8808                } else {
8809                    Err(::treesitter_types::ParseError::unexpected_kind(
8810                        _other, node,
8811                    ))
8812                }
8813            }
8814        }
8815    }
8816}
8817impl ::treesitter_types::Spanned for ListPatternChildren<'_> {
8818    fn span(&self) -> ::treesitter_types::Span {
8819        match self {
8820            Self::CasePattern(inner) => inner.span(),
8821            Self::Pattern(inner) => inner.span(),
8822        }
8823    }
8824}
8825#[derive(Debug, Clone)]
8826pub enum ListSplatChildren<'tree> {
8827    Attribute(::std::boxed::Box<Attribute<'tree>>),
8828    Expression(::std::boxed::Box<Expression<'tree>>),
8829    Identifier(::std::boxed::Box<Identifier<'tree>>),
8830    Subscript(::std::boxed::Box<Subscript<'tree>>),
8831}
8832impl<'tree> ::treesitter_types::FromNode<'tree> for ListSplatChildren<'tree> {
8833    #[allow(clippy::collapsible_else_if)]
8834    fn from_node(
8835        node: ::tree_sitter::Node<'tree>,
8836        src: &'tree [u8],
8837    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
8838        match node.kind() {
8839            "attribute" => Ok(Self::Attribute(::std::boxed::Box::new(
8840                <Attribute as ::treesitter_types::FromNode>::from_node(node, src)?,
8841            ))),
8842            "identifier" => Ok(Self::Identifier(::std::boxed::Box::new(
8843                <Identifier as ::treesitter_types::FromNode>::from_node(node, src)?,
8844            ))),
8845            "subscript" => Ok(Self::Subscript(::std::boxed::Box::new(
8846                <Subscript as ::treesitter_types::FromNode>::from_node(node, src)?,
8847            ))),
8848            _other => {
8849                if let Ok(v) = <Expression as ::treesitter_types::FromNode>::from_node(node, src) {
8850                    Ok(Self::Expression(::std::boxed::Box::new(v)))
8851                } else {
8852                    Err(::treesitter_types::ParseError::unexpected_kind(
8853                        _other, node,
8854                    ))
8855                }
8856            }
8857        }
8858    }
8859}
8860impl ::treesitter_types::Spanned for ListSplatChildren<'_> {
8861    fn span(&self) -> ::treesitter_types::Span {
8862        match self {
8863            Self::Attribute(inner) => inner.span(),
8864            Self::Expression(inner) => inner.span(),
8865            Self::Identifier(inner) => inner.span(),
8866            Self::Subscript(inner) => inner.span(),
8867        }
8868    }
8869}
8870#[derive(Debug, Clone)]
8871pub enum ListSplatPatternChildren<'tree> {
8872    Attribute(::std::boxed::Box<Attribute<'tree>>),
8873    Identifier(::std::boxed::Box<Identifier<'tree>>),
8874    Subscript(::std::boxed::Box<Subscript<'tree>>),
8875}
8876impl<'tree> ::treesitter_types::FromNode<'tree> for ListSplatPatternChildren<'tree> {
8877    #[allow(clippy::collapsible_else_if)]
8878    fn from_node(
8879        node: ::tree_sitter::Node<'tree>,
8880        src: &'tree [u8],
8881    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
8882        match node.kind() {
8883            "attribute" => Ok(Self::Attribute(::std::boxed::Box::new(
8884                <Attribute as ::treesitter_types::FromNode>::from_node(node, src)?,
8885            ))),
8886            "identifier" => Ok(Self::Identifier(::std::boxed::Box::new(
8887                <Identifier as ::treesitter_types::FromNode>::from_node(node, src)?,
8888            ))),
8889            "subscript" => Ok(Self::Subscript(::std::boxed::Box::new(
8890                <Subscript as ::treesitter_types::FromNode>::from_node(node, src)?,
8891            ))),
8892            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
8893        }
8894    }
8895}
8896impl ::treesitter_types::Spanned for ListSplatPatternChildren<'_> {
8897    fn span(&self) -> ::treesitter_types::Span {
8898        match self {
8899            Self::Attribute(inner) => inner.span(),
8900            Self::Identifier(inner) => inner.span(),
8901            Self::Subscript(inner) => inner.span(),
8902        }
8903    }
8904}
8905#[derive(Debug, Clone)]
8906pub enum MemberTypeChildren<'tree> {
8907    Identifier(::std::boxed::Box<Identifier<'tree>>),
8908    Type(::std::boxed::Box<Type<'tree>>),
8909}
8910impl<'tree> ::treesitter_types::FromNode<'tree> for MemberTypeChildren<'tree> {
8911    #[allow(clippy::collapsible_else_if)]
8912    fn from_node(
8913        node: ::tree_sitter::Node<'tree>,
8914        src: &'tree [u8],
8915    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
8916        match node.kind() {
8917            "identifier" => Ok(Self::Identifier(::std::boxed::Box::new(
8918                <Identifier as ::treesitter_types::FromNode>::from_node(node, src)?,
8919            ))),
8920            "type" => Ok(Self::Type(::std::boxed::Box::new(
8921                <Type as ::treesitter_types::FromNode>::from_node(node, src)?,
8922            ))),
8923            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
8924        }
8925    }
8926}
8927impl ::treesitter_types::Spanned for MemberTypeChildren<'_> {
8928    fn span(&self) -> ::treesitter_types::Span {
8929        match self {
8930            Self::Identifier(inner) => inner.span(),
8931            Self::Type(inner) => inner.span(),
8932        }
8933    }
8934}
8935#[derive(Debug, Clone)]
8936pub enum ModuleChildren<'tree> {
8937    CompoundStatement(::std::boxed::Box<CompoundStatement<'tree>>),
8938    SimpleStatement(::std::boxed::Box<SimpleStatement<'tree>>),
8939}
8940impl<'tree> ::treesitter_types::FromNode<'tree> for ModuleChildren<'tree> {
8941    #[allow(clippy::collapsible_else_if)]
8942    fn from_node(
8943        node: ::tree_sitter::Node<'tree>,
8944        src: &'tree [u8],
8945    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
8946        if let Ok(v) = <CompoundStatement as ::treesitter_types::FromNode>::from_node(node, src) {
8947            Ok(Self::CompoundStatement(::std::boxed::Box::new(v)))
8948        } else {
8949            if let Ok(v) = <SimpleStatement as ::treesitter_types::FromNode>::from_node(node, src) {
8950                Ok(Self::SimpleStatement(::std::boxed::Box::new(v)))
8951            } else {
8952                Err(::treesitter_types::ParseError::unexpected_kind(
8953                    node.kind(),
8954                    node,
8955                ))
8956            }
8957        }
8958    }
8959}
8960impl ::treesitter_types::Spanned for ModuleChildren<'_> {
8961    fn span(&self) -> ::treesitter_types::Span {
8962        match self {
8963            Self::CompoundStatement(inner) => inner.span(),
8964            Self::SimpleStatement(inner) => inner.span(),
8965        }
8966    }
8967}
8968#[derive(Debug, Clone)]
8969pub enum ParenthesizedExpressionChildren<'tree> {
8970    Expression(::std::boxed::Box<Expression<'tree>>),
8971    ListSplat(::std::boxed::Box<ListSplat<'tree>>),
8972    ParenthesizedExpression(::std::boxed::Box<ParenthesizedExpression<'tree>>),
8973    Yield(::std::boxed::Box<Yield<'tree>>),
8974}
8975impl<'tree> ::treesitter_types::FromNode<'tree> for ParenthesizedExpressionChildren<'tree> {
8976    #[allow(clippy::collapsible_else_if)]
8977    fn from_node(
8978        node: ::tree_sitter::Node<'tree>,
8979        src: &'tree [u8],
8980    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
8981        match node.kind() {
8982            "list_splat" => Ok(Self::ListSplat(::std::boxed::Box::new(
8983                <ListSplat as ::treesitter_types::FromNode>::from_node(node, src)?,
8984            ))),
8985            "parenthesized_expression" => {
8986                Ok(Self::ParenthesizedExpression(::std::boxed::Box::new(
8987                    <ParenthesizedExpression as ::treesitter_types::FromNode>::from_node(
8988                        node, src,
8989                    )?,
8990                )))
8991            }
8992            "yield" => Ok(Self::Yield(::std::boxed::Box::new(
8993                <Yield as ::treesitter_types::FromNode>::from_node(node, src)?,
8994            ))),
8995            _other => {
8996                if let Ok(v) = <Expression as ::treesitter_types::FromNode>::from_node(node, src) {
8997                    Ok(Self::Expression(::std::boxed::Box::new(v)))
8998                } else {
8999                    Err(::treesitter_types::ParseError::unexpected_kind(
9000                        _other, node,
9001                    ))
9002                }
9003            }
9004        }
9005    }
9006}
9007impl ::treesitter_types::Spanned for ParenthesizedExpressionChildren<'_> {
9008    fn span(&self) -> ::treesitter_types::Span {
9009        match self {
9010            Self::Expression(inner) => inner.span(),
9011            Self::ListSplat(inner) => inner.span(),
9012            Self::ParenthesizedExpression(inner) => inner.span(),
9013            Self::Yield(inner) => inner.span(),
9014        }
9015    }
9016}
9017#[derive(Debug, Clone)]
9018pub enum ParenthesizedListSplatChildren<'tree> {
9019    ListSplat(::std::boxed::Box<ListSplat<'tree>>),
9020    ParenthesizedExpression(::std::boxed::Box<ParenthesizedExpression<'tree>>),
9021}
9022impl<'tree> ::treesitter_types::FromNode<'tree> for ParenthesizedListSplatChildren<'tree> {
9023    #[allow(clippy::collapsible_else_if)]
9024    fn from_node(
9025        node: ::tree_sitter::Node<'tree>,
9026        src: &'tree [u8],
9027    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
9028        match node.kind() {
9029            "list_splat" => Ok(Self::ListSplat(::std::boxed::Box::new(
9030                <ListSplat as ::treesitter_types::FromNode>::from_node(node, src)?,
9031            ))),
9032            "parenthesized_expression" => {
9033                Ok(Self::ParenthesizedExpression(::std::boxed::Box::new(
9034                    <ParenthesizedExpression as ::treesitter_types::FromNode>::from_node(
9035                        node, src,
9036                    )?,
9037                )))
9038            }
9039            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
9040        }
9041    }
9042}
9043impl ::treesitter_types::Spanned for ParenthesizedListSplatChildren<'_> {
9044    fn span(&self) -> ::treesitter_types::Span {
9045        match self {
9046            Self::ListSplat(inner) => inner.span(),
9047            Self::ParenthesizedExpression(inner) => inner.span(),
9048        }
9049    }
9050}
9051#[derive(Debug, Clone)]
9052pub enum RaiseStatementChildren<'tree> {
9053    Expression(::std::boxed::Box<Expression<'tree>>),
9054    ExpressionList(::std::boxed::Box<ExpressionList<'tree>>),
9055}
9056impl<'tree> ::treesitter_types::FromNode<'tree> for RaiseStatementChildren<'tree> {
9057    #[allow(clippy::collapsible_else_if)]
9058    fn from_node(
9059        node: ::tree_sitter::Node<'tree>,
9060        src: &'tree [u8],
9061    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
9062        match node.kind() {
9063            "expression_list" => Ok(Self::ExpressionList(::std::boxed::Box::new(
9064                <ExpressionList as ::treesitter_types::FromNode>::from_node(node, src)?,
9065            ))),
9066            _other => {
9067                if let Ok(v) = <Expression as ::treesitter_types::FromNode>::from_node(node, src) {
9068                    Ok(Self::Expression(::std::boxed::Box::new(v)))
9069                } else {
9070                    Err(::treesitter_types::ParseError::unexpected_kind(
9071                        _other, node,
9072                    ))
9073                }
9074            }
9075        }
9076    }
9077}
9078impl ::treesitter_types::Spanned for RaiseStatementChildren<'_> {
9079    fn span(&self) -> ::treesitter_types::Span {
9080        match self {
9081            Self::Expression(inner) => inner.span(),
9082            Self::ExpressionList(inner) => inner.span(),
9083        }
9084    }
9085}
9086#[derive(Debug, Clone)]
9087pub enum RelativeImportChildren<'tree> {
9088    DottedName(::std::boxed::Box<DottedName<'tree>>),
9089    ImportPrefix(::std::boxed::Box<ImportPrefix<'tree>>),
9090}
9091impl<'tree> ::treesitter_types::FromNode<'tree> for RelativeImportChildren<'tree> {
9092    #[allow(clippy::collapsible_else_if)]
9093    fn from_node(
9094        node: ::tree_sitter::Node<'tree>,
9095        src: &'tree [u8],
9096    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
9097        match node.kind() {
9098            "dotted_name" => Ok(Self::DottedName(::std::boxed::Box::new(
9099                <DottedName as ::treesitter_types::FromNode>::from_node(node, src)?,
9100            ))),
9101            "import_prefix" => Ok(Self::ImportPrefix(::std::boxed::Box::new(
9102                <ImportPrefix as ::treesitter_types::FromNode>::from_node(node, src)?,
9103            ))),
9104            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
9105        }
9106    }
9107}
9108impl ::treesitter_types::Spanned for RelativeImportChildren<'_> {
9109    fn span(&self) -> ::treesitter_types::Span {
9110        match self {
9111            Self::DottedName(inner) => inner.span(),
9112            Self::ImportPrefix(inner) => inner.span(),
9113        }
9114    }
9115}
9116#[derive(Debug, Clone)]
9117pub enum ReturnStatementChildren<'tree> {
9118    Expression(::std::boxed::Box<Expression<'tree>>),
9119    ExpressionList(::std::boxed::Box<ExpressionList<'tree>>),
9120}
9121impl<'tree> ::treesitter_types::FromNode<'tree> for ReturnStatementChildren<'tree> {
9122    #[allow(clippy::collapsible_else_if)]
9123    fn from_node(
9124        node: ::tree_sitter::Node<'tree>,
9125        src: &'tree [u8],
9126    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
9127        match node.kind() {
9128            "expression_list" => Ok(Self::ExpressionList(::std::boxed::Box::new(
9129                <ExpressionList as ::treesitter_types::FromNode>::from_node(node, src)?,
9130            ))),
9131            _other => {
9132                if let Ok(v) = <Expression as ::treesitter_types::FromNode>::from_node(node, src) {
9133                    Ok(Self::Expression(::std::boxed::Box::new(v)))
9134                } else {
9135                    Err(::treesitter_types::ParseError::unexpected_kind(
9136                        _other, node,
9137                    ))
9138                }
9139            }
9140        }
9141    }
9142}
9143impl ::treesitter_types::Spanned for ReturnStatementChildren<'_> {
9144    fn span(&self) -> ::treesitter_types::Span {
9145        match self {
9146            Self::Expression(inner) => inner.span(),
9147            Self::ExpressionList(inner) => inner.span(),
9148        }
9149    }
9150}
9151#[derive(Debug, Clone)]
9152pub enum SetChildren<'tree> {
9153    Expression(::std::boxed::Box<Expression<'tree>>),
9154    ListSplat(::std::boxed::Box<ListSplat<'tree>>),
9155    ParenthesizedListSplat(::std::boxed::Box<ParenthesizedListSplat<'tree>>),
9156    Yield(::std::boxed::Box<Yield<'tree>>),
9157}
9158impl<'tree> ::treesitter_types::FromNode<'tree> for SetChildren<'tree> {
9159    #[allow(clippy::collapsible_else_if)]
9160    fn from_node(
9161        node: ::tree_sitter::Node<'tree>,
9162        src: &'tree [u8],
9163    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
9164        match node.kind() {
9165            "list_splat" => Ok(Self::ListSplat(::std::boxed::Box::new(
9166                <ListSplat as ::treesitter_types::FromNode>::from_node(node, src)?,
9167            ))),
9168            "parenthesized_list_splat" => Ok(Self::ParenthesizedListSplat(::std::boxed::Box::new(
9169                <ParenthesizedListSplat as ::treesitter_types::FromNode>::from_node(node, src)?,
9170            ))),
9171            "yield" => Ok(Self::Yield(::std::boxed::Box::new(
9172                <Yield as ::treesitter_types::FromNode>::from_node(node, src)?,
9173            ))),
9174            _other => {
9175                if let Ok(v) = <Expression as ::treesitter_types::FromNode>::from_node(node, src) {
9176                    Ok(Self::Expression(::std::boxed::Box::new(v)))
9177                } else {
9178                    Err(::treesitter_types::ParseError::unexpected_kind(
9179                        _other, node,
9180                    ))
9181                }
9182            }
9183        }
9184    }
9185}
9186impl ::treesitter_types::Spanned for SetChildren<'_> {
9187    fn span(&self) -> ::treesitter_types::Span {
9188        match self {
9189            Self::Expression(inner) => inner.span(),
9190            Self::ListSplat(inner) => inner.span(),
9191            Self::ParenthesizedListSplat(inner) => inner.span(),
9192            Self::Yield(inner) => inner.span(),
9193        }
9194    }
9195}
9196#[derive(Debug, Clone)]
9197pub enum SetComprehensionChildren<'tree> {
9198    ForInClause(::std::boxed::Box<ForInClause<'tree>>),
9199    IfClause(::std::boxed::Box<IfClause<'tree>>),
9200}
9201impl<'tree> ::treesitter_types::FromNode<'tree> for SetComprehensionChildren<'tree> {
9202    #[allow(clippy::collapsible_else_if)]
9203    fn from_node(
9204        node: ::tree_sitter::Node<'tree>,
9205        src: &'tree [u8],
9206    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
9207        match node.kind() {
9208            "for_in_clause" => Ok(Self::ForInClause(::std::boxed::Box::new(
9209                <ForInClause as ::treesitter_types::FromNode>::from_node(node, src)?,
9210            ))),
9211            "if_clause" => Ok(Self::IfClause(::std::boxed::Box::new(
9212                <IfClause as ::treesitter_types::FromNode>::from_node(node, src)?,
9213            ))),
9214            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
9215        }
9216    }
9217}
9218impl ::treesitter_types::Spanned for SetComprehensionChildren<'_> {
9219    fn span(&self) -> ::treesitter_types::Span {
9220        match self {
9221            Self::ForInClause(inner) => inner.span(),
9222            Self::IfClause(inner) => inner.span(),
9223        }
9224    }
9225}
9226#[derive(Debug, Clone)]
9227pub enum StringChildren<'tree> {
9228    Interpolation(::std::boxed::Box<Interpolation<'tree>>),
9229    StringContent(::std::boxed::Box<StringContent<'tree>>),
9230    StringEnd(::std::boxed::Box<StringEnd<'tree>>),
9231    StringStart(::std::boxed::Box<StringStart<'tree>>),
9232}
9233impl<'tree> ::treesitter_types::FromNode<'tree> for StringChildren<'tree> {
9234    #[allow(clippy::collapsible_else_if)]
9235    fn from_node(
9236        node: ::tree_sitter::Node<'tree>,
9237        src: &'tree [u8],
9238    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
9239        match node.kind() {
9240            "interpolation" => Ok(Self::Interpolation(::std::boxed::Box::new(
9241                <Interpolation as ::treesitter_types::FromNode>::from_node(node, src)?,
9242            ))),
9243            "string_content" => Ok(Self::StringContent(::std::boxed::Box::new(
9244                <StringContent as ::treesitter_types::FromNode>::from_node(node, src)?,
9245            ))),
9246            "string_end" => Ok(Self::StringEnd(::std::boxed::Box::new(
9247                <StringEnd as ::treesitter_types::FromNode>::from_node(node, src)?,
9248            ))),
9249            "string_start" => Ok(Self::StringStart(::std::boxed::Box::new(
9250                <StringStart as ::treesitter_types::FromNode>::from_node(node, src)?,
9251            ))),
9252            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
9253        }
9254    }
9255}
9256impl ::treesitter_types::Spanned for StringChildren<'_> {
9257    fn span(&self) -> ::treesitter_types::Span {
9258        match self {
9259            Self::Interpolation(inner) => inner.span(),
9260            Self::StringContent(inner) => inner.span(),
9261            Self::StringEnd(inner) => inner.span(),
9262            Self::StringStart(inner) => inner.span(),
9263        }
9264    }
9265}
9266#[derive(Debug, Clone)]
9267pub enum StringContentChildren<'tree> {
9268    EscapeInterpolation(::std::boxed::Box<EscapeInterpolation<'tree>>),
9269    EscapeSequence(::std::boxed::Box<EscapeSequence<'tree>>),
9270}
9271impl<'tree> ::treesitter_types::FromNode<'tree> for StringContentChildren<'tree> {
9272    #[allow(clippy::collapsible_else_if)]
9273    fn from_node(
9274        node: ::tree_sitter::Node<'tree>,
9275        src: &'tree [u8],
9276    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
9277        match node.kind() {
9278            "escape_interpolation" => Ok(Self::EscapeInterpolation(::std::boxed::Box::new(
9279                <EscapeInterpolation as ::treesitter_types::FromNode>::from_node(node, src)?,
9280            ))),
9281            "escape_sequence" => Ok(Self::EscapeSequence(::std::boxed::Box::new(
9282                <EscapeSequence as ::treesitter_types::FromNode>::from_node(node, src)?,
9283            ))),
9284            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
9285        }
9286    }
9287}
9288impl ::treesitter_types::Spanned for StringContentChildren<'_> {
9289    fn span(&self) -> ::treesitter_types::Span {
9290        match self {
9291            Self::EscapeInterpolation(inner) => inner.span(),
9292            Self::EscapeSequence(inner) => inner.span(),
9293        }
9294    }
9295}
9296#[derive(Debug, Clone)]
9297pub enum SubscriptSubscript<'tree> {
9298    Expression(::std::boxed::Box<Expression<'tree>>),
9299    Slice(::std::boxed::Box<Slice<'tree>>),
9300}
9301impl<'tree> ::treesitter_types::FromNode<'tree> for SubscriptSubscript<'tree> {
9302    #[allow(clippy::collapsible_else_if)]
9303    fn from_node(
9304        node: ::tree_sitter::Node<'tree>,
9305        src: &'tree [u8],
9306    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
9307        match node.kind() {
9308            "slice" => Ok(Self::Slice(::std::boxed::Box::new(
9309                <Slice as ::treesitter_types::FromNode>::from_node(node, src)?,
9310            ))),
9311            _other => {
9312                if let Ok(v) = <Expression as ::treesitter_types::FromNode>::from_node(node, src) {
9313                    Ok(Self::Expression(::std::boxed::Box::new(v)))
9314                } else {
9315                    Err(::treesitter_types::ParseError::unexpected_kind(
9316                        _other, node,
9317                    ))
9318                }
9319            }
9320        }
9321    }
9322}
9323impl ::treesitter_types::Spanned for SubscriptSubscript<'_> {
9324    fn span(&self) -> ::treesitter_types::Span {
9325        match self {
9326            Self::Expression(inner) => inner.span(),
9327            Self::Slice(inner) => inner.span(),
9328        }
9329    }
9330}
9331#[derive(Debug, Clone)]
9332pub enum TryStatementChildren<'tree> {
9333    ElseClause(::std::boxed::Box<ElseClause<'tree>>),
9334    ExceptClause(::std::boxed::Box<ExceptClause<'tree>>),
9335    FinallyClause(::std::boxed::Box<FinallyClause<'tree>>),
9336}
9337impl<'tree> ::treesitter_types::FromNode<'tree> for TryStatementChildren<'tree> {
9338    #[allow(clippy::collapsible_else_if)]
9339    fn from_node(
9340        node: ::tree_sitter::Node<'tree>,
9341        src: &'tree [u8],
9342    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
9343        match node.kind() {
9344            "else_clause" => Ok(Self::ElseClause(::std::boxed::Box::new(
9345                <ElseClause as ::treesitter_types::FromNode>::from_node(node, src)?,
9346            ))),
9347            "except_clause" => Ok(Self::ExceptClause(::std::boxed::Box::new(
9348                <ExceptClause as ::treesitter_types::FromNode>::from_node(node, src)?,
9349            ))),
9350            "finally_clause" => Ok(Self::FinallyClause(::std::boxed::Box::new(
9351                <FinallyClause as ::treesitter_types::FromNode>::from_node(node, src)?,
9352            ))),
9353            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
9354        }
9355    }
9356}
9357impl ::treesitter_types::Spanned for TryStatementChildren<'_> {
9358    fn span(&self) -> ::treesitter_types::Span {
9359        match self {
9360            Self::ElseClause(inner) => inner.span(),
9361            Self::ExceptClause(inner) => inner.span(),
9362            Self::FinallyClause(inner) => inner.span(),
9363        }
9364    }
9365}
9366#[derive(Debug, Clone)]
9367pub enum TupleChildren<'tree> {
9368    Expression(::std::boxed::Box<Expression<'tree>>),
9369    ListSplat(::std::boxed::Box<ListSplat<'tree>>),
9370    ParenthesizedListSplat(::std::boxed::Box<ParenthesizedListSplat<'tree>>),
9371    Yield(::std::boxed::Box<Yield<'tree>>),
9372}
9373impl<'tree> ::treesitter_types::FromNode<'tree> for TupleChildren<'tree> {
9374    #[allow(clippy::collapsible_else_if)]
9375    fn from_node(
9376        node: ::tree_sitter::Node<'tree>,
9377        src: &'tree [u8],
9378    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
9379        match node.kind() {
9380            "list_splat" => Ok(Self::ListSplat(::std::boxed::Box::new(
9381                <ListSplat as ::treesitter_types::FromNode>::from_node(node, src)?,
9382            ))),
9383            "parenthesized_list_splat" => Ok(Self::ParenthesizedListSplat(::std::boxed::Box::new(
9384                <ParenthesizedListSplat as ::treesitter_types::FromNode>::from_node(node, src)?,
9385            ))),
9386            "yield" => Ok(Self::Yield(::std::boxed::Box::new(
9387                <Yield as ::treesitter_types::FromNode>::from_node(node, src)?,
9388            ))),
9389            _other => {
9390                if let Ok(v) = <Expression as ::treesitter_types::FromNode>::from_node(node, src) {
9391                    Ok(Self::Expression(::std::boxed::Box::new(v)))
9392                } else {
9393                    Err(::treesitter_types::ParseError::unexpected_kind(
9394                        _other, node,
9395                    ))
9396                }
9397            }
9398        }
9399    }
9400}
9401impl ::treesitter_types::Spanned for TupleChildren<'_> {
9402    fn span(&self) -> ::treesitter_types::Span {
9403        match self {
9404            Self::Expression(inner) => inner.span(),
9405            Self::ListSplat(inner) => inner.span(),
9406            Self::ParenthesizedListSplat(inner) => inner.span(),
9407            Self::Yield(inner) => inner.span(),
9408        }
9409    }
9410}
9411#[derive(Debug, Clone)]
9412pub enum TuplePatternChildren<'tree> {
9413    CasePattern(::std::boxed::Box<CasePattern<'tree>>),
9414    Pattern(::std::boxed::Box<Pattern<'tree>>),
9415}
9416impl<'tree> ::treesitter_types::FromNode<'tree> for TuplePatternChildren<'tree> {
9417    #[allow(clippy::collapsible_else_if)]
9418    fn from_node(
9419        node: ::tree_sitter::Node<'tree>,
9420        src: &'tree [u8],
9421    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
9422        match node.kind() {
9423            "case_pattern" => Ok(Self::CasePattern(::std::boxed::Box::new(
9424                <CasePattern as ::treesitter_types::FromNode>::from_node(node, src)?,
9425            ))),
9426            _other => {
9427                if let Ok(v) = <Pattern as ::treesitter_types::FromNode>::from_node(node, src) {
9428                    Ok(Self::Pattern(::std::boxed::Box::new(v)))
9429                } else {
9430                    Err(::treesitter_types::ParseError::unexpected_kind(
9431                        _other, node,
9432                    ))
9433                }
9434            }
9435        }
9436    }
9437}
9438impl ::treesitter_types::Spanned for TuplePatternChildren<'_> {
9439    fn span(&self) -> ::treesitter_types::Span {
9440        match self {
9441            Self::CasePattern(inner) => inner.span(),
9442            Self::Pattern(inner) => inner.span(),
9443        }
9444    }
9445}
9446#[derive(Debug, Clone)]
9447pub enum TypeChildren<'tree> {
9448    ConstrainedType(::std::boxed::Box<ConstrainedType<'tree>>),
9449    Expression(::std::boxed::Box<Expression<'tree>>),
9450    GenericType(::std::boxed::Box<GenericType<'tree>>),
9451    MemberType(::std::boxed::Box<MemberType<'tree>>),
9452    SplatType(::std::boxed::Box<SplatType<'tree>>),
9453    UnionType(::std::boxed::Box<UnionType<'tree>>),
9454}
9455impl<'tree> ::treesitter_types::FromNode<'tree> for TypeChildren<'tree> {
9456    #[allow(clippy::collapsible_else_if)]
9457    fn from_node(
9458        node: ::tree_sitter::Node<'tree>,
9459        src: &'tree [u8],
9460    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
9461        match node.kind() {
9462            "constrained_type" => Ok(Self::ConstrainedType(::std::boxed::Box::new(
9463                <ConstrainedType as ::treesitter_types::FromNode>::from_node(node, src)?,
9464            ))),
9465            "generic_type" => Ok(Self::GenericType(::std::boxed::Box::new(
9466                <GenericType as ::treesitter_types::FromNode>::from_node(node, src)?,
9467            ))),
9468            "member_type" => Ok(Self::MemberType(::std::boxed::Box::new(
9469                <MemberType as ::treesitter_types::FromNode>::from_node(node, src)?,
9470            ))),
9471            "splat_type" => Ok(Self::SplatType(::std::boxed::Box::new(
9472                <SplatType as ::treesitter_types::FromNode>::from_node(node, src)?,
9473            ))),
9474            "union_type" => Ok(Self::UnionType(::std::boxed::Box::new(
9475                <UnionType as ::treesitter_types::FromNode>::from_node(node, src)?,
9476            ))),
9477            _other => {
9478                if let Ok(v) = <Expression as ::treesitter_types::FromNode>::from_node(node, src) {
9479                    Ok(Self::Expression(::std::boxed::Box::new(v)))
9480                } else {
9481                    Err(::treesitter_types::ParseError::unexpected_kind(
9482                        _other, node,
9483                    ))
9484                }
9485            }
9486        }
9487    }
9488}
9489impl ::treesitter_types::Spanned for TypeChildren<'_> {
9490    fn span(&self) -> ::treesitter_types::Span {
9491        match self {
9492            Self::ConstrainedType(inner) => inner.span(),
9493            Self::Expression(inner) => inner.span(),
9494            Self::GenericType(inner) => inner.span(),
9495            Self::MemberType(inner) => inner.span(),
9496            Self::SplatType(inner) => inner.span(),
9497            Self::UnionType(inner) => inner.span(),
9498        }
9499    }
9500}
9501#[derive(Debug, Clone)]
9502pub enum TypedParameterChildren<'tree> {
9503    DictionarySplatPattern(::std::boxed::Box<DictionarySplatPattern<'tree>>),
9504    Identifier(::std::boxed::Box<Identifier<'tree>>),
9505    ListSplatPattern(::std::boxed::Box<ListSplatPattern<'tree>>),
9506}
9507impl<'tree> ::treesitter_types::FromNode<'tree> for TypedParameterChildren<'tree> {
9508    #[allow(clippy::collapsible_else_if)]
9509    fn from_node(
9510        node: ::tree_sitter::Node<'tree>,
9511        src: &'tree [u8],
9512    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
9513        match node.kind() {
9514            "dictionary_splat_pattern" => Ok(Self::DictionarySplatPattern(::std::boxed::Box::new(
9515                <DictionarySplatPattern as ::treesitter_types::FromNode>::from_node(node, src)?,
9516            ))),
9517            "identifier" => Ok(Self::Identifier(::std::boxed::Box::new(
9518                <Identifier as ::treesitter_types::FromNode>::from_node(node, src)?,
9519            ))),
9520            "list_splat_pattern" => Ok(Self::ListSplatPattern(::std::boxed::Box::new(
9521                <ListSplatPattern as ::treesitter_types::FromNode>::from_node(node, src)?,
9522            ))),
9523            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
9524        }
9525    }
9526}
9527impl ::treesitter_types::Spanned for TypedParameterChildren<'_> {
9528    fn span(&self) -> ::treesitter_types::Span {
9529        match self {
9530            Self::DictionarySplatPattern(inner) => inner.span(),
9531            Self::Identifier(inner) => inner.span(),
9532            Self::ListSplatPattern(inner) => inner.span(),
9533        }
9534    }
9535}
9536#[derive(Debug, Clone)]
9537pub enum UnaryOperatorOperator {
9538    Plus(::treesitter_types::Span),
9539    Minus(::treesitter_types::Span),
9540    Tilde(::treesitter_types::Span),
9541}
9542impl<'tree> ::treesitter_types::FromNode<'tree> for UnaryOperatorOperator {
9543    #[allow(clippy::collapsible_else_if)]
9544    fn from_node(
9545        node: ::tree_sitter::Node<'tree>,
9546        _src: &'tree [u8],
9547    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
9548        match node.kind() {
9549            "+" => Ok(Self::Plus(::treesitter_types::Span::from(node))),
9550            "-" => Ok(Self::Minus(::treesitter_types::Span::from(node))),
9551            "~" => Ok(Self::Tilde(::treesitter_types::Span::from(node))),
9552            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
9553        }
9554    }
9555}
9556impl ::treesitter_types::Spanned for UnaryOperatorOperator {
9557    fn span(&self) -> ::treesitter_types::Span {
9558        match self {
9559            Self::Plus(span) => *span,
9560            Self::Minus(span) => *span,
9561            Self::Tilde(span) => *span,
9562        }
9563    }
9564}
9565#[derive(Debug, Clone)]
9566pub enum UnionPatternChildren<'tree> {
9567    ClassPattern(::std::boxed::Box<ClassPattern<'tree>>),
9568    ComplexPattern(::std::boxed::Box<ComplexPattern<'tree>>),
9569    ConcatenatedString(::std::boxed::Box<ConcatenatedString<'tree>>),
9570    DictPattern(::std::boxed::Box<DictPattern<'tree>>),
9571    DottedName(::std::boxed::Box<DottedName<'tree>>),
9572    False(::std::boxed::Box<False<'tree>>),
9573    Float(::std::boxed::Box<Float<'tree>>),
9574    Integer(::std::boxed::Box<Integer<'tree>>),
9575    ListPattern(::std::boxed::Box<ListPattern<'tree>>),
9576    None(::std::boxed::Box<None<'tree>>),
9577    SplatPattern(::std::boxed::Box<SplatPattern<'tree>>),
9578    String(::std::boxed::Box<String<'tree>>),
9579    True(::std::boxed::Box<True<'tree>>),
9580    TuplePattern(::std::boxed::Box<TuplePattern<'tree>>),
9581    UnionPattern(::std::boxed::Box<UnionPattern<'tree>>),
9582}
9583impl<'tree> ::treesitter_types::FromNode<'tree> for UnionPatternChildren<'tree> {
9584    #[allow(clippy::collapsible_else_if)]
9585    fn from_node(
9586        node: ::tree_sitter::Node<'tree>,
9587        src: &'tree [u8],
9588    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
9589        match node.kind() {
9590            "class_pattern" => Ok(Self::ClassPattern(::std::boxed::Box::new(
9591                <ClassPattern as ::treesitter_types::FromNode>::from_node(node, src)?,
9592            ))),
9593            "complex_pattern" => Ok(Self::ComplexPattern(::std::boxed::Box::new(
9594                <ComplexPattern as ::treesitter_types::FromNode>::from_node(node, src)?,
9595            ))),
9596            "concatenated_string" => Ok(Self::ConcatenatedString(::std::boxed::Box::new(
9597                <ConcatenatedString as ::treesitter_types::FromNode>::from_node(node, src)?,
9598            ))),
9599            "dict_pattern" => Ok(Self::DictPattern(::std::boxed::Box::new(
9600                <DictPattern as ::treesitter_types::FromNode>::from_node(node, src)?,
9601            ))),
9602            "dotted_name" => Ok(Self::DottedName(::std::boxed::Box::new(
9603                <DottedName as ::treesitter_types::FromNode>::from_node(node, src)?,
9604            ))),
9605            "false" => Ok(Self::False(::std::boxed::Box::new(
9606                <False as ::treesitter_types::FromNode>::from_node(node, src)?,
9607            ))),
9608            "float" => Ok(Self::Float(::std::boxed::Box::new(
9609                <Float as ::treesitter_types::FromNode>::from_node(node, src)?,
9610            ))),
9611            "integer" => Ok(Self::Integer(::std::boxed::Box::new(
9612                <Integer as ::treesitter_types::FromNode>::from_node(node, src)?,
9613            ))),
9614            "list_pattern" => Ok(Self::ListPattern(::std::boxed::Box::new(
9615                <ListPattern as ::treesitter_types::FromNode>::from_node(node, src)?,
9616            ))),
9617            "none" => Ok(Self::None(::std::boxed::Box::new(
9618                <None as ::treesitter_types::FromNode>::from_node(node, src)?,
9619            ))),
9620            "splat_pattern" => Ok(Self::SplatPattern(::std::boxed::Box::new(
9621                <SplatPattern as ::treesitter_types::FromNode>::from_node(node, src)?,
9622            ))),
9623            "string" => Ok(Self::String(::std::boxed::Box::new(
9624                <String as ::treesitter_types::FromNode>::from_node(node, src)?,
9625            ))),
9626            "true" => Ok(Self::True(::std::boxed::Box::new(
9627                <True as ::treesitter_types::FromNode>::from_node(node, src)?,
9628            ))),
9629            "tuple_pattern" => Ok(Self::TuplePattern(::std::boxed::Box::new(
9630                <TuplePattern as ::treesitter_types::FromNode>::from_node(node, src)?,
9631            ))),
9632            "union_pattern" => Ok(Self::UnionPattern(::std::boxed::Box::new(
9633                <UnionPattern as ::treesitter_types::FromNode>::from_node(node, src)?,
9634            ))),
9635            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
9636        }
9637    }
9638}
9639impl ::treesitter_types::Spanned for UnionPatternChildren<'_> {
9640    fn span(&self) -> ::treesitter_types::Span {
9641        match self {
9642            Self::ClassPattern(inner) => inner.span(),
9643            Self::ComplexPattern(inner) => inner.span(),
9644            Self::ConcatenatedString(inner) => inner.span(),
9645            Self::DictPattern(inner) => inner.span(),
9646            Self::DottedName(inner) => inner.span(),
9647            Self::False(inner) => inner.span(),
9648            Self::Float(inner) => inner.span(),
9649            Self::Integer(inner) => inner.span(),
9650            Self::ListPattern(inner) => inner.span(),
9651            Self::None(inner) => inner.span(),
9652            Self::SplatPattern(inner) => inner.span(),
9653            Self::String(inner) => inner.span(),
9654            Self::True(inner) => inner.span(),
9655            Self::TuplePattern(inner) => inner.span(),
9656            Self::UnionPattern(inner) => inner.span(),
9657        }
9658    }
9659}
9660#[derive(Debug, Clone)]
9661pub enum YieldChildren<'tree> {
9662    Expression(::std::boxed::Box<Expression<'tree>>),
9663    ExpressionList(::std::boxed::Box<ExpressionList<'tree>>),
9664}
9665impl<'tree> ::treesitter_types::FromNode<'tree> for YieldChildren<'tree> {
9666    #[allow(clippy::collapsible_else_if)]
9667    fn from_node(
9668        node: ::tree_sitter::Node<'tree>,
9669        src: &'tree [u8],
9670    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
9671        match node.kind() {
9672            "expression_list" => Ok(Self::ExpressionList(::std::boxed::Box::new(
9673                <ExpressionList as ::treesitter_types::FromNode>::from_node(node, src)?,
9674            ))),
9675            _other => {
9676                if let Ok(v) = <Expression as ::treesitter_types::FromNode>::from_node(node, src) {
9677                    Ok(Self::Expression(::std::boxed::Box::new(v)))
9678                } else {
9679                    Err(::treesitter_types::ParseError::unexpected_kind(
9680                        _other, node,
9681                    ))
9682                }
9683            }
9684        }
9685    }
9686}
9687impl ::treesitter_types::Spanned for YieldChildren<'_> {
9688    fn span(&self) -> ::treesitter_types::Span {
9689        match self {
9690            Self::Expression(inner) => inner.span(),
9691            Self::ExpressionList(inner) => inner.span(),
9692        }
9693    }
9694}
9695#[derive(Debug, Clone)]
9696pub enum AnyNode<'tree> {
9697    CompoundStatement(CompoundStatement<'tree>),
9698    SimpleStatement(SimpleStatement<'tree>),
9699    Expression(Expression<'tree>),
9700    Parameter(Parameter<'tree>),
9701    Pattern(Pattern<'tree>),
9702    PrimaryExpression(PrimaryExpression<'tree>),
9703    AliasedImport(AliasedImport<'tree>),
9704    ArgumentList(ArgumentList<'tree>),
9705    AsPattern(AsPattern<'tree>),
9706    AssertStatement(AssertStatement<'tree>),
9707    Assignment(Assignment<'tree>),
9708    Attribute(Attribute<'tree>),
9709    AugmentedAssignment(AugmentedAssignment<'tree>),
9710    Await(Await<'tree>),
9711    BinaryOperator(BinaryOperator<'tree>),
9712    Block(Block<'tree>),
9713    BooleanOperator(BooleanOperator<'tree>),
9714    BreakStatement(BreakStatement<'tree>),
9715    Call(Call<'tree>),
9716    CaseClause(CaseClause<'tree>),
9717    CasePattern(CasePattern<'tree>),
9718    Chevron(Chevron<'tree>),
9719    ClassDefinition(ClassDefinition<'tree>),
9720    ClassPattern(ClassPattern<'tree>),
9721    ComparisonOperator(ComparisonOperator<'tree>),
9722    ComplexPattern(ComplexPattern<'tree>),
9723    ConcatenatedString(ConcatenatedString<'tree>),
9724    ConditionalExpression(ConditionalExpression<'tree>),
9725    ConstrainedType(ConstrainedType<'tree>),
9726    ContinueStatement(ContinueStatement<'tree>),
9727    DecoratedDefinition(DecoratedDefinition<'tree>),
9728    Decorator(Decorator<'tree>),
9729    DefaultParameter(DefaultParameter<'tree>),
9730    DeleteStatement(DeleteStatement<'tree>),
9731    DictPattern(DictPattern<'tree>),
9732    Dictionary(Dictionary<'tree>),
9733    DictionaryComprehension(DictionaryComprehension<'tree>),
9734    DictionarySplat(DictionarySplat<'tree>),
9735    DictionarySplatPattern(DictionarySplatPattern<'tree>),
9736    DottedName(DottedName<'tree>),
9737    ElifClause(ElifClause<'tree>),
9738    ElseClause(ElseClause<'tree>),
9739    ExceptClause(ExceptClause<'tree>),
9740    ExecStatement(ExecStatement<'tree>),
9741    ExpressionList(ExpressionList<'tree>),
9742    ExpressionStatement(ExpressionStatement<'tree>),
9743    FinallyClause(FinallyClause<'tree>),
9744    ForInClause(ForInClause<'tree>),
9745    ForStatement(ForStatement<'tree>),
9746    FormatExpression(FormatExpression<'tree>),
9747    FormatSpecifier(FormatSpecifier<'tree>),
9748    FunctionDefinition(FunctionDefinition<'tree>),
9749    FutureImportStatement(FutureImportStatement<'tree>),
9750    GeneratorExpression(GeneratorExpression<'tree>),
9751    GenericType(GenericType<'tree>),
9752    GlobalStatement(GlobalStatement<'tree>),
9753    IfClause(IfClause<'tree>),
9754    IfStatement(IfStatement<'tree>),
9755    ImportFromStatement(ImportFromStatement<'tree>),
9756    ImportPrefix(ImportPrefix<'tree>),
9757    ImportStatement(ImportStatement<'tree>),
9758    Interpolation(Interpolation<'tree>),
9759    KeywordArgument(KeywordArgument<'tree>),
9760    KeywordPattern(KeywordPattern<'tree>),
9761    KeywordSeparator(KeywordSeparator<'tree>),
9762    Lambda(Lambda<'tree>),
9763    LambdaParameters(LambdaParameters<'tree>),
9764    List(List<'tree>),
9765    ListComprehension(ListComprehension<'tree>),
9766    ListPattern(ListPattern<'tree>),
9767    ListSplat(ListSplat<'tree>),
9768    ListSplatPattern(ListSplatPattern<'tree>),
9769    MatchStatement(MatchStatement<'tree>),
9770    MemberType(MemberType<'tree>),
9771    Module(Module<'tree>),
9772    NamedExpression(NamedExpression<'tree>),
9773    NonlocalStatement(NonlocalStatement<'tree>),
9774    NotOperator(NotOperator<'tree>),
9775    Pair(Pair<'tree>),
9776    Parameters(Parameters<'tree>),
9777    ParenthesizedExpression(ParenthesizedExpression<'tree>),
9778    ParenthesizedListSplat(ParenthesizedListSplat<'tree>),
9779    PassStatement(PassStatement<'tree>),
9780    PatternList(PatternList<'tree>),
9781    PositionalSeparator(PositionalSeparator<'tree>),
9782    PrintStatement(PrintStatement<'tree>),
9783    RaiseStatement(RaiseStatement<'tree>),
9784    RelativeImport(RelativeImport<'tree>),
9785    ReturnStatement(ReturnStatement<'tree>),
9786    Set(Set<'tree>),
9787    SetComprehension(SetComprehension<'tree>),
9788    Slice(Slice<'tree>),
9789    SplatPattern(SplatPattern<'tree>),
9790    SplatType(SplatType<'tree>),
9791    String(String<'tree>),
9792    StringContent(StringContent<'tree>),
9793    Subscript(Subscript<'tree>),
9794    TryStatement(TryStatement<'tree>),
9795    Tuple(Tuple<'tree>),
9796    TuplePattern(TuplePattern<'tree>),
9797    Type(Type<'tree>),
9798    TypeAliasStatement(TypeAliasStatement<'tree>),
9799    TypeParameter(TypeParameter<'tree>),
9800    TypedDefaultParameter(TypedDefaultParameter<'tree>),
9801    TypedParameter(TypedParameter<'tree>),
9802    UnaryOperator(UnaryOperator<'tree>),
9803    UnionPattern(UnionPattern<'tree>),
9804    UnionType(UnionType<'tree>),
9805    WhileStatement(WhileStatement<'tree>),
9806    WildcardImport(WildcardImport<'tree>),
9807    WithClause(WithClause<'tree>),
9808    WithItem(WithItem<'tree>),
9809    WithStatement(WithStatement<'tree>),
9810    Yield(Yield<'tree>),
9811    Comment(Comment<'tree>),
9812    Ellipsis(Ellipsis<'tree>),
9813    EscapeInterpolation(EscapeInterpolation<'tree>),
9814    EscapeSequence(EscapeSequence<'tree>),
9815    False(False<'tree>),
9816    Float(Float<'tree>),
9817    Identifier(Identifier<'tree>),
9818    Integer(Integer<'tree>),
9819    LineContinuation(LineContinuation<'tree>),
9820    None(None<'tree>),
9821    StringEnd(StringEnd<'tree>),
9822    StringStart(StringStart<'tree>),
9823    True(True<'tree>),
9824    TypeConversion(TypeConversion<'tree>),
9825    AsPatternTarget(AsPatternTarget<'tree>),
9826    Unknown(::tree_sitter::Node<'tree>),
9827}
9828impl<'tree> AnyNode<'tree> {
9829    pub fn from_node(node: ::tree_sitter::Node<'tree>, src: &'tree [u8]) -> Self {
9830        match node.kind() {
9831            "_compound_statement" => {
9832                <CompoundStatement as ::treesitter_types::FromNode>::from_node(node, src)
9833                    .map(Self::CompoundStatement)
9834                    .unwrap_or(Self::Unknown(node))
9835            }
9836            "_simple_statement" => {
9837                <SimpleStatement as ::treesitter_types::FromNode>::from_node(node, src)
9838                    .map(Self::SimpleStatement)
9839                    .unwrap_or(Self::Unknown(node))
9840            }
9841            "expression" => <Expression as ::treesitter_types::FromNode>::from_node(node, src)
9842                .map(Self::Expression)
9843                .unwrap_or(Self::Unknown(node)),
9844            "parameter" => <Parameter as ::treesitter_types::FromNode>::from_node(node, src)
9845                .map(Self::Parameter)
9846                .unwrap_or(Self::Unknown(node)),
9847            "pattern" => <Pattern as ::treesitter_types::FromNode>::from_node(node, src)
9848                .map(Self::Pattern)
9849                .unwrap_or(Self::Unknown(node)),
9850            "primary_expression" => {
9851                <PrimaryExpression as ::treesitter_types::FromNode>::from_node(node, src)
9852                    .map(Self::PrimaryExpression)
9853                    .unwrap_or(Self::Unknown(node))
9854            }
9855            "aliased_import" => {
9856                <AliasedImport as ::treesitter_types::FromNode>::from_node(node, src)
9857                    .map(Self::AliasedImport)
9858                    .unwrap_or(Self::Unknown(node))
9859            }
9860            "argument_list" => <ArgumentList as ::treesitter_types::FromNode>::from_node(node, src)
9861                .map(Self::ArgumentList)
9862                .unwrap_or(Self::Unknown(node)),
9863            "as_pattern" => <AsPattern as ::treesitter_types::FromNode>::from_node(node, src)
9864                .map(Self::AsPattern)
9865                .unwrap_or(Self::Unknown(node)),
9866            "assert_statement" => {
9867                <AssertStatement as ::treesitter_types::FromNode>::from_node(node, src)
9868                    .map(Self::AssertStatement)
9869                    .unwrap_or(Self::Unknown(node))
9870            }
9871            "assignment" => <Assignment as ::treesitter_types::FromNode>::from_node(node, src)
9872                .map(Self::Assignment)
9873                .unwrap_or(Self::Unknown(node)),
9874            "attribute" => <Attribute as ::treesitter_types::FromNode>::from_node(node, src)
9875                .map(Self::Attribute)
9876                .unwrap_or(Self::Unknown(node)),
9877            "augmented_assignment" => {
9878                <AugmentedAssignment as ::treesitter_types::FromNode>::from_node(node, src)
9879                    .map(Self::AugmentedAssignment)
9880                    .unwrap_or(Self::Unknown(node))
9881            }
9882            "await" => <Await as ::treesitter_types::FromNode>::from_node(node, src)
9883                .map(Self::Await)
9884                .unwrap_or(Self::Unknown(node)),
9885            "binary_operator" => {
9886                <BinaryOperator as ::treesitter_types::FromNode>::from_node(node, src)
9887                    .map(Self::BinaryOperator)
9888                    .unwrap_or(Self::Unknown(node))
9889            }
9890            "block" => <Block as ::treesitter_types::FromNode>::from_node(node, src)
9891                .map(Self::Block)
9892                .unwrap_or(Self::Unknown(node)),
9893            "boolean_operator" => {
9894                <BooleanOperator as ::treesitter_types::FromNode>::from_node(node, src)
9895                    .map(Self::BooleanOperator)
9896                    .unwrap_or(Self::Unknown(node))
9897            }
9898            "break_statement" => {
9899                <BreakStatement as ::treesitter_types::FromNode>::from_node(node, src)
9900                    .map(Self::BreakStatement)
9901                    .unwrap_or(Self::Unknown(node))
9902            }
9903            "call" => <Call as ::treesitter_types::FromNode>::from_node(node, src)
9904                .map(Self::Call)
9905                .unwrap_or(Self::Unknown(node)),
9906            "case_clause" => <CaseClause as ::treesitter_types::FromNode>::from_node(node, src)
9907                .map(Self::CaseClause)
9908                .unwrap_or(Self::Unknown(node)),
9909            "case_pattern" => <CasePattern as ::treesitter_types::FromNode>::from_node(node, src)
9910                .map(Self::CasePattern)
9911                .unwrap_or(Self::Unknown(node)),
9912            "chevron" => <Chevron as ::treesitter_types::FromNode>::from_node(node, src)
9913                .map(Self::Chevron)
9914                .unwrap_or(Self::Unknown(node)),
9915            "class_definition" => {
9916                <ClassDefinition as ::treesitter_types::FromNode>::from_node(node, src)
9917                    .map(Self::ClassDefinition)
9918                    .unwrap_or(Self::Unknown(node))
9919            }
9920            "class_pattern" => <ClassPattern as ::treesitter_types::FromNode>::from_node(node, src)
9921                .map(Self::ClassPattern)
9922                .unwrap_or(Self::Unknown(node)),
9923            "comparison_operator" => {
9924                <ComparisonOperator as ::treesitter_types::FromNode>::from_node(node, src)
9925                    .map(Self::ComparisonOperator)
9926                    .unwrap_or(Self::Unknown(node))
9927            }
9928            "complex_pattern" => {
9929                <ComplexPattern as ::treesitter_types::FromNode>::from_node(node, src)
9930                    .map(Self::ComplexPattern)
9931                    .unwrap_or(Self::Unknown(node))
9932            }
9933            "concatenated_string" => {
9934                <ConcatenatedString as ::treesitter_types::FromNode>::from_node(node, src)
9935                    .map(Self::ConcatenatedString)
9936                    .unwrap_or(Self::Unknown(node))
9937            }
9938            "conditional_expression" => {
9939                <ConditionalExpression as ::treesitter_types::FromNode>::from_node(node, src)
9940                    .map(Self::ConditionalExpression)
9941                    .unwrap_or(Self::Unknown(node))
9942            }
9943            "constrained_type" => {
9944                <ConstrainedType as ::treesitter_types::FromNode>::from_node(node, src)
9945                    .map(Self::ConstrainedType)
9946                    .unwrap_or(Self::Unknown(node))
9947            }
9948            "continue_statement" => {
9949                <ContinueStatement as ::treesitter_types::FromNode>::from_node(node, src)
9950                    .map(Self::ContinueStatement)
9951                    .unwrap_or(Self::Unknown(node))
9952            }
9953            "decorated_definition" => {
9954                <DecoratedDefinition as ::treesitter_types::FromNode>::from_node(node, src)
9955                    .map(Self::DecoratedDefinition)
9956                    .unwrap_or(Self::Unknown(node))
9957            }
9958            "decorator" => <Decorator as ::treesitter_types::FromNode>::from_node(node, src)
9959                .map(Self::Decorator)
9960                .unwrap_or(Self::Unknown(node)),
9961            "default_parameter" => {
9962                <DefaultParameter as ::treesitter_types::FromNode>::from_node(node, src)
9963                    .map(Self::DefaultParameter)
9964                    .unwrap_or(Self::Unknown(node))
9965            }
9966            "delete_statement" => {
9967                <DeleteStatement as ::treesitter_types::FromNode>::from_node(node, src)
9968                    .map(Self::DeleteStatement)
9969                    .unwrap_or(Self::Unknown(node))
9970            }
9971            "dict_pattern" => <DictPattern as ::treesitter_types::FromNode>::from_node(node, src)
9972                .map(Self::DictPattern)
9973                .unwrap_or(Self::Unknown(node)),
9974            "dictionary" => <Dictionary as ::treesitter_types::FromNode>::from_node(node, src)
9975                .map(Self::Dictionary)
9976                .unwrap_or(Self::Unknown(node)),
9977            "dictionary_comprehension" => {
9978                <DictionaryComprehension as ::treesitter_types::FromNode>::from_node(node, src)
9979                    .map(Self::DictionaryComprehension)
9980                    .unwrap_or(Self::Unknown(node))
9981            }
9982            "dictionary_splat" => {
9983                <DictionarySplat as ::treesitter_types::FromNode>::from_node(node, src)
9984                    .map(Self::DictionarySplat)
9985                    .unwrap_or(Self::Unknown(node))
9986            }
9987            "dictionary_splat_pattern" => {
9988                <DictionarySplatPattern as ::treesitter_types::FromNode>::from_node(node, src)
9989                    .map(Self::DictionarySplatPattern)
9990                    .unwrap_or(Self::Unknown(node))
9991            }
9992            "dotted_name" => <DottedName as ::treesitter_types::FromNode>::from_node(node, src)
9993                .map(Self::DottedName)
9994                .unwrap_or(Self::Unknown(node)),
9995            "elif_clause" => <ElifClause as ::treesitter_types::FromNode>::from_node(node, src)
9996                .map(Self::ElifClause)
9997                .unwrap_or(Self::Unknown(node)),
9998            "else_clause" => <ElseClause as ::treesitter_types::FromNode>::from_node(node, src)
9999                .map(Self::ElseClause)
10000                .unwrap_or(Self::Unknown(node)),
10001            "except_clause" => <ExceptClause as ::treesitter_types::FromNode>::from_node(node, src)
10002                .map(Self::ExceptClause)
10003                .unwrap_or(Self::Unknown(node)),
10004            "exec_statement" => {
10005                <ExecStatement as ::treesitter_types::FromNode>::from_node(node, src)
10006                    .map(Self::ExecStatement)
10007                    .unwrap_or(Self::Unknown(node))
10008            }
10009            "expression_list" => {
10010                <ExpressionList as ::treesitter_types::FromNode>::from_node(node, src)
10011                    .map(Self::ExpressionList)
10012                    .unwrap_or(Self::Unknown(node))
10013            }
10014            "expression_statement" => {
10015                <ExpressionStatement as ::treesitter_types::FromNode>::from_node(node, src)
10016                    .map(Self::ExpressionStatement)
10017                    .unwrap_or(Self::Unknown(node))
10018            }
10019            "finally_clause" => {
10020                <FinallyClause as ::treesitter_types::FromNode>::from_node(node, src)
10021                    .map(Self::FinallyClause)
10022                    .unwrap_or(Self::Unknown(node))
10023            }
10024            "for_in_clause" => <ForInClause as ::treesitter_types::FromNode>::from_node(node, src)
10025                .map(Self::ForInClause)
10026                .unwrap_or(Self::Unknown(node)),
10027            "for_statement" => <ForStatement as ::treesitter_types::FromNode>::from_node(node, src)
10028                .map(Self::ForStatement)
10029                .unwrap_or(Self::Unknown(node)),
10030            "format_expression" => {
10031                <FormatExpression as ::treesitter_types::FromNode>::from_node(node, src)
10032                    .map(Self::FormatExpression)
10033                    .unwrap_or(Self::Unknown(node))
10034            }
10035            "format_specifier" => {
10036                <FormatSpecifier as ::treesitter_types::FromNode>::from_node(node, src)
10037                    .map(Self::FormatSpecifier)
10038                    .unwrap_or(Self::Unknown(node))
10039            }
10040            "function_definition" => {
10041                <FunctionDefinition as ::treesitter_types::FromNode>::from_node(node, src)
10042                    .map(Self::FunctionDefinition)
10043                    .unwrap_or(Self::Unknown(node))
10044            }
10045            "future_import_statement" => {
10046                <FutureImportStatement as ::treesitter_types::FromNode>::from_node(node, src)
10047                    .map(Self::FutureImportStatement)
10048                    .unwrap_or(Self::Unknown(node))
10049            }
10050            "generator_expression" => {
10051                <GeneratorExpression as ::treesitter_types::FromNode>::from_node(node, src)
10052                    .map(Self::GeneratorExpression)
10053                    .unwrap_or(Self::Unknown(node))
10054            }
10055            "generic_type" => <GenericType as ::treesitter_types::FromNode>::from_node(node, src)
10056                .map(Self::GenericType)
10057                .unwrap_or(Self::Unknown(node)),
10058            "global_statement" => {
10059                <GlobalStatement as ::treesitter_types::FromNode>::from_node(node, src)
10060                    .map(Self::GlobalStatement)
10061                    .unwrap_or(Self::Unknown(node))
10062            }
10063            "if_clause" => <IfClause as ::treesitter_types::FromNode>::from_node(node, src)
10064                .map(Self::IfClause)
10065                .unwrap_or(Self::Unknown(node)),
10066            "if_statement" => <IfStatement as ::treesitter_types::FromNode>::from_node(node, src)
10067                .map(Self::IfStatement)
10068                .unwrap_or(Self::Unknown(node)),
10069            "import_from_statement" => {
10070                <ImportFromStatement as ::treesitter_types::FromNode>::from_node(node, src)
10071                    .map(Self::ImportFromStatement)
10072                    .unwrap_or(Self::Unknown(node))
10073            }
10074            "import_prefix" => <ImportPrefix as ::treesitter_types::FromNode>::from_node(node, src)
10075                .map(Self::ImportPrefix)
10076                .unwrap_or(Self::Unknown(node)),
10077            "import_statement" => {
10078                <ImportStatement as ::treesitter_types::FromNode>::from_node(node, src)
10079                    .map(Self::ImportStatement)
10080                    .unwrap_or(Self::Unknown(node))
10081            }
10082            "interpolation" => {
10083                <Interpolation as ::treesitter_types::FromNode>::from_node(node, src)
10084                    .map(Self::Interpolation)
10085                    .unwrap_or(Self::Unknown(node))
10086            }
10087            "keyword_argument" => {
10088                <KeywordArgument as ::treesitter_types::FromNode>::from_node(node, src)
10089                    .map(Self::KeywordArgument)
10090                    .unwrap_or(Self::Unknown(node))
10091            }
10092            "keyword_pattern" => {
10093                <KeywordPattern as ::treesitter_types::FromNode>::from_node(node, src)
10094                    .map(Self::KeywordPattern)
10095                    .unwrap_or(Self::Unknown(node))
10096            }
10097            "keyword_separator" => {
10098                <KeywordSeparator as ::treesitter_types::FromNode>::from_node(node, src)
10099                    .map(Self::KeywordSeparator)
10100                    .unwrap_or(Self::Unknown(node))
10101            }
10102            "lambda" => <Lambda as ::treesitter_types::FromNode>::from_node(node, src)
10103                .map(Self::Lambda)
10104                .unwrap_or(Self::Unknown(node)),
10105            "lambda_parameters" => {
10106                <LambdaParameters as ::treesitter_types::FromNode>::from_node(node, src)
10107                    .map(Self::LambdaParameters)
10108                    .unwrap_or(Self::Unknown(node))
10109            }
10110            "list" => <List as ::treesitter_types::FromNode>::from_node(node, src)
10111                .map(Self::List)
10112                .unwrap_or(Self::Unknown(node)),
10113            "list_comprehension" => {
10114                <ListComprehension as ::treesitter_types::FromNode>::from_node(node, src)
10115                    .map(Self::ListComprehension)
10116                    .unwrap_or(Self::Unknown(node))
10117            }
10118            "list_pattern" => <ListPattern as ::treesitter_types::FromNode>::from_node(node, src)
10119                .map(Self::ListPattern)
10120                .unwrap_or(Self::Unknown(node)),
10121            "list_splat" => <ListSplat as ::treesitter_types::FromNode>::from_node(node, src)
10122                .map(Self::ListSplat)
10123                .unwrap_or(Self::Unknown(node)),
10124            "list_splat_pattern" => {
10125                <ListSplatPattern as ::treesitter_types::FromNode>::from_node(node, src)
10126                    .map(Self::ListSplatPattern)
10127                    .unwrap_or(Self::Unknown(node))
10128            }
10129            "match_statement" => {
10130                <MatchStatement as ::treesitter_types::FromNode>::from_node(node, src)
10131                    .map(Self::MatchStatement)
10132                    .unwrap_or(Self::Unknown(node))
10133            }
10134            "member_type" => <MemberType as ::treesitter_types::FromNode>::from_node(node, src)
10135                .map(Self::MemberType)
10136                .unwrap_or(Self::Unknown(node)),
10137            "module" => <Module as ::treesitter_types::FromNode>::from_node(node, src)
10138                .map(Self::Module)
10139                .unwrap_or(Self::Unknown(node)),
10140            "named_expression" => {
10141                <NamedExpression as ::treesitter_types::FromNode>::from_node(node, src)
10142                    .map(Self::NamedExpression)
10143                    .unwrap_or(Self::Unknown(node))
10144            }
10145            "nonlocal_statement" => {
10146                <NonlocalStatement as ::treesitter_types::FromNode>::from_node(node, src)
10147                    .map(Self::NonlocalStatement)
10148                    .unwrap_or(Self::Unknown(node))
10149            }
10150            "not_operator" => <NotOperator as ::treesitter_types::FromNode>::from_node(node, src)
10151                .map(Self::NotOperator)
10152                .unwrap_or(Self::Unknown(node)),
10153            "pair" => <Pair as ::treesitter_types::FromNode>::from_node(node, src)
10154                .map(Self::Pair)
10155                .unwrap_or(Self::Unknown(node)),
10156            "parameters" => <Parameters as ::treesitter_types::FromNode>::from_node(node, src)
10157                .map(Self::Parameters)
10158                .unwrap_or(Self::Unknown(node)),
10159            "parenthesized_expression" => {
10160                <ParenthesizedExpression as ::treesitter_types::FromNode>::from_node(node, src)
10161                    .map(Self::ParenthesizedExpression)
10162                    .unwrap_or(Self::Unknown(node))
10163            }
10164            "parenthesized_list_splat" => {
10165                <ParenthesizedListSplat as ::treesitter_types::FromNode>::from_node(node, src)
10166                    .map(Self::ParenthesizedListSplat)
10167                    .unwrap_or(Self::Unknown(node))
10168            }
10169            "pass_statement" => {
10170                <PassStatement as ::treesitter_types::FromNode>::from_node(node, src)
10171                    .map(Self::PassStatement)
10172                    .unwrap_or(Self::Unknown(node))
10173            }
10174            "pattern_list" => <PatternList as ::treesitter_types::FromNode>::from_node(node, src)
10175                .map(Self::PatternList)
10176                .unwrap_or(Self::Unknown(node)),
10177            "positional_separator" => {
10178                <PositionalSeparator as ::treesitter_types::FromNode>::from_node(node, src)
10179                    .map(Self::PositionalSeparator)
10180                    .unwrap_or(Self::Unknown(node))
10181            }
10182            "print_statement" => {
10183                <PrintStatement as ::treesitter_types::FromNode>::from_node(node, src)
10184                    .map(Self::PrintStatement)
10185                    .unwrap_or(Self::Unknown(node))
10186            }
10187            "raise_statement" => {
10188                <RaiseStatement as ::treesitter_types::FromNode>::from_node(node, src)
10189                    .map(Self::RaiseStatement)
10190                    .unwrap_or(Self::Unknown(node))
10191            }
10192            "relative_import" => {
10193                <RelativeImport as ::treesitter_types::FromNode>::from_node(node, src)
10194                    .map(Self::RelativeImport)
10195                    .unwrap_or(Self::Unknown(node))
10196            }
10197            "return_statement" => {
10198                <ReturnStatement as ::treesitter_types::FromNode>::from_node(node, src)
10199                    .map(Self::ReturnStatement)
10200                    .unwrap_or(Self::Unknown(node))
10201            }
10202            "set" => <Set as ::treesitter_types::FromNode>::from_node(node, src)
10203                .map(Self::Set)
10204                .unwrap_or(Self::Unknown(node)),
10205            "set_comprehension" => {
10206                <SetComprehension as ::treesitter_types::FromNode>::from_node(node, src)
10207                    .map(Self::SetComprehension)
10208                    .unwrap_or(Self::Unknown(node))
10209            }
10210            "slice" => <Slice as ::treesitter_types::FromNode>::from_node(node, src)
10211                .map(Self::Slice)
10212                .unwrap_or(Self::Unknown(node)),
10213            "splat_pattern" => <SplatPattern as ::treesitter_types::FromNode>::from_node(node, src)
10214                .map(Self::SplatPattern)
10215                .unwrap_or(Self::Unknown(node)),
10216            "splat_type" => <SplatType as ::treesitter_types::FromNode>::from_node(node, src)
10217                .map(Self::SplatType)
10218                .unwrap_or(Self::Unknown(node)),
10219            "string" => <String as ::treesitter_types::FromNode>::from_node(node, src)
10220                .map(Self::String)
10221                .unwrap_or(Self::Unknown(node)),
10222            "string_content" => {
10223                <StringContent as ::treesitter_types::FromNode>::from_node(node, src)
10224                    .map(Self::StringContent)
10225                    .unwrap_or(Self::Unknown(node))
10226            }
10227            "subscript" => <Subscript as ::treesitter_types::FromNode>::from_node(node, src)
10228                .map(Self::Subscript)
10229                .unwrap_or(Self::Unknown(node)),
10230            "try_statement" => <TryStatement as ::treesitter_types::FromNode>::from_node(node, src)
10231                .map(Self::TryStatement)
10232                .unwrap_or(Self::Unknown(node)),
10233            "tuple" => <Tuple as ::treesitter_types::FromNode>::from_node(node, src)
10234                .map(Self::Tuple)
10235                .unwrap_or(Self::Unknown(node)),
10236            "tuple_pattern" => <TuplePattern as ::treesitter_types::FromNode>::from_node(node, src)
10237                .map(Self::TuplePattern)
10238                .unwrap_or(Self::Unknown(node)),
10239            "type" => <Type as ::treesitter_types::FromNode>::from_node(node, src)
10240                .map(Self::Type)
10241                .unwrap_or(Self::Unknown(node)),
10242            "type_alias_statement" => {
10243                <TypeAliasStatement as ::treesitter_types::FromNode>::from_node(node, src)
10244                    .map(Self::TypeAliasStatement)
10245                    .unwrap_or(Self::Unknown(node))
10246            }
10247            "type_parameter" => {
10248                <TypeParameter as ::treesitter_types::FromNode>::from_node(node, src)
10249                    .map(Self::TypeParameter)
10250                    .unwrap_or(Self::Unknown(node))
10251            }
10252            "typed_default_parameter" => {
10253                <TypedDefaultParameter as ::treesitter_types::FromNode>::from_node(node, src)
10254                    .map(Self::TypedDefaultParameter)
10255                    .unwrap_or(Self::Unknown(node))
10256            }
10257            "typed_parameter" => {
10258                <TypedParameter as ::treesitter_types::FromNode>::from_node(node, src)
10259                    .map(Self::TypedParameter)
10260                    .unwrap_or(Self::Unknown(node))
10261            }
10262            "unary_operator" => {
10263                <UnaryOperator as ::treesitter_types::FromNode>::from_node(node, src)
10264                    .map(Self::UnaryOperator)
10265                    .unwrap_or(Self::Unknown(node))
10266            }
10267            "union_pattern" => <UnionPattern as ::treesitter_types::FromNode>::from_node(node, src)
10268                .map(Self::UnionPattern)
10269                .unwrap_or(Self::Unknown(node)),
10270            "union_type" => <UnionType as ::treesitter_types::FromNode>::from_node(node, src)
10271                .map(Self::UnionType)
10272                .unwrap_or(Self::Unknown(node)),
10273            "while_statement" => {
10274                <WhileStatement as ::treesitter_types::FromNode>::from_node(node, src)
10275                    .map(Self::WhileStatement)
10276                    .unwrap_or(Self::Unknown(node))
10277            }
10278            "wildcard_import" => {
10279                <WildcardImport as ::treesitter_types::FromNode>::from_node(node, src)
10280                    .map(Self::WildcardImport)
10281                    .unwrap_or(Self::Unknown(node))
10282            }
10283            "with_clause" => <WithClause as ::treesitter_types::FromNode>::from_node(node, src)
10284                .map(Self::WithClause)
10285                .unwrap_or(Self::Unknown(node)),
10286            "with_item" => <WithItem as ::treesitter_types::FromNode>::from_node(node, src)
10287                .map(Self::WithItem)
10288                .unwrap_or(Self::Unknown(node)),
10289            "with_statement" => {
10290                <WithStatement as ::treesitter_types::FromNode>::from_node(node, src)
10291                    .map(Self::WithStatement)
10292                    .unwrap_or(Self::Unknown(node))
10293            }
10294            "yield" => <Yield as ::treesitter_types::FromNode>::from_node(node, src)
10295                .map(Self::Yield)
10296                .unwrap_or(Self::Unknown(node)),
10297            "comment" => <Comment as ::treesitter_types::FromNode>::from_node(node, src)
10298                .map(Self::Comment)
10299                .unwrap_or(Self::Unknown(node)),
10300            "ellipsis" => <Ellipsis as ::treesitter_types::FromNode>::from_node(node, src)
10301                .map(Self::Ellipsis)
10302                .unwrap_or(Self::Unknown(node)),
10303            "escape_interpolation" => {
10304                <EscapeInterpolation as ::treesitter_types::FromNode>::from_node(node, src)
10305                    .map(Self::EscapeInterpolation)
10306                    .unwrap_or(Self::Unknown(node))
10307            }
10308            "escape_sequence" => {
10309                <EscapeSequence as ::treesitter_types::FromNode>::from_node(node, src)
10310                    .map(Self::EscapeSequence)
10311                    .unwrap_or(Self::Unknown(node))
10312            }
10313            "false" => <False as ::treesitter_types::FromNode>::from_node(node, src)
10314                .map(Self::False)
10315                .unwrap_or(Self::Unknown(node)),
10316            "float" => <Float as ::treesitter_types::FromNode>::from_node(node, src)
10317                .map(Self::Float)
10318                .unwrap_or(Self::Unknown(node)),
10319            "identifier" => <Identifier as ::treesitter_types::FromNode>::from_node(node, src)
10320                .map(Self::Identifier)
10321                .unwrap_or(Self::Unknown(node)),
10322            "integer" => <Integer as ::treesitter_types::FromNode>::from_node(node, src)
10323                .map(Self::Integer)
10324                .unwrap_or(Self::Unknown(node)),
10325            "line_continuation" => {
10326                <LineContinuation as ::treesitter_types::FromNode>::from_node(node, src)
10327                    .map(Self::LineContinuation)
10328                    .unwrap_or(Self::Unknown(node))
10329            }
10330            "none" => <None as ::treesitter_types::FromNode>::from_node(node, src)
10331                .map(Self::None)
10332                .unwrap_or(Self::Unknown(node)),
10333            "string_end" => <StringEnd as ::treesitter_types::FromNode>::from_node(node, src)
10334                .map(Self::StringEnd)
10335                .unwrap_or(Self::Unknown(node)),
10336            "string_start" => <StringStart as ::treesitter_types::FromNode>::from_node(node, src)
10337                .map(Self::StringStart)
10338                .unwrap_or(Self::Unknown(node)),
10339            "true" => <True as ::treesitter_types::FromNode>::from_node(node, src)
10340                .map(Self::True)
10341                .unwrap_or(Self::Unknown(node)),
10342            "type_conversion" => {
10343                <TypeConversion as ::treesitter_types::FromNode>::from_node(node, src)
10344                    .map(Self::TypeConversion)
10345                    .unwrap_or(Self::Unknown(node))
10346            }
10347            "as_pattern_target" => {
10348                <AsPatternTarget as ::treesitter_types::FromNode>::from_node(node, src)
10349                    .map(Self::AsPatternTarget)
10350                    .unwrap_or(Self::Unknown(node))
10351            }
10352            _ => Self::Unknown(node),
10353        }
10354    }
10355}
10356impl ::treesitter_types::Spanned for AnyNode<'_> {
10357    fn span(&self) -> ::treesitter_types::Span {
10358        match self {
10359            Self::CompoundStatement(inner) => inner.span(),
10360            Self::SimpleStatement(inner) => inner.span(),
10361            Self::Expression(inner) => inner.span(),
10362            Self::Parameter(inner) => inner.span(),
10363            Self::Pattern(inner) => inner.span(),
10364            Self::PrimaryExpression(inner) => inner.span(),
10365            Self::AliasedImport(inner) => inner.span(),
10366            Self::ArgumentList(inner) => inner.span(),
10367            Self::AsPattern(inner) => inner.span(),
10368            Self::AssertStatement(inner) => inner.span(),
10369            Self::Assignment(inner) => inner.span(),
10370            Self::Attribute(inner) => inner.span(),
10371            Self::AugmentedAssignment(inner) => inner.span(),
10372            Self::Await(inner) => inner.span(),
10373            Self::BinaryOperator(inner) => inner.span(),
10374            Self::Block(inner) => inner.span(),
10375            Self::BooleanOperator(inner) => inner.span(),
10376            Self::BreakStatement(inner) => inner.span(),
10377            Self::Call(inner) => inner.span(),
10378            Self::CaseClause(inner) => inner.span(),
10379            Self::CasePattern(inner) => inner.span(),
10380            Self::Chevron(inner) => inner.span(),
10381            Self::ClassDefinition(inner) => inner.span(),
10382            Self::ClassPattern(inner) => inner.span(),
10383            Self::ComparisonOperator(inner) => inner.span(),
10384            Self::ComplexPattern(inner) => inner.span(),
10385            Self::ConcatenatedString(inner) => inner.span(),
10386            Self::ConditionalExpression(inner) => inner.span(),
10387            Self::ConstrainedType(inner) => inner.span(),
10388            Self::ContinueStatement(inner) => inner.span(),
10389            Self::DecoratedDefinition(inner) => inner.span(),
10390            Self::Decorator(inner) => inner.span(),
10391            Self::DefaultParameter(inner) => inner.span(),
10392            Self::DeleteStatement(inner) => inner.span(),
10393            Self::DictPattern(inner) => inner.span(),
10394            Self::Dictionary(inner) => inner.span(),
10395            Self::DictionaryComprehension(inner) => inner.span(),
10396            Self::DictionarySplat(inner) => inner.span(),
10397            Self::DictionarySplatPattern(inner) => inner.span(),
10398            Self::DottedName(inner) => inner.span(),
10399            Self::ElifClause(inner) => inner.span(),
10400            Self::ElseClause(inner) => inner.span(),
10401            Self::ExceptClause(inner) => inner.span(),
10402            Self::ExecStatement(inner) => inner.span(),
10403            Self::ExpressionList(inner) => inner.span(),
10404            Self::ExpressionStatement(inner) => inner.span(),
10405            Self::FinallyClause(inner) => inner.span(),
10406            Self::ForInClause(inner) => inner.span(),
10407            Self::ForStatement(inner) => inner.span(),
10408            Self::FormatExpression(inner) => inner.span(),
10409            Self::FormatSpecifier(inner) => inner.span(),
10410            Self::FunctionDefinition(inner) => inner.span(),
10411            Self::FutureImportStatement(inner) => inner.span(),
10412            Self::GeneratorExpression(inner) => inner.span(),
10413            Self::GenericType(inner) => inner.span(),
10414            Self::GlobalStatement(inner) => inner.span(),
10415            Self::IfClause(inner) => inner.span(),
10416            Self::IfStatement(inner) => inner.span(),
10417            Self::ImportFromStatement(inner) => inner.span(),
10418            Self::ImportPrefix(inner) => inner.span(),
10419            Self::ImportStatement(inner) => inner.span(),
10420            Self::Interpolation(inner) => inner.span(),
10421            Self::KeywordArgument(inner) => inner.span(),
10422            Self::KeywordPattern(inner) => inner.span(),
10423            Self::KeywordSeparator(inner) => inner.span(),
10424            Self::Lambda(inner) => inner.span(),
10425            Self::LambdaParameters(inner) => inner.span(),
10426            Self::List(inner) => inner.span(),
10427            Self::ListComprehension(inner) => inner.span(),
10428            Self::ListPattern(inner) => inner.span(),
10429            Self::ListSplat(inner) => inner.span(),
10430            Self::ListSplatPattern(inner) => inner.span(),
10431            Self::MatchStatement(inner) => inner.span(),
10432            Self::MemberType(inner) => inner.span(),
10433            Self::Module(inner) => inner.span(),
10434            Self::NamedExpression(inner) => inner.span(),
10435            Self::NonlocalStatement(inner) => inner.span(),
10436            Self::NotOperator(inner) => inner.span(),
10437            Self::Pair(inner) => inner.span(),
10438            Self::Parameters(inner) => inner.span(),
10439            Self::ParenthesizedExpression(inner) => inner.span(),
10440            Self::ParenthesizedListSplat(inner) => inner.span(),
10441            Self::PassStatement(inner) => inner.span(),
10442            Self::PatternList(inner) => inner.span(),
10443            Self::PositionalSeparator(inner) => inner.span(),
10444            Self::PrintStatement(inner) => inner.span(),
10445            Self::RaiseStatement(inner) => inner.span(),
10446            Self::RelativeImport(inner) => inner.span(),
10447            Self::ReturnStatement(inner) => inner.span(),
10448            Self::Set(inner) => inner.span(),
10449            Self::SetComprehension(inner) => inner.span(),
10450            Self::Slice(inner) => inner.span(),
10451            Self::SplatPattern(inner) => inner.span(),
10452            Self::SplatType(inner) => inner.span(),
10453            Self::String(inner) => inner.span(),
10454            Self::StringContent(inner) => inner.span(),
10455            Self::Subscript(inner) => inner.span(),
10456            Self::TryStatement(inner) => inner.span(),
10457            Self::Tuple(inner) => inner.span(),
10458            Self::TuplePattern(inner) => inner.span(),
10459            Self::Type(inner) => inner.span(),
10460            Self::TypeAliasStatement(inner) => inner.span(),
10461            Self::TypeParameter(inner) => inner.span(),
10462            Self::TypedDefaultParameter(inner) => inner.span(),
10463            Self::TypedParameter(inner) => inner.span(),
10464            Self::UnaryOperator(inner) => inner.span(),
10465            Self::UnionPattern(inner) => inner.span(),
10466            Self::UnionType(inner) => inner.span(),
10467            Self::WhileStatement(inner) => inner.span(),
10468            Self::WildcardImport(inner) => inner.span(),
10469            Self::WithClause(inner) => inner.span(),
10470            Self::WithItem(inner) => inner.span(),
10471            Self::WithStatement(inner) => inner.span(),
10472            Self::Yield(inner) => inner.span(),
10473            Self::Comment(inner) => inner.span(),
10474            Self::Ellipsis(inner) => inner.span(),
10475            Self::EscapeInterpolation(inner) => inner.span(),
10476            Self::EscapeSequence(inner) => inner.span(),
10477            Self::False(inner) => inner.span(),
10478            Self::Float(inner) => inner.span(),
10479            Self::Identifier(inner) => inner.span(),
10480            Self::Integer(inner) => inner.span(),
10481            Self::LineContinuation(inner) => inner.span(),
10482            Self::None(inner) => inner.span(),
10483            Self::StringEnd(inner) => inner.span(),
10484            Self::StringStart(inner) => inner.span(),
10485            Self::True(inner) => inner.span(),
10486            Self::TypeConversion(inner) => inner.span(),
10487            Self::AsPatternTarget(inner) => inner.span(),
10488            Self::Unknown(node) => ::treesitter_types::Span::from(*node),
10489        }
10490    }
10491}