Skip to main content

treesitter_types_typescript/
generated.rs

1#[derive(Debug, Clone, PartialEq, Eq)]
2pub enum Declaration<'tree> {
3    AbstractClassDeclaration(::std::boxed::Box<AbstractClassDeclaration<'tree>>),
4    AmbientDeclaration(::std::boxed::Box<AmbientDeclaration<'tree>>),
5    ClassDeclaration(::std::boxed::Box<ClassDeclaration<'tree>>),
6    EnumDeclaration(::std::boxed::Box<EnumDeclaration<'tree>>),
7    FunctionDeclaration(::std::boxed::Box<FunctionDeclaration<'tree>>),
8    FunctionSignature(::std::boxed::Box<FunctionSignature<'tree>>),
9    GeneratorFunctionDeclaration(::std::boxed::Box<GeneratorFunctionDeclaration<'tree>>),
10    ImportAlias(::std::boxed::Box<ImportAlias<'tree>>),
11    InterfaceDeclaration(::std::boxed::Box<InterfaceDeclaration<'tree>>),
12    InternalModule(::std::boxed::Box<InternalModule<'tree>>),
13    LexicalDeclaration(::std::boxed::Box<LexicalDeclaration<'tree>>),
14    Module(::std::boxed::Box<Module<'tree>>),
15    TypeAliasDeclaration(::std::boxed::Box<TypeAliasDeclaration<'tree>>),
16    VariableDeclaration(::std::boxed::Box<VariableDeclaration<'tree>>),
17}
18impl<'tree> ::treesitter_types::FromNode<'tree> for Declaration<'tree> {
19    #[allow(clippy::collapsible_else_if)]
20    fn from_node(
21        node: ::treesitter_types::tree_sitter::Node<'tree>,
22        src: &'tree [u8],
23    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
24        match node.kind() {
25            "abstract_class_declaration" => Ok(Self::AbstractClassDeclaration(
26                ::std::boxed::Box::new(::treesitter_types::runtime::maybe_grow_stack(|| {
27                    <AbstractClassDeclaration as ::treesitter_types::FromNode>::from_node(node, src)
28                })?),
29            )),
30            "ambient_declaration" => Ok(Self::AmbientDeclaration(::std::boxed::Box::new(
31                ::treesitter_types::runtime::maybe_grow_stack(|| {
32                    <AmbientDeclaration as ::treesitter_types::FromNode>::from_node(node, src)
33                })?,
34            ))),
35            "class_declaration" => Ok(Self::ClassDeclaration(::std::boxed::Box::new(
36                ::treesitter_types::runtime::maybe_grow_stack(|| {
37                    <ClassDeclaration as ::treesitter_types::FromNode>::from_node(node, src)
38                })?,
39            ))),
40            "enum_declaration" => Ok(Self::EnumDeclaration(::std::boxed::Box::new(
41                ::treesitter_types::runtime::maybe_grow_stack(|| {
42                    <EnumDeclaration as ::treesitter_types::FromNode>::from_node(node, src)
43                })?,
44            ))),
45            "function_declaration" => Ok(Self::FunctionDeclaration(::std::boxed::Box::new(
46                ::treesitter_types::runtime::maybe_grow_stack(|| {
47                    <FunctionDeclaration as ::treesitter_types::FromNode>::from_node(node, src)
48                })?,
49            ))),
50            "function_signature" => Ok(Self::FunctionSignature(::std::boxed::Box::new(
51                ::treesitter_types::runtime::maybe_grow_stack(|| {
52                    <FunctionSignature as ::treesitter_types::FromNode>::from_node(node, src)
53                })?,
54            ))),
55            "generator_function_declaration" => Ok(Self::GeneratorFunctionDeclaration(
56                ::std::boxed::Box::new(::treesitter_types::runtime::maybe_grow_stack(|| {
57                    <GeneratorFunctionDeclaration as ::treesitter_types::FromNode>::from_node(
58                        node, src,
59                    )
60                })?),
61            )),
62            "import_alias" => Ok(Self::ImportAlias(::std::boxed::Box::new(
63                ::treesitter_types::runtime::maybe_grow_stack(|| {
64                    <ImportAlias as ::treesitter_types::FromNode>::from_node(node, src)
65                })?,
66            ))),
67            "interface_declaration" => Ok(Self::InterfaceDeclaration(::std::boxed::Box::new(
68                ::treesitter_types::runtime::maybe_grow_stack(|| {
69                    <InterfaceDeclaration as ::treesitter_types::FromNode>::from_node(node, src)
70                })?,
71            ))),
72            "internal_module" => Ok(Self::InternalModule(::std::boxed::Box::new(
73                ::treesitter_types::runtime::maybe_grow_stack(|| {
74                    <InternalModule as ::treesitter_types::FromNode>::from_node(node, src)
75                })?,
76            ))),
77            "lexical_declaration" => Ok(Self::LexicalDeclaration(::std::boxed::Box::new(
78                ::treesitter_types::runtime::maybe_grow_stack(|| {
79                    <LexicalDeclaration as ::treesitter_types::FromNode>::from_node(node, src)
80                })?,
81            ))),
82            "module" => Ok(Self::Module(::std::boxed::Box::new(
83                ::treesitter_types::runtime::maybe_grow_stack(|| {
84                    <Module as ::treesitter_types::FromNode>::from_node(node, src)
85                })?,
86            ))),
87            "type_alias_declaration" => Ok(Self::TypeAliasDeclaration(::std::boxed::Box::new(
88                ::treesitter_types::runtime::maybe_grow_stack(|| {
89                    <TypeAliasDeclaration as ::treesitter_types::FromNode>::from_node(node, src)
90                })?,
91            ))),
92            "variable_declaration" => Ok(Self::VariableDeclaration(::std::boxed::Box::new(
93                ::treesitter_types::runtime::maybe_grow_stack(|| {
94                    <VariableDeclaration as ::treesitter_types::FromNode>::from_node(node, src)
95                })?,
96            ))),
97            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
98        }
99    }
100}
101impl ::treesitter_types::Spanned for Declaration<'_> {
102    fn span(&self) -> ::treesitter_types::Span {
103        match self {
104            Self::AbstractClassDeclaration(inner) => inner.span(),
105            Self::AmbientDeclaration(inner) => inner.span(),
106            Self::ClassDeclaration(inner) => inner.span(),
107            Self::EnumDeclaration(inner) => inner.span(),
108            Self::FunctionDeclaration(inner) => inner.span(),
109            Self::FunctionSignature(inner) => inner.span(),
110            Self::GeneratorFunctionDeclaration(inner) => inner.span(),
111            Self::ImportAlias(inner) => inner.span(),
112            Self::InterfaceDeclaration(inner) => inner.span(),
113            Self::InternalModule(inner) => inner.span(),
114            Self::LexicalDeclaration(inner) => inner.span(),
115            Self::Module(inner) => inner.span(),
116            Self::TypeAliasDeclaration(inner) => inner.span(),
117            Self::VariableDeclaration(inner) => inner.span(),
118        }
119    }
120}
121#[derive(Debug, Clone, PartialEq, Eq)]
122pub enum Expression<'tree> {
123    AsExpression(::std::boxed::Box<AsExpression<'tree>>),
124    AssignmentExpression(::std::boxed::Box<AssignmentExpression<'tree>>),
125    AugmentedAssignmentExpression(::std::boxed::Box<AugmentedAssignmentExpression<'tree>>),
126    AwaitExpression(::std::boxed::Box<AwaitExpression<'tree>>),
127    BinaryExpression(::std::boxed::Box<BinaryExpression<'tree>>),
128    InstantiationExpression(::std::boxed::Box<InstantiationExpression<'tree>>),
129    InternalModule(::std::boxed::Box<InternalModule<'tree>>),
130    NewExpression(::std::boxed::Box<NewExpression<'tree>>),
131    PrimaryExpression(::std::boxed::Box<PrimaryExpression<'tree>>),
132    SatisfiesExpression(::std::boxed::Box<SatisfiesExpression<'tree>>),
133    TernaryExpression(::std::boxed::Box<TernaryExpression<'tree>>),
134    TypeAssertion(::std::boxed::Box<TypeAssertion<'tree>>),
135    UnaryExpression(::std::boxed::Box<UnaryExpression<'tree>>),
136    UpdateExpression(::std::boxed::Box<UpdateExpression<'tree>>),
137    YieldExpression(::std::boxed::Box<YieldExpression<'tree>>),
138}
139impl<'tree> ::treesitter_types::FromNode<'tree> for Expression<'tree> {
140    #[allow(clippy::collapsible_else_if)]
141    fn from_node(
142        node: ::treesitter_types::tree_sitter::Node<'tree>,
143        src: &'tree [u8],
144    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
145        match node.kind() {
146            "as_expression" => Ok(Self::AsExpression(::std::boxed::Box::new(
147                ::treesitter_types::runtime::maybe_grow_stack(|| {
148                    <AsExpression as ::treesitter_types::FromNode>::from_node(node, src)
149                })?,
150            ))),
151            "assignment_expression" => Ok(Self::AssignmentExpression(::std::boxed::Box::new(
152                ::treesitter_types::runtime::maybe_grow_stack(|| {
153                    <AssignmentExpression as ::treesitter_types::FromNode>::from_node(node, src)
154                })?,
155            ))),
156            "augmented_assignment_expression" => Ok(Self::AugmentedAssignmentExpression(
157                ::std::boxed::Box::new(::treesitter_types::runtime::maybe_grow_stack(|| {
158                    <AugmentedAssignmentExpression as ::treesitter_types::FromNode>::from_node(
159                        node, src,
160                    )
161                })?),
162            )),
163            "await_expression" => Ok(Self::AwaitExpression(::std::boxed::Box::new(
164                ::treesitter_types::runtime::maybe_grow_stack(|| {
165                    <AwaitExpression as ::treesitter_types::FromNode>::from_node(node, src)
166                })?,
167            ))),
168            "binary_expression" => Ok(Self::BinaryExpression(::std::boxed::Box::new(
169                ::treesitter_types::runtime::maybe_grow_stack(|| {
170                    <BinaryExpression as ::treesitter_types::FromNode>::from_node(node, src)
171                })?,
172            ))),
173            "instantiation_expression" => Ok(Self::InstantiationExpression(
174                ::std::boxed::Box::new(::treesitter_types::runtime::maybe_grow_stack(|| {
175                    <InstantiationExpression as ::treesitter_types::FromNode>::from_node(node, src)
176                })?),
177            )),
178            "internal_module" => Ok(Self::InternalModule(::std::boxed::Box::new(
179                ::treesitter_types::runtime::maybe_grow_stack(|| {
180                    <InternalModule as ::treesitter_types::FromNode>::from_node(node, src)
181                })?,
182            ))),
183            "new_expression" => Ok(Self::NewExpression(::std::boxed::Box::new(
184                ::treesitter_types::runtime::maybe_grow_stack(|| {
185                    <NewExpression as ::treesitter_types::FromNode>::from_node(node, src)
186                })?,
187            ))),
188            "satisfies_expression" => Ok(Self::SatisfiesExpression(::std::boxed::Box::new(
189                ::treesitter_types::runtime::maybe_grow_stack(|| {
190                    <SatisfiesExpression as ::treesitter_types::FromNode>::from_node(node, src)
191                })?,
192            ))),
193            "ternary_expression" => Ok(Self::TernaryExpression(::std::boxed::Box::new(
194                ::treesitter_types::runtime::maybe_grow_stack(|| {
195                    <TernaryExpression as ::treesitter_types::FromNode>::from_node(node, src)
196                })?,
197            ))),
198            "type_assertion" => Ok(Self::TypeAssertion(::std::boxed::Box::new(
199                ::treesitter_types::runtime::maybe_grow_stack(|| {
200                    <TypeAssertion as ::treesitter_types::FromNode>::from_node(node, src)
201                })?,
202            ))),
203            "unary_expression" => Ok(Self::UnaryExpression(::std::boxed::Box::new(
204                ::treesitter_types::runtime::maybe_grow_stack(|| {
205                    <UnaryExpression as ::treesitter_types::FromNode>::from_node(node, src)
206                })?,
207            ))),
208            "update_expression" => Ok(Self::UpdateExpression(::std::boxed::Box::new(
209                ::treesitter_types::runtime::maybe_grow_stack(|| {
210                    <UpdateExpression as ::treesitter_types::FromNode>::from_node(node, src)
211                })?,
212            ))),
213            "yield_expression" => Ok(Self::YieldExpression(::std::boxed::Box::new(
214                ::treesitter_types::runtime::maybe_grow_stack(|| {
215                    <YieldExpression as ::treesitter_types::FromNode>::from_node(node, src)
216                })?,
217            ))),
218            _other => {
219                if let Ok(v) = ::treesitter_types::runtime::maybe_grow_stack(|| {
220                    <PrimaryExpression as ::treesitter_types::FromNode>::from_node(node, src)
221                }) {
222                    Ok(Self::PrimaryExpression(::std::boxed::Box::new(v)))
223                } else {
224                    Err(::treesitter_types::ParseError::unexpected_kind(
225                        _other, node,
226                    ))
227                }
228            }
229        }
230    }
231}
232impl ::treesitter_types::Spanned for Expression<'_> {
233    fn span(&self) -> ::treesitter_types::Span {
234        match self {
235            Self::AsExpression(inner) => inner.span(),
236            Self::AssignmentExpression(inner) => inner.span(),
237            Self::AugmentedAssignmentExpression(inner) => inner.span(),
238            Self::AwaitExpression(inner) => inner.span(),
239            Self::BinaryExpression(inner) => inner.span(),
240            Self::InstantiationExpression(inner) => inner.span(),
241            Self::InternalModule(inner) => inner.span(),
242            Self::NewExpression(inner) => inner.span(),
243            Self::PrimaryExpression(inner) => inner.span(),
244            Self::SatisfiesExpression(inner) => inner.span(),
245            Self::TernaryExpression(inner) => inner.span(),
246            Self::TypeAssertion(inner) => inner.span(),
247            Self::UnaryExpression(inner) => inner.span(),
248            Self::UpdateExpression(inner) => inner.span(),
249            Self::YieldExpression(inner) => inner.span(),
250        }
251    }
252}
253#[derive(Debug, Clone, PartialEq, Eq)]
254pub enum Pattern<'tree> {
255    ArrayPattern(::std::boxed::Box<ArrayPattern<'tree>>),
256    Identifier(::std::boxed::Box<Identifier<'tree>>),
257    MemberExpression(::std::boxed::Box<MemberExpression<'tree>>),
258    NonNullExpression(::std::boxed::Box<NonNullExpression<'tree>>),
259    ObjectPattern(::std::boxed::Box<ObjectPattern<'tree>>),
260    RestPattern(::std::boxed::Box<RestPattern<'tree>>),
261    SubscriptExpression(::std::boxed::Box<SubscriptExpression<'tree>>),
262    Undefined(::std::boxed::Box<Undefined<'tree>>),
263}
264impl<'tree> ::treesitter_types::FromNode<'tree> for Pattern<'tree> {
265    #[allow(clippy::collapsible_else_if)]
266    fn from_node(
267        node: ::treesitter_types::tree_sitter::Node<'tree>,
268        src: &'tree [u8],
269    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
270        match node.kind() {
271            "array_pattern" => Ok(Self::ArrayPattern(::std::boxed::Box::new(
272                ::treesitter_types::runtime::maybe_grow_stack(|| {
273                    <ArrayPattern as ::treesitter_types::FromNode>::from_node(node, src)
274                })?,
275            ))),
276            "identifier" => Ok(Self::Identifier(::std::boxed::Box::new(
277                ::treesitter_types::runtime::maybe_grow_stack(|| {
278                    <Identifier as ::treesitter_types::FromNode>::from_node(node, src)
279                })?,
280            ))),
281            "member_expression" => Ok(Self::MemberExpression(::std::boxed::Box::new(
282                ::treesitter_types::runtime::maybe_grow_stack(|| {
283                    <MemberExpression as ::treesitter_types::FromNode>::from_node(node, src)
284                })?,
285            ))),
286            "non_null_expression" => Ok(Self::NonNullExpression(::std::boxed::Box::new(
287                ::treesitter_types::runtime::maybe_grow_stack(|| {
288                    <NonNullExpression as ::treesitter_types::FromNode>::from_node(node, src)
289                })?,
290            ))),
291            "object_pattern" => Ok(Self::ObjectPattern(::std::boxed::Box::new(
292                ::treesitter_types::runtime::maybe_grow_stack(|| {
293                    <ObjectPattern as ::treesitter_types::FromNode>::from_node(node, src)
294                })?,
295            ))),
296            "rest_pattern" => Ok(Self::RestPattern(::std::boxed::Box::new(
297                ::treesitter_types::runtime::maybe_grow_stack(|| {
298                    <RestPattern as ::treesitter_types::FromNode>::from_node(node, src)
299                })?,
300            ))),
301            "subscript_expression" => Ok(Self::SubscriptExpression(::std::boxed::Box::new(
302                ::treesitter_types::runtime::maybe_grow_stack(|| {
303                    <SubscriptExpression as ::treesitter_types::FromNode>::from_node(node, src)
304                })?,
305            ))),
306            "undefined" => Ok(Self::Undefined(::std::boxed::Box::new(
307                ::treesitter_types::runtime::maybe_grow_stack(|| {
308                    <Undefined as ::treesitter_types::FromNode>::from_node(node, src)
309                })?,
310            ))),
311            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
312        }
313    }
314}
315impl ::treesitter_types::Spanned for Pattern<'_> {
316    fn span(&self) -> ::treesitter_types::Span {
317        match self {
318            Self::ArrayPattern(inner) => inner.span(),
319            Self::Identifier(inner) => inner.span(),
320            Self::MemberExpression(inner) => inner.span(),
321            Self::NonNullExpression(inner) => inner.span(),
322            Self::ObjectPattern(inner) => inner.span(),
323            Self::RestPattern(inner) => inner.span(),
324            Self::SubscriptExpression(inner) => inner.span(),
325            Self::Undefined(inner) => inner.span(),
326        }
327    }
328}
329#[derive(Debug, Clone, PartialEq, Eq)]
330pub enum PrimaryExpression<'tree> {
331    Array(::std::boxed::Box<Array<'tree>>),
332    ArrowFunction(::std::boxed::Box<ArrowFunction<'tree>>),
333    CallExpression(::std::boxed::Box<CallExpression<'tree>>),
334    Class(::std::boxed::Box<Class<'tree>>),
335    False(::std::boxed::Box<False<'tree>>),
336    FunctionExpression(::std::boxed::Box<FunctionExpression<'tree>>),
337    GeneratorFunction(::std::boxed::Box<GeneratorFunction<'tree>>),
338    Identifier(::std::boxed::Box<Identifier<'tree>>),
339    MemberExpression(::std::boxed::Box<MemberExpression<'tree>>),
340    MetaProperty(::std::boxed::Box<MetaProperty<'tree>>),
341    NonNullExpression(::std::boxed::Box<NonNullExpression<'tree>>),
342    Null(::std::boxed::Box<Null<'tree>>),
343    Number(::std::boxed::Box<Number<'tree>>),
344    Object(::std::boxed::Box<Object<'tree>>),
345    ParenthesizedExpression(::std::boxed::Box<ParenthesizedExpression<'tree>>),
346    Regex(::std::boxed::Box<Regex<'tree>>),
347    String(::std::boxed::Box<String<'tree>>),
348    SubscriptExpression(::std::boxed::Box<SubscriptExpression<'tree>>),
349    Super(::std::boxed::Box<Super<'tree>>),
350    TemplateString(::std::boxed::Box<TemplateString<'tree>>),
351    This(::std::boxed::Box<This<'tree>>),
352    True(::std::boxed::Box<True<'tree>>),
353    Undefined(::std::boxed::Box<Undefined<'tree>>),
354}
355impl<'tree> ::treesitter_types::FromNode<'tree> for PrimaryExpression<'tree> {
356    #[allow(clippy::collapsible_else_if)]
357    fn from_node(
358        node: ::treesitter_types::tree_sitter::Node<'tree>,
359        src: &'tree [u8],
360    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
361        match node.kind() {
362            "array" => Ok(Self::Array(::std::boxed::Box::new(
363                ::treesitter_types::runtime::maybe_grow_stack(|| {
364                    <Array as ::treesitter_types::FromNode>::from_node(node, src)
365                })?,
366            ))),
367            "arrow_function" => Ok(Self::ArrowFunction(::std::boxed::Box::new(
368                ::treesitter_types::runtime::maybe_grow_stack(|| {
369                    <ArrowFunction as ::treesitter_types::FromNode>::from_node(node, src)
370                })?,
371            ))),
372            "call_expression" => Ok(Self::CallExpression(::std::boxed::Box::new(
373                ::treesitter_types::runtime::maybe_grow_stack(|| {
374                    <CallExpression as ::treesitter_types::FromNode>::from_node(node, src)
375                })?,
376            ))),
377            "class" => Ok(Self::Class(::std::boxed::Box::new(
378                ::treesitter_types::runtime::maybe_grow_stack(|| {
379                    <Class as ::treesitter_types::FromNode>::from_node(node, src)
380                })?,
381            ))),
382            "false" => Ok(Self::False(::std::boxed::Box::new(
383                ::treesitter_types::runtime::maybe_grow_stack(|| {
384                    <False as ::treesitter_types::FromNode>::from_node(node, src)
385                })?,
386            ))),
387            "function_expression" => Ok(Self::FunctionExpression(::std::boxed::Box::new(
388                ::treesitter_types::runtime::maybe_grow_stack(|| {
389                    <FunctionExpression as ::treesitter_types::FromNode>::from_node(node, src)
390                })?,
391            ))),
392            "generator_function" => Ok(Self::GeneratorFunction(::std::boxed::Box::new(
393                ::treesitter_types::runtime::maybe_grow_stack(|| {
394                    <GeneratorFunction as ::treesitter_types::FromNode>::from_node(node, src)
395                })?,
396            ))),
397            "identifier" => Ok(Self::Identifier(::std::boxed::Box::new(
398                ::treesitter_types::runtime::maybe_grow_stack(|| {
399                    <Identifier as ::treesitter_types::FromNode>::from_node(node, src)
400                })?,
401            ))),
402            "member_expression" => Ok(Self::MemberExpression(::std::boxed::Box::new(
403                ::treesitter_types::runtime::maybe_grow_stack(|| {
404                    <MemberExpression as ::treesitter_types::FromNode>::from_node(node, src)
405                })?,
406            ))),
407            "meta_property" => Ok(Self::MetaProperty(::std::boxed::Box::new(
408                ::treesitter_types::runtime::maybe_grow_stack(|| {
409                    <MetaProperty as ::treesitter_types::FromNode>::from_node(node, src)
410                })?,
411            ))),
412            "non_null_expression" => Ok(Self::NonNullExpression(::std::boxed::Box::new(
413                ::treesitter_types::runtime::maybe_grow_stack(|| {
414                    <NonNullExpression as ::treesitter_types::FromNode>::from_node(node, src)
415                })?,
416            ))),
417            "null" => Ok(Self::Null(::std::boxed::Box::new(
418                ::treesitter_types::runtime::maybe_grow_stack(|| {
419                    <Null as ::treesitter_types::FromNode>::from_node(node, src)
420                })?,
421            ))),
422            "number" => Ok(Self::Number(::std::boxed::Box::new(
423                ::treesitter_types::runtime::maybe_grow_stack(|| {
424                    <Number as ::treesitter_types::FromNode>::from_node(node, src)
425                })?,
426            ))),
427            "object" => Ok(Self::Object(::std::boxed::Box::new(
428                ::treesitter_types::runtime::maybe_grow_stack(|| {
429                    <Object as ::treesitter_types::FromNode>::from_node(node, src)
430                })?,
431            ))),
432            "parenthesized_expression" => Ok(Self::ParenthesizedExpression(
433                ::std::boxed::Box::new(::treesitter_types::runtime::maybe_grow_stack(|| {
434                    <ParenthesizedExpression as ::treesitter_types::FromNode>::from_node(node, src)
435                })?),
436            )),
437            "regex" => Ok(Self::Regex(::std::boxed::Box::new(
438                ::treesitter_types::runtime::maybe_grow_stack(|| {
439                    <Regex as ::treesitter_types::FromNode>::from_node(node, src)
440                })?,
441            ))),
442            "string" => Ok(Self::String(::std::boxed::Box::new(
443                ::treesitter_types::runtime::maybe_grow_stack(|| {
444                    <String as ::treesitter_types::FromNode>::from_node(node, src)
445                })?,
446            ))),
447            "subscript_expression" => Ok(Self::SubscriptExpression(::std::boxed::Box::new(
448                ::treesitter_types::runtime::maybe_grow_stack(|| {
449                    <SubscriptExpression as ::treesitter_types::FromNode>::from_node(node, src)
450                })?,
451            ))),
452            "super" => Ok(Self::Super(::std::boxed::Box::new(
453                ::treesitter_types::runtime::maybe_grow_stack(|| {
454                    <Super as ::treesitter_types::FromNode>::from_node(node, src)
455                })?,
456            ))),
457            "template_string" => Ok(Self::TemplateString(::std::boxed::Box::new(
458                ::treesitter_types::runtime::maybe_grow_stack(|| {
459                    <TemplateString as ::treesitter_types::FromNode>::from_node(node, src)
460                })?,
461            ))),
462            "this" => Ok(Self::This(::std::boxed::Box::new(
463                ::treesitter_types::runtime::maybe_grow_stack(|| {
464                    <This as ::treesitter_types::FromNode>::from_node(node, src)
465                })?,
466            ))),
467            "true" => Ok(Self::True(::std::boxed::Box::new(
468                ::treesitter_types::runtime::maybe_grow_stack(|| {
469                    <True as ::treesitter_types::FromNode>::from_node(node, src)
470                })?,
471            ))),
472            "undefined" => Ok(Self::Undefined(::std::boxed::Box::new(
473                ::treesitter_types::runtime::maybe_grow_stack(|| {
474                    <Undefined as ::treesitter_types::FromNode>::from_node(node, src)
475                })?,
476            ))),
477            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
478        }
479    }
480}
481impl ::treesitter_types::Spanned for PrimaryExpression<'_> {
482    fn span(&self) -> ::treesitter_types::Span {
483        match self {
484            Self::Array(inner) => inner.span(),
485            Self::ArrowFunction(inner) => inner.span(),
486            Self::CallExpression(inner) => inner.span(),
487            Self::Class(inner) => inner.span(),
488            Self::False(inner) => inner.span(),
489            Self::FunctionExpression(inner) => inner.span(),
490            Self::GeneratorFunction(inner) => inner.span(),
491            Self::Identifier(inner) => inner.span(),
492            Self::MemberExpression(inner) => inner.span(),
493            Self::MetaProperty(inner) => inner.span(),
494            Self::NonNullExpression(inner) => inner.span(),
495            Self::Null(inner) => inner.span(),
496            Self::Number(inner) => inner.span(),
497            Self::Object(inner) => inner.span(),
498            Self::ParenthesizedExpression(inner) => inner.span(),
499            Self::Regex(inner) => inner.span(),
500            Self::String(inner) => inner.span(),
501            Self::SubscriptExpression(inner) => inner.span(),
502            Self::Super(inner) => inner.span(),
503            Self::TemplateString(inner) => inner.span(),
504            Self::This(inner) => inner.span(),
505            Self::True(inner) => inner.span(),
506            Self::Undefined(inner) => inner.span(),
507        }
508    }
509}
510#[derive(Debug, Clone, PartialEq, Eq)]
511pub enum PrimaryType<'tree> {
512    ArrayType(::std::boxed::Box<ArrayType<'tree>>),
513    ConditionalType(::std::boxed::Box<ConditionalType<'tree>>),
514    Const(::treesitter_types::Span),
515    ExistentialType(::std::boxed::Box<ExistentialType<'tree>>),
516    FlowMaybeType(::std::boxed::Box<FlowMaybeType<'tree>>),
517    GenericType(::std::boxed::Box<GenericType<'tree>>),
518    IndexTypeQuery(::std::boxed::Box<IndexTypeQuery<'tree>>),
519    IntersectionType(::std::boxed::Box<IntersectionType<'tree>>),
520    LiteralType(::std::boxed::Box<LiteralType<'tree>>),
521    LookupType(::std::boxed::Box<LookupType<'tree>>),
522    NestedTypeIdentifier(::std::boxed::Box<NestedTypeIdentifier<'tree>>),
523    ObjectType(::std::boxed::Box<ObjectType<'tree>>),
524    ParenthesizedType(::std::boxed::Box<ParenthesizedType<'tree>>),
525    PredefinedType(::std::boxed::Box<PredefinedType<'tree>>),
526    TemplateLiteralType(::std::boxed::Box<TemplateLiteralType<'tree>>),
527    ThisType(::std::boxed::Box<ThisType<'tree>>),
528    TupleType(::std::boxed::Box<TupleType<'tree>>),
529    TypeIdentifier(::std::boxed::Box<TypeIdentifier<'tree>>),
530    TypeQuery(::std::boxed::Box<TypeQuery<'tree>>),
531    UnionType(::std::boxed::Box<UnionType<'tree>>),
532}
533impl<'tree> ::treesitter_types::FromNode<'tree> for PrimaryType<'tree> {
534    #[allow(clippy::collapsible_else_if)]
535    fn from_node(
536        node: ::treesitter_types::tree_sitter::Node<'tree>,
537        src: &'tree [u8],
538    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
539        match node.kind() {
540            "array_type" => Ok(Self::ArrayType(::std::boxed::Box::new(
541                ::treesitter_types::runtime::maybe_grow_stack(|| {
542                    <ArrayType as ::treesitter_types::FromNode>::from_node(node, src)
543                })?,
544            ))),
545            "conditional_type" => Ok(Self::ConditionalType(::std::boxed::Box::new(
546                ::treesitter_types::runtime::maybe_grow_stack(|| {
547                    <ConditionalType as ::treesitter_types::FromNode>::from_node(node, src)
548                })?,
549            ))),
550            "const" => Ok(Self::Const(::treesitter_types::Span::from(node))),
551            "existential_type" => Ok(Self::ExistentialType(::std::boxed::Box::new(
552                ::treesitter_types::runtime::maybe_grow_stack(|| {
553                    <ExistentialType as ::treesitter_types::FromNode>::from_node(node, src)
554                })?,
555            ))),
556            "flow_maybe_type" => Ok(Self::FlowMaybeType(::std::boxed::Box::new(
557                ::treesitter_types::runtime::maybe_grow_stack(|| {
558                    <FlowMaybeType as ::treesitter_types::FromNode>::from_node(node, src)
559                })?,
560            ))),
561            "generic_type" => Ok(Self::GenericType(::std::boxed::Box::new(
562                ::treesitter_types::runtime::maybe_grow_stack(|| {
563                    <GenericType as ::treesitter_types::FromNode>::from_node(node, src)
564                })?,
565            ))),
566            "index_type_query" => Ok(Self::IndexTypeQuery(::std::boxed::Box::new(
567                ::treesitter_types::runtime::maybe_grow_stack(|| {
568                    <IndexTypeQuery as ::treesitter_types::FromNode>::from_node(node, src)
569                })?,
570            ))),
571            "intersection_type" => Ok(Self::IntersectionType(::std::boxed::Box::new(
572                ::treesitter_types::runtime::maybe_grow_stack(|| {
573                    <IntersectionType as ::treesitter_types::FromNode>::from_node(node, src)
574                })?,
575            ))),
576            "literal_type" => Ok(Self::LiteralType(::std::boxed::Box::new(
577                ::treesitter_types::runtime::maybe_grow_stack(|| {
578                    <LiteralType as ::treesitter_types::FromNode>::from_node(node, src)
579                })?,
580            ))),
581            "lookup_type" => Ok(Self::LookupType(::std::boxed::Box::new(
582                ::treesitter_types::runtime::maybe_grow_stack(|| {
583                    <LookupType as ::treesitter_types::FromNode>::from_node(node, src)
584                })?,
585            ))),
586            "nested_type_identifier" => Ok(Self::NestedTypeIdentifier(::std::boxed::Box::new(
587                ::treesitter_types::runtime::maybe_grow_stack(|| {
588                    <NestedTypeIdentifier as ::treesitter_types::FromNode>::from_node(node, src)
589                })?,
590            ))),
591            "object_type" => Ok(Self::ObjectType(::std::boxed::Box::new(
592                ::treesitter_types::runtime::maybe_grow_stack(|| {
593                    <ObjectType as ::treesitter_types::FromNode>::from_node(node, src)
594                })?,
595            ))),
596            "parenthesized_type" => Ok(Self::ParenthesizedType(::std::boxed::Box::new(
597                ::treesitter_types::runtime::maybe_grow_stack(|| {
598                    <ParenthesizedType as ::treesitter_types::FromNode>::from_node(node, src)
599                })?,
600            ))),
601            "predefined_type" => Ok(Self::PredefinedType(::std::boxed::Box::new(
602                ::treesitter_types::runtime::maybe_grow_stack(|| {
603                    <PredefinedType as ::treesitter_types::FromNode>::from_node(node, src)
604                })?,
605            ))),
606            "template_literal_type" => Ok(Self::TemplateLiteralType(::std::boxed::Box::new(
607                ::treesitter_types::runtime::maybe_grow_stack(|| {
608                    <TemplateLiteralType as ::treesitter_types::FromNode>::from_node(node, src)
609                })?,
610            ))),
611            "this_type" => Ok(Self::ThisType(::std::boxed::Box::new(
612                ::treesitter_types::runtime::maybe_grow_stack(|| {
613                    <ThisType as ::treesitter_types::FromNode>::from_node(node, src)
614                })?,
615            ))),
616            "tuple_type" => Ok(Self::TupleType(::std::boxed::Box::new(
617                ::treesitter_types::runtime::maybe_grow_stack(|| {
618                    <TupleType as ::treesitter_types::FromNode>::from_node(node, src)
619                })?,
620            ))),
621            "type_identifier" => Ok(Self::TypeIdentifier(::std::boxed::Box::new(
622                ::treesitter_types::runtime::maybe_grow_stack(|| {
623                    <TypeIdentifier as ::treesitter_types::FromNode>::from_node(node, src)
624                })?,
625            ))),
626            "type_query" => Ok(Self::TypeQuery(::std::boxed::Box::new(
627                ::treesitter_types::runtime::maybe_grow_stack(|| {
628                    <TypeQuery as ::treesitter_types::FromNode>::from_node(node, src)
629                })?,
630            ))),
631            "union_type" => Ok(Self::UnionType(::std::boxed::Box::new(
632                ::treesitter_types::runtime::maybe_grow_stack(|| {
633                    <UnionType as ::treesitter_types::FromNode>::from_node(node, src)
634                })?,
635            ))),
636            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
637        }
638    }
639}
640impl ::treesitter_types::Spanned for PrimaryType<'_> {
641    fn span(&self) -> ::treesitter_types::Span {
642        match self {
643            Self::ArrayType(inner) => inner.span(),
644            Self::ConditionalType(inner) => inner.span(),
645            Self::Const(span) => *span,
646            Self::ExistentialType(inner) => inner.span(),
647            Self::FlowMaybeType(inner) => inner.span(),
648            Self::GenericType(inner) => inner.span(),
649            Self::IndexTypeQuery(inner) => inner.span(),
650            Self::IntersectionType(inner) => inner.span(),
651            Self::LiteralType(inner) => inner.span(),
652            Self::LookupType(inner) => inner.span(),
653            Self::NestedTypeIdentifier(inner) => inner.span(),
654            Self::ObjectType(inner) => inner.span(),
655            Self::ParenthesizedType(inner) => inner.span(),
656            Self::PredefinedType(inner) => inner.span(),
657            Self::TemplateLiteralType(inner) => inner.span(),
658            Self::ThisType(inner) => inner.span(),
659            Self::TupleType(inner) => inner.span(),
660            Self::TypeIdentifier(inner) => inner.span(),
661            Self::TypeQuery(inner) => inner.span(),
662            Self::UnionType(inner) => inner.span(),
663        }
664    }
665}
666#[derive(Debug, Clone, PartialEq, Eq)]
667pub enum Statement<'tree> {
668    BreakStatement(::std::boxed::Box<BreakStatement<'tree>>),
669    ContinueStatement(::std::boxed::Box<ContinueStatement<'tree>>),
670    DebuggerStatement(::std::boxed::Box<DebuggerStatement<'tree>>),
671    Declaration(::std::boxed::Box<Declaration<'tree>>),
672    DoStatement(::std::boxed::Box<DoStatement<'tree>>),
673    EmptyStatement(::std::boxed::Box<EmptyStatement<'tree>>),
674    ExportStatement(::std::boxed::Box<ExportStatement<'tree>>),
675    ExpressionStatement(::std::boxed::Box<ExpressionStatement<'tree>>),
676    ForInStatement(::std::boxed::Box<ForInStatement<'tree>>),
677    ForStatement(::std::boxed::Box<ForStatement<'tree>>),
678    IfStatement(::std::boxed::Box<IfStatement<'tree>>),
679    ImportStatement(::std::boxed::Box<ImportStatement<'tree>>),
680    LabeledStatement(::std::boxed::Box<LabeledStatement<'tree>>),
681    ReturnStatement(::std::boxed::Box<ReturnStatement<'tree>>),
682    StatementBlock(::std::boxed::Box<StatementBlock<'tree>>),
683    SwitchStatement(::std::boxed::Box<SwitchStatement<'tree>>),
684    ThrowStatement(::std::boxed::Box<ThrowStatement<'tree>>),
685    TryStatement(::std::boxed::Box<TryStatement<'tree>>),
686    WhileStatement(::std::boxed::Box<WhileStatement<'tree>>),
687    WithStatement(::std::boxed::Box<WithStatement<'tree>>),
688}
689impl<'tree> ::treesitter_types::FromNode<'tree> for Statement<'tree> {
690    #[allow(clippy::collapsible_else_if)]
691    fn from_node(
692        node: ::treesitter_types::tree_sitter::Node<'tree>,
693        src: &'tree [u8],
694    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
695        match node.kind() {
696            "break_statement" => Ok(Self::BreakStatement(::std::boxed::Box::new(
697                ::treesitter_types::runtime::maybe_grow_stack(|| {
698                    <BreakStatement as ::treesitter_types::FromNode>::from_node(node, src)
699                })?,
700            ))),
701            "continue_statement" => Ok(Self::ContinueStatement(::std::boxed::Box::new(
702                ::treesitter_types::runtime::maybe_grow_stack(|| {
703                    <ContinueStatement as ::treesitter_types::FromNode>::from_node(node, src)
704                })?,
705            ))),
706            "debugger_statement" => Ok(Self::DebuggerStatement(::std::boxed::Box::new(
707                ::treesitter_types::runtime::maybe_grow_stack(|| {
708                    <DebuggerStatement as ::treesitter_types::FromNode>::from_node(node, src)
709                })?,
710            ))),
711            "do_statement" => Ok(Self::DoStatement(::std::boxed::Box::new(
712                ::treesitter_types::runtime::maybe_grow_stack(|| {
713                    <DoStatement as ::treesitter_types::FromNode>::from_node(node, src)
714                })?,
715            ))),
716            "empty_statement" => Ok(Self::EmptyStatement(::std::boxed::Box::new(
717                ::treesitter_types::runtime::maybe_grow_stack(|| {
718                    <EmptyStatement as ::treesitter_types::FromNode>::from_node(node, src)
719                })?,
720            ))),
721            "export_statement" => Ok(Self::ExportStatement(::std::boxed::Box::new(
722                ::treesitter_types::runtime::maybe_grow_stack(|| {
723                    <ExportStatement as ::treesitter_types::FromNode>::from_node(node, src)
724                })?,
725            ))),
726            "expression_statement" => Ok(Self::ExpressionStatement(::std::boxed::Box::new(
727                ::treesitter_types::runtime::maybe_grow_stack(|| {
728                    <ExpressionStatement as ::treesitter_types::FromNode>::from_node(node, src)
729                })?,
730            ))),
731            "for_in_statement" => Ok(Self::ForInStatement(::std::boxed::Box::new(
732                ::treesitter_types::runtime::maybe_grow_stack(|| {
733                    <ForInStatement as ::treesitter_types::FromNode>::from_node(node, src)
734                })?,
735            ))),
736            "for_statement" => Ok(Self::ForStatement(::std::boxed::Box::new(
737                ::treesitter_types::runtime::maybe_grow_stack(|| {
738                    <ForStatement as ::treesitter_types::FromNode>::from_node(node, src)
739                })?,
740            ))),
741            "if_statement" => Ok(Self::IfStatement(::std::boxed::Box::new(
742                ::treesitter_types::runtime::maybe_grow_stack(|| {
743                    <IfStatement as ::treesitter_types::FromNode>::from_node(node, src)
744                })?,
745            ))),
746            "import_statement" => Ok(Self::ImportStatement(::std::boxed::Box::new(
747                ::treesitter_types::runtime::maybe_grow_stack(|| {
748                    <ImportStatement as ::treesitter_types::FromNode>::from_node(node, src)
749                })?,
750            ))),
751            "labeled_statement" => Ok(Self::LabeledStatement(::std::boxed::Box::new(
752                ::treesitter_types::runtime::maybe_grow_stack(|| {
753                    <LabeledStatement as ::treesitter_types::FromNode>::from_node(node, src)
754                })?,
755            ))),
756            "return_statement" => Ok(Self::ReturnStatement(::std::boxed::Box::new(
757                ::treesitter_types::runtime::maybe_grow_stack(|| {
758                    <ReturnStatement as ::treesitter_types::FromNode>::from_node(node, src)
759                })?,
760            ))),
761            "statement_block" => Ok(Self::StatementBlock(::std::boxed::Box::new(
762                ::treesitter_types::runtime::maybe_grow_stack(|| {
763                    <StatementBlock as ::treesitter_types::FromNode>::from_node(node, src)
764                })?,
765            ))),
766            "switch_statement" => Ok(Self::SwitchStatement(::std::boxed::Box::new(
767                ::treesitter_types::runtime::maybe_grow_stack(|| {
768                    <SwitchStatement as ::treesitter_types::FromNode>::from_node(node, src)
769                })?,
770            ))),
771            "throw_statement" => Ok(Self::ThrowStatement(::std::boxed::Box::new(
772                ::treesitter_types::runtime::maybe_grow_stack(|| {
773                    <ThrowStatement as ::treesitter_types::FromNode>::from_node(node, src)
774                })?,
775            ))),
776            "try_statement" => Ok(Self::TryStatement(::std::boxed::Box::new(
777                ::treesitter_types::runtime::maybe_grow_stack(|| {
778                    <TryStatement as ::treesitter_types::FromNode>::from_node(node, src)
779                })?,
780            ))),
781            "while_statement" => Ok(Self::WhileStatement(::std::boxed::Box::new(
782                ::treesitter_types::runtime::maybe_grow_stack(|| {
783                    <WhileStatement as ::treesitter_types::FromNode>::from_node(node, src)
784                })?,
785            ))),
786            "with_statement" => Ok(Self::WithStatement(::std::boxed::Box::new(
787                ::treesitter_types::runtime::maybe_grow_stack(|| {
788                    <WithStatement as ::treesitter_types::FromNode>::from_node(node, src)
789                })?,
790            ))),
791            _other => {
792                if let Ok(v) = ::treesitter_types::runtime::maybe_grow_stack(|| {
793                    <Declaration as ::treesitter_types::FromNode>::from_node(node, src)
794                }) {
795                    Ok(Self::Declaration(::std::boxed::Box::new(v)))
796                } else {
797                    Err(::treesitter_types::ParseError::unexpected_kind(
798                        _other, node,
799                    ))
800                }
801            }
802        }
803    }
804}
805impl ::treesitter_types::Spanned for Statement<'_> {
806    fn span(&self) -> ::treesitter_types::Span {
807        match self {
808            Self::BreakStatement(inner) => inner.span(),
809            Self::ContinueStatement(inner) => inner.span(),
810            Self::DebuggerStatement(inner) => inner.span(),
811            Self::Declaration(inner) => inner.span(),
812            Self::DoStatement(inner) => inner.span(),
813            Self::EmptyStatement(inner) => inner.span(),
814            Self::ExportStatement(inner) => inner.span(),
815            Self::ExpressionStatement(inner) => inner.span(),
816            Self::ForInStatement(inner) => inner.span(),
817            Self::ForStatement(inner) => inner.span(),
818            Self::IfStatement(inner) => inner.span(),
819            Self::ImportStatement(inner) => inner.span(),
820            Self::LabeledStatement(inner) => inner.span(),
821            Self::ReturnStatement(inner) => inner.span(),
822            Self::StatementBlock(inner) => inner.span(),
823            Self::SwitchStatement(inner) => inner.span(),
824            Self::ThrowStatement(inner) => inner.span(),
825            Self::TryStatement(inner) => inner.span(),
826            Self::WhileStatement(inner) => inner.span(),
827            Self::WithStatement(inner) => inner.span(),
828        }
829    }
830}
831#[derive(Debug, Clone, PartialEq, Eq)]
832pub enum Type<'tree> {
833    CallExpression(::std::boxed::Box<CallExpression<'tree>>),
834    ConstructorType(::std::boxed::Box<ConstructorType<'tree>>),
835    FunctionType(::std::boxed::Box<FunctionType<'tree>>),
836    InferType(::std::boxed::Box<InferType<'tree>>),
837    MemberExpression(::std::boxed::Box<MemberExpression<'tree>>),
838    PrimaryType(::std::boxed::Box<PrimaryType<'tree>>),
839    ReadonlyType(::std::boxed::Box<ReadonlyType<'tree>>),
840}
841impl<'tree> ::treesitter_types::FromNode<'tree> for Type<'tree> {
842    #[allow(clippy::collapsible_else_if)]
843    fn from_node(
844        node: ::treesitter_types::tree_sitter::Node<'tree>,
845        src: &'tree [u8],
846    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
847        match node.kind() {
848            "call_expression" => Ok(Self::CallExpression(::std::boxed::Box::new(
849                ::treesitter_types::runtime::maybe_grow_stack(|| {
850                    <CallExpression as ::treesitter_types::FromNode>::from_node(node, src)
851                })?,
852            ))),
853            "constructor_type" => Ok(Self::ConstructorType(::std::boxed::Box::new(
854                ::treesitter_types::runtime::maybe_grow_stack(|| {
855                    <ConstructorType as ::treesitter_types::FromNode>::from_node(node, src)
856                })?,
857            ))),
858            "function_type" => Ok(Self::FunctionType(::std::boxed::Box::new(
859                ::treesitter_types::runtime::maybe_grow_stack(|| {
860                    <FunctionType as ::treesitter_types::FromNode>::from_node(node, src)
861                })?,
862            ))),
863            "infer_type" => Ok(Self::InferType(::std::boxed::Box::new(
864                ::treesitter_types::runtime::maybe_grow_stack(|| {
865                    <InferType as ::treesitter_types::FromNode>::from_node(node, src)
866                })?,
867            ))),
868            "member_expression" => Ok(Self::MemberExpression(::std::boxed::Box::new(
869                ::treesitter_types::runtime::maybe_grow_stack(|| {
870                    <MemberExpression as ::treesitter_types::FromNode>::from_node(node, src)
871                })?,
872            ))),
873            "readonly_type" => Ok(Self::ReadonlyType(::std::boxed::Box::new(
874                ::treesitter_types::runtime::maybe_grow_stack(|| {
875                    <ReadonlyType as ::treesitter_types::FromNode>::from_node(node, src)
876                })?,
877            ))),
878            _other => {
879                if let Ok(v) = ::treesitter_types::runtime::maybe_grow_stack(|| {
880                    <PrimaryType as ::treesitter_types::FromNode>::from_node(node, src)
881                }) {
882                    Ok(Self::PrimaryType(::std::boxed::Box::new(v)))
883                } else {
884                    Err(::treesitter_types::ParseError::unexpected_kind(
885                        _other, node,
886                    ))
887                }
888            }
889        }
890    }
891}
892impl ::treesitter_types::Spanned for Type<'_> {
893    fn span(&self) -> ::treesitter_types::Span {
894        match self {
895            Self::CallExpression(inner) => inner.span(),
896            Self::ConstructorType(inner) => inner.span(),
897            Self::FunctionType(inner) => inner.span(),
898            Self::InferType(inner) => inner.span(),
899            Self::MemberExpression(inner) => inner.span(),
900            Self::PrimaryType(inner) => inner.span(),
901            Self::ReadonlyType(inner) => inner.span(),
902        }
903    }
904}
905#[derive(Debug, Clone, PartialEq, Eq)]
906pub struct AbstractClassDeclaration<'tree> {
907    pub span: ::treesitter_types::Span,
908    pub body: ClassBody<'tree>,
909    pub decorator: ::std::vec::Vec<Decorator<'tree>>,
910    pub name: TypeIdentifier<'tree>,
911    pub type_parameters: ::core::option::Option<TypeParameters<'tree>>,
912    pub children: ::core::option::Option<ClassHeritage<'tree>>,
913}
914impl<'tree> ::treesitter_types::FromNode<'tree> for AbstractClassDeclaration<'tree> {
915    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
916    fn from_node(
917        node: ::treesitter_types::tree_sitter::Node<'tree>,
918        src: &'tree [u8],
919    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
920        debug_assert_eq!(node.kind(), "abstract_class_declaration");
921        Ok(Self {
922            span: ::treesitter_types::Span::from(node),
923            body: {
924                let child = node
925                    .child_by_field_name("body")
926                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("body", node))?;
927                ::treesitter_types::runtime::maybe_grow_stack(|| {
928                    <ClassBody as ::treesitter_types::FromNode>::from_node(child, src)
929                })?
930            },
931            decorator: {
932                let mut cursor = node.walk();
933                let mut items = ::std::vec::Vec::new();
934                for child in node.children_by_field_name("decorator", &mut cursor) {
935                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
936                        <Decorator as ::treesitter_types::FromNode>::from_node(child, src)
937                    })?);
938                }
939                items
940            },
941            name: {
942                let child = node
943                    .child_by_field_name("name")
944                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("name", node))?;
945                ::treesitter_types::runtime::maybe_grow_stack(|| {
946                    <TypeIdentifier as ::treesitter_types::FromNode>::from_node(child, src)
947                })?
948            },
949            type_parameters: match node.child_by_field_name("type_parameters") {
950                Some(child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
951                    <TypeParameters as ::treesitter_types::FromNode>::from_node(child, src)
952                })?),
953                None => None,
954            },
955            children: {
956                #[allow(clippy::suspicious_else_formatting)]
957                let non_field_children = {
958                    let mut cursor = node.walk();
959                    let mut result = ::std::vec::Vec::new();
960                    if cursor.goto_first_child() {
961                        loop {
962                            if cursor.field_name().is_none()
963                                && cursor.node().is_named()
964                                && !cursor.node().is_extra()
965                            {
966                                result.push(cursor.node());
967                            }
968                            if !cursor.goto_next_sibling() {
969                                break;
970                            }
971                        }
972                    }
973                    result
974                };
975                match non_field_children.first() {
976                    Some(&child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
977                        <ClassHeritage as ::treesitter_types::FromNode>::from_node(child, src)
978                    })?),
979                    None => None,
980                }
981            },
982        })
983    }
984}
985impl ::treesitter_types::Spanned for AbstractClassDeclaration<'_> {
986    fn span(&self) -> ::treesitter_types::Span {
987        self.span
988    }
989}
990#[derive(Debug, Clone, PartialEq, Eq)]
991pub struct AbstractMethodSignature<'tree> {
992    pub span: ::treesitter_types::Span,
993    pub name: AbstractMethodSignatureName<'tree>,
994    pub parameters: FormalParameters<'tree>,
995    pub return_type: ::core::option::Option<AbstractMethodSignatureReturnType<'tree>>,
996    pub type_parameters: ::core::option::Option<TypeParameters<'tree>>,
997    pub children: ::std::vec::Vec<AbstractMethodSignatureChildren<'tree>>,
998}
999impl<'tree> ::treesitter_types::FromNode<'tree> for AbstractMethodSignature<'tree> {
1000    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
1001    fn from_node(
1002        node: ::treesitter_types::tree_sitter::Node<'tree>,
1003        src: &'tree [u8],
1004    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
1005        debug_assert_eq!(node.kind(), "abstract_method_signature");
1006        Ok(Self {
1007            span: ::treesitter_types::Span::from(node),
1008            name: {
1009                let child = node
1010                    .child_by_field_name("name")
1011                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("name", node))?;
1012                ::treesitter_types::runtime::maybe_grow_stack(|| {
1013                    <AbstractMethodSignatureName as ::treesitter_types::FromNode>::from_node(
1014                        child, src,
1015                    )
1016                })?
1017            },
1018            parameters: {
1019                let child = node.child_by_field_name("parameters").ok_or_else(|| {
1020                    ::treesitter_types::ParseError::missing_field("parameters", node)
1021                })?;
1022                ::treesitter_types::runtime::maybe_grow_stack(|| {
1023                    <FormalParameters as ::treesitter_types::FromNode>::from_node(child, src)
1024                })?
1025            },
1026            return_type: match node.child_by_field_name("return_type") {
1027                Some(child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
1028                    <AbstractMethodSignatureReturnType as ::treesitter_types::FromNode>::from_node(
1029                        child, src,
1030                    )
1031                })?),
1032                None => None,
1033            },
1034            type_parameters: match node.child_by_field_name("type_parameters") {
1035                Some(child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
1036                    <TypeParameters as ::treesitter_types::FromNode>::from_node(child, src)
1037                })?),
1038                None => None,
1039            },
1040            children: {
1041                #[allow(clippy::suspicious_else_formatting)]
1042                let non_field_children = {
1043                    let mut cursor = node.walk();
1044                    let mut result = ::std::vec::Vec::new();
1045                    if cursor.goto_first_child() {
1046                        loop {
1047                            if cursor.field_name().is_none()
1048                                && cursor.node().is_named()
1049                                && !cursor.node().is_extra()
1050                            {
1051                                result.push(cursor.node());
1052                            }
1053                            if !cursor.goto_next_sibling() {
1054                                break;
1055                            }
1056                        }
1057                    }
1058                    result
1059                };
1060                let mut items = ::std::vec::Vec::new();
1061                for child in non_field_children {
1062                    items
1063                        .push(
1064                            ::treesitter_types::runtime::maybe_grow_stack(|| <AbstractMethodSignatureChildren as ::treesitter_types::FromNode>::from_node(
1065                                child,
1066                                src,
1067                            ))?,
1068                        );
1069                }
1070                items
1071            },
1072        })
1073    }
1074}
1075impl ::treesitter_types::Spanned for AbstractMethodSignature<'_> {
1076    fn span(&self) -> ::treesitter_types::Span {
1077        self.span
1078    }
1079}
1080#[derive(Debug, Clone, PartialEq, Eq)]
1081pub struct AccessibilityModifier<'tree> {
1082    pub span: ::treesitter_types::Span,
1083    text: &'tree str,
1084}
1085impl<'tree> ::treesitter_types::FromNode<'tree> for AccessibilityModifier<'tree> {
1086    fn from_node(
1087        node: ::treesitter_types::tree_sitter::Node<'tree>,
1088        src: &'tree [u8],
1089    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
1090        debug_assert_eq!(node.kind(), "accessibility_modifier");
1091        Ok(Self {
1092            span: ::treesitter_types::Span::from(node),
1093            text: node.utf8_text(src)?,
1094        })
1095    }
1096}
1097impl<'tree> ::treesitter_types::LeafNode<'tree> for AccessibilityModifier<'tree> {
1098    fn text(&self) -> &'tree str {
1099        self.text
1100    }
1101}
1102impl ::treesitter_types::Spanned for AccessibilityModifier<'_> {
1103    fn span(&self) -> ::treesitter_types::Span {
1104        self.span
1105    }
1106}
1107#[derive(Debug, Clone, PartialEq, Eq)]
1108pub struct AddingTypeAnnotation<'tree> {
1109    pub span: ::treesitter_types::Span,
1110    pub children: Type<'tree>,
1111}
1112impl<'tree> ::treesitter_types::FromNode<'tree> for AddingTypeAnnotation<'tree> {
1113    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
1114    fn from_node(
1115        node: ::treesitter_types::tree_sitter::Node<'tree>,
1116        src: &'tree [u8],
1117    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
1118        debug_assert_eq!(node.kind(), "adding_type_annotation");
1119        Ok(Self {
1120            span: ::treesitter_types::Span::from(node),
1121            children: {
1122                #[allow(clippy::suspicious_else_formatting)]
1123                let non_field_children = {
1124                    let mut cursor = node.walk();
1125                    let mut result = ::std::vec::Vec::new();
1126                    if cursor.goto_first_child() {
1127                        loop {
1128                            if cursor.field_name().is_none()
1129                                && cursor.node().is_named()
1130                                && !cursor.node().is_extra()
1131                            {
1132                                result.push(cursor.node());
1133                            }
1134                            if !cursor.goto_next_sibling() {
1135                                break;
1136                            }
1137                        }
1138                    }
1139                    result
1140                };
1141                let child = if let Some(&c) = non_field_children.first() {
1142                    c
1143                } else {
1144                    let mut fallback_cursor = node.walk();
1145                    let mut fallback_child = None;
1146                    if fallback_cursor.goto_first_child() {
1147                        loop {
1148                            if fallback_cursor.field_name().is_none()
1149                                && !fallback_cursor.node().is_extra()
1150                            {
1151                                let candidate = fallback_cursor.node();
1152                                #[allow(clippy::needless_question_mark)]
1153                                if (|| -> ::core::result::Result<
1154                                    _,
1155                                    ::treesitter_types::ParseError,
1156                                > {
1157                                    let child = candidate;
1158                                    Ok(
1159                                        ::treesitter_types::runtime::maybe_grow_stack(|| <Type as ::treesitter_types::FromNode>::from_node(
1160                                            child,
1161                                            src,
1162                                        ))?,
1163                                    )
1164                                })()
1165                                    .is_ok()
1166                                {
1167                                    fallback_child = Some(candidate);
1168                                    break;
1169                                }
1170                            }
1171                            if !fallback_cursor.goto_next_sibling() {
1172                                break;
1173                            }
1174                        }
1175                    }
1176                    if fallback_child.is_none() {
1177                        let mut cursor2 = node.walk();
1178                        if cursor2.goto_first_child() {
1179                            loop {
1180                                if cursor2.node().is_named() && !cursor2.node().is_extra() {
1181                                    let candidate = cursor2.node();
1182                                    #[allow(clippy::needless_question_mark)]
1183                                    if (|| -> ::core::result::Result<
1184                                        _,
1185                                        ::treesitter_types::ParseError,
1186                                    > {
1187                                        let child = candidate;
1188                                        Ok(
1189                                            ::treesitter_types::runtime::maybe_grow_stack(|| <Type as ::treesitter_types::FromNode>::from_node(
1190                                                child,
1191                                                src,
1192                                            ))?,
1193                                        )
1194                                    })()
1195                                        .is_ok()
1196                                    {
1197                                        fallback_child = Some(candidate);
1198                                        break;
1199                                    }
1200                                }
1201                                if !cursor2.goto_next_sibling() {
1202                                    break;
1203                                }
1204                            }
1205                        }
1206                    }
1207                    fallback_child.ok_or_else(|| {
1208                        ::treesitter_types::ParseError::missing_field("children", node)
1209                    })?
1210                };
1211                ::treesitter_types::runtime::maybe_grow_stack(|| {
1212                    <Type as ::treesitter_types::FromNode>::from_node(child, src)
1213                })?
1214            },
1215        })
1216    }
1217}
1218impl ::treesitter_types::Spanned for AddingTypeAnnotation<'_> {
1219    fn span(&self) -> ::treesitter_types::Span {
1220        self.span
1221    }
1222}
1223#[derive(Debug, Clone, PartialEq, Eq)]
1224pub struct AmbientDeclaration<'tree> {
1225    pub span: ::treesitter_types::Span,
1226    pub children: ::std::vec::Vec<AmbientDeclarationChildren<'tree>>,
1227}
1228impl<'tree> ::treesitter_types::FromNode<'tree> for AmbientDeclaration<'tree> {
1229    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
1230    fn from_node(
1231        node: ::treesitter_types::tree_sitter::Node<'tree>,
1232        src: &'tree [u8],
1233    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
1234        debug_assert_eq!(node.kind(), "ambient_declaration");
1235        Ok(Self {
1236            span: ::treesitter_types::Span::from(node),
1237            children: {
1238                #[allow(clippy::suspicious_else_formatting)]
1239                let non_field_children = {
1240                    let mut cursor = node.walk();
1241                    let mut result = ::std::vec::Vec::new();
1242                    if cursor.goto_first_child() {
1243                        loop {
1244                            if cursor.field_name().is_none()
1245                                && cursor.node().is_named()
1246                                && !cursor.node().is_extra()
1247                            {
1248                                result.push(cursor.node());
1249                            }
1250                            if !cursor.goto_next_sibling() {
1251                                break;
1252                            }
1253                        }
1254                    }
1255                    result
1256                };
1257                let mut items = ::std::vec::Vec::new();
1258                for child in non_field_children {
1259                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
1260                        <AmbientDeclarationChildren as ::treesitter_types::FromNode>::from_node(
1261                            child, src,
1262                        )
1263                    })?);
1264                }
1265                items
1266            },
1267        })
1268    }
1269}
1270impl ::treesitter_types::Spanned for AmbientDeclaration<'_> {
1271    fn span(&self) -> ::treesitter_types::Span {
1272        self.span
1273    }
1274}
1275#[derive(Debug, Clone, PartialEq, Eq)]
1276pub struct Arguments<'tree> {
1277    pub span: ::treesitter_types::Span,
1278    pub children: ::std::vec::Vec<ArgumentsChildren<'tree>>,
1279}
1280impl<'tree> ::treesitter_types::FromNode<'tree> for Arguments<'tree> {
1281    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
1282    fn from_node(
1283        node: ::treesitter_types::tree_sitter::Node<'tree>,
1284        src: &'tree [u8],
1285    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
1286        debug_assert_eq!(node.kind(), "arguments");
1287        Ok(Self {
1288            span: ::treesitter_types::Span::from(node),
1289            children: {
1290                #[allow(clippy::suspicious_else_formatting)]
1291                let non_field_children = {
1292                    let mut cursor = node.walk();
1293                    let mut result = ::std::vec::Vec::new();
1294                    if cursor.goto_first_child() {
1295                        loop {
1296                            if cursor.field_name().is_none()
1297                                && cursor.node().is_named()
1298                                && !cursor.node().is_extra()
1299                            {
1300                                result.push(cursor.node());
1301                            }
1302                            if !cursor.goto_next_sibling() {
1303                                break;
1304                            }
1305                        }
1306                    }
1307                    result
1308                };
1309                let mut items = ::std::vec::Vec::new();
1310                for child in non_field_children {
1311                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
1312                        <ArgumentsChildren as ::treesitter_types::FromNode>::from_node(child, src)
1313                    })?);
1314                }
1315                items
1316            },
1317        })
1318    }
1319}
1320impl ::treesitter_types::Spanned for Arguments<'_> {
1321    fn span(&self) -> ::treesitter_types::Span {
1322        self.span
1323    }
1324}
1325#[derive(Debug, Clone, PartialEq, Eq)]
1326pub struct Array<'tree> {
1327    pub span: ::treesitter_types::Span,
1328    pub children: ::std::vec::Vec<ArrayChildren<'tree>>,
1329}
1330impl<'tree> ::treesitter_types::FromNode<'tree> for Array<'tree> {
1331    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
1332    fn from_node(
1333        node: ::treesitter_types::tree_sitter::Node<'tree>,
1334        src: &'tree [u8],
1335    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
1336        debug_assert_eq!(node.kind(), "array");
1337        Ok(Self {
1338            span: ::treesitter_types::Span::from(node),
1339            children: {
1340                #[allow(clippy::suspicious_else_formatting)]
1341                let non_field_children = {
1342                    let mut cursor = node.walk();
1343                    let mut result = ::std::vec::Vec::new();
1344                    if cursor.goto_first_child() {
1345                        loop {
1346                            if cursor.field_name().is_none()
1347                                && cursor.node().is_named()
1348                                && !cursor.node().is_extra()
1349                            {
1350                                result.push(cursor.node());
1351                            }
1352                            if !cursor.goto_next_sibling() {
1353                                break;
1354                            }
1355                        }
1356                    }
1357                    result
1358                };
1359                let mut items = ::std::vec::Vec::new();
1360                for child in non_field_children {
1361                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
1362                        <ArrayChildren as ::treesitter_types::FromNode>::from_node(child, src)
1363                    })?);
1364                }
1365                items
1366            },
1367        })
1368    }
1369}
1370impl ::treesitter_types::Spanned for Array<'_> {
1371    fn span(&self) -> ::treesitter_types::Span {
1372        self.span
1373    }
1374}
1375#[derive(Debug, Clone, PartialEq, Eq)]
1376pub struct ArrayPattern<'tree> {
1377    pub span: ::treesitter_types::Span,
1378    pub children: ::std::vec::Vec<ArrayPatternChildren<'tree>>,
1379}
1380impl<'tree> ::treesitter_types::FromNode<'tree> for ArrayPattern<'tree> {
1381    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
1382    fn from_node(
1383        node: ::treesitter_types::tree_sitter::Node<'tree>,
1384        src: &'tree [u8],
1385    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
1386        debug_assert_eq!(node.kind(), "array_pattern");
1387        Ok(Self {
1388            span: ::treesitter_types::Span::from(node),
1389            children: {
1390                #[allow(clippy::suspicious_else_formatting)]
1391                let non_field_children = {
1392                    let mut cursor = node.walk();
1393                    let mut result = ::std::vec::Vec::new();
1394                    if cursor.goto_first_child() {
1395                        loop {
1396                            if cursor.field_name().is_none()
1397                                && cursor.node().is_named()
1398                                && !cursor.node().is_extra()
1399                            {
1400                                result.push(cursor.node());
1401                            }
1402                            if !cursor.goto_next_sibling() {
1403                                break;
1404                            }
1405                        }
1406                    }
1407                    result
1408                };
1409                let mut items = ::std::vec::Vec::new();
1410                for child in non_field_children {
1411                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
1412                        <ArrayPatternChildren as ::treesitter_types::FromNode>::from_node(
1413                            child, src,
1414                        )
1415                    })?);
1416                }
1417                items
1418            },
1419        })
1420    }
1421}
1422impl ::treesitter_types::Spanned for ArrayPattern<'_> {
1423    fn span(&self) -> ::treesitter_types::Span {
1424        self.span
1425    }
1426}
1427#[derive(Debug, Clone, PartialEq, Eq)]
1428pub struct ArrayType<'tree> {
1429    pub span: ::treesitter_types::Span,
1430    pub children: PrimaryType<'tree>,
1431}
1432impl<'tree> ::treesitter_types::FromNode<'tree> for ArrayType<'tree> {
1433    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
1434    fn from_node(
1435        node: ::treesitter_types::tree_sitter::Node<'tree>,
1436        src: &'tree [u8],
1437    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
1438        debug_assert_eq!(node.kind(), "array_type");
1439        Ok(Self {
1440            span: ::treesitter_types::Span::from(node),
1441            children: {
1442                #[allow(clippy::suspicious_else_formatting)]
1443                let non_field_children = {
1444                    let mut cursor = node.walk();
1445                    let mut result = ::std::vec::Vec::new();
1446                    if cursor.goto_first_child() {
1447                        loop {
1448                            if cursor.field_name().is_none()
1449                                && cursor.node().is_named()
1450                                && !cursor.node().is_extra()
1451                            {
1452                                result.push(cursor.node());
1453                            }
1454                            if !cursor.goto_next_sibling() {
1455                                break;
1456                            }
1457                        }
1458                    }
1459                    result
1460                };
1461                let child = if let Some(&c) = non_field_children.first() {
1462                    c
1463                } else {
1464                    let mut fallback_cursor = node.walk();
1465                    let mut fallback_child = None;
1466                    if fallback_cursor.goto_first_child() {
1467                        loop {
1468                            if fallback_cursor.field_name().is_none()
1469                                && !fallback_cursor.node().is_extra()
1470                            {
1471                                let candidate = fallback_cursor.node();
1472                                #[allow(clippy::needless_question_mark)]
1473                                if (|| -> ::core::result::Result<
1474                                    _,
1475                                    ::treesitter_types::ParseError,
1476                                > {
1477                                    let child = candidate;
1478                                    Ok(
1479                                        ::treesitter_types::runtime::maybe_grow_stack(|| <PrimaryType as ::treesitter_types::FromNode>::from_node(
1480                                            child,
1481                                            src,
1482                                        ))?,
1483                                    )
1484                                })()
1485                                    .is_ok()
1486                                {
1487                                    fallback_child = Some(candidate);
1488                                    break;
1489                                }
1490                            }
1491                            if !fallback_cursor.goto_next_sibling() {
1492                                break;
1493                            }
1494                        }
1495                    }
1496                    if fallback_child.is_none() {
1497                        let mut cursor2 = node.walk();
1498                        if cursor2.goto_first_child() {
1499                            loop {
1500                                if cursor2.node().is_named() && !cursor2.node().is_extra() {
1501                                    let candidate = cursor2.node();
1502                                    #[allow(clippy::needless_question_mark)]
1503                                    if (|| -> ::core::result::Result<
1504                                        _,
1505                                        ::treesitter_types::ParseError,
1506                                    > {
1507                                        let child = candidate;
1508                                        Ok(
1509                                            ::treesitter_types::runtime::maybe_grow_stack(|| <PrimaryType as ::treesitter_types::FromNode>::from_node(
1510                                                child,
1511                                                src,
1512                                            ))?,
1513                                        )
1514                                    })()
1515                                        .is_ok()
1516                                    {
1517                                        fallback_child = Some(candidate);
1518                                        break;
1519                                    }
1520                                }
1521                                if !cursor2.goto_next_sibling() {
1522                                    break;
1523                                }
1524                            }
1525                        }
1526                    }
1527                    fallback_child.ok_or_else(|| {
1528                        ::treesitter_types::ParseError::missing_field("children", node)
1529                    })?
1530                };
1531                ::treesitter_types::runtime::maybe_grow_stack(|| {
1532                    <PrimaryType as ::treesitter_types::FromNode>::from_node(child, src)
1533                })?
1534            },
1535        })
1536    }
1537}
1538impl ::treesitter_types::Spanned for ArrayType<'_> {
1539    fn span(&self) -> ::treesitter_types::Span {
1540        self.span
1541    }
1542}
1543#[derive(Debug, Clone, PartialEq, Eq)]
1544pub struct ArrowFunction<'tree> {
1545    pub span: ::treesitter_types::Span,
1546    pub body: ArrowFunctionBody<'tree>,
1547    pub parameter: ::core::option::Option<Identifier<'tree>>,
1548    pub parameters: ::core::option::Option<FormalParameters<'tree>>,
1549    pub return_type: ::core::option::Option<ArrowFunctionReturnType<'tree>>,
1550    pub type_parameters: ::core::option::Option<TypeParameters<'tree>>,
1551}
1552impl<'tree> ::treesitter_types::FromNode<'tree> for ArrowFunction<'tree> {
1553    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
1554    fn from_node(
1555        node: ::treesitter_types::tree_sitter::Node<'tree>,
1556        src: &'tree [u8],
1557    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
1558        debug_assert_eq!(node.kind(), "arrow_function");
1559        Ok(Self {
1560            span: ::treesitter_types::Span::from(node),
1561            body: {
1562                let child = node
1563                    .child_by_field_name("body")
1564                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("body", node))?;
1565                ::treesitter_types::runtime::maybe_grow_stack(|| {
1566                    <ArrowFunctionBody as ::treesitter_types::FromNode>::from_node(child, src)
1567                })?
1568            },
1569            parameter: match node.child_by_field_name("parameter") {
1570                Some(child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
1571                    <Identifier as ::treesitter_types::FromNode>::from_node(child, src)
1572                })?),
1573                None => None,
1574            },
1575            parameters: match node.child_by_field_name("parameters") {
1576                Some(child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
1577                    <FormalParameters as ::treesitter_types::FromNode>::from_node(child, src)
1578                })?),
1579                None => None,
1580            },
1581            return_type: match node.child_by_field_name("return_type") {
1582                Some(child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
1583                    <ArrowFunctionReturnType as ::treesitter_types::FromNode>::from_node(child, src)
1584                })?),
1585                None => None,
1586            },
1587            type_parameters: match node.child_by_field_name("type_parameters") {
1588                Some(child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
1589                    <TypeParameters as ::treesitter_types::FromNode>::from_node(child, src)
1590                })?),
1591                None => None,
1592            },
1593        })
1594    }
1595}
1596impl ::treesitter_types::Spanned for ArrowFunction<'_> {
1597    fn span(&self) -> ::treesitter_types::Span {
1598        self.span
1599    }
1600}
1601#[derive(Debug, Clone, PartialEq, Eq)]
1602pub struct AsExpression<'tree> {
1603    pub span: ::treesitter_types::Span,
1604    pub children: ::std::vec::Vec<AsExpressionChildren<'tree>>,
1605}
1606impl<'tree> ::treesitter_types::FromNode<'tree> for AsExpression<'tree> {
1607    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
1608    fn from_node(
1609        node: ::treesitter_types::tree_sitter::Node<'tree>,
1610        src: &'tree [u8],
1611    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
1612        debug_assert_eq!(node.kind(), "as_expression");
1613        Ok(Self {
1614            span: ::treesitter_types::Span::from(node),
1615            children: {
1616                #[allow(clippy::suspicious_else_formatting)]
1617                let non_field_children = {
1618                    let mut cursor = node.walk();
1619                    let mut result = ::std::vec::Vec::new();
1620                    if cursor.goto_first_child() {
1621                        loop {
1622                            if cursor.field_name().is_none()
1623                                && cursor.node().is_named()
1624                                && !cursor.node().is_extra()
1625                            {
1626                                result.push(cursor.node());
1627                            }
1628                            if !cursor.goto_next_sibling() {
1629                                break;
1630                            }
1631                        }
1632                    }
1633                    result
1634                };
1635                let mut items = ::std::vec::Vec::new();
1636                for child in non_field_children {
1637                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
1638                        <AsExpressionChildren as ::treesitter_types::FromNode>::from_node(
1639                            child, src,
1640                        )
1641                    })?);
1642                }
1643                items
1644            },
1645        })
1646    }
1647}
1648impl ::treesitter_types::Spanned for AsExpression<'_> {
1649    fn span(&self) -> ::treesitter_types::Span {
1650        self.span
1651    }
1652}
1653#[derive(Debug, Clone, PartialEq, Eq)]
1654pub struct Asserts<'tree> {
1655    pub span: ::treesitter_types::Span,
1656    pub children: AssertsChildren<'tree>,
1657}
1658impl<'tree> ::treesitter_types::FromNode<'tree> for Asserts<'tree> {
1659    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
1660    fn from_node(
1661        node: ::treesitter_types::tree_sitter::Node<'tree>,
1662        src: &'tree [u8],
1663    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
1664        debug_assert_eq!(node.kind(), "asserts");
1665        Ok(Self {
1666            span: ::treesitter_types::Span::from(node),
1667            children: {
1668                #[allow(clippy::suspicious_else_formatting)]
1669                let non_field_children = {
1670                    let mut cursor = node.walk();
1671                    let mut result = ::std::vec::Vec::new();
1672                    if cursor.goto_first_child() {
1673                        loop {
1674                            if cursor.field_name().is_none()
1675                                && cursor.node().is_named()
1676                                && !cursor.node().is_extra()
1677                            {
1678                                result.push(cursor.node());
1679                            }
1680                            if !cursor.goto_next_sibling() {
1681                                break;
1682                            }
1683                        }
1684                    }
1685                    result
1686                };
1687                let child = if let Some(&c) = non_field_children.first() {
1688                    c
1689                } else {
1690                    let mut fallback_cursor = node.walk();
1691                    let mut fallback_child = None;
1692                    if fallback_cursor.goto_first_child() {
1693                        loop {
1694                            if fallback_cursor.field_name().is_none()
1695                                && !fallback_cursor.node().is_extra()
1696                            {
1697                                let candidate = fallback_cursor.node();
1698                                #[allow(clippy::needless_question_mark)]
1699                                if (|| -> ::core::result::Result<
1700                                    _,
1701                                    ::treesitter_types::ParseError,
1702                                > {
1703                                    let child = candidate;
1704                                    Ok(
1705                                        ::treesitter_types::runtime::maybe_grow_stack(|| <AssertsChildren as ::treesitter_types::FromNode>::from_node(
1706                                            child,
1707                                            src,
1708                                        ))?,
1709                                    )
1710                                })()
1711                                    .is_ok()
1712                                {
1713                                    fallback_child = Some(candidate);
1714                                    break;
1715                                }
1716                            }
1717                            if !fallback_cursor.goto_next_sibling() {
1718                                break;
1719                            }
1720                        }
1721                    }
1722                    if fallback_child.is_none() {
1723                        let mut cursor2 = node.walk();
1724                        if cursor2.goto_first_child() {
1725                            loop {
1726                                if cursor2.node().is_named() && !cursor2.node().is_extra() {
1727                                    let candidate = cursor2.node();
1728                                    #[allow(clippy::needless_question_mark)]
1729                                    if (|| -> ::core::result::Result<
1730                                        _,
1731                                        ::treesitter_types::ParseError,
1732                                    > {
1733                                        let child = candidate;
1734                                        Ok(
1735                                            ::treesitter_types::runtime::maybe_grow_stack(|| <AssertsChildren as ::treesitter_types::FromNode>::from_node(
1736                                                child,
1737                                                src,
1738                                            ))?,
1739                                        )
1740                                    })()
1741                                        .is_ok()
1742                                    {
1743                                        fallback_child = Some(candidate);
1744                                        break;
1745                                    }
1746                                }
1747                                if !cursor2.goto_next_sibling() {
1748                                    break;
1749                                }
1750                            }
1751                        }
1752                    }
1753                    fallback_child.ok_or_else(|| {
1754                        ::treesitter_types::ParseError::missing_field("children", node)
1755                    })?
1756                };
1757                ::treesitter_types::runtime::maybe_grow_stack(|| {
1758                    <AssertsChildren as ::treesitter_types::FromNode>::from_node(child, src)
1759                })?
1760            },
1761        })
1762    }
1763}
1764impl ::treesitter_types::Spanned for Asserts<'_> {
1765    fn span(&self) -> ::treesitter_types::Span {
1766        self.span
1767    }
1768}
1769#[derive(Debug, Clone, PartialEq, Eq)]
1770pub struct AssertsAnnotation<'tree> {
1771    pub span: ::treesitter_types::Span,
1772    pub children: Asserts<'tree>,
1773}
1774impl<'tree> ::treesitter_types::FromNode<'tree> for AssertsAnnotation<'tree> {
1775    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
1776    fn from_node(
1777        node: ::treesitter_types::tree_sitter::Node<'tree>,
1778        src: &'tree [u8],
1779    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
1780        debug_assert_eq!(node.kind(), "asserts_annotation");
1781        Ok(Self {
1782            span: ::treesitter_types::Span::from(node),
1783            children: {
1784                #[allow(clippy::suspicious_else_formatting)]
1785                let non_field_children = {
1786                    let mut cursor = node.walk();
1787                    let mut result = ::std::vec::Vec::new();
1788                    if cursor.goto_first_child() {
1789                        loop {
1790                            if cursor.field_name().is_none()
1791                                && cursor.node().is_named()
1792                                && !cursor.node().is_extra()
1793                            {
1794                                result.push(cursor.node());
1795                            }
1796                            if !cursor.goto_next_sibling() {
1797                                break;
1798                            }
1799                        }
1800                    }
1801                    result
1802                };
1803                let child = if let Some(&c) = non_field_children.first() {
1804                    c
1805                } else {
1806                    let mut fallback_cursor = node.walk();
1807                    let mut fallback_child = None;
1808                    if fallback_cursor.goto_first_child() {
1809                        loop {
1810                            if fallback_cursor.field_name().is_none()
1811                                && !fallback_cursor.node().is_extra()
1812                            {
1813                                let candidate = fallback_cursor.node();
1814                                #[allow(clippy::needless_question_mark)]
1815                                if (|| -> ::core::result::Result<
1816                                    _,
1817                                    ::treesitter_types::ParseError,
1818                                > {
1819                                    let child = candidate;
1820                                    Ok(
1821                                        ::treesitter_types::runtime::maybe_grow_stack(|| <Asserts as ::treesitter_types::FromNode>::from_node(
1822                                            child,
1823                                            src,
1824                                        ))?,
1825                                    )
1826                                })()
1827                                    .is_ok()
1828                                {
1829                                    fallback_child = Some(candidate);
1830                                    break;
1831                                }
1832                            }
1833                            if !fallback_cursor.goto_next_sibling() {
1834                                break;
1835                            }
1836                        }
1837                    }
1838                    if fallback_child.is_none() {
1839                        let mut cursor2 = node.walk();
1840                        if cursor2.goto_first_child() {
1841                            loop {
1842                                if cursor2.node().is_named() && !cursor2.node().is_extra() {
1843                                    let candidate = cursor2.node();
1844                                    #[allow(clippy::needless_question_mark)]
1845                                    if (|| -> ::core::result::Result<
1846                                        _,
1847                                        ::treesitter_types::ParseError,
1848                                    > {
1849                                        let child = candidate;
1850                                        Ok(
1851                                            ::treesitter_types::runtime::maybe_grow_stack(|| <Asserts as ::treesitter_types::FromNode>::from_node(
1852                                                child,
1853                                                src,
1854                                            ))?,
1855                                        )
1856                                    })()
1857                                        .is_ok()
1858                                    {
1859                                        fallback_child = Some(candidate);
1860                                        break;
1861                                    }
1862                                }
1863                                if !cursor2.goto_next_sibling() {
1864                                    break;
1865                                }
1866                            }
1867                        }
1868                    }
1869                    fallback_child.ok_or_else(|| {
1870                        ::treesitter_types::ParseError::missing_field("children", node)
1871                    })?
1872                };
1873                ::treesitter_types::runtime::maybe_grow_stack(|| {
1874                    <Asserts as ::treesitter_types::FromNode>::from_node(child, src)
1875                })?
1876            },
1877        })
1878    }
1879}
1880impl ::treesitter_types::Spanned for AssertsAnnotation<'_> {
1881    fn span(&self) -> ::treesitter_types::Span {
1882        self.span
1883    }
1884}
1885#[derive(Debug, Clone, PartialEq, Eq)]
1886pub struct AssignmentExpression<'tree> {
1887    pub span: ::treesitter_types::Span,
1888    pub left: AssignmentExpressionLeft<'tree>,
1889    pub right: Expression<'tree>,
1890}
1891impl<'tree> ::treesitter_types::FromNode<'tree> for AssignmentExpression<'tree> {
1892    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
1893    fn from_node(
1894        node: ::treesitter_types::tree_sitter::Node<'tree>,
1895        src: &'tree [u8],
1896    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
1897        debug_assert_eq!(node.kind(), "assignment_expression");
1898        Ok(Self {
1899            span: ::treesitter_types::Span::from(node),
1900            left: {
1901                let child = node
1902                    .child_by_field_name("left")
1903                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("left", node))?;
1904                ::treesitter_types::runtime::maybe_grow_stack(|| {
1905                    <AssignmentExpressionLeft as ::treesitter_types::FromNode>::from_node(
1906                        child, src,
1907                    )
1908                })?
1909            },
1910            right: {
1911                let child = node
1912                    .child_by_field_name("right")
1913                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("right", node))?;
1914                ::treesitter_types::runtime::maybe_grow_stack(|| {
1915                    <Expression as ::treesitter_types::FromNode>::from_node(child, src)
1916                })?
1917            },
1918        })
1919    }
1920}
1921impl ::treesitter_types::Spanned for AssignmentExpression<'_> {
1922    fn span(&self) -> ::treesitter_types::Span {
1923        self.span
1924    }
1925}
1926#[derive(Debug, Clone, PartialEq, Eq)]
1927pub struct AssignmentPattern<'tree> {
1928    pub span: ::treesitter_types::Span,
1929    pub left: Pattern<'tree>,
1930    pub right: Expression<'tree>,
1931}
1932impl<'tree> ::treesitter_types::FromNode<'tree> for AssignmentPattern<'tree> {
1933    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
1934    fn from_node(
1935        node: ::treesitter_types::tree_sitter::Node<'tree>,
1936        src: &'tree [u8],
1937    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
1938        debug_assert_eq!(node.kind(), "assignment_pattern");
1939        Ok(Self {
1940            span: ::treesitter_types::Span::from(node),
1941            left: {
1942                let child = node
1943                    .child_by_field_name("left")
1944                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("left", node))?;
1945                ::treesitter_types::runtime::maybe_grow_stack(|| {
1946                    <Pattern as ::treesitter_types::FromNode>::from_node(child, src)
1947                })?
1948            },
1949            right: {
1950                let child = node
1951                    .child_by_field_name("right")
1952                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("right", node))?;
1953                ::treesitter_types::runtime::maybe_grow_stack(|| {
1954                    <Expression as ::treesitter_types::FromNode>::from_node(child, src)
1955                })?
1956            },
1957        })
1958    }
1959}
1960impl ::treesitter_types::Spanned for AssignmentPattern<'_> {
1961    fn span(&self) -> ::treesitter_types::Span {
1962        self.span
1963    }
1964}
1965#[derive(Debug, Clone, PartialEq, Eq)]
1966pub struct AugmentedAssignmentExpression<'tree> {
1967    pub span: ::treesitter_types::Span,
1968    pub left: AugmentedAssignmentExpressionLeft<'tree>,
1969    pub operator: AugmentedAssignmentExpressionOperator,
1970    pub right: Expression<'tree>,
1971}
1972impl<'tree> ::treesitter_types::FromNode<'tree> for AugmentedAssignmentExpression<'tree> {
1973    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
1974    fn from_node(
1975        node: ::treesitter_types::tree_sitter::Node<'tree>,
1976        src: &'tree [u8],
1977    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
1978        debug_assert_eq!(node.kind(), "augmented_assignment_expression");
1979        Ok(Self {
1980            span: ::treesitter_types::Span::from(node),
1981            left: {
1982                let child = node
1983                    .child_by_field_name("left")
1984                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("left", node))?;
1985                ::treesitter_types::runtime::maybe_grow_stack(|| {
1986                    <AugmentedAssignmentExpressionLeft as ::treesitter_types::FromNode>::from_node(
1987                        child, src,
1988                    )
1989                })?
1990            },
1991            operator: {
1992                let child = node.child_by_field_name("operator").ok_or_else(|| {
1993                    ::treesitter_types::ParseError::missing_field("operator", node)
1994                })?;
1995                ::treesitter_types::runtime::maybe_grow_stack(|| {
1996                    <AugmentedAssignmentExpressionOperator as ::treesitter_types::FromNode>::from_node(
1997                    child,
1998                    src,
1999                )
2000                })?
2001            },
2002            right: {
2003                let child = node
2004                    .child_by_field_name("right")
2005                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("right", node))?;
2006                ::treesitter_types::runtime::maybe_grow_stack(|| {
2007                    <Expression as ::treesitter_types::FromNode>::from_node(child, src)
2008                })?
2009            },
2010        })
2011    }
2012}
2013impl ::treesitter_types::Spanned for AugmentedAssignmentExpression<'_> {
2014    fn span(&self) -> ::treesitter_types::Span {
2015        self.span
2016    }
2017}
2018#[derive(Debug, Clone, PartialEq, Eq)]
2019pub struct AwaitExpression<'tree> {
2020    pub span: ::treesitter_types::Span,
2021    pub children: Expression<'tree>,
2022}
2023impl<'tree> ::treesitter_types::FromNode<'tree> for AwaitExpression<'tree> {
2024    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
2025    fn from_node(
2026        node: ::treesitter_types::tree_sitter::Node<'tree>,
2027        src: &'tree [u8],
2028    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
2029        debug_assert_eq!(node.kind(), "await_expression");
2030        Ok(Self {
2031            span: ::treesitter_types::Span::from(node),
2032            children: {
2033                #[allow(clippy::suspicious_else_formatting)]
2034                let non_field_children = {
2035                    let mut cursor = node.walk();
2036                    let mut result = ::std::vec::Vec::new();
2037                    if cursor.goto_first_child() {
2038                        loop {
2039                            if cursor.field_name().is_none()
2040                                && cursor.node().is_named()
2041                                && !cursor.node().is_extra()
2042                            {
2043                                result.push(cursor.node());
2044                            }
2045                            if !cursor.goto_next_sibling() {
2046                                break;
2047                            }
2048                        }
2049                    }
2050                    result
2051                };
2052                let child = if let Some(&c) = non_field_children.first() {
2053                    c
2054                } else {
2055                    let mut fallback_cursor = node.walk();
2056                    let mut fallback_child = None;
2057                    if fallback_cursor.goto_first_child() {
2058                        loop {
2059                            if fallback_cursor.field_name().is_none()
2060                                && !fallback_cursor.node().is_extra()
2061                            {
2062                                let candidate = fallback_cursor.node();
2063                                #[allow(clippy::needless_question_mark)]
2064                                if (|| -> ::core::result::Result<
2065                                    _,
2066                                    ::treesitter_types::ParseError,
2067                                > {
2068                                    let child = candidate;
2069                                    Ok(
2070                                        ::treesitter_types::runtime::maybe_grow_stack(|| <Expression as ::treesitter_types::FromNode>::from_node(
2071                                            child,
2072                                            src,
2073                                        ))?,
2074                                    )
2075                                })()
2076                                    .is_ok()
2077                                {
2078                                    fallback_child = Some(candidate);
2079                                    break;
2080                                }
2081                            }
2082                            if !fallback_cursor.goto_next_sibling() {
2083                                break;
2084                            }
2085                        }
2086                    }
2087                    if fallback_child.is_none() {
2088                        let mut cursor2 = node.walk();
2089                        if cursor2.goto_first_child() {
2090                            loop {
2091                                if cursor2.node().is_named() && !cursor2.node().is_extra() {
2092                                    let candidate = cursor2.node();
2093                                    #[allow(clippy::needless_question_mark)]
2094                                    if (|| -> ::core::result::Result<
2095                                        _,
2096                                        ::treesitter_types::ParseError,
2097                                    > {
2098                                        let child = candidate;
2099                                        Ok(
2100                                            ::treesitter_types::runtime::maybe_grow_stack(|| <Expression as ::treesitter_types::FromNode>::from_node(
2101                                                child,
2102                                                src,
2103                                            ))?,
2104                                        )
2105                                    })()
2106                                        .is_ok()
2107                                    {
2108                                        fallback_child = Some(candidate);
2109                                        break;
2110                                    }
2111                                }
2112                                if !cursor2.goto_next_sibling() {
2113                                    break;
2114                                }
2115                            }
2116                        }
2117                    }
2118                    fallback_child.ok_or_else(|| {
2119                        ::treesitter_types::ParseError::missing_field("children", node)
2120                    })?
2121                };
2122                ::treesitter_types::runtime::maybe_grow_stack(|| {
2123                    <Expression as ::treesitter_types::FromNode>::from_node(child, src)
2124                })?
2125            },
2126        })
2127    }
2128}
2129impl ::treesitter_types::Spanned for AwaitExpression<'_> {
2130    fn span(&self) -> ::treesitter_types::Span {
2131        self.span
2132    }
2133}
2134#[derive(Debug, Clone, PartialEq, Eq)]
2135pub struct BinaryExpression<'tree> {
2136    pub span: ::treesitter_types::Span,
2137    pub left: BinaryExpressionLeft<'tree>,
2138    pub operator: BinaryExpressionOperator,
2139    pub right: Expression<'tree>,
2140}
2141impl<'tree> ::treesitter_types::FromNode<'tree> for BinaryExpression<'tree> {
2142    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
2143    fn from_node(
2144        node: ::treesitter_types::tree_sitter::Node<'tree>,
2145        src: &'tree [u8],
2146    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
2147        debug_assert_eq!(node.kind(), "binary_expression");
2148        Ok(Self {
2149            span: ::treesitter_types::Span::from(node),
2150            left: {
2151                let child = node
2152                    .child_by_field_name("left")
2153                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("left", node))?;
2154                ::treesitter_types::runtime::maybe_grow_stack(|| {
2155                    <BinaryExpressionLeft as ::treesitter_types::FromNode>::from_node(child, src)
2156                })?
2157            },
2158            operator: {
2159                let child = node.child_by_field_name("operator").ok_or_else(|| {
2160                    ::treesitter_types::ParseError::missing_field("operator", node)
2161                })?;
2162                ::treesitter_types::runtime::maybe_grow_stack(|| {
2163                    <BinaryExpressionOperator as ::treesitter_types::FromNode>::from_node(
2164                        child, src,
2165                    )
2166                })?
2167            },
2168            right: {
2169                let child = node
2170                    .child_by_field_name("right")
2171                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("right", node))?;
2172                ::treesitter_types::runtime::maybe_grow_stack(|| {
2173                    <Expression as ::treesitter_types::FromNode>::from_node(child, src)
2174                })?
2175            },
2176        })
2177    }
2178}
2179impl ::treesitter_types::Spanned for BinaryExpression<'_> {
2180    fn span(&self) -> ::treesitter_types::Span {
2181        self.span
2182    }
2183}
2184#[derive(Debug, Clone, PartialEq, Eq)]
2185pub struct BreakStatement<'tree> {
2186    pub span: ::treesitter_types::Span,
2187    pub label: ::core::option::Option<StatementIdentifier<'tree>>,
2188}
2189impl<'tree> ::treesitter_types::FromNode<'tree> for BreakStatement<'tree> {
2190    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
2191    fn from_node(
2192        node: ::treesitter_types::tree_sitter::Node<'tree>,
2193        src: &'tree [u8],
2194    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
2195        debug_assert_eq!(node.kind(), "break_statement");
2196        Ok(Self {
2197            span: ::treesitter_types::Span::from(node),
2198            label: match node.child_by_field_name("label") {
2199                Some(child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
2200                    <StatementIdentifier as ::treesitter_types::FromNode>::from_node(child, src)
2201                })?),
2202                None => None,
2203            },
2204        })
2205    }
2206}
2207impl ::treesitter_types::Spanned for BreakStatement<'_> {
2208    fn span(&self) -> ::treesitter_types::Span {
2209        self.span
2210    }
2211}
2212#[derive(Debug, Clone, PartialEq, Eq)]
2213pub struct CallExpression<'tree> {
2214    pub span: ::treesitter_types::Span,
2215    pub arguments: CallExpressionArguments<'tree>,
2216    pub function: CallExpressionFunction<'tree>,
2217    pub type_arguments: ::core::option::Option<TypeArguments<'tree>>,
2218}
2219impl<'tree> ::treesitter_types::FromNode<'tree> for CallExpression<'tree> {
2220    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
2221    fn from_node(
2222        node: ::treesitter_types::tree_sitter::Node<'tree>,
2223        src: &'tree [u8],
2224    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
2225        debug_assert_eq!(node.kind(), "call_expression");
2226        Ok(Self {
2227            span: ::treesitter_types::Span::from(node),
2228            arguments: {
2229                let child = node.child_by_field_name("arguments").ok_or_else(|| {
2230                    ::treesitter_types::ParseError::missing_field("arguments", node)
2231                })?;
2232                ::treesitter_types::runtime::maybe_grow_stack(|| {
2233                    <CallExpressionArguments as ::treesitter_types::FromNode>::from_node(child, src)
2234                })?
2235            },
2236            function: {
2237                let child = node.child_by_field_name("function").ok_or_else(|| {
2238                    ::treesitter_types::ParseError::missing_field("function", node)
2239                })?;
2240                ::treesitter_types::runtime::maybe_grow_stack(|| {
2241                    <CallExpressionFunction as ::treesitter_types::FromNode>::from_node(child, src)
2242                })?
2243            },
2244            type_arguments: match node.child_by_field_name("type_arguments") {
2245                Some(child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
2246                    <TypeArguments as ::treesitter_types::FromNode>::from_node(child, src)
2247                })?),
2248                None => None,
2249            },
2250        })
2251    }
2252}
2253impl ::treesitter_types::Spanned for CallExpression<'_> {
2254    fn span(&self) -> ::treesitter_types::Span {
2255        self.span
2256    }
2257}
2258#[derive(Debug, Clone, PartialEq, Eq)]
2259pub struct CallSignature<'tree> {
2260    pub span: ::treesitter_types::Span,
2261    pub parameters: FormalParameters<'tree>,
2262    pub return_type: ::core::option::Option<CallSignatureReturnType<'tree>>,
2263    pub type_parameters: ::core::option::Option<TypeParameters<'tree>>,
2264}
2265impl<'tree> ::treesitter_types::FromNode<'tree> for CallSignature<'tree> {
2266    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
2267    fn from_node(
2268        node: ::treesitter_types::tree_sitter::Node<'tree>,
2269        src: &'tree [u8],
2270    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
2271        debug_assert_eq!(node.kind(), "call_signature");
2272        Ok(Self {
2273            span: ::treesitter_types::Span::from(node),
2274            parameters: {
2275                let child = node.child_by_field_name("parameters").ok_or_else(|| {
2276                    ::treesitter_types::ParseError::missing_field("parameters", node)
2277                })?;
2278                ::treesitter_types::runtime::maybe_grow_stack(|| {
2279                    <FormalParameters as ::treesitter_types::FromNode>::from_node(child, src)
2280                })?
2281            },
2282            return_type: match node.child_by_field_name("return_type") {
2283                Some(child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
2284                    <CallSignatureReturnType as ::treesitter_types::FromNode>::from_node(child, src)
2285                })?),
2286                None => None,
2287            },
2288            type_parameters: match node.child_by_field_name("type_parameters") {
2289                Some(child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
2290                    <TypeParameters as ::treesitter_types::FromNode>::from_node(child, src)
2291                })?),
2292                None => None,
2293            },
2294        })
2295    }
2296}
2297impl ::treesitter_types::Spanned for CallSignature<'_> {
2298    fn span(&self) -> ::treesitter_types::Span {
2299        self.span
2300    }
2301}
2302#[derive(Debug, Clone, PartialEq, Eq)]
2303pub struct CatchClause<'tree> {
2304    pub span: ::treesitter_types::Span,
2305    pub body: StatementBlock<'tree>,
2306    pub parameter: ::core::option::Option<CatchClauseParameter<'tree>>,
2307    pub r#type: ::core::option::Option<TypeAnnotation<'tree>>,
2308}
2309impl<'tree> ::treesitter_types::FromNode<'tree> for CatchClause<'tree> {
2310    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
2311    fn from_node(
2312        node: ::treesitter_types::tree_sitter::Node<'tree>,
2313        src: &'tree [u8],
2314    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
2315        debug_assert_eq!(node.kind(), "catch_clause");
2316        Ok(Self {
2317            span: ::treesitter_types::Span::from(node),
2318            body: {
2319                let child = node
2320                    .child_by_field_name("body")
2321                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("body", node))?;
2322                ::treesitter_types::runtime::maybe_grow_stack(|| {
2323                    <StatementBlock as ::treesitter_types::FromNode>::from_node(child, src)
2324                })?
2325            },
2326            parameter: match node.child_by_field_name("parameter") {
2327                Some(child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
2328                    <CatchClauseParameter as ::treesitter_types::FromNode>::from_node(child, src)
2329                })?),
2330                None => None,
2331            },
2332            r#type: match node.child_by_field_name("type") {
2333                Some(child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
2334                    <TypeAnnotation as ::treesitter_types::FromNode>::from_node(child, src)
2335                })?),
2336                None => None,
2337            },
2338        })
2339    }
2340}
2341impl ::treesitter_types::Spanned for CatchClause<'_> {
2342    fn span(&self) -> ::treesitter_types::Span {
2343        self.span
2344    }
2345}
2346#[derive(Debug, Clone, PartialEq, Eq)]
2347pub struct Class<'tree> {
2348    pub span: ::treesitter_types::Span,
2349    pub body: ClassBody<'tree>,
2350    pub decorator: ::std::vec::Vec<Decorator<'tree>>,
2351    pub name: ::core::option::Option<TypeIdentifier<'tree>>,
2352    pub type_parameters: ::core::option::Option<TypeParameters<'tree>>,
2353    pub children: ::core::option::Option<ClassHeritage<'tree>>,
2354}
2355impl<'tree> ::treesitter_types::FromNode<'tree> for Class<'tree> {
2356    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
2357    fn from_node(
2358        node: ::treesitter_types::tree_sitter::Node<'tree>,
2359        src: &'tree [u8],
2360    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
2361        debug_assert_eq!(node.kind(), "class");
2362        Ok(Self {
2363            span: ::treesitter_types::Span::from(node),
2364            body: {
2365                let child = node
2366                    .child_by_field_name("body")
2367                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("body", node))?;
2368                ::treesitter_types::runtime::maybe_grow_stack(|| {
2369                    <ClassBody as ::treesitter_types::FromNode>::from_node(child, src)
2370                })?
2371            },
2372            decorator: {
2373                let mut cursor = node.walk();
2374                let mut items = ::std::vec::Vec::new();
2375                for child in node.children_by_field_name("decorator", &mut cursor) {
2376                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
2377                        <Decorator as ::treesitter_types::FromNode>::from_node(child, src)
2378                    })?);
2379                }
2380                items
2381            },
2382            name: match node.child_by_field_name("name") {
2383                Some(child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
2384                    <TypeIdentifier as ::treesitter_types::FromNode>::from_node(child, src)
2385                })?),
2386                None => None,
2387            },
2388            type_parameters: match node.child_by_field_name("type_parameters") {
2389                Some(child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
2390                    <TypeParameters as ::treesitter_types::FromNode>::from_node(child, src)
2391                })?),
2392                None => None,
2393            },
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                match non_field_children.first() {
2415                    Some(&child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
2416                        <ClassHeritage as ::treesitter_types::FromNode>::from_node(child, src)
2417                    })?),
2418                    None => None,
2419                }
2420            },
2421        })
2422    }
2423}
2424impl ::treesitter_types::Spanned for Class<'_> {
2425    fn span(&self) -> ::treesitter_types::Span {
2426        self.span
2427    }
2428}
2429#[derive(Debug, Clone, PartialEq, Eq)]
2430pub struct ClassBody<'tree> {
2431    pub span: ::treesitter_types::Span,
2432    pub decorator: ::std::vec::Vec<Decorator<'tree>>,
2433    pub children: ::std::vec::Vec<ClassBodyChildren<'tree>>,
2434}
2435impl<'tree> ::treesitter_types::FromNode<'tree> for ClassBody<'tree> {
2436    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
2437    fn from_node(
2438        node: ::treesitter_types::tree_sitter::Node<'tree>,
2439        src: &'tree [u8],
2440    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
2441        debug_assert_eq!(node.kind(), "class_body");
2442        Ok(Self {
2443            span: ::treesitter_types::Span::from(node),
2444            decorator: {
2445                let mut cursor = node.walk();
2446                let mut items = ::std::vec::Vec::new();
2447                for child in node.children_by_field_name("decorator", &mut cursor) {
2448                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
2449                        <Decorator as ::treesitter_types::FromNode>::from_node(child, src)
2450                    })?);
2451                }
2452                items
2453            },
2454            children: {
2455                #[allow(clippy::suspicious_else_formatting)]
2456                let non_field_children = {
2457                    let mut cursor = node.walk();
2458                    let mut result = ::std::vec::Vec::new();
2459                    if cursor.goto_first_child() {
2460                        loop {
2461                            if cursor.field_name().is_none()
2462                                && cursor.node().is_named()
2463                                && !cursor.node().is_extra()
2464                            {
2465                                result.push(cursor.node());
2466                            }
2467                            if !cursor.goto_next_sibling() {
2468                                break;
2469                            }
2470                        }
2471                    }
2472                    result
2473                };
2474                let mut items = ::std::vec::Vec::new();
2475                for child in non_field_children {
2476                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
2477                        <ClassBodyChildren as ::treesitter_types::FromNode>::from_node(child, src)
2478                    })?);
2479                }
2480                items
2481            },
2482        })
2483    }
2484}
2485impl ::treesitter_types::Spanned for ClassBody<'_> {
2486    fn span(&self) -> ::treesitter_types::Span {
2487        self.span
2488    }
2489}
2490#[derive(Debug, Clone, PartialEq, Eq)]
2491pub struct ClassDeclaration<'tree> {
2492    pub span: ::treesitter_types::Span,
2493    pub body: ClassBody<'tree>,
2494    pub decorator: ::std::vec::Vec<Decorator<'tree>>,
2495    pub name: TypeIdentifier<'tree>,
2496    pub type_parameters: ::core::option::Option<TypeParameters<'tree>>,
2497    pub children: ::core::option::Option<ClassHeritage<'tree>>,
2498}
2499impl<'tree> ::treesitter_types::FromNode<'tree> for ClassDeclaration<'tree> {
2500    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
2501    fn from_node(
2502        node: ::treesitter_types::tree_sitter::Node<'tree>,
2503        src: &'tree [u8],
2504    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
2505        debug_assert_eq!(node.kind(), "class_declaration");
2506        Ok(Self {
2507            span: ::treesitter_types::Span::from(node),
2508            body: {
2509                let child = node
2510                    .child_by_field_name("body")
2511                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("body", node))?;
2512                ::treesitter_types::runtime::maybe_grow_stack(|| {
2513                    <ClassBody as ::treesitter_types::FromNode>::from_node(child, src)
2514                })?
2515            },
2516            decorator: {
2517                let mut cursor = node.walk();
2518                let mut items = ::std::vec::Vec::new();
2519                for child in node.children_by_field_name("decorator", &mut cursor) {
2520                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
2521                        <Decorator as ::treesitter_types::FromNode>::from_node(child, src)
2522                    })?);
2523                }
2524                items
2525            },
2526            name: {
2527                let child = node
2528                    .child_by_field_name("name")
2529                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("name", node))?;
2530                ::treesitter_types::runtime::maybe_grow_stack(|| {
2531                    <TypeIdentifier as ::treesitter_types::FromNode>::from_node(child, src)
2532                })?
2533            },
2534            type_parameters: match node.child_by_field_name("type_parameters") {
2535                Some(child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
2536                    <TypeParameters as ::treesitter_types::FromNode>::from_node(child, src)
2537                })?),
2538                None => None,
2539            },
2540            children: {
2541                #[allow(clippy::suspicious_else_formatting)]
2542                let non_field_children = {
2543                    let mut cursor = node.walk();
2544                    let mut result = ::std::vec::Vec::new();
2545                    if cursor.goto_first_child() {
2546                        loop {
2547                            if cursor.field_name().is_none()
2548                                && cursor.node().is_named()
2549                                && !cursor.node().is_extra()
2550                            {
2551                                result.push(cursor.node());
2552                            }
2553                            if !cursor.goto_next_sibling() {
2554                                break;
2555                            }
2556                        }
2557                    }
2558                    result
2559                };
2560                match non_field_children.first() {
2561                    Some(&child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
2562                        <ClassHeritage as ::treesitter_types::FromNode>::from_node(child, src)
2563                    })?),
2564                    None => None,
2565                }
2566            },
2567        })
2568    }
2569}
2570impl ::treesitter_types::Spanned for ClassDeclaration<'_> {
2571    fn span(&self) -> ::treesitter_types::Span {
2572        self.span
2573    }
2574}
2575#[derive(Debug, Clone, PartialEq, Eq)]
2576pub struct ClassHeritage<'tree> {
2577    pub span: ::treesitter_types::Span,
2578    pub children: ::std::vec::Vec<ClassHeritageChildren<'tree>>,
2579}
2580impl<'tree> ::treesitter_types::FromNode<'tree> for ClassHeritage<'tree> {
2581    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
2582    fn from_node(
2583        node: ::treesitter_types::tree_sitter::Node<'tree>,
2584        src: &'tree [u8],
2585    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
2586        debug_assert_eq!(node.kind(), "class_heritage");
2587        Ok(Self {
2588            span: ::treesitter_types::Span::from(node),
2589            children: {
2590                #[allow(clippy::suspicious_else_formatting)]
2591                let non_field_children = {
2592                    let mut cursor = node.walk();
2593                    let mut result = ::std::vec::Vec::new();
2594                    if cursor.goto_first_child() {
2595                        loop {
2596                            if cursor.field_name().is_none()
2597                                && cursor.node().is_named()
2598                                && !cursor.node().is_extra()
2599                            {
2600                                result.push(cursor.node());
2601                            }
2602                            if !cursor.goto_next_sibling() {
2603                                break;
2604                            }
2605                        }
2606                    }
2607                    result
2608                };
2609                let mut items = ::std::vec::Vec::new();
2610                for child in non_field_children {
2611                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
2612                        <ClassHeritageChildren as ::treesitter_types::FromNode>::from_node(
2613                            child, src,
2614                        )
2615                    })?);
2616                }
2617                items
2618            },
2619        })
2620    }
2621}
2622impl ::treesitter_types::Spanned for ClassHeritage<'_> {
2623    fn span(&self) -> ::treesitter_types::Span {
2624        self.span
2625    }
2626}
2627#[derive(Debug, Clone, PartialEq, Eq)]
2628pub struct ClassStaticBlock<'tree> {
2629    pub span: ::treesitter_types::Span,
2630    pub body: StatementBlock<'tree>,
2631}
2632impl<'tree> ::treesitter_types::FromNode<'tree> for ClassStaticBlock<'tree> {
2633    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
2634    fn from_node(
2635        node: ::treesitter_types::tree_sitter::Node<'tree>,
2636        src: &'tree [u8],
2637    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
2638        debug_assert_eq!(node.kind(), "class_static_block");
2639        Ok(Self {
2640            span: ::treesitter_types::Span::from(node),
2641            body: {
2642                let child = node
2643                    .child_by_field_name("body")
2644                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("body", node))?;
2645                ::treesitter_types::runtime::maybe_grow_stack(|| {
2646                    <StatementBlock as ::treesitter_types::FromNode>::from_node(child, src)
2647                })?
2648            },
2649        })
2650    }
2651}
2652impl ::treesitter_types::Spanned for ClassStaticBlock<'_> {
2653    fn span(&self) -> ::treesitter_types::Span {
2654        self.span
2655    }
2656}
2657#[derive(Debug, Clone, PartialEq, Eq)]
2658pub struct ComputedPropertyName<'tree> {
2659    pub span: ::treesitter_types::Span,
2660    pub children: Expression<'tree>,
2661}
2662impl<'tree> ::treesitter_types::FromNode<'tree> for ComputedPropertyName<'tree> {
2663    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
2664    fn from_node(
2665        node: ::treesitter_types::tree_sitter::Node<'tree>,
2666        src: &'tree [u8],
2667    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
2668        debug_assert_eq!(node.kind(), "computed_property_name");
2669        Ok(Self {
2670            span: ::treesitter_types::Span::from(node),
2671            children: {
2672                #[allow(clippy::suspicious_else_formatting)]
2673                let non_field_children = {
2674                    let mut cursor = node.walk();
2675                    let mut result = ::std::vec::Vec::new();
2676                    if cursor.goto_first_child() {
2677                        loop {
2678                            if cursor.field_name().is_none()
2679                                && cursor.node().is_named()
2680                                && !cursor.node().is_extra()
2681                            {
2682                                result.push(cursor.node());
2683                            }
2684                            if !cursor.goto_next_sibling() {
2685                                break;
2686                            }
2687                        }
2688                    }
2689                    result
2690                };
2691                let child = if let Some(&c) = non_field_children.first() {
2692                    c
2693                } else {
2694                    let mut fallback_cursor = node.walk();
2695                    let mut fallback_child = None;
2696                    if fallback_cursor.goto_first_child() {
2697                        loop {
2698                            if fallback_cursor.field_name().is_none()
2699                                && !fallback_cursor.node().is_extra()
2700                            {
2701                                let candidate = fallback_cursor.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                                        ::treesitter_types::runtime::maybe_grow_stack(|| <Expression 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 !fallback_cursor.goto_next_sibling() {
2722                                break;
2723                            }
2724                        }
2725                    }
2726                    if fallback_child.is_none() {
2727                        let mut cursor2 = node.walk();
2728                        if cursor2.goto_first_child() {
2729                            loop {
2730                                if cursor2.node().is_named() && !cursor2.node().is_extra() {
2731                                    let candidate = cursor2.node();
2732                                    #[allow(clippy::needless_question_mark)]
2733                                    if (|| -> ::core::result::Result<
2734                                        _,
2735                                        ::treesitter_types::ParseError,
2736                                    > {
2737                                        let child = candidate;
2738                                        Ok(
2739                                            ::treesitter_types::runtime::maybe_grow_stack(|| <Expression as ::treesitter_types::FromNode>::from_node(
2740                                                child,
2741                                                src,
2742                                            ))?,
2743                                        )
2744                                    })()
2745                                        .is_ok()
2746                                    {
2747                                        fallback_child = Some(candidate);
2748                                        break;
2749                                    }
2750                                }
2751                                if !cursor2.goto_next_sibling() {
2752                                    break;
2753                                }
2754                            }
2755                        }
2756                    }
2757                    fallback_child.ok_or_else(|| {
2758                        ::treesitter_types::ParseError::missing_field("children", node)
2759                    })?
2760                };
2761                ::treesitter_types::runtime::maybe_grow_stack(|| {
2762                    <Expression as ::treesitter_types::FromNode>::from_node(child, src)
2763                })?
2764            },
2765        })
2766    }
2767}
2768impl ::treesitter_types::Spanned for ComputedPropertyName<'_> {
2769    fn span(&self) -> ::treesitter_types::Span {
2770        self.span
2771    }
2772}
2773#[derive(Debug, Clone, PartialEq, Eq)]
2774pub struct ConditionalType<'tree> {
2775    pub span: ::treesitter_types::Span,
2776    pub alternative: Type<'tree>,
2777    pub consequence: Type<'tree>,
2778    pub left: Type<'tree>,
2779    pub right: Type<'tree>,
2780}
2781impl<'tree> ::treesitter_types::FromNode<'tree> for ConditionalType<'tree> {
2782    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
2783    fn from_node(
2784        node: ::treesitter_types::tree_sitter::Node<'tree>,
2785        src: &'tree [u8],
2786    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
2787        debug_assert_eq!(node.kind(), "conditional_type");
2788        Ok(Self {
2789            span: ::treesitter_types::Span::from(node),
2790            alternative: {
2791                let child = node.child_by_field_name("alternative").ok_or_else(|| {
2792                    ::treesitter_types::ParseError::missing_field("alternative", node)
2793                })?;
2794                ::treesitter_types::runtime::maybe_grow_stack(|| {
2795                    <Type as ::treesitter_types::FromNode>::from_node(child, src)
2796                })?
2797            },
2798            consequence: {
2799                let child = node.child_by_field_name("consequence").ok_or_else(|| {
2800                    ::treesitter_types::ParseError::missing_field("consequence", node)
2801                })?;
2802                ::treesitter_types::runtime::maybe_grow_stack(|| {
2803                    <Type as ::treesitter_types::FromNode>::from_node(child, src)
2804                })?
2805            },
2806            left: {
2807                let child = node
2808                    .child_by_field_name("left")
2809                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("left", node))?;
2810                ::treesitter_types::runtime::maybe_grow_stack(|| {
2811                    <Type as ::treesitter_types::FromNode>::from_node(child, src)
2812                })?
2813            },
2814            right: {
2815                let child = node
2816                    .child_by_field_name("right")
2817                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("right", node))?;
2818                ::treesitter_types::runtime::maybe_grow_stack(|| {
2819                    <Type as ::treesitter_types::FromNode>::from_node(child, src)
2820                })?
2821            },
2822        })
2823    }
2824}
2825impl ::treesitter_types::Spanned for ConditionalType<'_> {
2826    fn span(&self) -> ::treesitter_types::Span {
2827        self.span
2828    }
2829}
2830#[derive(Debug, Clone, PartialEq, Eq)]
2831pub struct Constraint<'tree> {
2832    pub span: ::treesitter_types::Span,
2833    pub children: Type<'tree>,
2834}
2835impl<'tree> ::treesitter_types::FromNode<'tree> for Constraint<'tree> {
2836    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
2837    fn from_node(
2838        node: ::treesitter_types::tree_sitter::Node<'tree>,
2839        src: &'tree [u8],
2840    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
2841        debug_assert_eq!(node.kind(), "constraint");
2842        Ok(Self {
2843            span: ::treesitter_types::Span::from(node),
2844            children: {
2845                #[allow(clippy::suspicious_else_formatting)]
2846                let non_field_children = {
2847                    let mut cursor = node.walk();
2848                    let mut result = ::std::vec::Vec::new();
2849                    if cursor.goto_first_child() {
2850                        loop {
2851                            if cursor.field_name().is_none()
2852                                && cursor.node().is_named()
2853                                && !cursor.node().is_extra()
2854                            {
2855                                result.push(cursor.node());
2856                            }
2857                            if !cursor.goto_next_sibling() {
2858                                break;
2859                            }
2860                        }
2861                    }
2862                    result
2863                };
2864                let child = if let Some(&c) = non_field_children.first() {
2865                    c
2866                } else {
2867                    let mut fallback_cursor = node.walk();
2868                    let mut fallback_child = None;
2869                    if fallback_cursor.goto_first_child() {
2870                        loop {
2871                            if fallback_cursor.field_name().is_none()
2872                                && !fallback_cursor.node().is_extra()
2873                            {
2874                                let candidate = fallback_cursor.node();
2875                                #[allow(clippy::needless_question_mark)]
2876                                if (|| -> ::core::result::Result<
2877                                    _,
2878                                    ::treesitter_types::ParseError,
2879                                > {
2880                                    let child = candidate;
2881                                    Ok(
2882                                        ::treesitter_types::runtime::maybe_grow_stack(|| <Type as ::treesitter_types::FromNode>::from_node(
2883                                            child,
2884                                            src,
2885                                        ))?,
2886                                    )
2887                                })()
2888                                    .is_ok()
2889                                {
2890                                    fallback_child = Some(candidate);
2891                                    break;
2892                                }
2893                            }
2894                            if !fallback_cursor.goto_next_sibling() {
2895                                break;
2896                            }
2897                        }
2898                    }
2899                    if fallback_child.is_none() {
2900                        let mut cursor2 = node.walk();
2901                        if cursor2.goto_first_child() {
2902                            loop {
2903                                if cursor2.node().is_named() && !cursor2.node().is_extra() {
2904                                    let candidate = cursor2.node();
2905                                    #[allow(clippy::needless_question_mark)]
2906                                    if (|| -> ::core::result::Result<
2907                                        _,
2908                                        ::treesitter_types::ParseError,
2909                                    > {
2910                                        let child = candidate;
2911                                        Ok(
2912                                            ::treesitter_types::runtime::maybe_grow_stack(|| <Type as ::treesitter_types::FromNode>::from_node(
2913                                                child,
2914                                                src,
2915                                            ))?,
2916                                        )
2917                                    })()
2918                                        .is_ok()
2919                                    {
2920                                        fallback_child = Some(candidate);
2921                                        break;
2922                                    }
2923                                }
2924                                if !cursor2.goto_next_sibling() {
2925                                    break;
2926                                }
2927                            }
2928                        }
2929                    }
2930                    fallback_child.ok_or_else(|| {
2931                        ::treesitter_types::ParseError::missing_field("children", node)
2932                    })?
2933                };
2934                ::treesitter_types::runtime::maybe_grow_stack(|| {
2935                    <Type as ::treesitter_types::FromNode>::from_node(child, src)
2936                })?
2937            },
2938        })
2939    }
2940}
2941impl ::treesitter_types::Spanned for Constraint<'_> {
2942    fn span(&self) -> ::treesitter_types::Span {
2943        self.span
2944    }
2945}
2946#[derive(Debug, Clone, PartialEq, Eq)]
2947pub struct ConstructSignature<'tree> {
2948    pub span: ::treesitter_types::Span,
2949    pub parameters: FormalParameters<'tree>,
2950    pub r#type: ::core::option::Option<TypeAnnotation<'tree>>,
2951    pub type_parameters: ::core::option::Option<TypeParameters<'tree>>,
2952}
2953impl<'tree> ::treesitter_types::FromNode<'tree> for ConstructSignature<'tree> {
2954    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
2955    fn from_node(
2956        node: ::treesitter_types::tree_sitter::Node<'tree>,
2957        src: &'tree [u8],
2958    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
2959        debug_assert_eq!(node.kind(), "construct_signature");
2960        Ok(Self {
2961            span: ::treesitter_types::Span::from(node),
2962            parameters: {
2963                let child = node.child_by_field_name("parameters").ok_or_else(|| {
2964                    ::treesitter_types::ParseError::missing_field("parameters", node)
2965                })?;
2966                ::treesitter_types::runtime::maybe_grow_stack(|| {
2967                    <FormalParameters as ::treesitter_types::FromNode>::from_node(child, src)
2968                })?
2969            },
2970            r#type: match node.child_by_field_name("type") {
2971                Some(child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
2972                    <TypeAnnotation as ::treesitter_types::FromNode>::from_node(child, src)
2973                })?),
2974                None => None,
2975            },
2976            type_parameters: match node.child_by_field_name("type_parameters") {
2977                Some(child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
2978                    <TypeParameters as ::treesitter_types::FromNode>::from_node(child, src)
2979                })?),
2980                None => None,
2981            },
2982        })
2983    }
2984}
2985impl ::treesitter_types::Spanned for ConstructSignature<'_> {
2986    fn span(&self) -> ::treesitter_types::Span {
2987        self.span
2988    }
2989}
2990#[derive(Debug, Clone, PartialEq, Eq)]
2991pub struct ConstructorType<'tree> {
2992    pub span: ::treesitter_types::Span,
2993    pub parameters: FormalParameters<'tree>,
2994    pub r#type: Type<'tree>,
2995    pub type_parameters: ::core::option::Option<TypeParameters<'tree>>,
2996}
2997impl<'tree> ::treesitter_types::FromNode<'tree> for ConstructorType<'tree> {
2998    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
2999    fn from_node(
3000        node: ::treesitter_types::tree_sitter::Node<'tree>,
3001        src: &'tree [u8],
3002    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
3003        debug_assert_eq!(node.kind(), "constructor_type");
3004        Ok(Self {
3005            span: ::treesitter_types::Span::from(node),
3006            parameters: {
3007                let child = node.child_by_field_name("parameters").ok_or_else(|| {
3008                    ::treesitter_types::ParseError::missing_field("parameters", node)
3009                })?;
3010                ::treesitter_types::runtime::maybe_grow_stack(|| {
3011                    <FormalParameters as ::treesitter_types::FromNode>::from_node(child, src)
3012                })?
3013            },
3014            r#type: {
3015                let child = node
3016                    .child_by_field_name("type")
3017                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("type", node))?;
3018                ::treesitter_types::runtime::maybe_grow_stack(|| {
3019                    <Type as ::treesitter_types::FromNode>::from_node(child, src)
3020                })?
3021            },
3022            type_parameters: match node.child_by_field_name("type_parameters") {
3023                Some(child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
3024                    <TypeParameters as ::treesitter_types::FromNode>::from_node(child, src)
3025                })?),
3026                None => None,
3027            },
3028        })
3029    }
3030}
3031impl ::treesitter_types::Spanned for ConstructorType<'_> {
3032    fn span(&self) -> ::treesitter_types::Span {
3033        self.span
3034    }
3035}
3036#[derive(Debug, Clone, PartialEq, Eq)]
3037pub struct ContinueStatement<'tree> {
3038    pub span: ::treesitter_types::Span,
3039    pub label: ::core::option::Option<StatementIdentifier<'tree>>,
3040}
3041impl<'tree> ::treesitter_types::FromNode<'tree> for ContinueStatement<'tree> {
3042    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
3043    fn from_node(
3044        node: ::treesitter_types::tree_sitter::Node<'tree>,
3045        src: &'tree [u8],
3046    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
3047        debug_assert_eq!(node.kind(), "continue_statement");
3048        Ok(Self {
3049            span: ::treesitter_types::Span::from(node),
3050            label: match node.child_by_field_name("label") {
3051                Some(child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
3052                    <StatementIdentifier as ::treesitter_types::FromNode>::from_node(child, src)
3053                })?),
3054                None => None,
3055            },
3056        })
3057    }
3058}
3059impl ::treesitter_types::Spanned for ContinueStatement<'_> {
3060    fn span(&self) -> ::treesitter_types::Span {
3061        self.span
3062    }
3063}
3064#[derive(Debug, Clone, PartialEq, Eq)]
3065pub struct DebuggerStatement<'tree> {
3066    pub span: ::treesitter_types::Span,
3067    text: &'tree str,
3068}
3069impl<'tree> ::treesitter_types::FromNode<'tree> for DebuggerStatement<'tree> {
3070    fn from_node(
3071        node: ::treesitter_types::tree_sitter::Node<'tree>,
3072        src: &'tree [u8],
3073    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
3074        debug_assert_eq!(node.kind(), "debugger_statement");
3075        Ok(Self {
3076            span: ::treesitter_types::Span::from(node),
3077            text: node.utf8_text(src)?,
3078        })
3079    }
3080}
3081impl<'tree> ::treesitter_types::LeafNode<'tree> for DebuggerStatement<'tree> {
3082    fn text(&self) -> &'tree str {
3083        self.text
3084    }
3085}
3086impl ::treesitter_types::Spanned for DebuggerStatement<'_> {
3087    fn span(&self) -> ::treesitter_types::Span {
3088        self.span
3089    }
3090}
3091#[derive(Debug, Clone, PartialEq, Eq)]
3092pub struct Decorator<'tree> {
3093    pub span: ::treesitter_types::Span,
3094    pub children: DecoratorChildren<'tree>,
3095}
3096impl<'tree> ::treesitter_types::FromNode<'tree> for Decorator<'tree> {
3097    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
3098    fn from_node(
3099        node: ::treesitter_types::tree_sitter::Node<'tree>,
3100        src: &'tree [u8],
3101    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
3102        debug_assert_eq!(node.kind(), "decorator");
3103        Ok(Self {
3104            span: ::treesitter_types::Span::from(node),
3105            children: {
3106                #[allow(clippy::suspicious_else_formatting)]
3107                let non_field_children = {
3108                    let mut cursor = node.walk();
3109                    let mut result = ::std::vec::Vec::new();
3110                    if cursor.goto_first_child() {
3111                        loop {
3112                            if cursor.field_name().is_none()
3113                                && cursor.node().is_named()
3114                                && !cursor.node().is_extra()
3115                            {
3116                                result.push(cursor.node());
3117                            }
3118                            if !cursor.goto_next_sibling() {
3119                                break;
3120                            }
3121                        }
3122                    }
3123                    result
3124                };
3125                let child = if let Some(&c) = non_field_children.first() {
3126                    c
3127                } else {
3128                    let mut fallback_cursor = node.walk();
3129                    let mut fallback_child = None;
3130                    if fallback_cursor.goto_first_child() {
3131                        loop {
3132                            if fallback_cursor.field_name().is_none()
3133                                && !fallback_cursor.node().is_extra()
3134                            {
3135                                let candidate = fallback_cursor.node();
3136                                #[allow(clippy::needless_question_mark)]
3137                                if (|| -> ::core::result::Result<
3138                                    _,
3139                                    ::treesitter_types::ParseError,
3140                                > {
3141                                    let child = candidate;
3142                                    Ok(
3143                                        ::treesitter_types::runtime::maybe_grow_stack(|| <DecoratorChildren as ::treesitter_types::FromNode>::from_node(
3144                                            child,
3145                                            src,
3146                                        ))?,
3147                                    )
3148                                })()
3149                                    .is_ok()
3150                                {
3151                                    fallback_child = Some(candidate);
3152                                    break;
3153                                }
3154                            }
3155                            if !fallback_cursor.goto_next_sibling() {
3156                                break;
3157                            }
3158                        }
3159                    }
3160                    if fallback_child.is_none() {
3161                        let mut cursor2 = node.walk();
3162                        if cursor2.goto_first_child() {
3163                            loop {
3164                                if cursor2.node().is_named() && !cursor2.node().is_extra() {
3165                                    let candidate = cursor2.node();
3166                                    #[allow(clippy::needless_question_mark)]
3167                                    if (|| -> ::core::result::Result<
3168                                        _,
3169                                        ::treesitter_types::ParseError,
3170                                    > {
3171                                        let child = candidate;
3172                                        Ok(
3173                                            ::treesitter_types::runtime::maybe_grow_stack(|| <DecoratorChildren as ::treesitter_types::FromNode>::from_node(
3174                                                child,
3175                                                src,
3176                                            ))?,
3177                                        )
3178                                    })()
3179                                        .is_ok()
3180                                    {
3181                                        fallback_child = Some(candidate);
3182                                        break;
3183                                    }
3184                                }
3185                                if !cursor2.goto_next_sibling() {
3186                                    break;
3187                                }
3188                            }
3189                        }
3190                    }
3191                    fallback_child.ok_or_else(|| {
3192                        ::treesitter_types::ParseError::missing_field("children", node)
3193                    })?
3194                };
3195                ::treesitter_types::runtime::maybe_grow_stack(|| {
3196                    <DecoratorChildren as ::treesitter_types::FromNode>::from_node(child, src)
3197                })?
3198            },
3199        })
3200    }
3201}
3202impl ::treesitter_types::Spanned for Decorator<'_> {
3203    fn span(&self) -> ::treesitter_types::Span {
3204        self.span
3205    }
3206}
3207#[derive(Debug, Clone, PartialEq, Eq)]
3208pub struct DefaultType<'tree> {
3209    pub span: ::treesitter_types::Span,
3210    pub children: Type<'tree>,
3211}
3212impl<'tree> ::treesitter_types::FromNode<'tree> for DefaultType<'tree> {
3213    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
3214    fn from_node(
3215        node: ::treesitter_types::tree_sitter::Node<'tree>,
3216        src: &'tree [u8],
3217    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
3218        debug_assert_eq!(node.kind(), "default_type");
3219        Ok(Self {
3220            span: ::treesitter_types::Span::from(node),
3221            children: {
3222                #[allow(clippy::suspicious_else_formatting)]
3223                let non_field_children = {
3224                    let mut cursor = node.walk();
3225                    let mut result = ::std::vec::Vec::new();
3226                    if cursor.goto_first_child() {
3227                        loop {
3228                            if cursor.field_name().is_none()
3229                                && cursor.node().is_named()
3230                                && !cursor.node().is_extra()
3231                            {
3232                                result.push(cursor.node());
3233                            }
3234                            if !cursor.goto_next_sibling() {
3235                                break;
3236                            }
3237                        }
3238                    }
3239                    result
3240                };
3241                let child = if let Some(&c) = non_field_children.first() {
3242                    c
3243                } else {
3244                    let mut fallback_cursor = node.walk();
3245                    let mut fallback_child = None;
3246                    if fallback_cursor.goto_first_child() {
3247                        loop {
3248                            if fallback_cursor.field_name().is_none()
3249                                && !fallback_cursor.node().is_extra()
3250                            {
3251                                let candidate = fallback_cursor.node();
3252                                #[allow(clippy::needless_question_mark)]
3253                                if (|| -> ::core::result::Result<
3254                                    _,
3255                                    ::treesitter_types::ParseError,
3256                                > {
3257                                    let child = candidate;
3258                                    Ok(
3259                                        ::treesitter_types::runtime::maybe_grow_stack(|| <Type as ::treesitter_types::FromNode>::from_node(
3260                                            child,
3261                                            src,
3262                                        ))?,
3263                                    )
3264                                })()
3265                                    .is_ok()
3266                                {
3267                                    fallback_child = Some(candidate);
3268                                    break;
3269                                }
3270                            }
3271                            if !fallback_cursor.goto_next_sibling() {
3272                                break;
3273                            }
3274                        }
3275                    }
3276                    if fallback_child.is_none() {
3277                        let mut cursor2 = node.walk();
3278                        if cursor2.goto_first_child() {
3279                            loop {
3280                                if cursor2.node().is_named() && !cursor2.node().is_extra() {
3281                                    let candidate = cursor2.node();
3282                                    #[allow(clippy::needless_question_mark)]
3283                                    if (|| -> ::core::result::Result<
3284                                        _,
3285                                        ::treesitter_types::ParseError,
3286                                    > {
3287                                        let child = candidate;
3288                                        Ok(
3289                                            ::treesitter_types::runtime::maybe_grow_stack(|| <Type as ::treesitter_types::FromNode>::from_node(
3290                                                child,
3291                                                src,
3292                                            ))?,
3293                                        )
3294                                    })()
3295                                        .is_ok()
3296                                    {
3297                                        fallback_child = Some(candidate);
3298                                        break;
3299                                    }
3300                                }
3301                                if !cursor2.goto_next_sibling() {
3302                                    break;
3303                                }
3304                            }
3305                        }
3306                    }
3307                    fallback_child.ok_or_else(|| {
3308                        ::treesitter_types::ParseError::missing_field("children", node)
3309                    })?
3310                };
3311                ::treesitter_types::runtime::maybe_grow_stack(|| {
3312                    <Type as ::treesitter_types::FromNode>::from_node(child, src)
3313                })?
3314            },
3315        })
3316    }
3317}
3318impl ::treesitter_types::Spanned for DefaultType<'_> {
3319    fn span(&self) -> ::treesitter_types::Span {
3320        self.span
3321    }
3322}
3323#[derive(Debug, Clone, PartialEq, Eq)]
3324pub struct DoStatement<'tree> {
3325    pub span: ::treesitter_types::Span,
3326    pub body: Statement<'tree>,
3327    pub condition: ParenthesizedExpression<'tree>,
3328}
3329impl<'tree> ::treesitter_types::FromNode<'tree> for DoStatement<'tree> {
3330    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
3331    fn from_node(
3332        node: ::treesitter_types::tree_sitter::Node<'tree>,
3333        src: &'tree [u8],
3334    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
3335        debug_assert_eq!(node.kind(), "do_statement");
3336        Ok(Self {
3337            span: ::treesitter_types::Span::from(node),
3338            body: {
3339                let child = node
3340                    .child_by_field_name("body")
3341                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("body", node))?;
3342                ::treesitter_types::runtime::maybe_grow_stack(|| {
3343                    <Statement as ::treesitter_types::FromNode>::from_node(child, src)
3344                })?
3345            },
3346            condition: {
3347                let child = node.child_by_field_name("condition").ok_or_else(|| {
3348                    ::treesitter_types::ParseError::missing_field("condition", node)
3349                })?;
3350                ::treesitter_types::runtime::maybe_grow_stack(|| {
3351                    <ParenthesizedExpression as ::treesitter_types::FromNode>::from_node(child, src)
3352                })?
3353            },
3354        })
3355    }
3356}
3357impl ::treesitter_types::Spanned for DoStatement<'_> {
3358    fn span(&self) -> ::treesitter_types::Span {
3359        self.span
3360    }
3361}
3362#[derive(Debug, Clone, PartialEq, Eq)]
3363pub struct ElseClause<'tree> {
3364    pub span: ::treesitter_types::Span,
3365    pub children: Statement<'tree>,
3366}
3367impl<'tree> ::treesitter_types::FromNode<'tree> for ElseClause<'tree> {
3368    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
3369    fn from_node(
3370        node: ::treesitter_types::tree_sitter::Node<'tree>,
3371        src: &'tree [u8],
3372    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
3373        debug_assert_eq!(node.kind(), "else_clause");
3374        Ok(Self {
3375            span: ::treesitter_types::Span::from(node),
3376            children: {
3377                #[allow(clippy::suspicious_else_formatting)]
3378                let non_field_children = {
3379                    let mut cursor = node.walk();
3380                    let mut result = ::std::vec::Vec::new();
3381                    if cursor.goto_first_child() {
3382                        loop {
3383                            if cursor.field_name().is_none()
3384                                && cursor.node().is_named()
3385                                && !cursor.node().is_extra()
3386                            {
3387                                result.push(cursor.node());
3388                            }
3389                            if !cursor.goto_next_sibling() {
3390                                break;
3391                            }
3392                        }
3393                    }
3394                    result
3395                };
3396                let child = if let Some(&c) = non_field_children.first() {
3397                    c
3398                } else {
3399                    let mut fallback_cursor = node.walk();
3400                    let mut fallback_child = None;
3401                    if fallback_cursor.goto_first_child() {
3402                        loop {
3403                            if fallback_cursor.field_name().is_none()
3404                                && !fallback_cursor.node().is_extra()
3405                            {
3406                                let candidate = fallback_cursor.node();
3407                                #[allow(clippy::needless_question_mark)]
3408                                if (|| -> ::core::result::Result<
3409                                    _,
3410                                    ::treesitter_types::ParseError,
3411                                > {
3412                                    let child = candidate;
3413                                    Ok(
3414                                        ::treesitter_types::runtime::maybe_grow_stack(|| <Statement as ::treesitter_types::FromNode>::from_node(
3415                                            child,
3416                                            src,
3417                                        ))?,
3418                                    )
3419                                })()
3420                                    .is_ok()
3421                                {
3422                                    fallback_child = Some(candidate);
3423                                    break;
3424                                }
3425                            }
3426                            if !fallback_cursor.goto_next_sibling() {
3427                                break;
3428                            }
3429                        }
3430                    }
3431                    if fallback_child.is_none() {
3432                        let mut cursor2 = node.walk();
3433                        if cursor2.goto_first_child() {
3434                            loop {
3435                                if cursor2.node().is_named() && !cursor2.node().is_extra() {
3436                                    let candidate = cursor2.node();
3437                                    #[allow(clippy::needless_question_mark)]
3438                                    if (|| -> ::core::result::Result<
3439                                        _,
3440                                        ::treesitter_types::ParseError,
3441                                    > {
3442                                        let child = candidate;
3443                                        Ok(
3444                                            ::treesitter_types::runtime::maybe_grow_stack(|| <Statement as ::treesitter_types::FromNode>::from_node(
3445                                                child,
3446                                                src,
3447                                            ))?,
3448                                        )
3449                                    })()
3450                                        .is_ok()
3451                                    {
3452                                        fallback_child = Some(candidate);
3453                                        break;
3454                                    }
3455                                }
3456                                if !cursor2.goto_next_sibling() {
3457                                    break;
3458                                }
3459                            }
3460                        }
3461                    }
3462                    fallback_child.ok_or_else(|| {
3463                        ::treesitter_types::ParseError::missing_field("children", node)
3464                    })?
3465                };
3466                ::treesitter_types::runtime::maybe_grow_stack(|| {
3467                    <Statement as ::treesitter_types::FromNode>::from_node(child, src)
3468                })?
3469            },
3470        })
3471    }
3472}
3473impl ::treesitter_types::Spanned for ElseClause<'_> {
3474    fn span(&self) -> ::treesitter_types::Span {
3475        self.span
3476    }
3477}
3478#[derive(Debug, Clone, PartialEq, Eq)]
3479pub struct EmptyStatement<'tree> {
3480    pub span: ::treesitter_types::Span,
3481    text: &'tree str,
3482}
3483impl<'tree> ::treesitter_types::FromNode<'tree> for EmptyStatement<'tree> {
3484    fn from_node(
3485        node: ::treesitter_types::tree_sitter::Node<'tree>,
3486        src: &'tree [u8],
3487    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
3488        debug_assert_eq!(node.kind(), "empty_statement");
3489        Ok(Self {
3490            span: ::treesitter_types::Span::from(node),
3491            text: node.utf8_text(src)?,
3492        })
3493    }
3494}
3495impl<'tree> ::treesitter_types::LeafNode<'tree> for EmptyStatement<'tree> {
3496    fn text(&self) -> &'tree str {
3497        self.text
3498    }
3499}
3500impl ::treesitter_types::Spanned for EmptyStatement<'_> {
3501    fn span(&self) -> ::treesitter_types::Span {
3502        self.span
3503    }
3504}
3505#[derive(Debug, Clone, PartialEq, Eq)]
3506pub struct EnumAssignment<'tree> {
3507    pub span: ::treesitter_types::Span,
3508    pub name: EnumAssignmentName<'tree>,
3509    pub value: Expression<'tree>,
3510}
3511impl<'tree> ::treesitter_types::FromNode<'tree> for EnumAssignment<'tree> {
3512    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
3513    fn from_node(
3514        node: ::treesitter_types::tree_sitter::Node<'tree>,
3515        src: &'tree [u8],
3516    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
3517        debug_assert_eq!(node.kind(), "enum_assignment");
3518        Ok(Self {
3519            span: ::treesitter_types::Span::from(node),
3520            name: {
3521                let child = node
3522                    .child_by_field_name("name")
3523                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("name", node))?;
3524                ::treesitter_types::runtime::maybe_grow_stack(|| {
3525                    <EnumAssignmentName as ::treesitter_types::FromNode>::from_node(child, src)
3526                })?
3527            },
3528            value: {
3529                let child = node
3530                    .child_by_field_name("value")
3531                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("value", node))?;
3532                ::treesitter_types::runtime::maybe_grow_stack(|| {
3533                    <Expression as ::treesitter_types::FromNode>::from_node(child, src)
3534                })?
3535            },
3536        })
3537    }
3538}
3539impl ::treesitter_types::Spanned for EnumAssignment<'_> {
3540    fn span(&self) -> ::treesitter_types::Span {
3541        self.span
3542    }
3543}
3544#[derive(Debug, Clone, PartialEq, Eq)]
3545pub struct EnumBody<'tree> {
3546    pub span: ::treesitter_types::Span,
3547    pub name: ::std::vec::Vec<EnumBodyName<'tree>>,
3548    pub children: ::std::vec::Vec<EnumAssignment<'tree>>,
3549}
3550impl<'tree> ::treesitter_types::FromNode<'tree> for EnumBody<'tree> {
3551    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
3552    fn from_node(
3553        node: ::treesitter_types::tree_sitter::Node<'tree>,
3554        src: &'tree [u8],
3555    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
3556        debug_assert_eq!(node.kind(), "enum_body");
3557        Ok(Self {
3558            span: ::treesitter_types::Span::from(node),
3559            name: {
3560                let mut cursor = node.walk();
3561                let mut items = ::std::vec::Vec::new();
3562                for child in node.children_by_field_name("name", &mut cursor) {
3563                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
3564                        <EnumBodyName as ::treesitter_types::FromNode>::from_node(child, src)
3565                    })?);
3566                }
3567                items
3568            },
3569            children: {
3570                #[allow(clippy::suspicious_else_formatting)]
3571                let non_field_children = {
3572                    let mut cursor = node.walk();
3573                    let mut result = ::std::vec::Vec::new();
3574                    if cursor.goto_first_child() {
3575                        loop {
3576                            if cursor.field_name().is_none()
3577                                && cursor.node().is_named()
3578                                && !cursor.node().is_extra()
3579                            {
3580                                result.push(cursor.node());
3581                            }
3582                            if !cursor.goto_next_sibling() {
3583                                break;
3584                            }
3585                        }
3586                    }
3587                    result
3588                };
3589                let mut items = ::std::vec::Vec::new();
3590                for child in non_field_children {
3591                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
3592                        <EnumAssignment as ::treesitter_types::FromNode>::from_node(child, src)
3593                    })?);
3594                }
3595                items
3596            },
3597        })
3598    }
3599}
3600impl ::treesitter_types::Spanned for EnumBody<'_> {
3601    fn span(&self) -> ::treesitter_types::Span {
3602        self.span
3603    }
3604}
3605#[derive(Debug, Clone, PartialEq, Eq)]
3606pub struct EnumDeclaration<'tree> {
3607    pub span: ::treesitter_types::Span,
3608    pub body: EnumBody<'tree>,
3609    pub name: Identifier<'tree>,
3610}
3611impl<'tree> ::treesitter_types::FromNode<'tree> for EnumDeclaration<'tree> {
3612    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
3613    fn from_node(
3614        node: ::treesitter_types::tree_sitter::Node<'tree>,
3615        src: &'tree [u8],
3616    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
3617        debug_assert_eq!(node.kind(), "enum_declaration");
3618        Ok(Self {
3619            span: ::treesitter_types::Span::from(node),
3620            body: {
3621                let child = node
3622                    .child_by_field_name("body")
3623                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("body", node))?;
3624                ::treesitter_types::runtime::maybe_grow_stack(|| {
3625                    <EnumBody as ::treesitter_types::FromNode>::from_node(child, src)
3626                })?
3627            },
3628            name: {
3629                let child = node
3630                    .child_by_field_name("name")
3631                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("name", node))?;
3632                ::treesitter_types::runtime::maybe_grow_stack(|| {
3633                    <Identifier as ::treesitter_types::FromNode>::from_node(child, src)
3634                })?
3635            },
3636        })
3637    }
3638}
3639impl ::treesitter_types::Spanned for EnumDeclaration<'_> {
3640    fn span(&self) -> ::treesitter_types::Span {
3641        self.span
3642    }
3643}
3644#[derive(Debug, Clone, PartialEq, Eq)]
3645pub struct ExistentialType<'tree> {
3646    pub span: ::treesitter_types::Span,
3647    text: &'tree str,
3648}
3649impl<'tree> ::treesitter_types::FromNode<'tree> for ExistentialType<'tree> {
3650    fn from_node(
3651        node: ::treesitter_types::tree_sitter::Node<'tree>,
3652        src: &'tree [u8],
3653    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
3654        debug_assert_eq!(node.kind(), "existential_type");
3655        Ok(Self {
3656            span: ::treesitter_types::Span::from(node),
3657            text: node.utf8_text(src)?,
3658        })
3659    }
3660}
3661impl<'tree> ::treesitter_types::LeafNode<'tree> for ExistentialType<'tree> {
3662    fn text(&self) -> &'tree str {
3663        self.text
3664    }
3665}
3666impl ::treesitter_types::Spanned for ExistentialType<'_> {
3667    fn span(&self) -> ::treesitter_types::Span {
3668        self.span
3669    }
3670}
3671#[derive(Debug, Clone, PartialEq, Eq)]
3672pub struct ExportClause<'tree> {
3673    pub span: ::treesitter_types::Span,
3674    pub children: ::std::vec::Vec<ExportSpecifier<'tree>>,
3675}
3676impl<'tree> ::treesitter_types::FromNode<'tree> for ExportClause<'tree> {
3677    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
3678    fn from_node(
3679        node: ::treesitter_types::tree_sitter::Node<'tree>,
3680        src: &'tree [u8],
3681    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
3682        debug_assert_eq!(node.kind(), "export_clause");
3683        Ok(Self {
3684            span: ::treesitter_types::Span::from(node),
3685            children: {
3686                #[allow(clippy::suspicious_else_formatting)]
3687                let non_field_children = {
3688                    let mut cursor = node.walk();
3689                    let mut result = ::std::vec::Vec::new();
3690                    if cursor.goto_first_child() {
3691                        loop {
3692                            if cursor.field_name().is_none()
3693                                && cursor.node().is_named()
3694                                && !cursor.node().is_extra()
3695                            {
3696                                result.push(cursor.node());
3697                            }
3698                            if !cursor.goto_next_sibling() {
3699                                break;
3700                            }
3701                        }
3702                    }
3703                    result
3704                };
3705                let mut items = ::std::vec::Vec::new();
3706                for child in non_field_children {
3707                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
3708                        <ExportSpecifier as ::treesitter_types::FromNode>::from_node(child, src)
3709                    })?);
3710                }
3711                items
3712            },
3713        })
3714    }
3715}
3716impl ::treesitter_types::Spanned for ExportClause<'_> {
3717    fn span(&self) -> ::treesitter_types::Span {
3718        self.span
3719    }
3720}
3721#[derive(Debug, Clone, PartialEq, Eq)]
3722pub struct ExportSpecifier<'tree> {
3723    pub span: ::treesitter_types::Span,
3724    pub alias: ::core::option::Option<ExportSpecifierAlias<'tree>>,
3725    pub name: ExportSpecifierName<'tree>,
3726}
3727impl<'tree> ::treesitter_types::FromNode<'tree> for ExportSpecifier<'tree> {
3728    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
3729    fn from_node(
3730        node: ::treesitter_types::tree_sitter::Node<'tree>,
3731        src: &'tree [u8],
3732    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
3733        debug_assert_eq!(node.kind(), "export_specifier");
3734        Ok(Self {
3735            span: ::treesitter_types::Span::from(node),
3736            alias: match node.child_by_field_name("alias") {
3737                Some(child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
3738                    <ExportSpecifierAlias as ::treesitter_types::FromNode>::from_node(child, src)
3739                })?),
3740                None => None,
3741            },
3742            name: {
3743                let child = node
3744                    .child_by_field_name("name")
3745                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("name", node))?;
3746                ::treesitter_types::runtime::maybe_grow_stack(|| {
3747                    <ExportSpecifierName as ::treesitter_types::FromNode>::from_node(child, src)
3748                })?
3749            },
3750        })
3751    }
3752}
3753impl ::treesitter_types::Spanned for ExportSpecifier<'_> {
3754    fn span(&self) -> ::treesitter_types::Span {
3755        self.span
3756    }
3757}
3758#[derive(Debug, Clone, PartialEq, Eq)]
3759pub struct ExportStatement<'tree> {
3760    pub span: ::treesitter_types::Span,
3761    pub declaration: ::core::option::Option<Declaration<'tree>>,
3762    pub decorator: ::std::vec::Vec<Decorator<'tree>>,
3763    pub source: ::core::option::Option<String<'tree>>,
3764    pub value: ::core::option::Option<Expression<'tree>>,
3765    pub children: ::core::option::Option<ExportStatementChildren<'tree>>,
3766}
3767impl<'tree> ::treesitter_types::FromNode<'tree> for ExportStatement<'tree> {
3768    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
3769    fn from_node(
3770        node: ::treesitter_types::tree_sitter::Node<'tree>,
3771        src: &'tree [u8],
3772    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
3773        debug_assert_eq!(node.kind(), "export_statement");
3774        Ok(Self {
3775            span: ::treesitter_types::Span::from(node),
3776            declaration: match node.child_by_field_name("declaration") {
3777                Some(child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
3778                    <Declaration as ::treesitter_types::FromNode>::from_node(child, src)
3779                })?),
3780                None => None,
3781            },
3782            decorator: {
3783                let mut cursor = node.walk();
3784                let mut items = ::std::vec::Vec::new();
3785                for child in node.children_by_field_name("decorator", &mut cursor) {
3786                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
3787                        <Decorator as ::treesitter_types::FromNode>::from_node(child, src)
3788                    })?);
3789                }
3790                items
3791            },
3792            source: match node.child_by_field_name("source") {
3793                Some(child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
3794                    <String as ::treesitter_types::FromNode>::from_node(child, src)
3795                })?),
3796                None => None,
3797            },
3798            value: match node.child_by_field_name("value") {
3799                Some(child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
3800                    <Expression as ::treesitter_types::FromNode>::from_node(child, src)
3801                })?),
3802                None => None,
3803            },
3804            children: {
3805                #[allow(clippy::suspicious_else_formatting)]
3806                let non_field_children = {
3807                    let mut cursor = node.walk();
3808                    let mut result = ::std::vec::Vec::new();
3809                    if cursor.goto_first_child() {
3810                        loop {
3811                            if cursor.field_name().is_none()
3812                                && cursor.node().is_named()
3813                                && !cursor.node().is_extra()
3814                            {
3815                                result.push(cursor.node());
3816                            }
3817                            if !cursor.goto_next_sibling() {
3818                                break;
3819                            }
3820                        }
3821                    }
3822                    result
3823                };
3824                match non_field_children.first() {
3825                    Some(&child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
3826                        <ExportStatementChildren as ::treesitter_types::FromNode>::from_node(
3827                            child, src,
3828                        )
3829                    })?),
3830                    None => None,
3831                }
3832            },
3833        })
3834    }
3835}
3836impl ::treesitter_types::Spanned for ExportStatement<'_> {
3837    fn span(&self) -> ::treesitter_types::Span {
3838        self.span
3839    }
3840}
3841#[derive(Debug, Clone, PartialEq, Eq)]
3842pub struct ExpressionStatement<'tree> {
3843    pub span: ::treesitter_types::Span,
3844    pub children: ExpressionStatementChildren<'tree>,
3845}
3846impl<'tree> ::treesitter_types::FromNode<'tree> for ExpressionStatement<'tree> {
3847    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
3848    fn from_node(
3849        node: ::treesitter_types::tree_sitter::Node<'tree>,
3850        src: &'tree [u8],
3851    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
3852        debug_assert_eq!(node.kind(), "expression_statement");
3853        Ok(Self {
3854            span: ::treesitter_types::Span::from(node),
3855            children: {
3856                #[allow(clippy::suspicious_else_formatting)]
3857                let non_field_children = {
3858                    let mut cursor = node.walk();
3859                    let mut result = ::std::vec::Vec::new();
3860                    if cursor.goto_first_child() {
3861                        loop {
3862                            if cursor.field_name().is_none()
3863                                && cursor.node().is_named()
3864                                && !cursor.node().is_extra()
3865                            {
3866                                result.push(cursor.node());
3867                            }
3868                            if !cursor.goto_next_sibling() {
3869                                break;
3870                            }
3871                        }
3872                    }
3873                    result
3874                };
3875                let child = if let Some(&c) = non_field_children.first() {
3876                    c
3877                } else {
3878                    let mut fallback_cursor = node.walk();
3879                    let mut fallback_child = None;
3880                    if fallback_cursor.goto_first_child() {
3881                        loop {
3882                            if fallback_cursor.field_name().is_none()
3883                                && !fallback_cursor.node().is_extra()
3884                            {
3885                                let candidate = fallback_cursor.node();
3886                                #[allow(clippy::needless_question_mark)]
3887                                if (|| -> ::core::result::Result<
3888                                    _,
3889                                    ::treesitter_types::ParseError,
3890                                > {
3891                                    let child = candidate;
3892                                    Ok(
3893                                        ::treesitter_types::runtime::maybe_grow_stack(|| <ExpressionStatementChildren as ::treesitter_types::FromNode>::from_node(
3894                                            child,
3895                                            src,
3896                                        ))?,
3897                                    )
3898                                })()
3899                                    .is_ok()
3900                                {
3901                                    fallback_child = Some(candidate);
3902                                    break;
3903                                }
3904                            }
3905                            if !fallback_cursor.goto_next_sibling() {
3906                                break;
3907                            }
3908                        }
3909                    }
3910                    if fallback_child.is_none() {
3911                        let mut cursor2 = node.walk();
3912                        if cursor2.goto_first_child() {
3913                            loop {
3914                                if cursor2.node().is_named() && !cursor2.node().is_extra() {
3915                                    let candidate = cursor2.node();
3916                                    #[allow(clippy::needless_question_mark)]
3917                                    if (|| -> ::core::result::Result<
3918                                        _,
3919                                        ::treesitter_types::ParseError,
3920                                    > {
3921                                        let child = candidate;
3922                                        Ok(
3923                                            ::treesitter_types::runtime::maybe_grow_stack(|| <ExpressionStatementChildren as ::treesitter_types::FromNode>::from_node(
3924                                                child,
3925                                                src,
3926                                            ))?,
3927                                        )
3928                                    })()
3929                                        .is_ok()
3930                                    {
3931                                        fallback_child = Some(candidate);
3932                                        break;
3933                                    }
3934                                }
3935                                if !cursor2.goto_next_sibling() {
3936                                    break;
3937                                }
3938                            }
3939                        }
3940                    }
3941                    fallback_child.ok_or_else(|| {
3942                        ::treesitter_types::ParseError::missing_field("children", node)
3943                    })?
3944                };
3945                ::treesitter_types::runtime::maybe_grow_stack(|| {
3946                    <ExpressionStatementChildren as ::treesitter_types::FromNode>::from_node(
3947                        child, src,
3948                    )
3949                })?
3950            },
3951        })
3952    }
3953}
3954impl ::treesitter_types::Spanned for ExpressionStatement<'_> {
3955    fn span(&self) -> ::treesitter_types::Span {
3956        self.span
3957    }
3958}
3959#[derive(Debug, Clone, PartialEq, Eq)]
3960pub struct ExtendsClause<'tree> {
3961    pub span: ::treesitter_types::Span,
3962    pub type_arguments: ::std::vec::Vec<TypeArguments<'tree>>,
3963    pub value: ::std::vec::Vec<Expression<'tree>>,
3964}
3965impl<'tree> ::treesitter_types::FromNode<'tree> for ExtendsClause<'tree> {
3966    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
3967    fn from_node(
3968        node: ::treesitter_types::tree_sitter::Node<'tree>,
3969        src: &'tree [u8],
3970    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
3971        debug_assert_eq!(node.kind(), "extends_clause");
3972        Ok(Self {
3973            span: ::treesitter_types::Span::from(node),
3974            type_arguments: {
3975                let mut cursor = node.walk();
3976                let mut items = ::std::vec::Vec::new();
3977                for child in node.children_by_field_name("type_arguments", &mut cursor) {
3978                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
3979                        <TypeArguments as ::treesitter_types::FromNode>::from_node(child, src)
3980                    })?);
3981                }
3982                items
3983            },
3984            value: {
3985                let mut cursor = node.walk();
3986                let mut items = ::std::vec::Vec::new();
3987                for child in node.children_by_field_name("value", &mut cursor) {
3988                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
3989                        <Expression as ::treesitter_types::FromNode>::from_node(child, src)
3990                    })?);
3991                }
3992                items
3993            },
3994        })
3995    }
3996}
3997impl ::treesitter_types::Spanned for ExtendsClause<'_> {
3998    fn span(&self) -> ::treesitter_types::Span {
3999        self.span
4000    }
4001}
4002#[derive(Debug, Clone, PartialEq, Eq)]
4003pub struct ExtendsTypeClause<'tree> {
4004    pub span: ::treesitter_types::Span,
4005    pub r#type: ::std::vec::Vec<ExtendsTypeClauseType<'tree>>,
4006}
4007impl<'tree> ::treesitter_types::FromNode<'tree> for ExtendsTypeClause<'tree> {
4008    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
4009    fn from_node(
4010        node: ::treesitter_types::tree_sitter::Node<'tree>,
4011        src: &'tree [u8],
4012    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
4013        debug_assert_eq!(node.kind(), "extends_type_clause");
4014        Ok(Self {
4015            span: ::treesitter_types::Span::from(node),
4016            r#type: {
4017                let mut cursor = node.walk();
4018                let mut items = ::std::vec::Vec::new();
4019                for child in node.children_by_field_name("type", &mut cursor) {
4020                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
4021                        <ExtendsTypeClauseType as ::treesitter_types::FromNode>::from_node(
4022                            child, src,
4023                        )
4024                    })?);
4025                }
4026                items
4027            },
4028        })
4029    }
4030}
4031impl ::treesitter_types::Spanned for ExtendsTypeClause<'_> {
4032    fn span(&self) -> ::treesitter_types::Span {
4033        self.span
4034    }
4035}
4036#[derive(Debug, Clone, PartialEq, Eq)]
4037pub struct FinallyClause<'tree> {
4038    pub span: ::treesitter_types::Span,
4039    pub body: StatementBlock<'tree>,
4040}
4041impl<'tree> ::treesitter_types::FromNode<'tree> for FinallyClause<'tree> {
4042    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
4043    fn from_node(
4044        node: ::treesitter_types::tree_sitter::Node<'tree>,
4045        src: &'tree [u8],
4046    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
4047        debug_assert_eq!(node.kind(), "finally_clause");
4048        Ok(Self {
4049            span: ::treesitter_types::Span::from(node),
4050            body: {
4051                let child = node
4052                    .child_by_field_name("body")
4053                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("body", node))?;
4054                ::treesitter_types::runtime::maybe_grow_stack(|| {
4055                    <StatementBlock as ::treesitter_types::FromNode>::from_node(child, src)
4056                })?
4057            },
4058        })
4059    }
4060}
4061impl ::treesitter_types::Spanned for FinallyClause<'_> {
4062    fn span(&self) -> ::treesitter_types::Span {
4063        self.span
4064    }
4065}
4066#[derive(Debug, Clone, PartialEq, Eq)]
4067pub struct FlowMaybeType<'tree> {
4068    pub span: ::treesitter_types::Span,
4069    pub children: PrimaryType<'tree>,
4070}
4071impl<'tree> ::treesitter_types::FromNode<'tree> for FlowMaybeType<'tree> {
4072    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
4073    fn from_node(
4074        node: ::treesitter_types::tree_sitter::Node<'tree>,
4075        src: &'tree [u8],
4076    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
4077        debug_assert_eq!(node.kind(), "flow_maybe_type");
4078        Ok(Self {
4079            span: ::treesitter_types::Span::from(node),
4080            children: {
4081                #[allow(clippy::suspicious_else_formatting)]
4082                let non_field_children = {
4083                    let mut cursor = node.walk();
4084                    let mut result = ::std::vec::Vec::new();
4085                    if cursor.goto_first_child() {
4086                        loop {
4087                            if cursor.field_name().is_none()
4088                                && cursor.node().is_named()
4089                                && !cursor.node().is_extra()
4090                            {
4091                                result.push(cursor.node());
4092                            }
4093                            if !cursor.goto_next_sibling() {
4094                                break;
4095                            }
4096                        }
4097                    }
4098                    result
4099                };
4100                let child = if let Some(&c) = non_field_children.first() {
4101                    c
4102                } else {
4103                    let mut fallback_cursor = node.walk();
4104                    let mut fallback_child = None;
4105                    if fallback_cursor.goto_first_child() {
4106                        loop {
4107                            if fallback_cursor.field_name().is_none()
4108                                && !fallback_cursor.node().is_extra()
4109                            {
4110                                let candidate = fallback_cursor.node();
4111                                #[allow(clippy::needless_question_mark)]
4112                                if (|| -> ::core::result::Result<
4113                                    _,
4114                                    ::treesitter_types::ParseError,
4115                                > {
4116                                    let child = candidate;
4117                                    Ok(
4118                                        ::treesitter_types::runtime::maybe_grow_stack(|| <PrimaryType as ::treesitter_types::FromNode>::from_node(
4119                                            child,
4120                                            src,
4121                                        ))?,
4122                                    )
4123                                })()
4124                                    .is_ok()
4125                                {
4126                                    fallback_child = Some(candidate);
4127                                    break;
4128                                }
4129                            }
4130                            if !fallback_cursor.goto_next_sibling() {
4131                                break;
4132                            }
4133                        }
4134                    }
4135                    if fallback_child.is_none() {
4136                        let mut cursor2 = node.walk();
4137                        if cursor2.goto_first_child() {
4138                            loop {
4139                                if cursor2.node().is_named() && !cursor2.node().is_extra() {
4140                                    let candidate = cursor2.node();
4141                                    #[allow(clippy::needless_question_mark)]
4142                                    if (|| -> ::core::result::Result<
4143                                        _,
4144                                        ::treesitter_types::ParseError,
4145                                    > {
4146                                        let child = candidate;
4147                                        Ok(
4148                                            ::treesitter_types::runtime::maybe_grow_stack(|| <PrimaryType as ::treesitter_types::FromNode>::from_node(
4149                                                child,
4150                                                src,
4151                                            ))?,
4152                                        )
4153                                    })()
4154                                        .is_ok()
4155                                    {
4156                                        fallback_child = Some(candidate);
4157                                        break;
4158                                    }
4159                                }
4160                                if !cursor2.goto_next_sibling() {
4161                                    break;
4162                                }
4163                            }
4164                        }
4165                    }
4166                    fallback_child.ok_or_else(|| {
4167                        ::treesitter_types::ParseError::missing_field("children", node)
4168                    })?
4169                };
4170                ::treesitter_types::runtime::maybe_grow_stack(|| {
4171                    <PrimaryType as ::treesitter_types::FromNode>::from_node(child, src)
4172                })?
4173            },
4174        })
4175    }
4176}
4177impl ::treesitter_types::Spanned for FlowMaybeType<'_> {
4178    fn span(&self) -> ::treesitter_types::Span {
4179        self.span
4180    }
4181}
4182#[derive(Debug, Clone, PartialEq, Eq)]
4183pub struct ForInStatement<'tree> {
4184    pub span: ::treesitter_types::Span,
4185    pub body: Statement<'tree>,
4186    pub kind: ::core::option::Option<ForInStatementKind>,
4187    pub left: ForInStatementLeft<'tree>,
4188    pub operator: ForInStatementOperator,
4189    pub right: ForInStatementRight<'tree>,
4190    pub value: ::core::option::Option<Expression<'tree>>,
4191}
4192impl<'tree> ::treesitter_types::FromNode<'tree> for ForInStatement<'tree> {
4193    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
4194    fn from_node(
4195        node: ::treesitter_types::tree_sitter::Node<'tree>,
4196        src: &'tree [u8],
4197    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
4198        debug_assert_eq!(node.kind(), "for_in_statement");
4199        Ok(Self {
4200            span: ::treesitter_types::Span::from(node),
4201            body: {
4202                let child = node
4203                    .child_by_field_name("body")
4204                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("body", node))?;
4205                ::treesitter_types::runtime::maybe_grow_stack(|| {
4206                    <Statement as ::treesitter_types::FromNode>::from_node(child, src)
4207                })?
4208            },
4209            kind: match node.child_by_field_name("kind") {
4210                Some(child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
4211                    <ForInStatementKind as ::treesitter_types::FromNode>::from_node(child, src)
4212                })?),
4213                None => None,
4214            },
4215            left: {
4216                let child = node
4217                    .child_by_field_name("left")
4218                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("left", node))?;
4219                ::treesitter_types::runtime::maybe_grow_stack(|| {
4220                    <ForInStatementLeft as ::treesitter_types::FromNode>::from_node(child, src)
4221                })?
4222            },
4223            operator: {
4224                let child = node.child_by_field_name("operator").ok_or_else(|| {
4225                    ::treesitter_types::ParseError::missing_field("operator", node)
4226                })?;
4227                ::treesitter_types::runtime::maybe_grow_stack(|| {
4228                    <ForInStatementOperator as ::treesitter_types::FromNode>::from_node(child, src)
4229                })?
4230            },
4231            right: {
4232                let child = node
4233                    .child_by_field_name("right")
4234                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("right", node))?;
4235                ::treesitter_types::runtime::maybe_grow_stack(|| {
4236                    <ForInStatementRight as ::treesitter_types::FromNode>::from_node(child, src)
4237                })?
4238            },
4239            value: match node.child_by_field_name("value") {
4240                Some(child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
4241                    <Expression as ::treesitter_types::FromNode>::from_node(child, src)
4242                })?),
4243                None => None,
4244            },
4245        })
4246    }
4247}
4248impl ::treesitter_types::Spanned for ForInStatement<'_> {
4249    fn span(&self) -> ::treesitter_types::Span {
4250        self.span
4251    }
4252}
4253#[derive(Debug, Clone, PartialEq, Eq)]
4254pub struct ForStatement<'tree> {
4255    pub span: ::treesitter_types::Span,
4256    pub body: Statement<'tree>,
4257    pub condition: ::std::vec::Vec<ForStatementCondition<'tree>>,
4258    pub increment: ::core::option::Option<ForStatementIncrement<'tree>>,
4259    pub initializer: ForStatementInitializer<'tree>,
4260}
4261impl<'tree> ::treesitter_types::FromNode<'tree> for ForStatement<'tree> {
4262    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
4263    fn from_node(
4264        node: ::treesitter_types::tree_sitter::Node<'tree>,
4265        src: &'tree [u8],
4266    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
4267        debug_assert_eq!(node.kind(), "for_statement");
4268        Ok(Self {
4269            span: ::treesitter_types::Span::from(node),
4270            body: {
4271                let child = node
4272                    .child_by_field_name("body")
4273                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("body", node))?;
4274                ::treesitter_types::runtime::maybe_grow_stack(|| {
4275                    <Statement as ::treesitter_types::FromNode>::from_node(child, src)
4276                })?
4277            },
4278            condition: {
4279                let mut cursor = node.walk();
4280                let mut items = ::std::vec::Vec::new();
4281                for child in node.children_by_field_name("condition", &mut cursor) {
4282                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
4283                        <ForStatementCondition as ::treesitter_types::FromNode>::from_node(
4284                            child, src,
4285                        )
4286                    })?);
4287                }
4288                items
4289            },
4290            increment: match node.child_by_field_name("increment") {
4291                Some(child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
4292                    <ForStatementIncrement as ::treesitter_types::FromNode>::from_node(child, src)
4293                })?),
4294                None => None,
4295            },
4296            initializer: {
4297                let child = node.child_by_field_name("initializer").ok_or_else(|| {
4298                    ::treesitter_types::ParseError::missing_field("initializer", node)
4299                })?;
4300                ::treesitter_types::runtime::maybe_grow_stack(|| {
4301                    <ForStatementInitializer as ::treesitter_types::FromNode>::from_node(child, src)
4302                })?
4303            },
4304        })
4305    }
4306}
4307impl ::treesitter_types::Spanned for ForStatement<'_> {
4308    fn span(&self) -> ::treesitter_types::Span {
4309        self.span
4310    }
4311}
4312#[derive(Debug, Clone, PartialEq, Eq)]
4313pub struct FormalParameters<'tree> {
4314    pub span: ::treesitter_types::Span,
4315    pub children: ::std::vec::Vec<FormalParametersChildren<'tree>>,
4316}
4317impl<'tree> ::treesitter_types::FromNode<'tree> for FormalParameters<'tree> {
4318    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
4319    fn from_node(
4320        node: ::treesitter_types::tree_sitter::Node<'tree>,
4321        src: &'tree [u8],
4322    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
4323        debug_assert_eq!(node.kind(), "formal_parameters");
4324        Ok(Self {
4325            span: ::treesitter_types::Span::from(node),
4326            children: {
4327                #[allow(clippy::suspicious_else_formatting)]
4328                let non_field_children = {
4329                    let mut cursor = node.walk();
4330                    let mut result = ::std::vec::Vec::new();
4331                    if cursor.goto_first_child() {
4332                        loop {
4333                            if cursor.field_name().is_none()
4334                                && cursor.node().is_named()
4335                                && !cursor.node().is_extra()
4336                            {
4337                                result.push(cursor.node());
4338                            }
4339                            if !cursor.goto_next_sibling() {
4340                                break;
4341                            }
4342                        }
4343                    }
4344                    result
4345                };
4346                let mut items = ::std::vec::Vec::new();
4347                for child in non_field_children {
4348                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
4349                        <FormalParametersChildren as ::treesitter_types::FromNode>::from_node(
4350                            child, src,
4351                        )
4352                    })?);
4353                }
4354                items
4355            },
4356        })
4357    }
4358}
4359impl ::treesitter_types::Spanned for FormalParameters<'_> {
4360    fn span(&self) -> ::treesitter_types::Span {
4361        self.span
4362    }
4363}
4364#[derive(Debug, Clone, PartialEq, Eq)]
4365pub struct FunctionDeclaration<'tree> {
4366    pub span: ::treesitter_types::Span,
4367    pub body: StatementBlock<'tree>,
4368    pub name: Identifier<'tree>,
4369    pub parameters: FormalParameters<'tree>,
4370    pub return_type: ::core::option::Option<FunctionDeclarationReturnType<'tree>>,
4371    pub type_parameters: ::core::option::Option<TypeParameters<'tree>>,
4372}
4373impl<'tree> ::treesitter_types::FromNode<'tree> for FunctionDeclaration<'tree> {
4374    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
4375    fn from_node(
4376        node: ::treesitter_types::tree_sitter::Node<'tree>,
4377        src: &'tree [u8],
4378    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
4379        debug_assert_eq!(node.kind(), "function_declaration");
4380        Ok(Self {
4381            span: ::treesitter_types::Span::from(node),
4382            body: {
4383                let child = node
4384                    .child_by_field_name("body")
4385                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("body", node))?;
4386                ::treesitter_types::runtime::maybe_grow_stack(|| {
4387                    <StatementBlock as ::treesitter_types::FromNode>::from_node(child, src)
4388                })?
4389            },
4390            name: {
4391                let child = node
4392                    .child_by_field_name("name")
4393                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("name", node))?;
4394                ::treesitter_types::runtime::maybe_grow_stack(|| {
4395                    <Identifier as ::treesitter_types::FromNode>::from_node(child, src)
4396                })?
4397            },
4398            parameters: {
4399                let child = node.child_by_field_name("parameters").ok_or_else(|| {
4400                    ::treesitter_types::ParseError::missing_field("parameters", node)
4401                })?;
4402                ::treesitter_types::runtime::maybe_grow_stack(|| {
4403                    <FormalParameters as ::treesitter_types::FromNode>::from_node(child, src)
4404                })?
4405            },
4406            return_type: match node.child_by_field_name("return_type") {
4407                Some(child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
4408                    <FunctionDeclarationReturnType as ::treesitter_types::FromNode>::from_node(
4409                        child, src,
4410                    )
4411                })?),
4412                None => None,
4413            },
4414            type_parameters: match node.child_by_field_name("type_parameters") {
4415                Some(child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
4416                    <TypeParameters as ::treesitter_types::FromNode>::from_node(child, src)
4417                })?),
4418                None => None,
4419            },
4420        })
4421    }
4422}
4423impl ::treesitter_types::Spanned for FunctionDeclaration<'_> {
4424    fn span(&self) -> ::treesitter_types::Span {
4425        self.span
4426    }
4427}
4428#[derive(Debug, Clone, PartialEq, Eq)]
4429pub struct FunctionExpression<'tree> {
4430    pub span: ::treesitter_types::Span,
4431    pub body: StatementBlock<'tree>,
4432    pub name: ::core::option::Option<Identifier<'tree>>,
4433    pub parameters: FormalParameters<'tree>,
4434    pub return_type: ::core::option::Option<FunctionExpressionReturnType<'tree>>,
4435    pub type_parameters: ::core::option::Option<TypeParameters<'tree>>,
4436}
4437impl<'tree> ::treesitter_types::FromNode<'tree> for FunctionExpression<'tree> {
4438    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
4439    fn from_node(
4440        node: ::treesitter_types::tree_sitter::Node<'tree>,
4441        src: &'tree [u8],
4442    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
4443        debug_assert_eq!(node.kind(), "function_expression");
4444        Ok(Self {
4445            span: ::treesitter_types::Span::from(node),
4446            body: {
4447                let child = node
4448                    .child_by_field_name("body")
4449                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("body", node))?;
4450                ::treesitter_types::runtime::maybe_grow_stack(|| {
4451                    <StatementBlock as ::treesitter_types::FromNode>::from_node(child, src)
4452                })?
4453            },
4454            name: match node.child_by_field_name("name") {
4455                Some(child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
4456                    <Identifier as ::treesitter_types::FromNode>::from_node(child, src)
4457                })?),
4458                None => None,
4459            },
4460            parameters: {
4461                let child = node.child_by_field_name("parameters").ok_or_else(|| {
4462                    ::treesitter_types::ParseError::missing_field("parameters", node)
4463                })?;
4464                ::treesitter_types::runtime::maybe_grow_stack(|| {
4465                    <FormalParameters as ::treesitter_types::FromNode>::from_node(child, src)
4466                })?
4467            },
4468            return_type: match node.child_by_field_name("return_type") {
4469                Some(child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
4470                    <FunctionExpressionReturnType as ::treesitter_types::FromNode>::from_node(
4471                        child, src,
4472                    )
4473                })?),
4474                None => None,
4475            },
4476            type_parameters: match node.child_by_field_name("type_parameters") {
4477                Some(child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
4478                    <TypeParameters as ::treesitter_types::FromNode>::from_node(child, src)
4479                })?),
4480                None => None,
4481            },
4482        })
4483    }
4484}
4485impl ::treesitter_types::Spanned for FunctionExpression<'_> {
4486    fn span(&self) -> ::treesitter_types::Span {
4487        self.span
4488    }
4489}
4490#[derive(Debug, Clone, PartialEq, Eq)]
4491pub struct FunctionSignature<'tree> {
4492    pub span: ::treesitter_types::Span,
4493    pub name: Identifier<'tree>,
4494    pub parameters: FormalParameters<'tree>,
4495    pub return_type: ::core::option::Option<FunctionSignatureReturnType<'tree>>,
4496    pub type_parameters: ::core::option::Option<TypeParameters<'tree>>,
4497}
4498impl<'tree> ::treesitter_types::FromNode<'tree> for FunctionSignature<'tree> {
4499    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
4500    fn from_node(
4501        node: ::treesitter_types::tree_sitter::Node<'tree>,
4502        src: &'tree [u8],
4503    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
4504        debug_assert_eq!(node.kind(), "function_signature");
4505        Ok(Self {
4506            span: ::treesitter_types::Span::from(node),
4507            name: {
4508                let child = node
4509                    .child_by_field_name("name")
4510                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("name", node))?;
4511                ::treesitter_types::runtime::maybe_grow_stack(|| {
4512                    <Identifier as ::treesitter_types::FromNode>::from_node(child, src)
4513                })?
4514            },
4515            parameters: {
4516                let child = node.child_by_field_name("parameters").ok_or_else(|| {
4517                    ::treesitter_types::ParseError::missing_field("parameters", node)
4518                })?;
4519                ::treesitter_types::runtime::maybe_grow_stack(|| {
4520                    <FormalParameters as ::treesitter_types::FromNode>::from_node(child, src)
4521                })?
4522            },
4523            return_type: match node.child_by_field_name("return_type") {
4524                Some(child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
4525                    <FunctionSignatureReturnType as ::treesitter_types::FromNode>::from_node(
4526                        child, src,
4527                    )
4528                })?),
4529                None => None,
4530            },
4531            type_parameters: match node.child_by_field_name("type_parameters") {
4532                Some(child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
4533                    <TypeParameters as ::treesitter_types::FromNode>::from_node(child, src)
4534                })?),
4535                None => None,
4536            },
4537        })
4538    }
4539}
4540impl ::treesitter_types::Spanned for FunctionSignature<'_> {
4541    fn span(&self) -> ::treesitter_types::Span {
4542        self.span
4543    }
4544}
4545#[derive(Debug, Clone, PartialEq, Eq)]
4546pub struct FunctionType<'tree> {
4547    pub span: ::treesitter_types::Span,
4548    pub parameters: FormalParameters<'tree>,
4549    pub return_type: FunctionTypeReturnType<'tree>,
4550    pub type_parameters: ::core::option::Option<TypeParameters<'tree>>,
4551}
4552impl<'tree> ::treesitter_types::FromNode<'tree> for FunctionType<'tree> {
4553    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
4554    fn from_node(
4555        node: ::treesitter_types::tree_sitter::Node<'tree>,
4556        src: &'tree [u8],
4557    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
4558        debug_assert_eq!(node.kind(), "function_type");
4559        Ok(Self {
4560            span: ::treesitter_types::Span::from(node),
4561            parameters: {
4562                let child = node.child_by_field_name("parameters").ok_or_else(|| {
4563                    ::treesitter_types::ParseError::missing_field("parameters", node)
4564                })?;
4565                ::treesitter_types::runtime::maybe_grow_stack(|| {
4566                    <FormalParameters as ::treesitter_types::FromNode>::from_node(child, src)
4567                })?
4568            },
4569            return_type: {
4570                let child = node.child_by_field_name("return_type").ok_or_else(|| {
4571                    ::treesitter_types::ParseError::missing_field("return_type", node)
4572                })?;
4573                ::treesitter_types::runtime::maybe_grow_stack(|| {
4574                    <FunctionTypeReturnType as ::treesitter_types::FromNode>::from_node(child, src)
4575                })?
4576            },
4577            type_parameters: match node.child_by_field_name("type_parameters") {
4578                Some(child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
4579                    <TypeParameters as ::treesitter_types::FromNode>::from_node(child, src)
4580                })?),
4581                None => None,
4582            },
4583        })
4584    }
4585}
4586impl ::treesitter_types::Spanned for FunctionType<'_> {
4587    fn span(&self) -> ::treesitter_types::Span {
4588        self.span
4589    }
4590}
4591#[derive(Debug, Clone, PartialEq, Eq)]
4592pub struct GeneratorFunction<'tree> {
4593    pub span: ::treesitter_types::Span,
4594    pub body: StatementBlock<'tree>,
4595    pub name: ::core::option::Option<Identifier<'tree>>,
4596    pub parameters: FormalParameters<'tree>,
4597    pub return_type: ::core::option::Option<GeneratorFunctionReturnType<'tree>>,
4598    pub type_parameters: ::core::option::Option<TypeParameters<'tree>>,
4599}
4600impl<'tree> ::treesitter_types::FromNode<'tree> for GeneratorFunction<'tree> {
4601    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
4602    fn from_node(
4603        node: ::treesitter_types::tree_sitter::Node<'tree>,
4604        src: &'tree [u8],
4605    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
4606        debug_assert_eq!(node.kind(), "generator_function");
4607        Ok(Self {
4608            span: ::treesitter_types::Span::from(node),
4609            body: {
4610                let child = node
4611                    .child_by_field_name("body")
4612                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("body", node))?;
4613                ::treesitter_types::runtime::maybe_grow_stack(|| {
4614                    <StatementBlock as ::treesitter_types::FromNode>::from_node(child, src)
4615                })?
4616            },
4617            name: match node.child_by_field_name("name") {
4618                Some(child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
4619                    <Identifier as ::treesitter_types::FromNode>::from_node(child, src)
4620                })?),
4621                None => None,
4622            },
4623            parameters: {
4624                let child = node.child_by_field_name("parameters").ok_or_else(|| {
4625                    ::treesitter_types::ParseError::missing_field("parameters", node)
4626                })?;
4627                ::treesitter_types::runtime::maybe_grow_stack(|| {
4628                    <FormalParameters as ::treesitter_types::FromNode>::from_node(child, src)
4629                })?
4630            },
4631            return_type: match node.child_by_field_name("return_type") {
4632                Some(child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
4633                    <GeneratorFunctionReturnType as ::treesitter_types::FromNode>::from_node(
4634                        child, src,
4635                    )
4636                })?),
4637                None => None,
4638            },
4639            type_parameters: match node.child_by_field_name("type_parameters") {
4640                Some(child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
4641                    <TypeParameters as ::treesitter_types::FromNode>::from_node(child, src)
4642                })?),
4643                None => None,
4644            },
4645        })
4646    }
4647}
4648impl ::treesitter_types::Spanned for GeneratorFunction<'_> {
4649    fn span(&self) -> ::treesitter_types::Span {
4650        self.span
4651    }
4652}
4653#[derive(Debug, Clone, PartialEq, Eq)]
4654pub struct GeneratorFunctionDeclaration<'tree> {
4655    pub span: ::treesitter_types::Span,
4656    pub body: StatementBlock<'tree>,
4657    pub name: Identifier<'tree>,
4658    pub parameters: FormalParameters<'tree>,
4659    pub return_type: ::core::option::Option<GeneratorFunctionDeclarationReturnType<'tree>>,
4660    pub type_parameters: ::core::option::Option<TypeParameters<'tree>>,
4661}
4662impl<'tree> ::treesitter_types::FromNode<'tree> for GeneratorFunctionDeclaration<'tree> {
4663    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
4664    fn from_node(
4665        node: ::treesitter_types::tree_sitter::Node<'tree>,
4666        src: &'tree [u8],
4667    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
4668        debug_assert_eq!(node.kind(), "generator_function_declaration");
4669        Ok(Self {
4670            span: ::treesitter_types::Span::from(node),
4671            body: {
4672                let child = node
4673                    .child_by_field_name("body")
4674                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("body", node))?;
4675                ::treesitter_types::runtime::maybe_grow_stack(|| {
4676                    <StatementBlock as ::treesitter_types::FromNode>::from_node(child, src)
4677                })?
4678            },
4679            name: {
4680                let child = node
4681                    .child_by_field_name("name")
4682                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("name", node))?;
4683                ::treesitter_types::runtime::maybe_grow_stack(|| {
4684                    <Identifier as ::treesitter_types::FromNode>::from_node(child, src)
4685                })?
4686            },
4687            parameters: {
4688                let child = node.child_by_field_name("parameters").ok_or_else(|| {
4689                    ::treesitter_types::ParseError::missing_field("parameters", node)
4690                })?;
4691                ::treesitter_types::runtime::maybe_grow_stack(|| {
4692                    <FormalParameters as ::treesitter_types::FromNode>::from_node(child, src)
4693                })?
4694            },
4695            return_type: match node.child_by_field_name("return_type") {
4696                Some(child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
4697                    <GeneratorFunctionDeclarationReturnType as ::treesitter_types::FromNode>::from_node(
4698                            child,
4699                            src,
4700                        )
4701                })?),
4702                None => None,
4703            },
4704            type_parameters: match node.child_by_field_name("type_parameters") {
4705                Some(child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
4706                    <TypeParameters as ::treesitter_types::FromNode>::from_node(child, src)
4707                })?),
4708                None => None,
4709            },
4710        })
4711    }
4712}
4713impl ::treesitter_types::Spanned for GeneratorFunctionDeclaration<'_> {
4714    fn span(&self) -> ::treesitter_types::Span {
4715        self.span
4716    }
4717}
4718#[derive(Debug, Clone, PartialEq, Eq)]
4719pub struct GenericType<'tree> {
4720    pub span: ::treesitter_types::Span,
4721    pub name: GenericTypeName<'tree>,
4722    pub type_arguments: TypeArguments<'tree>,
4723}
4724impl<'tree> ::treesitter_types::FromNode<'tree> for GenericType<'tree> {
4725    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
4726    fn from_node(
4727        node: ::treesitter_types::tree_sitter::Node<'tree>,
4728        src: &'tree [u8],
4729    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
4730        debug_assert_eq!(node.kind(), "generic_type");
4731        Ok(Self {
4732            span: ::treesitter_types::Span::from(node),
4733            name: {
4734                let child = node
4735                    .child_by_field_name("name")
4736                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("name", node))?;
4737                ::treesitter_types::runtime::maybe_grow_stack(|| {
4738                    <GenericTypeName as ::treesitter_types::FromNode>::from_node(child, src)
4739                })?
4740            },
4741            type_arguments: {
4742                let child = node.child_by_field_name("type_arguments").ok_or_else(|| {
4743                    ::treesitter_types::ParseError::missing_field("type_arguments", node)
4744                })?;
4745                ::treesitter_types::runtime::maybe_grow_stack(|| {
4746                    <TypeArguments as ::treesitter_types::FromNode>::from_node(child, src)
4747                })?
4748            },
4749        })
4750    }
4751}
4752impl ::treesitter_types::Spanned for GenericType<'_> {
4753    fn span(&self) -> ::treesitter_types::Span {
4754        self.span
4755    }
4756}
4757#[derive(Debug, Clone, PartialEq, Eq)]
4758pub struct Identifier<'tree> {
4759    pub span: ::treesitter_types::Span,
4760    text: &'tree str,
4761}
4762impl<'tree> ::treesitter_types::FromNode<'tree> for Identifier<'tree> {
4763    fn from_node(
4764        node: ::treesitter_types::tree_sitter::Node<'tree>,
4765        src: &'tree [u8],
4766    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
4767        debug_assert_eq!(node.kind(), "identifier");
4768        Ok(Self {
4769            span: ::treesitter_types::Span::from(node),
4770            text: node.utf8_text(src)?,
4771        })
4772    }
4773}
4774impl<'tree> ::treesitter_types::LeafNode<'tree> for Identifier<'tree> {
4775    fn text(&self) -> &'tree str {
4776        self.text
4777    }
4778}
4779impl ::treesitter_types::Spanned for Identifier<'_> {
4780    fn span(&self) -> ::treesitter_types::Span {
4781        self.span
4782    }
4783}
4784#[derive(Debug, Clone, PartialEq, Eq)]
4785pub struct IfStatement<'tree> {
4786    pub span: ::treesitter_types::Span,
4787    pub alternative: ::core::option::Option<ElseClause<'tree>>,
4788    pub condition: ParenthesizedExpression<'tree>,
4789    pub consequence: Statement<'tree>,
4790}
4791impl<'tree> ::treesitter_types::FromNode<'tree> for IfStatement<'tree> {
4792    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
4793    fn from_node(
4794        node: ::treesitter_types::tree_sitter::Node<'tree>,
4795        src: &'tree [u8],
4796    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
4797        debug_assert_eq!(node.kind(), "if_statement");
4798        Ok(Self {
4799            span: ::treesitter_types::Span::from(node),
4800            alternative: match node.child_by_field_name("alternative") {
4801                Some(child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
4802                    <ElseClause as ::treesitter_types::FromNode>::from_node(child, src)
4803                })?),
4804                None => None,
4805            },
4806            condition: {
4807                let child = node.child_by_field_name("condition").ok_or_else(|| {
4808                    ::treesitter_types::ParseError::missing_field("condition", node)
4809                })?;
4810                ::treesitter_types::runtime::maybe_grow_stack(|| {
4811                    <ParenthesizedExpression as ::treesitter_types::FromNode>::from_node(child, src)
4812                })?
4813            },
4814            consequence: {
4815                let child = node.child_by_field_name("consequence").ok_or_else(|| {
4816                    ::treesitter_types::ParseError::missing_field("consequence", node)
4817                })?;
4818                ::treesitter_types::runtime::maybe_grow_stack(|| {
4819                    <Statement as ::treesitter_types::FromNode>::from_node(child, src)
4820                })?
4821            },
4822        })
4823    }
4824}
4825impl ::treesitter_types::Spanned for IfStatement<'_> {
4826    fn span(&self) -> ::treesitter_types::Span {
4827        self.span
4828    }
4829}
4830#[derive(Debug, Clone, PartialEq, Eq)]
4831pub struct ImplementsClause<'tree> {
4832    pub span: ::treesitter_types::Span,
4833    pub children: ::std::vec::Vec<Type<'tree>>,
4834}
4835impl<'tree> ::treesitter_types::FromNode<'tree> for ImplementsClause<'tree> {
4836    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
4837    fn from_node(
4838        node: ::treesitter_types::tree_sitter::Node<'tree>,
4839        src: &'tree [u8],
4840    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
4841        debug_assert_eq!(node.kind(), "implements_clause");
4842        Ok(Self {
4843            span: ::treesitter_types::Span::from(node),
4844            children: {
4845                #[allow(clippy::suspicious_else_formatting)]
4846                let non_field_children = {
4847                    let mut cursor = node.walk();
4848                    let mut result = ::std::vec::Vec::new();
4849                    if cursor.goto_first_child() {
4850                        loop {
4851                            if cursor.field_name().is_none()
4852                                && cursor.node().is_named()
4853                                && !cursor.node().is_extra()
4854                            {
4855                                result.push(cursor.node());
4856                            }
4857                            if !cursor.goto_next_sibling() {
4858                                break;
4859                            }
4860                        }
4861                    }
4862                    result
4863                };
4864                let mut items = ::std::vec::Vec::new();
4865                for child in non_field_children {
4866                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
4867                        <Type as ::treesitter_types::FromNode>::from_node(child, src)
4868                    })?);
4869                }
4870                items
4871            },
4872        })
4873    }
4874}
4875impl ::treesitter_types::Spanned for ImplementsClause<'_> {
4876    fn span(&self) -> ::treesitter_types::Span {
4877        self.span
4878    }
4879}
4880#[derive(Debug, Clone, PartialEq, Eq)]
4881pub struct Import<'tree> {
4882    pub span: ::treesitter_types::Span,
4883    text: &'tree str,
4884}
4885impl<'tree> ::treesitter_types::FromNode<'tree> for Import<'tree> {
4886    fn from_node(
4887        node: ::treesitter_types::tree_sitter::Node<'tree>,
4888        src: &'tree [u8],
4889    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
4890        debug_assert_eq!(node.kind(), "import");
4891        Ok(Self {
4892            span: ::treesitter_types::Span::from(node),
4893            text: node.utf8_text(src)?,
4894        })
4895    }
4896}
4897impl<'tree> ::treesitter_types::LeafNode<'tree> for Import<'tree> {
4898    fn text(&self) -> &'tree str {
4899        self.text
4900    }
4901}
4902impl ::treesitter_types::Spanned for Import<'_> {
4903    fn span(&self) -> ::treesitter_types::Span {
4904        self.span
4905    }
4906}
4907#[derive(Debug, Clone, PartialEq, Eq)]
4908pub struct ImportAlias<'tree> {
4909    pub span: ::treesitter_types::Span,
4910    pub children: ::std::vec::Vec<ImportAliasChildren<'tree>>,
4911}
4912impl<'tree> ::treesitter_types::FromNode<'tree> for ImportAlias<'tree> {
4913    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
4914    fn from_node(
4915        node: ::treesitter_types::tree_sitter::Node<'tree>,
4916        src: &'tree [u8],
4917    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
4918        debug_assert_eq!(node.kind(), "import_alias");
4919        Ok(Self {
4920            span: ::treesitter_types::Span::from(node),
4921            children: {
4922                #[allow(clippy::suspicious_else_formatting)]
4923                let non_field_children = {
4924                    let mut cursor = node.walk();
4925                    let mut result = ::std::vec::Vec::new();
4926                    if cursor.goto_first_child() {
4927                        loop {
4928                            if cursor.field_name().is_none()
4929                                && cursor.node().is_named()
4930                                && !cursor.node().is_extra()
4931                            {
4932                                result.push(cursor.node());
4933                            }
4934                            if !cursor.goto_next_sibling() {
4935                                break;
4936                            }
4937                        }
4938                    }
4939                    result
4940                };
4941                let mut items = ::std::vec::Vec::new();
4942                for child in non_field_children {
4943                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
4944                        <ImportAliasChildren as ::treesitter_types::FromNode>::from_node(child, src)
4945                    })?);
4946                }
4947                items
4948            },
4949        })
4950    }
4951}
4952impl ::treesitter_types::Spanned for ImportAlias<'_> {
4953    fn span(&self) -> ::treesitter_types::Span {
4954        self.span
4955    }
4956}
4957#[derive(Debug, Clone, PartialEq, Eq)]
4958pub struct ImportAttribute<'tree> {
4959    pub span: ::treesitter_types::Span,
4960    pub children: Object<'tree>,
4961}
4962impl<'tree> ::treesitter_types::FromNode<'tree> for ImportAttribute<'tree> {
4963    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
4964    fn from_node(
4965        node: ::treesitter_types::tree_sitter::Node<'tree>,
4966        src: &'tree [u8],
4967    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
4968        debug_assert_eq!(node.kind(), "import_attribute");
4969        Ok(Self {
4970            span: ::treesitter_types::Span::from(node),
4971            children: {
4972                #[allow(clippy::suspicious_else_formatting)]
4973                let non_field_children = {
4974                    let mut cursor = node.walk();
4975                    let mut result = ::std::vec::Vec::new();
4976                    if cursor.goto_first_child() {
4977                        loop {
4978                            if cursor.field_name().is_none()
4979                                && cursor.node().is_named()
4980                                && !cursor.node().is_extra()
4981                            {
4982                                result.push(cursor.node());
4983                            }
4984                            if !cursor.goto_next_sibling() {
4985                                break;
4986                            }
4987                        }
4988                    }
4989                    result
4990                };
4991                let child = if let Some(&c) = non_field_children.first() {
4992                    c
4993                } else {
4994                    let mut fallback_cursor = node.walk();
4995                    let mut fallback_child = None;
4996                    if fallback_cursor.goto_first_child() {
4997                        loop {
4998                            if fallback_cursor.field_name().is_none()
4999                                && !fallback_cursor.node().is_extra()
5000                            {
5001                                let candidate = fallback_cursor.node();
5002                                #[allow(clippy::needless_question_mark)]
5003                                if (|| -> ::core::result::Result<
5004                                    _,
5005                                    ::treesitter_types::ParseError,
5006                                > {
5007                                    let child = candidate;
5008                                    Ok(
5009                                        ::treesitter_types::runtime::maybe_grow_stack(|| <Object as ::treesitter_types::FromNode>::from_node(
5010                                            child,
5011                                            src,
5012                                        ))?,
5013                                    )
5014                                })()
5015                                    .is_ok()
5016                                {
5017                                    fallback_child = Some(candidate);
5018                                    break;
5019                                }
5020                            }
5021                            if !fallback_cursor.goto_next_sibling() {
5022                                break;
5023                            }
5024                        }
5025                    }
5026                    if fallback_child.is_none() {
5027                        let mut cursor2 = node.walk();
5028                        if cursor2.goto_first_child() {
5029                            loop {
5030                                if cursor2.node().is_named() && !cursor2.node().is_extra() {
5031                                    let candidate = cursor2.node();
5032                                    #[allow(clippy::needless_question_mark)]
5033                                    if (|| -> ::core::result::Result<
5034                                        _,
5035                                        ::treesitter_types::ParseError,
5036                                    > {
5037                                        let child = candidate;
5038                                        Ok(
5039                                            ::treesitter_types::runtime::maybe_grow_stack(|| <Object as ::treesitter_types::FromNode>::from_node(
5040                                                child,
5041                                                src,
5042                                            ))?,
5043                                        )
5044                                    })()
5045                                        .is_ok()
5046                                    {
5047                                        fallback_child = Some(candidate);
5048                                        break;
5049                                    }
5050                                }
5051                                if !cursor2.goto_next_sibling() {
5052                                    break;
5053                                }
5054                            }
5055                        }
5056                    }
5057                    fallback_child.ok_or_else(|| {
5058                        ::treesitter_types::ParseError::missing_field("children", node)
5059                    })?
5060                };
5061                ::treesitter_types::runtime::maybe_grow_stack(|| {
5062                    <Object as ::treesitter_types::FromNode>::from_node(child, src)
5063                })?
5064            },
5065        })
5066    }
5067}
5068impl ::treesitter_types::Spanned for ImportAttribute<'_> {
5069    fn span(&self) -> ::treesitter_types::Span {
5070        self.span
5071    }
5072}
5073#[derive(Debug, Clone, PartialEq, Eq)]
5074pub struct ImportClause<'tree> {
5075    pub span: ::treesitter_types::Span,
5076    pub children: ::std::vec::Vec<ImportClauseChildren<'tree>>,
5077}
5078impl<'tree> ::treesitter_types::FromNode<'tree> for ImportClause<'tree> {
5079    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
5080    fn from_node(
5081        node: ::treesitter_types::tree_sitter::Node<'tree>,
5082        src: &'tree [u8],
5083    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
5084        debug_assert_eq!(node.kind(), "import_clause");
5085        Ok(Self {
5086            span: ::treesitter_types::Span::from(node),
5087            children: {
5088                #[allow(clippy::suspicious_else_formatting)]
5089                let non_field_children = {
5090                    let mut cursor = node.walk();
5091                    let mut result = ::std::vec::Vec::new();
5092                    if cursor.goto_first_child() {
5093                        loop {
5094                            if cursor.field_name().is_none()
5095                                && cursor.node().is_named()
5096                                && !cursor.node().is_extra()
5097                            {
5098                                result.push(cursor.node());
5099                            }
5100                            if !cursor.goto_next_sibling() {
5101                                break;
5102                            }
5103                        }
5104                    }
5105                    result
5106                };
5107                let mut items = ::std::vec::Vec::new();
5108                for child in non_field_children {
5109                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
5110                        <ImportClauseChildren as ::treesitter_types::FromNode>::from_node(
5111                            child, src,
5112                        )
5113                    })?);
5114                }
5115                items
5116            },
5117        })
5118    }
5119}
5120impl ::treesitter_types::Spanned for ImportClause<'_> {
5121    fn span(&self) -> ::treesitter_types::Span {
5122        self.span
5123    }
5124}
5125#[derive(Debug, Clone, PartialEq, Eq)]
5126pub struct ImportRequireClause<'tree> {
5127    pub span: ::treesitter_types::Span,
5128    pub source: String<'tree>,
5129    pub children: Identifier<'tree>,
5130}
5131impl<'tree> ::treesitter_types::FromNode<'tree> for ImportRequireClause<'tree> {
5132    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
5133    fn from_node(
5134        node: ::treesitter_types::tree_sitter::Node<'tree>,
5135        src: &'tree [u8],
5136    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
5137        debug_assert_eq!(node.kind(), "import_require_clause");
5138        Ok(Self {
5139            span: ::treesitter_types::Span::from(node),
5140            source: {
5141                let child = node
5142                    .child_by_field_name("source")
5143                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("source", node))?;
5144                ::treesitter_types::runtime::maybe_grow_stack(|| {
5145                    <String as ::treesitter_types::FromNode>::from_node(child, src)
5146                })?
5147            },
5148            children: {
5149                #[allow(clippy::suspicious_else_formatting)]
5150                let non_field_children = {
5151                    let mut cursor = node.walk();
5152                    let mut result = ::std::vec::Vec::new();
5153                    if cursor.goto_first_child() {
5154                        loop {
5155                            if cursor.field_name().is_none()
5156                                && cursor.node().is_named()
5157                                && !cursor.node().is_extra()
5158                            {
5159                                result.push(cursor.node());
5160                            }
5161                            if !cursor.goto_next_sibling() {
5162                                break;
5163                            }
5164                        }
5165                    }
5166                    result
5167                };
5168                let child = if let Some(&c) = non_field_children.first() {
5169                    c
5170                } else {
5171                    let mut fallback_cursor = node.walk();
5172                    let mut fallback_child = None;
5173                    if fallback_cursor.goto_first_child() {
5174                        loop {
5175                            if fallback_cursor.field_name().is_none()
5176                                && !fallback_cursor.node().is_extra()
5177                            {
5178                                let candidate = fallback_cursor.node();
5179                                #[allow(clippy::needless_question_mark)]
5180                                if (|| -> ::core::result::Result<
5181                                    _,
5182                                    ::treesitter_types::ParseError,
5183                                > {
5184                                    let child = candidate;
5185                                    Ok(
5186                                        ::treesitter_types::runtime::maybe_grow_stack(|| <Identifier as ::treesitter_types::FromNode>::from_node(
5187                                            child,
5188                                            src,
5189                                        ))?,
5190                                    )
5191                                })()
5192                                    .is_ok()
5193                                {
5194                                    fallback_child = Some(candidate);
5195                                    break;
5196                                }
5197                            }
5198                            if !fallback_cursor.goto_next_sibling() {
5199                                break;
5200                            }
5201                        }
5202                    }
5203                    if fallback_child.is_none() {
5204                        let mut cursor2 = node.walk();
5205                        if cursor2.goto_first_child() {
5206                            loop {
5207                                if cursor2.node().is_named() && !cursor2.node().is_extra() {
5208                                    let candidate = cursor2.node();
5209                                    #[allow(clippy::needless_question_mark)]
5210                                    if (|| -> ::core::result::Result<
5211                                        _,
5212                                        ::treesitter_types::ParseError,
5213                                    > {
5214                                        let child = candidate;
5215                                        Ok(
5216                                            ::treesitter_types::runtime::maybe_grow_stack(|| <Identifier as ::treesitter_types::FromNode>::from_node(
5217                                                child,
5218                                                src,
5219                                            ))?,
5220                                        )
5221                                    })()
5222                                        .is_ok()
5223                                    {
5224                                        fallback_child = Some(candidate);
5225                                        break;
5226                                    }
5227                                }
5228                                if !cursor2.goto_next_sibling() {
5229                                    break;
5230                                }
5231                            }
5232                        }
5233                    }
5234                    fallback_child.ok_or_else(|| {
5235                        ::treesitter_types::ParseError::missing_field("children", node)
5236                    })?
5237                };
5238                ::treesitter_types::runtime::maybe_grow_stack(|| {
5239                    <Identifier as ::treesitter_types::FromNode>::from_node(child, src)
5240                })?
5241            },
5242        })
5243    }
5244}
5245impl ::treesitter_types::Spanned for ImportRequireClause<'_> {
5246    fn span(&self) -> ::treesitter_types::Span {
5247        self.span
5248    }
5249}
5250#[derive(Debug, Clone, PartialEq, Eq)]
5251pub struct ImportSpecifier<'tree> {
5252    pub span: ::treesitter_types::Span,
5253    pub alias: ::core::option::Option<Identifier<'tree>>,
5254    pub name: ImportSpecifierName<'tree>,
5255}
5256impl<'tree> ::treesitter_types::FromNode<'tree> for ImportSpecifier<'tree> {
5257    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
5258    fn from_node(
5259        node: ::treesitter_types::tree_sitter::Node<'tree>,
5260        src: &'tree [u8],
5261    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
5262        debug_assert_eq!(node.kind(), "import_specifier");
5263        Ok(Self {
5264            span: ::treesitter_types::Span::from(node),
5265            alias: match node.child_by_field_name("alias") {
5266                Some(child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
5267                    <Identifier as ::treesitter_types::FromNode>::from_node(child, src)
5268                })?),
5269                None => None,
5270            },
5271            name: {
5272                let child = node
5273                    .child_by_field_name("name")
5274                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("name", node))?;
5275                ::treesitter_types::runtime::maybe_grow_stack(|| {
5276                    <ImportSpecifierName as ::treesitter_types::FromNode>::from_node(child, src)
5277                })?
5278            },
5279        })
5280    }
5281}
5282impl ::treesitter_types::Spanned for ImportSpecifier<'_> {
5283    fn span(&self) -> ::treesitter_types::Span {
5284        self.span
5285    }
5286}
5287#[derive(Debug, Clone, PartialEq, Eq)]
5288pub struct ImportStatement<'tree> {
5289    pub span: ::treesitter_types::Span,
5290    pub source: ::core::option::Option<String<'tree>>,
5291    pub children: ::std::vec::Vec<ImportStatementChildren<'tree>>,
5292}
5293impl<'tree> ::treesitter_types::FromNode<'tree> for ImportStatement<'tree> {
5294    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
5295    fn from_node(
5296        node: ::treesitter_types::tree_sitter::Node<'tree>,
5297        src: &'tree [u8],
5298    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
5299        debug_assert_eq!(node.kind(), "import_statement");
5300        Ok(Self {
5301            span: ::treesitter_types::Span::from(node),
5302            source: match node.child_by_field_name("source") {
5303                Some(child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
5304                    <String as ::treesitter_types::FromNode>::from_node(child, src)
5305                })?),
5306                None => None,
5307            },
5308            children: {
5309                #[allow(clippy::suspicious_else_formatting)]
5310                let non_field_children = {
5311                    let mut cursor = node.walk();
5312                    let mut result = ::std::vec::Vec::new();
5313                    if cursor.goto_first_child() {
5314                        loop {
5315                            if cursor.field_name().is_none()
5316                                && cursor.node().is_named()
5317                                && !cursor.node().is_extra()
5318                            {
5319                                result.push(cursor.node());
5320                            }
5321                            if !cursor.goto_next_sibling() {
5322                                break;
5323                            }
5324                        }
5325                    }
5326                    result
5327                };
5328                let mut items = ::std::vec::Vec::new();
5329                for child in non_field_children {
5330                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
5331                        <ImportStatementChildren as ::treesitter_types::FromNode>::from_node(
5332                            child, src,
5333                        )
5334                    })?);
5335                }
5336                items
5337            },
5338        })
5339    }
5340}
5341impl ::treesitter_types::Spanned for ImportStatement<'_> {
5342    fn span(&self) -> ::treesitter_types::Span {
5343        self.span
5344    }
5345}
5346#[derive(Debug, Clone, PartialEq, Eq)]
5347pub struct IndexSignature<'tree> {
5348    pub span: ::treesitter_types::Span,
5349    pub index_type: ::core::option::Option<Type<'tree>>,
5350    pub name: ::core::option::Option<Identifier<'tree>>,
5351    pub sign: ::core::option::Option<IndexSignatureSign>,
5352    pub r#type: IndexSignatureType<'tree>,
5353    pub children: ::core::option::Option<MappedTypeClause<'tree>>,
5354}
5355impl<'tree> ::treesitter_types::FromNode<'tree> for IndexSignature<'tree> {
5356    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
5357    fn from_node(
5358        node: ::treesitter_types::tree_sitter::Node<'tree>,
5359        src: &'tree [u8],
5360    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
5361        debug_assert_eq!(node.kind(), "index_signature");
5362        Ok(Self {
5363            span: ::treesitter_types::Span::from(node),
5364            index_type: match node.child_by_field_name("index_type") {
5365                Some(child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
5366                    <Type as ::treesitter_types::FromNode>::from_node(child, src)
5367                })?),
5368                None => None,
5369            },
5370            name: match node.child_by_field_name("name") {
5371                Some(child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
5372                    <Identifier as ::treesitter_types::FromNode>::from_node(child, src)
5373                })?),
5374                None => None,
5375            },
5376            sign: match node.child_by_field_name("sign") {
5377                Some(child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
5378                    <IndexSignatureSign as ::treesitter_types::FromNode>::from_node(child, src)
5379                })?),
5380                None => None,
5381            },
5382            r#type: {
5383                let child = node
5384                    .child_by_field_name("type")
5385                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("type", node))?;
5386                ::treesitter_types::runtime::maybe_grow_stack(|| {
5387                    <IndexSignatureType as ::treesitter_types::FromNode>::from_node(child, src)
5388                })?
5389            },
5390            children: {
5391                #[allow(clippy::suspicious_else_formatting)]
5392                let non_field_children = {
5393                    let mut cursor = node.walk();
5394                    let mut result = ::std::vec::Vec::new();
5395                    if cursor.goto_first_child() {
5396                        loop {
5397                            if cursor.field_name().is_none()
5398                                && cursor.node().is_named()
5399                                && !cursor.node().is_extra()
5400                            {
5401                                result.push(cursor.node());
5402                            }
5403                            if !cursor.goto_next_sibling() {
5404                                break;
5405                            }
5406                        }
5407                    }
5408                    result
5409                };
5410                match non_field_children.first() {
5411                    Some(&child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
5412                        <MappedTypeClause as ::treesitter_types::FromNode>::from_node(child, src)
5413                    })?),
5414                    None => None,
5415                }
5416            },
5417        })
5418    }
5419}
5420impl ::treesitter_types::Spanned for IndexSignature<'_> {
5421    fn span(&self) -> ::treesitter_types::Span {
5422        self.span
5423    }
5424}
5425#[derive(Debug, Clone, PartialEq, Eq)]
5426pub struct IndexTypeQuery<'tree> {
5427    pub span: ::treesitter_types::Span,
5428    pub children: PrimaryType<'tree>,
5429}
5430impl<'tree> ::treesitter_types::FromNode<'tree> for IndexTypeQuery<'tree> {
5431    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
5432    fn from_node(
5433        node: ::treesitter_types::tree_sitter::Node<'tree>,
5434        src: &'tree [u8],
5435    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
5436        debug_assert_eq!(node.kind(), "index_type_query");
5437        Ok(Self {
5438            span: ::treesitter_types::Span::from(node),
5439            children: {
5440                #[allow(clippy::suspicious_else_formatting)]
5441                let non_field_children = {
5442                    let mut cursor = node.walk();
5443                    let mut result = ::std::vec::Vec::new();
5444                    if cursor.goto_first_child() {
5445                        loop {
5446                            if cursor.field_name().is_none()
5447                                && cursor.node().is_named()
5448                                && !cursor.node().is_extra()
5449                            {
5450                                result.push(cursor.node());
5451                            }
5452                            if !cursor.goto_next_sibling() {
5453                                break;
5454                            }
5455                        }
5456                    }
5457                    result
5458                };
5459                let child = if let Some(&c) = non_field_children.first() {
5460                    c
5461                } else {
5462                    let mut fallback_cursor = node.walk();
5463                    let mut fallback_child = None;
5464                    if fallback_cursor.goto_first_child() {
5465                        loop {
5466                            if fallback_cursor.field_name().is_none()
5467                                && !fallback_cursor.node().is_extra()
5468                            {
5469                                let candidate = fallback_cursor.node();
5470                                #[allow(clippy::needless_question_mark)]
5471                                if (|| -> ::core::result::Result<
5472                                    _,
5473                                    ::treesitter_types::ParseError,
5474                                > {
5475                                    let child = candidate;
5476                                    Ok(
5477                                        ::treesitter_types::runtime::maybe_grow_stack(|| <PrimaryType as ::treesitter_types::FromNode>::from_node(
5478                                            child,
5479                                            src,
5480                                        ))?,
5481                                    )
5482                                })()
5483                                    .is_ok()
5484                                {
5485                                    fallback_child = Some(candidate);
5486                                    break;
5487                                }
5488                            }
5489                            if !fallback_cursor.goto_next_sibling() {
5490                                break;
5491                            }
5492                        }
5493                    }
5494                    if fallback_child.is_none() {
5495                        let mut cursor2 = node.walk();
5496                        if cursor2.goto_first_child() {
5497                            loop {
5498                                if cursor2.node().is_named() && !cursor2.node().is_extra() {
5499                                    let candidate = cursor2.node();
5500                                    #[allow(clippy::needless_question_mark)]
5501                                    if (|| -> ::core::result::Result<
5502                                        _,
5503                                        ::treesitter_types::ParseError,
5504                                    > {
5505                                        let child = candidate;
5506                                        Ok(
5507                                            ::treesitter_types::runtime::maybe_grow_stack(|| <PrimaryType as ::treesitter_types::FromNode>::from_node(
5508                                                child,
5509                                                src,
5510                                            ))?,
5511                                        )
5512                                    })()
5513                                        .is_ok()
5514                                    {
5515                                        fallback_child = Some(candidate);
5516                                        break;
5517                                    }
5518                                }
5519                                if !cursor2.goto_next_sibling() {
5520                                    break;
5521                                }
5522                            }
5523                        }
5524                    }
5525                    fallback_child.ok_or_else(|| {
5526                        ::treesitter_types::ParseError::missing_field("children", node)
5527                    })?
5528                };
5529                ::treesitter_types::runtime::maybe_grow_stack(|| {
5530                    <PrimaryType as ::treesitter_types::FromNode>::from_node(child, src)
5531                })?
5532            },
5533        })
5534    }
5535}
5536impl ::treesitter_types::Spanned for IndexTypeQuery<'_> {
5537    fn span(&self) -> ::treesitter_types::Span {
5538        self.span
5539    }
5540}
5541#[derive(Debug, Clone, PartialEq, Eq)]
5542pub struct InferType<'tree> {
5543    pub span: ::treesitter_types::Span,
5544    pub children: ::std::vec::Vec<InferTypeChildren<'tree>>,
5545}
5546impl<'tree> ::treesitter_types::FromNode<'tree> for InferType<'tree> {
5547    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
5548    fn from_node(
5549        node: ::treesitter_types::tree_sitter::Node<'tree>,
5550        src: &'tree [u8],
5551    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
5552        debug_assert_eq!(node.kind(), "infer_type");
5553        Ok(Self {
5554            span: ::treesitter_types::Span::from(node),
5555            children: {
5556                #[allow(clippy::suspicious_else_formatting)]
5557                let non_field_children = {
5558                    let mut cursor = node.walk();
5559                    let mut result = ::std::vec::Vec::new();
5560                    if cursor.goto_first_child() {
5561                        loop {
5562                            if cursor.field_name().is_none()
5563                                && cursor.node().is_named()
5564                                && !cursor.node().is_extra()
5565                            {
5566                                result.push(cursor.node());
5567                            }
5568                            if !cursor.goto_next_sibling() {
5569                                break;
5570                            }
5571                        }
5572                    }
5573                    result
5574                };
5575                let mut items = ::std::vec::Vec::new();
5576                for child in non_field_children {
5577                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
5578                        <InferTypeChildren as ::treesitter_types::FromNode>::from_node(child, src)
5579                    })?);
5580                }
5581                items
5582            },
5583        })
5584    }
5585}
5586impl ::treesitter_types::Spanned for InferType<'_> {
5587    fn span(&self) -> ::treesitter_types::Span {
5588        self.span
5589    }
5590}
5591#[derive(Debug, Clone, PartialEq, Eq)]
5592pub struct InstantiationExpression<'tree> {
5593    pub span: ::treesitter_types::Span,
5594    pub function: ::core::option::Option<InstantiationExpressionFunction<'tree>>,
5595    pub type_arguments: TypeArguments<'tree>,
5596    pub children: ::core::option::Option<Expression<'tree>>,
5597}
5598impl<'tree> ::treesitter_types::FromNode<'tree> for InstantiationExpression<'tree> {
5599    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
5600    fn from_node(
5601        node: ::treesitter_types::tree_sitter::Node<'tree>,
5602        src: &'tree [u8],
5603    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
5604        debug_assert_eq!(node.kind(), "instantiation_expression");
5605        Ok(Self {
5606            span: ::treesitter_types::Span::from(node),
5607            function: match node.child_by_field_name("function") {
5608                Some(child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
5609                    <InstantiationExpressionFunction as ::treesitter_types::FromNode>::from_node(
5610                        child, src,
5611                    )
5612                })?),
5613                None => None,
5614            },
5615            type_arguments: {
5616                let child = node.child_by_field_name("type_arguments").ok_or_else(|| {
5617                    ::treesitter_types::ParseError::missing_field("type_arguments", node)
5618                })?;
5619                ::treesitter_types::runtime::maybe_grow_stack(|| {
5620                    <TypeArguments as ::treesitter_types::FromNode>::from_node(child, src)
5621                })?
5622            },
5623            children: {
5624                #[allow(clippy::suspicious_else_formatting)]
5625                let non_field_children = {
5626                    let mut cursor = node.walk();
5627                    let mut result = ::std::vec::Vec::new();
5628                    if cursor.goto_first_child() {
5629                        loop {
5630                            if cursor.field_name().is_none()
5631                                && cursor.node().is_named()
5632                                && !cursor.node().is_extra()
5633                            {
5634                                result.push(cursor.node());
5635                            }
5636                            if !cursor.goto_next_sibling() {
5637                                break;
5638                            }
5639                        }
5640                    }
5641                    result
5642                };
5643                match non_field_children.first() {
5644                    Some(&child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
5645                        <Expression as ::treesitter_types::FromNode>::from_node(child, src)
5646                    })?),
5647                    None => None,
5648                }
5649            },
5650        })
5651    }
5652}
5653impl ::treesitter_types::Spanned for InstantiationExpression<'_> {
5654    fn span(&self) -> ::treesitter_types::Span {
5655        self.span
5656    }
5657}
5658#[derive(Debug, Clone, PartialEq, Eq)]
5659pub struct InterfaceBody<'tree> {
5660    pub span: ::treesitter_types::Span,
5661    pub children: ::std::vec::Vec<InterfaceBodyChildren<'tree>>,
5662}
5663impl<'tree> ::treesitter_types::FromNode<'tree> for InterfaceBody<'tree> {
5664    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
5665    fn from_node(
5666        node: ::treesitter_types::tree_sitter::Node<'tree>,
5667        src: &'tree [u8],
5668    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
5669        debug_assert_eq!(node.kind(), "interface_body");
5670        Ok(Self {
5671            span: ::treesitter_types::Span::from(node),
5672            children: {
5673                #[allow(clippy::suspicious_else_formatting)]
5674                let non_field_children = {
5675                    let mut cursor = node.walk();
5676                    let mut result = ::std::vec::Vec::new();
5677                    if cursor.goto_first_child() {
5678                        loop {
5679                            if cursor.field_name().is_none()
5680                                && cursor.node().is_named()
5681                                && !cursor.node().is_extra()
5682                            {
5683                                result.push(cursor.node());
5684                            }
5685                            if !cursor.goto_next_sibling() {
5686                                break;
5687                            }
5688                        }
5689                    }
5690                    result
5691                };
5692                let mut items = ::std::vec::Vec::new();
5693                for child in non_field_children {
5694                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
5695                        <InterfaceBodyChildren as ::treesitter_types::FromNode>::from_node(
5696                            child, src,
5697                        )
5698                    })?);
5699                }
5700                items
5701            },
5702        })
5703    }
5704}
5705impl ::treesitter_types::Spanned for InterfaceBody<'_> {
5706    fn span(&self) -> ::treesitter_types::Span {
5707        self.span
5708    }
5709}
5710#[derive(Debug, Clone, PartialEq, Eq)]
5711pub struct InterfaceDeclaration<'tree> {
5712    pub span: ::treesitter_types::Span,
5713    pub body: InterfaceBody<'tree>,
5714    pub name: TypeIdentifier<'tree>,
5715    pub type_parameters: ::core::option::Option<TypeParameters<'tree>>,
5716    pub children: ::core::option::Option<ExtendsTypeClause<'tree>>,
5717}
5718impl<'tree> ::treesitter_types::FromNode<'tree> for InterfaceDeclaration<'tree> {
5719    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
5720    fn from_node(
5721        node: ::treesitter_types::tree_sitter::Node<'tree>,
5722        src: &'tree [u8],
5723    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
5724        debug_assert_eq!(node.kind(), "interface_declaration");
5725        Ok(Self {
5726            span: ::treesitter_types::Span::from(node),
5727            body: {
5728                let child = node
5729                    .child_by_field_name("body")
5730                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("body", node))?;
5731                ::treesitter_types::runtime::maybe_grow_stack(|| {
5732                    <InterfaceBody as ::treesitter_types::FromNode>::from_node(child, src)
5733                })?
5734            },
5735            name: {
5736                let child = node
5737                    .child_by_field_name("name")
5738                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("name", node))?;
5739                ::treesitter_types::runtime::maybe_grow_stack(|| {
5740                    <TypeIdentifier as ::treesitter_types::FromNode>::from_node(child, src)
5741                })?
5742            },
5743            type_parameters: match node.child_by_field_name("type_parameters") {
5744                Some(child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
5745                    <TypeParameters as ::treesitter_types::FromNode>::from_node(child, src)
5746                })?),
5747                None => None,
5748            },
5749            children: {
5750                #[allow(clippy::suspicious_else_formatting)]
5751                let non_field_children = {
5752                    let mut cursor = node.walk();
5753                    let mut result = ::std::vec::Vec::new();
5754                    if cursor.goto_first_child() {
5755                        loop {
5756                            if cursor.field_name().is_none()
5757                                && cursor.node().is_named()
5758                                && !cursor.node().is_extra()
5759                            {
5760                                result.push(cursor.node());
5761                            }
5762                            if !cursor.goto_next_sibling() {
5763                                break;
5764                            }
5765                        }
5766                    }
5767                    result
5768                };
5769                match non_field_children.first() {
5770                    Some(&child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
5771                        <ExtendsTypeClause as ::treesitter_types::FromNode>::from_node(child, src)
5772                    })?),
5773                    None => None,
5774                }
5775            },
5776        })
5777    }
5778}
5779impl ::treesitter_types::Spanned for InterfaceDeclaration<'_> {
5780    fn span(&self) -> ::treesitter_types::Span {
5781        self.span
5782    }
5783}
5784#[derive(Debug, Clone, PartialEq, Eq)]
5785pub struct InternalModule<'tree> {
5786    pub span: ::treesitter_types::Span,
5787    pub body: ::core::option::Option<StatementBlock<'tree>>,
5788    pub name: InternalModuleName<'tree>,
5789}
5790impl<'tree> ::treesitter_types::FromNode<'tree> for InternalModule<'tree> {
5791    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
5792    fn from_node(
5793        node: ::treesitter_types::tree_sitter::Node<'tree>,
5794        src: &'tree [u8],
5795    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
5796        debug_assert_eq!(node.kind(), "internal_module");
5797        Ok(Self {
5798            span: ::treesitter_types::Span::from(node),
5799            body: match node.child_by_field_name("body") {
5800                Some(child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
5801                    <StatementBlock as ::treesitter_types::FromNode>::from_node(child, src)
5802                })?),
5803                None => None,
5804            },
5805            name: {
5806                let child = node
5807                    .child_by_field_name("name")
5808                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("name", node))?;
5809                ::treesitter_types::runtime::maybe_grow_stack(|| {
5810                    <InternalModuleName as ::treesitter_types::FromNode>::from_node(child, src)
5811                })?
5812            },
5813        })
5814    }
5815}
5816impl ::treesitter_types::Spanned for InternalModule<'_> {
5817    fn span(&self) -> ::treesitter_types::Span {
5818        self.span
5819    }
5820}
5821#[derive(Debug, Clone, PartialEq, Eq)]
5822pub struct IntersectionType<'tree> {
5823    pub span: ::treesitter_types::Span,
5824    pub children: ::std::vec::Vec<Type<'tree>>,
5825}
5826impl<'tree> ::treesitter_types::FromNode<'tree> for IntersectionType<'tree> {
5827    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
5828    fn from_node(
5829        node: ::treesitter_types::tree_sitter::Node<'tree>,
5830        src: &'tree [u8],
5831    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
5832        debug_assert_eq!(node.kind(), "intersection_type");
5833        Ok(Self {
5834            span: ::treesitter_types::Span::from(node),
5835            children: {
5836                #[allow(clippy::suspicious_else_formatting)]
5837                let non_field_children = {
5838                    let mut cursor = node.walk();
5839                    let mut result = ::std::vec::Vec::new();
5840                    if cursor.goto_first_child() {
5841                        loop {
5842                            if cursor.field_name().is_none()
5843                                && cursor.node().is_named()
5844                                && !cursor.node().is_extra()
5845                            {
5846                                result.push(cursor.node());
5847                            }
5848                            if !cursor.goto_next_sibling() {
5849                                break;
5850                            }
5851                        }
5852                    }
5853                    result
5854                };
5855                let mut items = ::std::vec::Vec::new();
5856                for child in non_field_children {
5857                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
5858                        <Type as ::treesitter_types::FromNode>::from_node(child, src)
5859                    })?);
5860                }
5861                items
5862            },
5863        })
5864    }
5865}
5866impl ::treesitter_types::Spanned for IntersectionType<'_> {
5867    fn span(&self) -> ::treesitter_types::Span {
5868        self.span
5869    }
5870}
5871#[derive(Debug, Clone, PartialEq, Eq)]
5872pub struct LabeledStatement<'tree> {
5873    pub span: ::treesitter_types::Span,
5874    pub body: Statement<'tree>,
5875    pub label: StatementIdentifier<'tree>,
5876}
5877impl<'tree> ::treesitter_types::FromNode<'tree> for LabeledStatement<'tree> {
5878    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
5879    fn from_node(
5880        node: ::treesitter_types::tree_sitter::Node<'tree>,
5881        src: &'tree [u8],
5882    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
5883        debug_assert_eq!(node.kind(), "labeled_statement");
5884        Ok(Self {
5885            span: ::treesitter_types::Span::from(node),
5886            body: {
5887                let child = node
5888                    .child_by_field_name("body")
5889                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("body", node))?;
5890                ::treesitter_types::runtime::maybe_grow_stack(|| {
5891                    <Statement as ::treesitter_types::FromNode>::from_node(child, src)
5892                })?
5893            },
5894            label: {
5895                let child = node
5896                    .child_by_field_name("label")
5897                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("label", node))?;
5898                ::treesitter_types::runtime::maybe_grow_stack(|| {
5899                    <StatementIdentifier as ::treesitter_types::FromNode>::from_node(child, src)
5900                })?
5901            },
5902        })
5903    }
5904}
5905impl ::treesitter_types::Spanned for LabeledStatement<'_> {
5906    fn span(&self) -> ::treesitter_types::Span {
5907        self.span
5908    }
5909}
5910#[derive(Debug, Clone, PartialEq, Eq)]
5911pub struct LexicalDeclaration<'tree> {
5912    pub span: ::treesitter_types::Span,
5913    pub kind: LexicalDeclarationKind,
5914    pub children: ::std::vec::Vec<VariableDeclarator<'tree>>,
5915}
5916impl<'tree> ::treesitter_types::FromNode<'tree> for LexicalDeclaration<'tree> {
5917    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
5918    fn from_node(
5919        node: ::treesitter_types::tree_sitter::Node<'tree>,
5920        src: &'tree [u8],
5921    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
5922        debug_assert_eq!(node.kind(), "lexical_declaration");
5923        Ok(Self {
5924            span: ::treesitter_types::Span::from(node),
5925            kind: {
5926                let child = node
5927                    .child_by_field_name("kind")
5928                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("kind", node))?;
5929                ::treesitter_types::runtime::maybe_grow_stack(|| {
5930                    <LexicalDeclarationKind as ::treesitter_types::FromNode>::from_node(child, src)
5931                })?
5932            },
5933            children: {
5934                #[allow(clippy::suspicious_else_formatting)]
5935                let non_field_children = {
5936                    let mut cursor = node.walk();
5937                    let mut result = ::std::vec::Vec::new();
5938                    if cursor.goto_first_child() {
5939                        loop {
5940                            if cursor.field_name().is_none()
5941                                && cursor.node().is_named()
5942                                && !cursor.node().is_extra()
5943                            {
5944                                result.push(cursor.node());
5945                            }
5946                            if !cursor.goto_next_sibling() {
5947                                break;
5948                            }
5949                        }
5950                    }
5951                    result
5952                };
5953                let mut items = ::std::vec::Vec::new();
5954                for child in non_field_children {
5955                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
5956                        <VariableDeclarator as ::treesitter_types::FromNode>::from_node(child, src)
5957                    })?);
5958                }
5959                items
5960            },
5961        })
5962    }
5963}
5964impl ::treesitter_types::Spanned for LexicalDeclaration<'_> {
5965    fn span(&self) -> ::treesitter_types::Span {
5966        self.span
5967    }
5968}
5969#[derive(Debug, Clone, PartialEq, Eq)]
5970pub struct LiteralType<'tree> {
5971    pub span: ::treesitter_types::Span,
5972    pub children: LiteralTypeChildren<'tree>,
5973}
5974impl<'tree> ::treesitter_types::FromNode<'tree> for LiteralType<'tree> {
5975    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
5976    fn from_node(
5977        node: ::treesitter_types::tree_sitter::Node<'tree>,
5978        src: &'tree [u8],
5979    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
5980        debug_assert_eq!(node.kind(), "literal_type");
5981        Ok(Self {
5982            span: ::treesitter_types::Span::from(node),
5983            children: {
5984                #[allow(clippy::suspicious_else_formatting)]
5985                let non_field_children = {
5986                    let mut cursor = node.walk();
5987                    let mut result = ::std::vec::Vec::new();
5988                    if cursor.goto_first_child() {
5989                        loop {
5990                            if cursor.field_name().is_none()
5991                                && cursor.node().is_named()
5992                                && !cursor.node().is_extra()
5993                            {
5994                                result.push(cursor.node());
5995                            }
5996                            if !cursor.goto_next_sibling() {
5997                                break;
5998                            }
5999                        }
6000                    }
6001                    result
6002                };
6003                let child = if let Some(&c) = non_field_children.first() {
6004                    c
6005                } else {
6006                    let mut fallback_cursor = node.walk();
6007                    let mut fallback_child = None;
6008                    if fallback_cursor.goto_first_child() {
6009                        loop {
6010                            if fallback_cursor.field_name().is_none()
6011                                && !fallback_cursor.node().is_extra()
6012                            {
6013                                let candidate = fallback_cursor.node();
6014                                #[allow(clippy::needless_question_mark)]
6015                                if (|| -> ::core::result::Result<
6016                                    _,
6017                                    ::treesitter_types::ParseError,
6018                                > {
6019                                    let child = candidate;
6020                                    Ok(
6021                                        ::treesitter_types::runtime::maybe_grow_stack(|| <LiteralTypeChildren as ::treesitter_types::FromNode>::from_node(
6022                                            child,
6023                                            src,
6024                                        ))?,
6025                                    )
6026                                })()
6027                                    .is_ok()
6028                                {
6029                                    fallback_child = Some(candidate);
6030                                    break;
6031                                }
6032                            }
6033                            if !fallback_cursor.goto_next_sibling() {
6034                                break;
6035                            }
6036                        }
6037                    }
6038                    if fallback_child.is_none() {
6039                        let mut cursor2 = node.walk();
6040                        if cursor2.goto_first_child() {
6041                            loop {
6042                                if cursor2.node().is_named() && !cursor2.node().is_extra() {
6043                                    let candidate = cursor2.node();
6044                                    #[allow(clippy::needless_question_mark)]
6045                                    if (|| -> ::core::result::Result<
6046                                        _,
6047                                        ::treesitter_types::ParseError,
6048                                    > {
6049                                        let child = candidate;
6050                                        Ok(
6051                                            ::treesitter_types::runtime::maybe_grow_stack(|| <LiteralTypeChildren as ::treesitter_types::FromNode>::from_node(
6052                                                child,
6053                                                src,
6054                                            ))?,
6055                                        )
6056                                    })()
6057                                        .is_ok()
6058                                    {
6059                                        fallback_child = Some(candidate);
6060                                        break;
6061                                    }
6062                                }
6063                                if !cursor2.goto_next_sibling() {
6064                                    break;
6065                                }
6066                            }
6067                        }
6068                    }
6069                    fallback_child.ok_or_else(|| {
6070                        ::treesitter_types::ParseError::missing_field("children", node)
6071                    })?
6072                };
6073                ::treesitter_types::runtime::maybe_grow_stack(|| {
6074                    <LiteralTypeChildren as ::treesitter_types::FromNode>::from_node(child, src)
6075                })?
6076            },
6077        })
6078    }
6079}
6080impl ::treesitter_types::Spanned for LiteralType<'_> {
6081    fn span(&self) -> ::treesitter_types::Span {
6082        self.span
6083    }
6084}
6085#[derive(Debug, Clone, PartialEq, Eq)]
6086pub struct LookupType<'tree> {
6087    pub span: ::treesitter_types::Span,
6088    pub children: ::std::vec::Vec<Type<'tree>>,
6089}
6090impl<'tree> ::treesitter_types::FromNode<'tree> for LookupType<'tree> {
6091    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
6092    fn from_node(
6093        node: ::treesitter_types::tree_sitter::Node<'tree>,
6094        src: &'tree [u8],
6095    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
6096        debug_assert_eq!(node.kind(), "lookup_type");
6097        Ok(Self {
6098            span: ::treesitter_types::Span::from(node),
6099            children: {
6100                #[allow(clippy::suspicious_else_formatting)]
6101                let non_field_children = {
6102                    let mut cursor = node.walk();
6103                    let mut result = ::std::vec::Vec::new();
6104                    if cursor.goto_first_child() {
6105                        loop {
6106                            if cursor.field_name().is_none()
6107                                && cursor.node().is_named()
6108                                && !cursor.node().is_extra()
6109                            {
6110                                result.push(cursor.node());
6111                            }
6112                            if !cursor.goto_next_sibling() {
6113                                break;
6114                            }
6115                        }
6116                    }
6117                    result
6118                };
6119                let mut items = ::std::vec::Vec::new();
6120                for child in non_field_children {
6121                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
6122                        <Type as ::treesitter_types::FromNode>::from_node(child, src)
6123                    })?);
6124                }
6125                items
6126            },
6127        })
6128    }
6129}
6130impl ::treesitter_types::Spanned for LookupType<'_> {
6131    fn span(&self) -> ::treesitter_types::Span {
6132        self.span
6133    }
6134}
6135#[derive(Debug, Clone, PartialEq, Eq)]
6136pub struct MappedTypeClause<'tree> {
6137    pub span: ::treesitter_types::Span,
6138    pub alias: ::core::option::Option<Type<'tree>>,
6139    pub name: TypeIdentifier<'tree>,
6140    pub r#type: Type<'tree>,
6141}
6142impl<'tree> ::treesitter_types::FromNode<'tree> for MappedTypeClause<'tree> {
6143    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
6144    fn from_node(
6145        node: ::treesitter_types::tree_sitter::Node<'tree>,
6146        src: &'tree [u8],
6147    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
6148        debug_assert_eq!(node.kind(), "mapped_type_clause");
6149        Ok(Self {
6150            span: ::treesitter_types::Span::from(node),
6151            alias: match node.child_by_field_name("alias") {
6152                Some(child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
6153                    <Type as ::treesitter_types::FromNode>::from_node(child, src)
6154                })?),
6155                None => None,
6156            },
6157            name: {
6158                let child = node
6159                    .child_by_field_name("name")
6160                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("name", node))?;
6161                ::treesitter_types::runtime::maybe_grow_stack(|| {
6162                    <TypeIdentifier as ::treesitter_types::FromNode>::from_node(child, src)
6163                })?
6164            },
6165            r#type: {
6166                let child = node
6167                    .child_by_field_name("type")
6168                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("type", node))?;
6169                ::treesitter_types::runtime::maybe_grow_stack(|| {
6170                    <Type as ::treesitter_types::FromNode>::from_node(child, src)
6171                })?
6172            },
6173        })
6174    }
6175}
6176impl ::treesitter_types::Spanned for MappedTypeClause<'_> {
6177    fn span(&self) -> ::treesitter_types::Span {
6178        self.span
6179    }
6180}
6181#[derive(Debug, Clone, PartialEq, Eq)]
6182pub struct MemberExpression<'tree> {
6183    pub span: ::treesitter_types::Span,
6184    pub object: MemberExpressionObject<'tree>,
6185    pub optional_chain: ::core::option::Option<OptionalChain<'tree>>,
6186    pub property: MemberExpressionProperty<'tree>,
6187}
6188impl<'tree> ::treesitter_types::FromNode<'tree> for MemberExpression<'tree> {
6189    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
6190    fn from_node(
6191        node: ::treesitter_types::tree_sitter::Node<'tree>,
6192        src: &'tree [u8],
6193    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
6194        debug_assert_eq!(node.kind(), "member_expression");
6195        Ok(Self {
6196            span: ::treesitter_types::Span::from(node),
6197            object: {
6198                let child = node
6199                    .child_by_field_name("object")
6200                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("object", node))?;
6201                ::treesitter_types::runtime::maybe_grow_stack(|| {
6202                    <MemberExpressionObject as ::treesitter_types::FromNode>::from_node(child, src)
6203                })?
6204            },
6205            optional_chain: match node.child_by_field_name("optional_chain") {
6206                Some(child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
6207                    <OptionalChain as ::treesitter_types::FromNode>::from_node(child, src)
6208                })?),
6209                None => None,
6210            },
6211            property: {
6212                let child = node.child_by_field_name("property").ok_or_else(|| {
6213                    ::treesitter_types::ParseError::missing_field("property", node)
6214                })?;
6215                ::treesitter_types::runtime::maybe_grow_stack(|| {
6216                    <MemberExpressionProperty as ::treesitter_types::FromNode>::from_node(
6217                        child, src,
6218                    )
6219                })?
6220            },
6221        })
6222    }
6223}
6224impl ::treesitter_types::Spanned for MemberExpression<'_> {
6225    fn span(&self) -> ::treesitter_types::Span {
6226        self.span
6227    }
6228}
6229#[derive(Debug, Clone, PartialEq, Eq)]
6230pub struct MetaProperty<'tree> {
6231    pub span: ::treesitter_types::Span,
6232    text: &'tree str,
6233}
6234impl<'tree> ::treesitter_types::FromNode<'tree> for MetaProperty<'tree> {
6235    fn from_node(
6236        node: ::treesitter_types::tree_sitter::Node<'tree>,
6237        src: &'tree [u8],
6238    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
6239        debug_assert_eq!(node.kind(), "meta_property");
6240        Ok(Self {
6241            span: ::treesitter_types::Span::from(node),
6242            text: node.utf8_text(src)?,
6243        })
6244    }
6245}
6246impl<'tree> ::treesitter_types::LeafNode<'tree> for MetaProperty<'tree> {
6247    fn text(&self) -> &'tree str {
6248        self.text
6249    }
6250}
6251impl ::treesitter_types::Spanned for MetaProperty<'_> {
6252    fn span(&self) -> ::treesitter_types::Span {
6253        self.span
6254    }
6255}
6256#[derive(Debug, Clone, PartialEq, Eq)]
6257pub struct MethodDefinition<'tree> {
6258    pub span: ::treesitter_types::Span,
6259    pub body: StatementBlock<'tree>,
6260    pub name: MethodDefinitionName<'tree>,
6261    pub parameters: FormalParameters<'tree>,
6262    pub return_type: ::core::option::Option<MethodDefinitionReturnType<'tree>>,
6263    pub type_parameters: ::core::option::Option<TypeParameters<'tree>>,
6264    pub children: ::std::vec::Vec<MethodDefinitionChildren<'tree>>,
6265}
6266impl<'tree> ::treesitter_types::FromNode<'tree> for MethodDefinition<'tree> {
6267    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
6268    fn from_node(
6269        node: ::treesitter_types::tree_sitter::Node<'tree>,
6270        src: &'tree [u8],
6271    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
6272        debug_assert_eq!(node.kind(), "method_definition");
6273        Ok(Self {
6274            span: ::treesitter_types::Span::from(node),
6275            body: {
6276                let child = node
6277                    .child_by_field_name("body")
6278                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("body", node))?;
6279                ::treesitter_types::runtime::maybe_grow_stack(|| {
6280                    <StatementBlock as ::treesitter_types::FromNode>::from_node(child, src)
6281                })?
6282            },
6283            name: {
6284                let child = node
6285                    .child_by_field_name("name")
6286                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("name", node))?;
6287                ::treesitter_types::runtime::maybe_grow_stack(|| {
6288                    <MethodDefinitionName as ::treesitter_types::FromNode>::from_node(child, src)
6289                })?
6290            },
6291            parameters: {
6292                let child = node.child_by_field_name("parameters").ok_or_else(|| {
6293                    ::treesitter_types::ParseError::missing_field("parameters", node)
6294                })?;
6295                ::treesitter_types::runtime::maybe_grow_stack(|| {
6296                    <FormalParameters as ::treesitter_types::FromNode>::from_node(child, src)
6297                })?
6298            },
6299            return_type: match node.child_by_field_name("return_type") {
6300                Some(child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
6301                    <MethodDefinitionReturnType as ::treesitter_types::FromNode>::from_node(
6302                        child, src,
6303                    )
6304                })?),
6305                None => None,
6306            },
6307            type_parameters: match node.child_by_field_name("type_parameters") {
6308                Some(child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
6309                    <TypeParameters as ::treesitter_types::FromNode>::from_node(child, src)
6310                })?),
6311                None => None,
6312            },
6313            children: {
6314                #[allow(clippy::suspicious_else_formatting)]
6315                let non_field_children = {
6316                    let mut cursor = node.walk();
6317                    let mut result = ::std::vec::Vec::new();
6318                    if cursor.goto_first_child() {
6319                        loop {
6320                            if cursor.field_name().is_none()
6321                                && cursor.node().is_named()
6322                                && !cursor.node().is_extra()
6323                            {
6324                                result.push(cursor.node());
6325                            }
6326                            if !cursor.goto_next_sibling() {
6327                                break;
6328                            }
6329                        }
6330                    }
6331                    result
6332                };
6333                let mut items = ::std::vec::Vec::new();
6334                for child in non_field_children {
6335                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
6336                        <MethodDefinitionChildren as ::treesitter_types::FromNode>::from_node(
6337                            child, src,
6338                        )
6339                    })?);
6340                }
6341                items
6342            },
6343        })
6344    }
6345}
6346impl ::treesitter_types::Spanned for MethodDefinition<'_> {
6347    fn span(&self) -> ::treesitter_types::Span {
6348        self.span
6349    }
6350}
6351#[derive(Debug, Clone, PartialEq, Eq)]
6352pub struct MethodSignature<'tree> {
6353    pub span: ::treesitter_types::Span,
6354    pub name: MethodSignatureName<'tree>,
6355    pub parameters: FormalParameters<'tree>,
6356    pub return_type: ::core::option::Option<MethodSignatureReturnType<'tree>>,
6357    pub type_parameters: ::core::option::Option<TypeParameters<'tree>>,
6358    pub children: ::std::vec::Vec<MethodSignatureChildren<'tree>>,
6359}
6360impl<'tree> ::treesitter_types::FromNode<'tree> for MethodSignature<'tree> {
6361    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
6362    fn from_node(
6363        node: ::treesitter_types::tree_sitter::Node<'tree>,
6364        src: &'tree [u8],
6365    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
6366        debug_assert_eq!(node.kind(), "method_signature");
6367        Ok(Self {
6368            span: ::treesitter_types::Span::from(node),
6369            name: {
6370                let child = node
6371                    .child_by_field_name("name")
6372                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("name", node))?;
6373                ::treesitter_types::runtime::maybe_grow_stack(|| {
6374                    <MethodSignatureName as ::treesitter_types::FromNode>::from_node(child, src)
6375                })?
6376            },
6377            parameters: {
6378                let child = node.child_by_field_name("parameters").ok_or_else(|| {
6379                    ::treesitter_types::ParseError::missing_field("parameters", node)
6380                })?;
6381                ::treesitter_types::runtime::maybe_grow_stack(|| {
6382                    <FormalParameters as ::treesitter_types::FromNode>::from_node(child, src)
6383                })?
6384            },
6385            return_type: match node.child_by_field_name("return_type") {
6386                Some(child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
6387                    <MethodSignatureReturnType as ::treesitter_types::FromNode>::from_node(
6388                        child, src,
6389                    )
6390                })?),
6391                None => None,
6392            },
6393            type_parameters: match node.child_by_field_name("type_parameters") {
6394                Some(child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
6395                    <TypeParameters as ::treesitter_types::FromNode>::from_node(child, src)
6396                })?),
6397                None => None,
6398            },
6399            children: {
6400                #[allow(clippy::suspicious_else_formatting)]
6401                let non_field_children = {
6402                    let mut cursor = node.walk();
6403                    let mut result = ::std::vec::Vec::new();
6404                    if cursor.goto_first_child() {
6405                        loop {
6406                            if cursor.field_name().is_none()
6407                                && cursor.node().is_named()
6408                                && !cursor.node().is_extra()
6409                            {
6410                                result.push(cursor.node());
6411                            }
6412                            if !cursor.goto_next_sibling() {
6413                                break;
6414                            }
6415                        }
6416                    }
6417                    result
6418                };
6419                let mut items = ::std::vec::Vec::new();
6420                for child in non_field_children {
6421                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
6422                        <MethodSignatureChildren as ::treesitter_types::FromNode>::from_node(
6423                            child, src,
6424                        )
6425                    })?);
6426                }
6427                items
6428            },
6429        })
6430    }
6431}
6432impl ::treesitter_types::Spanned for MethodSignature<'_> {
6433    fn span(&self) -> ::treesitter_types::Span {
6434        self.span
6435    }
6436}
6437#[derive(Debug, Clone, PartialEq, Eq)]
6438pub struct Module<'tree> {
6439    pub span: ::treesitter_types::Span,
6440    pub body: ::core::option::Option<StatementBlock<'tree>>,
6441    pub name: ModuleName<'tree>,
6442}
6443impl<'tree> ::treesitter_types::FromNode<'tree> for Module<'tree> {
6444    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
6445    fn from_node(
6446        node: ::treesitter_types::tree_sitter::Node<'tree>,
6447        src: &'tree [u8],
6448    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
6449        debug_assert_eq!(node.kind(), "module");
6450        Ok(Self {
6451            span: ::treesitter_types::Span::from(node),
6452            body: match node.child_by_field_name("body") {
6453                Some(child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
6454                    <StatementBlock as ::treesitter_types::FromNode>::from_node(child, src)
6455                })?),
6456                None => None,
6457            },
6458            name: {
6459                let child = node
6460                    .child_by_field_name("name")
6461                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("name", node))?;
6462                ::treesitter_types::runtime::maybe_grow_stack(|| {
6463                    <ModuleName as ::treesitter_types::FromNode>::from_node(child, src)
6464                })?
6465            },
6466        })
6467    }
6468}
6469impl ::treesitter_types::Spanned for Module<'_> {
6470    fn span(&self) -> ::treesitter_types::Span {
6471        self.span
6472    }
6473}
6474#[derive(Debug, Clone, PartialEq, Eq)]
6475pub struct NamedImports<'tree> {
6476    pub span: ::treesitter_types::Span,
6477    pub children: ::std::vec::Vec<ImportSpecifier<'tree>>,
6478}
6479impl<'tree> ::treesitter_types::FromNode<'tree> for NamedImports<'tree> {
6480    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
6481    fn from_node(
6482        node: ::treesitter_types::tree_sitter::Node<'tree>,
6483        src: &'tree [u8],
6484    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
6485        debug_assert_eq!(node.kind(), "named_imports");
6486        Ok(Self {
6487            span: ::treesitter_types::Span::from(node),
6488            children: {
6489                #[allow(clippy::suspicious_else_formatting)]
6490                let non_field_children = {
6491                    let mut cursor = node.walk();
6492                    let mut result = ::std::vec::Vec::new();
6493                    if cursor.goto_first_child() {
6494                        loop {
6495                            if cursor.field_name().is_none()
6496                                && cursor.node().is_named()
6497                                && !cursor.node().is_extra()
6498                            {
6499                                result.push(cursor.node());
6500                            }
6501                            if !cursor.goto_next_sibling() {
6502                                break;
6503                            }
6504                        }
6505                    }
6506                    result
6507                };
6508                let mut items = ::std::vec::Vec::new();
6509                for child in non_field_children {
6510                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
6511                        <ImportSpecifier as ::treesitter_types::FromNode>::from_node(child, src)
6512                    })?);
6513                }
6514                items
6515            },
6516        })
6517    }
6518}
6519impl ::treesitter_types::Spanned for NamedImports<'_> {
6520    fn span(&self) -> ::treesitter_types::Span {
6521        self.span
6522    }
6523}
6524#[derive(Debug, Clone, PartialEq, Eq)]
6525pub struct NamespaceExport<'tree> {
6526    pub span: ::treesitter_types::Span,
6527    pub children: NamespaceExportChildren<'tree>,
6528}
6529impl<'tree> ::treesitter_types::FromNode<'tree> for NamespaceExport<'tree> {
6530    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
6531    fn from_node(
6532        node: ::treesitter_types::tree_sitter::Node<'tree>,
6533        src: &'tree [u8],
6534    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
6535        debug_assert_eq!(node.kind(), "namespace_export");
6536        Ok(Self {
6537            span: ::treesitter_types::Span::from(node),
6538            children: {
6539                #[allow(clippy::suspicious_else_formatting)]
6540                let non_field_children = {
6541                    let mut cursor = node.walk();
6542                    let mut result = ::std::vec::Vec::new();
6543                    if cursor.goto_first_child() {
6544                        loop {
6545                            if cursor.field_name().is_none()
6546                                && cursor.node().is_named()
6547                                && !cursor.node().is_extra()
6548                            {
6549                                result.push(cursor.node());
6550                            }
6551                            if !cursor.goto_next_sibling() {
6552                                break;
6553                            }
6554                        }
6555                    }
6556                    result
6557                };
6558                let child = if let Some(&c) = non_field_children.first() {
6559                    c
6560                } else {
6561                    let mut fallback_cursor = node.walk();
6562                    let mut fallback_child = None;
6563                    if fallback_cursor.goto_first_child() {
6564                        loop {
6565                            if fallback_cursor.field_name().is_none()
6566                                && !fallback_cursor.node().is_extra()
6567                            {
6568                                let candidate = fallback_cursor.node();
6569                                #[allow(clippy::needless_question_mark)]
6570                                if (|| -> ::core::result::Result<
6571                                    _,
6572                                    ::treesitter_types::ParseError,
6573                                > {
6574                                    let child = candidate;
6575                                    Ok(
6576                                        ::treesitter_types::runtime::maybe_grow_stack(|| <NamespaceExportChildren as ::treesitter_types::FromNode>::from_node(
6577                                            child,
6578                                            src,
6579                                        ))?,
6580                                    )
6581                                })()
6582                                    .is_ok()
6583                                {
6584                                    fallback_child = Some(candidate);
6585                                    break;
6586                                }
6587                            }
6588                            if !fallback_cursor.goto_next_sibling() {
6589                                break;
6590                            }
6591                        }
6592                    }
6593                    if fallback_child.is_none() {
6594                        let mut cursor2 = node.walk();
6595                        if cursor2.goto_first_child() {
6596                            loop {
6597                                if cursor2.node().is_named() && !cursor2.node().is_extra() {
6598                                    let candidate = cursor2.node();
6599                                    #[allow(clippy::needless_question_mark)]
6600                                    if (|| -> ::core::result::Result<
6601                                        _,
6602                                        ::treesitter_types::ParseError,
6603                                    > {
6604                                        let child = candidate;
6605                                        Ok(
6606                                            ::treesitter_types::runtime::maybe_grow_stack(|| <NamespaceExportChildren as ::treesitter_types::FromNode>::from_node(
6607                                                child,
6608                                                src,
6609                                            ))?,
6610                                        )
6611                                    })()
6612                                        .is_ok()
6613                                    {
6614                                        fallback_child = Some(candidate);
6615                                        break;
6616                                    }
6617                                }
6618                                if !cursor2.goto_next_sibling() {
6619                                    break;
6620                                }
6621                            }
6622                        }
6623                    }
6624                    fallback_child.ok_or_else(|| {
6625                        ::treesitter_types::ParseError::missing_field("children", node)
6626                    })?
6627                };
6628                ::treesitter_types::runtime::maybe_grow_stack(|| {
6629                    <NamespaceExportChildren as ::treesitter_types::FromNode>::from_node(child, src)
6630                })?
6631            },
6632        })
6633    }
6634}
6635impl ::treesitter_types::Spanned for NamespaceExport<'_> {
6636    fn span(&self) -> ::treesitter_types::Span {
6637        self.span
6638    }
6639}
6640#[derive(Debug, Clone, PartialEq, Eq)]
6641pub struct NamespaceImport<'tree> {
6642    pub span: ::treesitter_types::Span,
6643    pub children: Identifier<'tree>,
6644}
6645impl<'tree> ::treesitter_types::FromNode<'tree> for NamespaceImport<'tree> {
6646    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
6647    fn from_node(
6648        node: ::treesitter_types::tree_sitter::Node<'tree>,
6649        src: &'tree [u8],
6650    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
6651        debug_assert_eq!(node.kind(), "namespace_import");
6652        Ok(Self {
6653            span: ::treesitter_types::Span::from(node),
6654            children: {
6655                #[allow(clippy::suspicious_else_formatting)]
6656                let non_field_children = {
6657                    let mut cursor = node.walk();
6658                    let mut result = ::std::vec::Vec::new();
6659                    if cursor.goto_first_child() {
6660                        loop {
6661                            if cursor.field_name().is_none()
6662                                && cursor.node().is_named()
6663                                && !cursor.node().is_extra()
6664                            {
6665                                result.push(cursor.node());
6666                            }
6667                            if !cursor.goto_next_sibling() {
6668                                break;
6669                            }
6670                        }
6671                    }
6672                    result
6673                };
6674                let child = if let Some(&c) = non_field_children.first() {
6675                    c
6676                } else {
6677                    let mut fallback_cursor = node.walk();
6678                    let mut fallback_child = None;
6679                    if fallback_cursor.goto_first_child() {
6680                        loop {
6681                            if fallback_cursor.field_name().is_none()
6682                                && !fallback_cursor.node().is_extra()
6683                            {
6684                                let candidate = fallback_cursor.node();
6685                                #[allow(clippy::needless_question_mark)]
6686                                if (|| -> ::core::result::Result<
6687                                    _,
6688                                    ::treesitter_types::ParseError,
6689                                > {
6690                                    let child = candidate;
6691                                    Ok(
6692                                        ::treesitter_types::runtime::maybe_grow_stack(|| <Identifier as ::treesitter_types::FromNode>::from_node(
6693                                            child,
6694                                            src,
6695                                        ))?,
6696                                    )
6697                                })()
6698                                    .is_ok()
6699                                {
6700                                    fallback_child = Some(candidate);
6701                                    break;
6702                                }
6703                            }
6704                            if !fallback_cursor.goto_next_sibling() {
6705                                break;
6706                            }
6707                        }
6708                    }
6709                    if fallback_child.is_none() {
6710                        let mut cursor2 = node.walk();
6711                        if cursor2.goto_first_child() {
6712                            loop {
6713                                if cursor2.node().is_named() && !cursor2.node().is_extra() {
6714                                    let candidate = cursor2.node();
6715                                    #[allow(clippy::needless_question_mark)]
6716                                    if (|| -> ::core::result::Result<
6717                                        _,
6718                                        ::treesitter_types::ParseError,
6719                                    > {
6720                                        let child = candidate;
6721                                        Ok(
6722                                            ::treesitter_types::runtime::maybe_grow_stack(|| <Identifier as ::treesitter_types::FromNode>::from_node(
6723                                                child,
6724                                                src,
6725                                            ))?,
6726                                        )
6727                                    })()
6728                                        .is_ok()
6729                                    {
6730                                        fallback_child = Some(candidate);
6731                                        break;
6732                                    }
6733                                }
6734                                if !cursor2.goto_next_sibling() {
6735                                    break;
6736                                }
6737                            }
6738                        }
6739                    }
6740                    fallback_child.ok_or_else(|| {
6741                        ::treesitter_types::ParseError::missing_field("children", node)
6742                    })?
6743                };
6744                ::treesitter_types::runtime::maybe_grow_stack(|| {
6745                    <Identifier as ::treesitter_types::FromNode>::from_node(child, src)
6746                })?
6747            },
6748        })
6749    }
6750}
6751impl ::treesitter_types::Spanned for NamespaceImport<'_> {
6752    fn span(&self) -> ::treesitter_types::Span {
6753        self.span
6754    }
6755}
6756#[derive(Debug, Clone, PartialEq, Eq)]
6757pub struct NestedIdentifier<'tree> {
6758    pub span: ::treesitter_types::Span,
6759    pub object: NestedIdentifierObject<'tree>,
6760    pub property: PropertyIdentifier<'tree>,
6761}
6762impl<'tree> ::treesitter_types::FromNode<'tree> for NestedIdentifier<'tree> {
6763    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
6764    fn from_node(
6765        node: ::treesitter_types::tree_sitter::Node<'tree>,
6766        src: &'tree [u8],
6767    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
6768        debug_assert_eq!(node.kind(), "nested_identifier");
6769        Ok(Self {
6770            span: ::treesitter_types::Span::from(node),
6771            object: {
6772                let child = node
6773                    .child_by_field_name("object")
6774                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("object", node))?;
6775                ::treesitter_types::runtime::maybe_grow_stack(|| {
6776                    <NestedIdentifierObject as ::treesitter_types::FromNode>::from_node(child, src)
6777                })?
6778            },
6779            property: {
6780                let child = node.child_by_field_name("property").ok_or_else(|| {
6781                    ::treesitter_types::ParseError::missing_field("property", node)
6782                })?;
6783                ::treesitter_types::runtime::maybe_grow_stack(|| {
6784                    <PropertyIdentifier as ::treesitter_types::FromNode>::from_node(child, src)
6785                })?
6786            },
6787        })
6788    }
6789}
6790impl ::treesitter_types::Spanned for NestedIdentifier<'_> {
6791    fn span(&self) -> ::treesitter_types::Span {
6792        self.span
6793    }
6794}
6795#[derive(Debug, Clone, PartialEq, Eq)]
6796pub struct NestedTypeIdentifier<'tree> {
6797    pub span: ::treesitter_types::Span,
6798    pub module: NestedTypeIdentifierModule<'tree>,
6799    pub name: TypeIdentifier<'tree>,
6800}
6801impl<'tree> ::treesitter_types::FromNode<'tree> for NestedTypeIdentifier<'tree> {
6802    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
6803    fn from_node(
6804        node: ::treesitter_types::tree_sitter::Node<'tree>,
6805        src: &'tree [u8],
6806    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
6807        debug_assert_eq!(node.kind(), "nested_type_identifier");
6808        Ok(Self {
6809            span: ::treesitter_types::Span::from(node),
6810            module: {
6811                let child = node
6812                    .child_by_field_name("module")
6813                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("module", node))?;
6814                ::treesitter_types::runtime::maybe_grow_stack(|| {
6815                    <NestedTypeIdentifierModule as ::treesitter_types::FromNode>::from_node(
6816                        child, src,
6817                    )
6818                })?
6819            },
6820            name: {
6821                let child = node
6822                    .child_by_field_name("name")
6823                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("name", node))?;
6824                ::treesitter_types::runtime::maybe_grow_stack(|| {
6825                    <TypeIdentifier as ::treesitter_types::FromNode>::from_node(child, src)
6826                })?
6827            },
6828        })
6829    }
6830}
6831impl ::treesitter_types::Spanned for NestedTypeIdentifier<'_> {
6832    fn span(&self) -> ::treesitter_types::Span {
6833        self.span
6834    }
6835}
6836#[derive(Debug, Clone, PartialEq, Eq)]
6837pub struct NewExpression<'tree> {
6838    pub span: ::treesitter_types::Span,
6839    pub arguments: ::core::option::Option<Arguments<'tree>>,
6840    pub constructor: PrimaryExpression<'tree>,
6841    pub type_arguments: ::core::option::Option<TypeArguments<'tree>>,
6842}
6843impl<'tree> ::treesitter_types::FromNode<'tree> for NewExpression<'tree> {
6844    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
6845    fn from_node(
6846        node: ::treesitter_types::tree_sitter::Node<'tree>,
6847        src: &'tree [u8],
6848    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
6849        debug_assert_eq!(node.kind(), "new_expression");
6850        Ok(Self {
6851            span: ::treesitter_types::Span::from(node),
6852            arguments: match node.child_by_field_name("arguments") {
6853                Some(child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
6854                    <Arguments as ::treesitter_types::FromNode>::from_node(child, src)
6855                })?),
6856                None => None,
6857            },
6858            constructor: {
6859                let child = node.child_by_field_name("constructor").ok_or_else(|| {
6860                    ::treesitter_types::ParseError::missing_field("constructor", node)
6861                })?;
6862                ::treesitter_types::runtime::maybe_grow_stack(|| {
6863                    <PrimaryExpression as ::treesitter_types::FromNode>::from_node(child, src)
6864                })?
6865            },
6866            type_arguments: match node.child_by_field_name("type_arguments") {
6867                Some(child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
6868                    <TypeArguments as ::treesitter_types::FromNode>::from_node(child, src)
6869                })?),
6870                None => None,
6871            },
6872        })
6873    }
6874}
6875impl ::treesitter_types::Spanned for NewExpression<'_> {
6876    fn span(&self) -> ::treesitter_types::Span {
6877        self.span
6878    }
6879}
6880#[derive(Debug, Clone, PartialEq, Eq)]
6881pub struct NonNullExpression<'tree> {
6882    pub span: ::treesitter_types::Span,
6883    pub children: Expression<'tree>,
6884}
6885impl<'tree> ::treesitter_types::FromNode<'tree> for NonNullExpression<'tree> {
6886    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
6887    fn from_node(
6888        node: ::treesitter_types::tree_sitter::Node<'tree>,
6889        src: &'tree [u8],
6890    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
6891        debug_assert_eq!(node.kind(), "non_null_expression");
6892        Ok(Self {
6893            span: ::treesitter_types::Span::from(node),
6894            children: {
6895                #[allow(clippy::suspicious_else_formatting)]
6896                let non_field_children = {
6897                    let mut cursor = node.walk();
6898                    let mut result = ::std::vec::Vec::new();
6899                    if cursor.goto_first_child() {
6900                        loop {
6901                            if cursor.field_name().is_none()
6902                                && cursor.node().is_named()
6903                                && !cursor.node().is_extra()
6904                            {
6905                                result.push(cursor.node());
6906                            }
6907                            if !cursor.goto_next_sibling() {
6908                                break;
6909                            }
6910                        }
6911                    }
6912                    result
6913                };
6914                let child = if let Some(&c) = non_field_children.first() {
6915                    c
6916                } else {
6917                    let mut fallback_cursor = node.walk();
6918                    let mut fallback_child = None;
6919                    if fallback_cursor.goto_first_child() {
6920                        loop {
6921                            if fallback_cursor.field_name().is_none()
6922                                && !fallback_cursor.node().is_extra()
6923                            {
6924                                let candidate = fallback_cursor.node();
6925                                #[allow(clippy::needless_question_mark)]
6926                                if (|| -> ::core::result::Result<
6927                                    _,
6928                                    ::treesitter_types::ParseError,
6929                                > {
6930                                    let child = candidate;
6931                                    Ok(
6932                                        ::treesitter_types::runtime::maybe_grow_stack(|| <Expression as ::treesitter_types::FromNode>::from_node(
6933                                            child,
6934                                            src,
6935                                        ))?,
6936                                    )
6937                                })()
6938                                    .is_ok()
6939                                {
6940                                    fallback_child = Some(candidate);
6941                                    break;
6942                                }
6943                            }
6944                            if !fallback_cursor.goto_next_sibling() {
6945                                break;
6946                            }
6947                        }
6948                    }
6949                    if fallback_child.is_none() {
6950                        let mut cursor2 = node.walk();
6951                        if cursor2.goto_first_child() {
6952                            loop {
6953                                if cursor2.node().is_named() && !cursor2.node().is_extra() {
6954                                    let candidate = cursor2.node();
6955                                    #[allow(clippy::needless_question_mark)]
6956                                    if (|| -> ::core::result::Result<
6957                                        _,
6958                                        ::treesitter_types::ParseError,
6959                                    > {
6960                                        let child = candidate;
6961                                        Ok(
6962                                            ::treesitter_types::runtime::maybe_grow_stack(|| <Expression as ::treesitter_types::FromNode>::from_node(
6963                                                child,
6964                                                src,
6965                                            ))?,
6966                                        )
6967                                    })()
6968                                        .is_ok()
6969                                    {
6970                                        fallback_child = Some(candidate);
6971                                        break;
6972                                    }
6973                                }
6974                                if !cursor2.goto_next_sibling() {
6975                                    break;
6976                                }
6977                            }
6978                        }
6979                    }
6980                    fallback_child.ok_or_else(|| {
6981                        ::treesitter_types::ParseError::missing_field("children", node)
6982                    })?
6983                };
6984                ::treesitter_types::runtime::maybe_grow_stack(|| {
6985                    <Expression as ::treesitter_types::FromNode>::from_node(child, src)
6986                })?
6987            },
6988        })
6989    }
6990}
6991impl ::treesitter_types::Spanned for NonNullExpression<'_> {
6992    fn span(&self) -> ::treesitter_types::Span {
6993        self.span
6994    }
6995}
6996#[derive(Debug, Clone, PartialEq, Eq)]
6997pub struct Object<'tree> {
6998    pub span: ::treesitter_types::Span,
6999    pub children: ::std::vec::Vec<ObjectChildren<'tree>>,
7000}
7001impl<'tree> ::treesitter_types::FromNode<'tree> for Object<'tree> {
7002    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
7003    fn from_node(
7004        node: ::treesitter_types::tree_sitter::Node<'tree>,
7005        src: &'tree [u8],
7006    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
7007        debug_assert_eq!(node.kind(), "object");
7008        Ok(Self {
7009            span: ::treesitter_types::Span::from(node),
7010            children: {
7011                #[allow(clippy::suspicious_else_formatting)]
7012                let non_field_children = {
7013                    let mut cursor = node.walk();
7014                    let mut result = ::std::vec::Vec::new();
7015                    if cursor.goto_first_child() {
7016                        loop {
7017                            if cursor.field_name().is_none()
7018                                && cursor.node().is_named()
7019                                && !cursor.node().is_extra()
7020                            {
7021                                result.push(cursor.node());
7022                            }
7023                            if !cursor.goto_next_sibling() {
7024                                break;
7025                            }
7026                        }
7027                    }
7028                    result
7029                };
7030                let mut items = ::std::vec::Vec::new();
7031                for child in non_field_children {
7032                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
7033                        <ObjectChildren as ::treesitter_types::FromNode>::from_node(child, src)
7034                    })?);
7035                }
7036                items
7037            },
7038        })
7039    }
7040}
7041impl ::treesitter_types::Spanned for Object<'_> {
7042    fn span(&self) -> ::treesitter_types::Span {
7043        self.span
7044    }
7045}
7046#[derive(Debug, Clone, PartialEq, Eq)]
7047pub struct ObjectAssignmentPattern<'tree> {
7048    pub span: ::treesitter_types::Span,
7049    pub left: ObjectAssignmentPatternLeft<'tree>,
7050    pub right: Expression<'tree>,
7051}
7052impl<'tree> ::treesitter_types::FromNode<'tree> for ObjectAssignmentPattern<'tree> {
7053    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
7054    fn from_node(
7055        node: ::treesitter_types::tree_sitter::Node<'tree>,
7056        src: &'tree [u8],
7057    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
7058        debug_assert_eq!(node.kind(), "object_assignment_pattern");
7059        Ok(Self {
7060            span: ::treesitter_types::Span::from(node),
7061            left: {
7062                let child = node
7063                    .child_by_field_name("left")
7064                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("left", node))?;
7065                ::treesitter_types::runtime::maybe_grow_stack(|| {
7066                    <ObjectAssignmentPatternLeft as ::treesitter_types::FromNode>::from_node(
7067                        child, src,
7068                    )
7069                })?
7070            },
7071            right: {
7072                let child = node
7073                    .child_by_field_name("right")
7074                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("right", node))?;
7075                ::treesitter_types::runtime::maybe_grow_stack(|| {
7076                    <Expression as ::treesitter_types::FromNode>::from_node(child, src)
7077                })?
7078            },
7079        })
7080    }
7081}
7082impl ::treesitter_types::Spanned for ObjectAssignmentPattern<'_> {
7083    fn span(&self) -> ::treesitter_types::Span {
7084        self.span
7085    }
7086}
7087#[derive(Debug, Clone, PartialEq, Eq)]
7088pub struct ObjectPattern<'tree> {
7089    pub span: ::treesitter_types::Span,
7090    pub children: ::std::vec::Vec<ObjectPatternChildren<'tree>>,
7091}
7092impl<'tree> ::treesitter_types::FromNode<'tree> for ObjectPattern<'tree> {
7093    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
7094    fn from_node(
7095        node: ::treesitter_types::tree_sitter::Node<'tree>,
7096        src: &'tree [u8],
7097    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
7098        debug_assert_eq!(node.kind(), "object_pattern");
7099        Ok(Self {
7100            span: ::treesitter_types::Span::from(node),
7101            children: {
7102                #[allow(clippy::suspicious_else_formatting)]
7103                let non_field_children = {
7104                    let mut cursor = node.walk();
7105                    let mut result = ::std::vec::Vec::new();
7106                    if cursor.goto_first_child() {
7107                        loop {
7108                            if cursor.field_name().is_none()
7109                                && cursor.node().is_named()
7110                                && !cursor.node().is_extra()
7111                            {
7112                                result.push(cursor.node());
7113                            }
7114                            if !cursor.goto_next_sibling() {
7115                                break;
7116                            }
7117                        }
7118                    }
7119                    result
7120                };
7121                let mut items = ::std::vec::Vec::new();
7122                for child in non_field_children {
7123                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
7124                        <ObjectPatternChildren as ::treesitter_types::FromNode>::from_node(
7125                            child, src,
7126                        )
7127                    })?);
7128                }
7129                items
7130            },
7131        })
7132    }
7133}
7134impl ::treesitter_types::Spanned for ObjectPattern<'_> {
7135    fn span(&self) -> ::treesitter_types::Span {
7136        self.span
7137    }
7138}
7139#[derive(Debug, Clone, PartialEq, Eq)]
7140pub struct ObjectType<'tree> {
7141    pub span: ::treesitter_types::Span,
7142    pub children: ::std::vec::Vec<ObjectTypeChildren<'tree>>,
7143}
7144impl<'tree> ::treesitter_types::FromNode<'tree> for ObjectType<'tree> {
7145    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
7146    fn from_node(
7147        node: ::treesitter_types::tree_sitter::Node<'tree>,
7148        src: &'tree [u8],
7149    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
7150        debug_assert_eq!(node.kind(), "object_type");
7151        Ok(Self {
7152            span: ::treesitter_types::Span::from(node),
7153            children: {
7154                #[allow(clippy::suspicious_else_formatting)]
7155                let non_field_children = {
7156                    let mut cursor = node.walk();
7157                    let mut result = ::std::vec::Vec::new();
7158                    if cursor.goto_first_child() {
7159                        loop {
7160                            if cursor.field_name().is_none()
7161                                && cursor.node().is_named()
7162                                && !cursor.node().is_extra()
7163                            {
7164                                result.push(cursor.node());
7165                            }
7166                            if !cursor.goto_next_sibling() {
7167                                break;
7168                            }
7169                        }
7170                    }
7171                    result
7172                };
7173                let mut items = ::std::vec::Vec::new();
7174                for child in non_field_children {
7175                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
7176                        <ObjectTypeChildren as ::treesitter_types::FromNode>::from_node(child, src)
7177                    })?);
7178                }
7179                items
7180            },
7181        })
7182    }
7183}
7184impl ::treesitter_types::Spanned for ObjectType<'_> {
7185    fn span(&self) -> ::treesitter_types::Span {
7186        self.span
7187    }
7188}
7189#[derive(Debug, Clone, PartialEq, Eq)]
7190pub struct OmittingTypeAnnotation<'tree> {
7191    pub span: ::treesitter_types::Span,
7192    pub children: Type<'tree>,
7193}
7194impl<'tree> ::treesitter_types::FromNode<'tree> for OmittingTypeAnnotation<'tree> {
7195    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
7196    fn from_node(
7197        node: ::treesitter_types::tree_sitter::Node<'tree>,
7198        src: &'tree [u8],
7199    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
7200        debug_assert_eq!(node.kind(), "omitting_type_annotation");
7201        Ok(Self {
7202            span: ::treesitter_types::Span::from(node),
7203            children: {
7204                #[allow(clippy::suspicious_else_formatting)]
7205                let non_field_children = {
7206                    let mut cursor = node.walk();
7207                    let mut result = ::std::vec::Vec::new();
7208                    if cursor.goto_first_child() {
7209                        loop {
7210                            if cursor.field_name().is_none()
7211                                && cursor.node().is_named()
7212                                && !cursor.node().is_extra()
7213                            {
7214                                result.push(cursor.node());
7215                            }
7216                            if !cursor.goto_next_sibling() {
7217                                break;
7218                            }
7219                        }
7220                    }
7221                    result
7222                };
7223                let child = if let Some(&c) = non_field_children.first() {
7224                    c
7225                } else {
7226                    let mut fallback_cursor = node.walk();
7227                    let mut fallback_child = None;
7228                    if fallback_cursor.goto_first_child() {
7229                        loop {
7230                            if fallback_cursor.field_name().is_none()
7231                                && !fallback_cursor.node().is_extra()
7232                            {
7233                                let candidate = fallback_cursor.node();
7234                                #[allow(clippy::needless_question_mark)]
7235                                if (|| -> ::core::result::Result<
7236                                    _,
7237                                    ::treesitter_types::ParseError,
7238                                > {
7239                                    let child = candidate;
7240                                    Ok(
7241                                        ::treesitter_types::runtime::maybe_grow_stack(|| <Type as ::treesitter_types::FromNode>::from_node(
7242                                            child,
7243                                            src,
7244                                        ))?,
7245                                    )
7246                                })()
7247                                    .is_ok()
7248                                {
7249                                    fallback_child = Some(candidate);
7250                                    break;
7251                                }
7252                            }
7253                            if !fallback_cursor.goto_next_sibling() {
7254                                break;
7255                            }
7256                        }
7257                    }
7258                    if fallback_child.is_none() {
7259                        let mut cursor2 = node.walk();
7260                        if cursor2.goto_first_child() {
7261                            loop {
7262                                if cursor2.node().is_named() && !cursor2.node().is_extra() {
7263                                    let candidate = cursor2.node();
7264                                    #[allow(clippy::needless_question_mark)]
7265                                    if (|| -> ::core::result::Result<
7266                                        _,
7267                                        ::treesitter_types::ParseError,
7268                                    > {
7269                                        let child = candidate;
7270                                        Ok(
7271                                            ::treesitter_types::runtime::maybe_grow_stack(|| <Type as ::treesitter_types::FromNode>::from_node(
7272                                                child,
7273                                                src,
7274                                            ))?,
7275                                        )
7276                                    })()
7277                                        .is_ok()
7278                                    {
7279                                        fallback_child = Some(candidate);
7280                                        break;
7281                                    }
7282                                }
7283                                if !cursor2.goto_next_sibling() {
7284                                    break;
7285                                }
7286                            }
7287                        }
7288                    }
7289                    fallback_child.ok_or_else(|| {
7290                        ::treesitter_types::ParseError::missing_field("children", node)
7291                    })?
7292                };
7293                ::treesitter_types::runtime::maybe_grow_stack(|| {
7294                    <Type as ::treesitter_types::FromNode>::from_node(child, src)
7295                })?
7296            },
7297        })
7298    }
7299}
7300impl ::treesitter_types::Spanned for OmittingTypeAnnotation<'_> {
7301    fn span(&self) -> ::treesitter_types::Span {
7302        self.span
7303    }
7304}
7305#[derive(Debug, Clone, PartialEq, Eq)]
7306pub struct OptingTypeAnnotation<'tree> {
7307    pub span: ::treesitter_types::Span,
7308    pub children: Type<'tree>,
7309}
7310impl<'tree> ::treesitter_types::FromNode<'tree> for OptingTypeAnnotation<'tree> {
7311    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
7312    fn from_node(
7313        node: ::treesitter_types::tree_sitter::Node<'tree>,
7314        src: &'tree [u8],
7315    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
7316        debug_assert_eq!(node.kind(), "opting_type_annotation");
7317        Ok(Self {
7318            span: ::treesitter_types::Span::from(node),
7319            children: {
7320                #[allow(clippy::suspicious_else_formatting)]
7321                let non_field_children = {
7322                    let mut cursor = node.walk();
7323                    let mut result = ::std::vec::Vec::new();
7324                    if cursor.goto_first_child() {
7325                        loop {
7326                            if cursor.field_name().is_none()
7327                                && cursor.node().is_named()
7328                                && !cursor.node().is_extra()
7329                            {
7330                                result.push(cursor.node());
7331                            }
7332                            if !cursor.goto_next_sibling() {
7333                                break;
7334                            }
7335                        }
7336                    }
7337                    result
7338                };
7339                let child = if let Some(&c) = non_field_children.first() {
7340                    c
7341                } else {
7342                    let mut fallback_cursor = node.walk();
7343                    let mut fallback_child = None;
7344                    if fallback_cursor.goto_first_child() {
7345                        loop {
7346                            if fallback_cursor.field_name().is_none()
7347                                && !fallback_cursor.node().is_extra()
7348                            {
7349                                let candidate = fallback_cursor.node();
7350                                #[allow(clippy::needless_question_mark)]
7351                                if (|| -> ::core::result::Result<
7352                                    _,
7353                                    ::treesitter_types::ParseError,
7354                                > {
7355                                    let child = candidate;
7356                                    Ok(
7357                                        ::treesitter_types::runtime::maybe_grow_stack(|| <Type as ::treesitter_types::FromNode>::from_node(
7358                                            child,
7359                                            src,
7360                                        ))?,
7361                                    )
7362                                })()
7363                                    .is_ok()
7364                                {
7365                                    fallback_child = Some(candidate);
7366                                    break;
7367                                }
7368                            }
7369                            if !fallback_cursor.goto_next_sibling() {
7370                                break;
7371                            }
7372                        }
7373                    }
7374                    if fallback_child.is_none() {
7375                        let mut cursor2 = node.walk();
7376                        if cursor2.goto_first_child() {
7377                            loop {
7378                                if cursor2.node().is_named() && !cursor2.node().is_extra() {
7379                                    let candidate = cursor2.node();
7380                                    #[allow(clippy::needless_question_mark)]
7381                                    if (|| -> ::core::result::Result<
7382                                        _,
7383                                        ::treesitter_types::ParseError,
7384                                    > {
7385                                        let child = candidate;
7386                                        Ok(
7387                                            ::treesitter_types::runtime::maybe_grow_stack(|| <Type as ::treesitter_types::FromNode>::from_node(
7388                                                child,
7389                                                src,
7390                                            ))?,
7391                                        )
7392                                    })()
7393                                        .is_ok()
7394                                    {
7395                                        fallback_child = Some(candidate);
7396                                        break;
7397                                    }
7398                                }
7399                                if !cursor2.goto_next_sibling() {
7400                                    break;
7401                                }
7402                            }
7403                        }
7404                    }
7405                    fallback_child.ok_or_else(|| {
7406                        ::treesitter_types::ParseError::missing_field("children", node)
7407                    })?
7408                };
7409                ::treesitter_types::runtime::maybe_grow_stack(|| {
7410                    <Type as ::treesitter_types::FromNode>::from_node(child, src)
7411                })?
7412            },
7413        })
7414    }
7415}
7416impl ::treesitter_types::Spanned for OptingTypeAnnotation<'_> {
7417    fn span(&self) -> ::treesitter_types::Span {
7418        self.span
7419    }
7420}
7421#[derive(Debug, Clone, PartialEq, Eq)]
7422pub struct OptionalChain<'tree> {
7423    pub span: ::treesitter_types::Span,
7424    text: &'tree str,
7425}
7426impl<'tree> ::treesitter_types::FromNode<'tree> for OptionalChain<'tree> {
7427    fn from_node(
7428        node: ::treesitter_types::tree_sitter::Node<'tree>,
7429        src: &'tree [u8],
7430    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
7431        debug_assert_eq!(node.kind(), "optional_chain");
7432        Ok(Self {
7433            span: ::treesitter_types::Span::from(node),
7434            text: node.utf8_text(src)?,
7435        })
7436    }
7437}
7438impl<'tree> ::treesitter_types::LeafNode<'tree> for OptionalChain<'tree> {
7439    fn text(&self) -> &'tree str {
7440        self.text
7441    }
7442}
7443impl ::treesitter_types::Spanned for OptionalChain<'_> {
7444    fn span(&self) -> ::treesitter_types::Span {
7445        self.span
7446    }
7447}
7448#[derive(Debug, Clone, PartialEq, Eq)]
7449pub struct OptionalParameter<'tree> {
7450    pub span: ::treesitter_types::Span,
7451    pub decorator: ::std::vec::Vec<Decorator<'tree>>,
7452    pub name: ::core::option::Option<Identifier<'tree>>,
7453    pub pattern: ::core::option::Option<OptionalParameterPattern<'tree>>,
7454    pub r#type: ::core::option::Option<TypeAnnotation<'tree>>,
7455    pub value: ::core::option::Option<Expression<'tree>>,
7456    pub children: ::std::vec::Vec<OptionalParameterChildren<'tree>>,
7457}
7458impl<'tree> ::treesitter_types::FromNode<'tree> for OptionalParameter<'tree> {
7459    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
7460    fn from_node(
7461        node: ::treesitter_types::tree_sitter::Node<'tree>,
7462        src: &'tree [u8],
7463    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
7464        debug_assert_eq!(node.kind(), "optional_parameter");
7465        Ok(Self {
7466            span: ::treesitter_types::Span::from(node),
7467            decorator: {
7468                let mut cursor = node.walk();
7469                let mut items = ::std::vec::Vec::new();
7470                for child in node.children_by_field_name("decorator", &mut cursor) {
7471                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
7472                        <Decorator as ::treesitter_types::FromNode>::from_node(child, src)
7473                    })?);
7474                }
7475                items
7476            },
7477            name: match node.child_by_field_name("name") {
7478                Some(child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
7479                    <Identifier as ::treesitter_types::FromNode>::from_node(child, src)
7480                })?),
7481                None => None,
7482            },
7483            pattern: match node.child_by_field_name("pattern") {
7484                Some(child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
7485                    <OptionalParameterPattern as ::treesitter_types::FromNode>::from_node(
7486                        child, src,
7487                    )
7488                })?),
7489                None => None,
7490            },
7491            r#type: match node.child_by_field_name("type") {
7492                Some(child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
7493                    <TypeAnnotation as ::treesitter_types::FromNode>::from_node(child, src)
7494                })?),
7495                None => None,
7496            },
7497            value: match node.child_by_field_name("value") {
7498                Some(child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
7499                    <Expression as ::treesitter_types::FromNode>::from_node(child, src)
7500                })?),
7501                None => None,
7502            },
7503            children: {
7504                #[allow(clippy::suspicious_else_formatting)]
7505                let non_field_children = {
7506                    let mut cursor = node.walk();
7507                    let mut result = ::std::vec::Vec::new();
7508                    if cursor.goto_first_child() {
7509                        loop {
7510                            if cursor.field_name().is_none()
7511                                && cursor.node().is_named()
7512                                && !cursor.node().is_extra()
7513                            {
7514                                result.push(cursor.node());
7515                            }
7516                            if !cursor.goto_next_sibling() {
7517                                break;
7518                            }
7519                        }
7520                    }
7521                    result
7522                };
7523                let mut items = ::std::vec::Vec::new();
7524                for child in non_field_children {
7525                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
7526                        <OptionalParameterChildren as ::treesitter_types::FromNode>::from_node(
7527                            child, src,
7528                        )
7529                    })?);
7530                }
7531                items
7532            },
7533        })
7534    }
7535}
7536impl ::treesitter_types::Spanned for OptionalParameter<'_> {
7537    fn span(&self) -> ::treesitter_types::Span {
7538        self.span
7539    }
7540}
7541#[derive(Debug, Clone, PartialEq, Eq)]
7542pub struct OptionalType<'tree> {
7543    pub span: ::treesitter_types::Span,
7544    pub children: Type<'tree>,
7545}
7546impl<'tree> ::treesitter_types::FromNode<'tree> for OptionalType<'tree> {
7547    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
7548    fn from_node(
7549        node: ::treesitter_types::tree_sitter::Node<'tree>,
7550        src: &'tree [u8],
7551    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
7552        debug_assert_eq!(node.kind(), "optional_type");
7553        Ok(Self {
7554            span: ::treesitter_types::Span::from(node),
7555            children: {
7556                #[allow(clippy::suspicious_else_formatting)]
7557                let non_field_children = {
7558                    let mut cursor = node.walk();
7559                    let mut result = ::std::vec::Vec::new();
7560                    if cursor.goto_first_child() {
7561                        loop {
7562                            if cursor.field_name().is_none()
7563                                && cursor.node().is_named()
7564                                && !cursor.node().is_extra()
7565                            {
7566                                result.push(cursor.node());
7567                            }
7568                            if !cursor.goto_next_sibling() {
7569                                break;
7570                            }
7571                        }
7572                    }
7573                    result
7574                };
7575                let child = if let Some(&c) = non_field_children.first() {
7576                    c
7577                } else {
7578                    let mut fallback_cursor = node.walk();
7579                    let mut fallback_child = None;
7580                    if fallback_cursor.goto_first_child() {
7581                        loop {
7582                            if fallback_cursor.field_name().is_none()
7583                                && !fallback_cursor.node().is_extra()
7584                            {
7585                                let candidate = fallback_cursor.node();
7586                                #[allow(clippy::needless_question_mark)]
7587                                if (|| -> ::core::result::Result<
7588                                    _,
7589                                    ::treesitter_types::ParseError,
7590                                > {
7591                                    let child = candidate;
7592                                    Ok(
7593                                        ::treesitter_types::runtime::maybe_grow_stack(|| <Type as ::treesitter_types::FromNode>::from_node(
7594                                            child,
7595                                            src,
7596                                        ))?,
7597                                    )
7598                                })()
7599                                    .is_ok()
7600                                {
7601                                    fallback_child = Some(candidate);
7602                                    break;
7603                                }
7604                            }
7605                            if !fallback_cursor.goto_next_sibling() {
7606                                break;
7607                            }
7608                        }
7609                    }
7610                    if fallback_child.is_none() {
7611                        let mut cursor2 = node.walk();
7612                        if cursor2.goto_first_child() {
7613                            loop {
7614                                if cursor2.node().is_named() && !cursor2.node().is_extra() {
7615                                    let candidate = cursor2.node();
7616                                    #[allow(clippy::needless_question_mark)]
7617                                    if (|| -> ::core::result::Result<
7618                                        _,
7619                                        ::treesitter_types::ParseError,
7620                                    > {
7621                                        let child = candidate;
7622                                        Ok(
7623                                            ::treesitter_types::runtime::maybe_grow_stack(|| <Type as ::treesitter_types::FromNode>::from_node(
7624                                                child,
7625                                                src,
7626                                            ))?,
7627                                        )
7628                                    })()
7629                                        .is_ok()
7630                                    {
7631                                        fallback_child = Some(candidate);
7632                                        break;
7633                                    }
7634                                }
7635                                if !cursor2.goto_next_sibling() {
7636                                    break;
7637                                }
7638                            }
7639                        }
7640                    }
7641                    fallback_child.ok_or_else(|| {
7642                        ::treesitter_types::ParseError::missing_field("children", node)
7643                    })?
7644                };
7645                ::treesitter_types::runtime::maybe_grow_stack(|| {
7646                    <Type as ::treesitter_types::FromNode>::from_node(child, src)
7647                })?
7648            },
7649        })
7650    }
7651}
7652impl ::treesitter_types::Spanned for OptionalType<'_> {
7653    fn span(&self) -> ::treesitter_types::Span {
7654        self.span
7655    }
7656}
7657#[derive(Debug, Clone, PartialEq, Eq)]
7658pub struct OverrideModifier<'tree> {
7659    pub span: ::treesitter_types::Span,
7660    text: &'tree str,
7661}
7662impl<'tree> ::treesitter_types::FromNode<'tree> for OverrideModifier<'tree> {
7663    fn from_node(
7664        node: ::treesitter_types::tree_sitter::Node<'tree>,
7665        src: &'tree [u8],
7666    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
7667        debug_assert_eq!(node.kind(), "override_modifier");
7668        Ok(Self {
7669            span: ::treesitter_types::Span::from(node),
7670            text: node.utf8_text(src)?,
7671        })
7672    }
7673}
7674impl<'tree> ::treesitter_types::LeafNode<'tree> for OverrideModifier<'tree> {
7675    fn text(&self) -> &'tree str {
7676        self.text
7677    }
7678}
7679impl ::treesitter_types::Spanned for OverrideModifier<'_> {
7680    fn span(&self) -> ::treesitter_types::Span {
7681        self.span
7682    }
7683}
7684#[derive(Debug, Clone, PartialEq, Eq)]
7685pub struct Pair<'tree> {
7686    pub span: ::treesitter_types::Span,
7687    pub key: PairKey<'tree>,
7688    pub value: Expression<'tree>,
7689}
7690impl<'tree> ::treesitter_types::FromNode<'tree> for Pair<'tree> {
7691    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
7692    fn from_node(
7693        node: ::treesitter_types::tree_sitter::Node<'tree>,
7694        src: &'tree [u8],
7695    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
7696        debug_assert_eq!(node.kind(), "pair");
7697        Ok(Self {
7698            span: ::treesitter_types::Span::from(node),
7699            key: {
7700                let child = node
7701                    .child_by_field_name("key")
7702                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("key", node))?;
7703                ::treesitter_types::runtime::maybe_grow_stack(|| {
7704                    <PairKey as ::treesitter_types::FromNode>::from_node(child, src)
7705                })?
7706            },
7707            value: {
7708                let child = node
7709                    .child_by_field_name("value")
7710                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("value", node))?;
7711                ::treesitter_types::runtime::maybe_grow_stack(|| {
7712                    <Expression as ::treesitter_types::FromNode>::from_node(child, src)
7713                })?
7714            },
7715        })
7716    }
7717}
7718impl ::treesitter_types::Spanned for Pair<'_> {
7719    fn span(&self) -> ::treesitter_types::Span {
7720        self.span
7721    }
7722}
7723#[derive(Debug, Clone, PartialEq, Eq)]
7724pub struct PairPattern<'tree> {
7725    pub span: ::treesitter_types::Span,
7726    pub key: PairPatternKey<'tree>,
7727    pub value: PairPatternValue<'tree>,
7728}
7729impl<'tree> ::treesitter_types::FromNode<'tree> for PairPattern<'tree> {
7730    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
7731    fn from_node(
7732        node: ::treesitter_types::tree_sitter::Node<'tree>,
7733        src: &'tree [u8],
7734    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
7735        debug_assert_eq!(node.kind(), "pair_pattern");
7736        Ok(Self {
7737            span: ::treesitter_types::Span::from(node),
7738            key: {
7739                let child = node
7740                    .child_by_field_name("key")
7741                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("key", node))?;
7742                ::treesitter_types::runtime::maybe_grow_stack(|| {
7743                    <PairPatternKey as ::treesitter_types::FromNode>::from_node(child, src)
7744                })?
7745            },
7746            value: {
7747                let child = node
7748                    .child_by_field_name("value")
7749                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("value", node))?;
7750                ::treesitter_types::runtime::maybe_grow_stack(|| {
7751                    <PairPatternValue as ::treesitter_types::FromNode>::from_node(child, src)
7752                })?
7753            },
7754        })
7755    }
7756}
7757impl ::treesitter_types::Spanned for PairPattern<'_> {
7758    fn span(&self) -> ::treesitter_types::Span {
7759        self.span
7760    }
7761}
7762#[derive(Debug, Clone, PartialEq, Eq)]
7763pub struct ParenthesizedExpression<'tree> {
7764    pub span: ::treesitter_types::Span,
7765    pub r#type: ::core::option::Option<TypeAnnotation<'tree>>,
7766    pub children: ParenthesizedExpressionChildren<'tree>,
7767}
7768impl<'tree> ::treesitter_types::FromNode<'tree> for ParenthesizedExpression<'tree> {
7769    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
7770    fn from_node(
7771        node: ::treesitter_types::tree_sitter::Node<'tree>,
7772        src: &'tree [u8],
7773    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
7774        debug_assert_eq!(node.kind(), "parenthesized_expression");
7775        Ok(Self {
7776            span: ::treesitter_types::Span::from(node),
7777            r#type: match node.child_by_field_name("type") {
7778                Some(child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
7779                    <TypeAnnotation as ::treesitter_types::FromNode>::from_node(child, src)
7780                })?),
7781                None => None,
7782            },
7783            children: {
7784                #[allow(clippy::suspicious_else_formatting)]
7785                let non_field_children = {
7786                    let mut cursor = node.walk();
7787                    let mut result = ::std::vec::Vec::new();
7788                    if cursor.goto_first_child() {
7789                        loop {
7790                            if cursor.field_name().is_none()
7791                                && cursor.node().is_named()
7792                                && !cursor.node().is_extra()
7793                            {
7794                                result.push(cursor.node());
7795                            }
7796                            if !cursor.goto_next_sibling() {
7797                                break;
7798                            }
7799                        }
7800                    }
7801                    result
7802                };
7803                let child = if let Some(&c) = non_field_children.first() {
7804                    c
7805                } else {
7806                    let mut fallback_cursor = node.walk();
7807                    let mut fallback_child = None;
7808                    if fallback_cursor.goto_first_child() {
7809                        loop {
7810                            if fallback_cursor.field_name().is_none()
7811                                && !fallback_cursor.node().is_extra()
7812                            {
7813                                let candidate = fallback_cursor.node();
7814                                #[allow(clippy::needless_question_mark)]
7815                                if (|| -> ::core::result::Result<
7816                                    _,
7817                                    ::treesitter_types::ParseError,
7818                                > {
7819                                    let child = candidate;
7820                                    Ok(
7821                                        ::treesitter_types::runtime::maybe_grow_stack(|| <ParenthesizedExpressionChildren as ::treesitter_types::FromNode>::from_node(
7822                                            child,
7823                                            src,
7824                                        ))?,
7825                                    )
7826                                })()
7827                                    .is_ok()
7828                                {
7829                                    fallback_child = Some(candidate);
7830                                    break;
7831                                }
7832                            }
7833                            if !fallback_cursor.goto_next_sibling() {
7834                                break;
7835                            }
7836                        }
7837                    }
7838                    if fallback_child.is_none() {
7839                        let mut cursor2 = node.walk();
7840                        if cursor2.goto_first_child() {
7841                            loop {
7842                                if cursor2.node().is_named() && !cursor2.node().is_extra() {
7843                                    let candidate = cursor2.node();
7844                                    #[allow(clippy::needless_question_mark)]
7845                                    if (|| -> ::core::result::Result<
7846                                        _,
7847                                        ::treesitter_types::ParseError,
7848                                    > {
7849                                        let child = candidate;
7850                                        Ok(
7851                                            ::treesitter_types::runtime::maybe_grow_stack(|| <ParenthesizedExpressionChildren as ::treesitter_types::FromNode>::from_node(
7852                                                child,
7853                                                src,
7854                                            ))?,
7855                                        )
7856                                    })()
7857                                        .is_ok()
7858                                    {
7859                                        fallback_child = Some(candidate);
7860                                        break;
7861                                    }
7862                                }
7863                                if !cursor2.goto_next_sibling() {
7864                                    break;
7865                                }
7866                            }
7867                        }
7868                    }
7869                    fallback_child.ok_or_else(|| {
7870                        ::treesitter_types::ParseError::missing_field("children", node)
7871                    })?
7872                };
7873                ::treesitter_types::runtime::maybe_grow_stack(|| {
7874                    <ParenthesizedExpressionChildren as ::treesitter_types::FromNode>::from_node(
7875                        child, src,
7876                    )
7877                })?
7878            },
7879        })
7880    }
7881}
7882impl ::treesitter_types::Spanned for ParenthesizedExpression<'_> {
7883    fn span(&self) -> ::treesitter_types::Span {
7884        self.span
7885    }
7886}
7887#[derive(Debug, Clone, PartialEq, Eq)]
7888pub struct ParenthesizedType<'tree> {
7889    pub span: ::treesitter_types::Span,
7890    pub children: Type<'tree>,
7891}
7892impl<'tree> ::treesitter_types::FromNode<'tree> for ParenthesizedType<'tree> {
7893    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
7894    fn from_node(
7895        node: ::treesitter_types::tree_sitter::Node<'tree>,
7896        src: &'tree [u8],
7897    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
7898        debug_assert_eq!(node.kind(), "parenthesized_type");
7899        Ok(Self {
7900            span: ::treesitter_types::Span::from(node),
7901            children: {
7902                #[allow(clippy::suspicious_else_formatting)]
7903                let non_field_children = {
7904                    let mut cursor = node.walk();
7905                    let mut result = ::std::vec::Vec::new();
7906                    if cursor.goto_first_child() {
7907                        loop {
7908                            if cursor.field_name().is_none()
7909                                && cursor.node().is_named()
7910                                && !cursor.node().is_extra()
7911                            {
7912                                result.push(cursor.node());
7913                            }
7914                            if !cursor.goto_next_sibling() {
7915                                break;
7916                            }
7917                        }
7918                    }
7919                    result
7920                };
7921                let child = if let Some(&c) = non_field_children.first() {
7922                    c
7923                } else {
7924                    let mut fallback_cursor = node.walk();
7925                    let mut fallback_child = None;
7926                    if fallback_cursor.goto_first_child() {
7927                        loop {
7928                            if fallback_cursor.field_name().is_none()
7929                                && !fallback_cursor.node().is_extra()
7930                            {
7931                                let candidate = fallback_cursor.node();
7932                                #[allow(clippy::needless_question_mark)]
7933                                if (|| -> ::core::result::Result<
7934                                    _,
7935                                    ::treesitter_types::ParseError,
7936                                > {
7937                                    let child = candidate;
7938                                    Ok(
7939                                        ::treesitter_types::runtime::maybe_grow_stack(|| <Type as ::treesitter_types::FromNode>::from_node(
7940                                            child,
7941                                            src,
7942                                        ))?,
7943                                    )
7944                                })()
7945                                    .is_ok()
7946                                {
7947                                    fallback_child = Some(candidate);
7948                                    break;
7949                                }
7950                            }
7951                            if !fallback_cursor.goto_next_sibling() {
7952                                break;
7953                            }
7954                        }
7955                    }
7956                    if fallback_child.is_none() {
7957                        let mut cursor2 = node.walk();
7958                        if cursor2.goto_first_child() {
7959                            loop {
7960                                if cursor2.node().is_named() && !cursor2.node().is_extra() {
7961                                    let candidate = cursor2.node();
7962                                    #[allow(clippy::needless_question_mark)]
7963                                    if (|| -> ::core::result::Result<
7964                                        _,
7965                                        ::treesitter_types::ParseError,
7966                                    > {
7967                                        let child = candidate;
7968                                        Ok(
7969                                            ::treesitter_types::runtime::maybe_grow_stack(|| <Type as ::treesitter_types::FromNode>::from_node(
7970                                                child,
7971                                                src,
7972                                            ))?,
7973                                        )
7974                                    })()
7975                                        .is_ok()
7976                                    {
7977                                        fallback_child = Some(candidate);
7978                                        break;
7979                                    }
7980                                }
7981                                if !cursor2.goto_next_sibling() {
7982                                    break;
7983                                }
7984                            }
7985                        }
7986                    }
7987                    fallback_child.ok_or_else(|| {
7988                        ::treesitter_types::ParseError::missing_field("children", node)
7989                    })?
7990                };
7991                ::treesitter_types::runtime::maybe_grow_stack(|| {
7992                    <Type as ::treesitter_types::FromNode>::from_node(child, src)
7993                })?
7994            },
7995        })
7996    }
7997}
7998impl ::treesitter_types::Spanned for ParenthesizedType<'_> {
7999    fn span(&self) -> ::treesitter_types::Span {
8000        self.span
8001    }
8002}
8003#[derive(Debug, Clone, PartialEq, Eq)]
8004pub struct PredefinedType<'tree> {
8005    pub span: ::treesitter_types::Span,
8006    text: &'tree str,
8007}
8008impl<'tree> ::treesitter_types::FromNode<'tree> for PredefinedType<'tree> {
8009    fn from_node(
8010        node: ::treesitter_types::tree_sitter::Node<'tree>,
8011        src: &'tree [u8],
8012    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
8013        debug_assert_eq!(node.kind(), "predefined_type");
8014        Ok(Self {
8015            span: ::treesitter_types::Span::from(node),
8016            text: node.utf8_text(src)?,
8017        })
8018    }
8019}
8020impl<'tree> ::treesitter_types::LeafNode<'tree> for PredefinedType<'tree> {
8021    fn text(&self) -> &'tree str {
8022        self.text
8023    }
8024}
8025impl ::treesitter_types::Spanned for PredefinedType<'_> {
8026    fn span(&self) -> ::treesitter_types::Span {
8027        self.span
8028    }
8029}
8030#[derive(Debug, Clone, PartialEq, Eq)]
8031pub struct Program<'tree> {
8032    pub span: ::treesitter_types::Span,
8033    pub children: ::std::vec::Vec<ProgramChildren<'tree>>,
8034}
8035impl<'tree> ::treesitter_types::FromNode<'tree> for Program<'tree> {
8036    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
8037    fn from_node(
8038        node: ::treesitter_types::tree_sitter::Node<'tree>,
8039        src: &'tree [u8],
8040    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
8041        debug_assert_eq!(node.kind(), "program");
8042        Ok(Self {
8043            span: ::treesitter_types::Span::from(node),
8044            children: {
8045                #[allow(clippy::suspicious_else_formatting)]
8046                let non_field_children = {
8047                    let mut cursor = node.walk();
8048                    let mut result = ::std::vec::Vec::new();
8049                    if cursor.goto_first_child() {
8050                        loop {
8051                            if cursor.field_name().is_none()
8052                                && cursor.node().is_named()
8053                                && !cursor.node().is_extra()
8054                            {
8055                                result.push(cursor.node());
8056                            }
8057                            if !cursor.goto_next_sibling() {
8058                                break;
8059                            }
8060                        }
8061                    }
8062                    result
8063                };
8064                let mut items = ::std::vec::Vec::new();
8065                for child in non_field_children {
8066                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
8067                        <ProgramChildren as ::treesitter_types::FromNode>::from_node(child, src)
8068                    })?);
8069                }
8070                items
8071            },
8072        })
8073    }
8074}
8075impl ::treesitter_types::Spanned for Program<'_> {
8076    fn span(&self) -> ::treesitter_types::Span {
8077        self.span
8078    }
8079}
8080#[derive(Debug, Clone, PartialEq, Eq)]
8081pub struct PropertySignature<'tree> {
8082    pub span: ::treesitter_types::Span,
8083    pub name: PropertySignatureName<'tree>,
8084    pub r#type: ::core::option::Option<TypeAnnotation<'tree>>,
8085    pub children: ::std::vec::Vec<PropertySignatureChildren<'tree>>,
8086}
8087impl<'tree> ::treesitter_types::FromNode<'tree> for PropertySignature<'tree> {
8088    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
8089    fn from_node(
8090        node: ::treesitter_types::tree_sitter::Node<'tree>,
8091        src: &'tree [u8],
8092    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
8093        debug_assert_eq!(node.kind(), "property_signature");
8094        Ok(Self {
8095            span: ::treesitter_types::Span::from(node),
8096            name: {
8097                let child = node
8098                    .child_by_field_name("name")
8099                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("name", node))?;
8100                ::treesitter_types::runtime::maybe_grow_stack(|| {
8101                    <PropertySignatureName as ::treesitter_types::FromNode>::from_node(child, src)
8102                })?
8103            },
8104            r#type: match node.child_by_field_name("type") {
8105                Some(child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
8106                    <TypeAnnotation as ::treesitter_types::FromNode>::from_node(child, src)
8107                })?),
8108                None => None,
8109            },
8110            children: {
8111                #[allow(clippy::suspicious_else_formatting)]
8112                let non_field_children = {
8113                    let mut cursor = node.walk();
8114                    let mut result = ::std::vec::Vec::new();
8115                    if cursor.goto_first_child() {
8116                        loop {
8117                            if cursor.field_name().is_none()
8118                                && cursor.node().is_named()
8119                                && !cursor.node().is_extra()
8120                            {
8121                                result.push(cursor.node());
8122                            }
8123                            if !cursor.goto_next_sibling() {
8124                                break;
8125                            }
8126                        }
8127                    }
8128                    result
8129                };
8130                let mut items = ::std::vec::Vec::new();
8131                for child in non_field_children {
8132                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
8133                        <PropertySignatureChildren as ::treesitter_types::FromNode>::from_node(
8134                            child, src,
8135                        )
8136                    })?);
8137                }
8138                items
8139            },
8140        })
8141    }
8142}
8143impl ::treesitter_types::Spanned for PropertySignature<'_> {
8144    fn span(&self) -> ::treesitter_types::Span {
8145        self.span
8146    }
8147}
8148#[derive(Debug, Clone, PartialEq, Eq)]
8149pub struct PublicFieldDefinition<'tree> {
8150    pub span: ::treesitter_types::Span,
8151    pub decorator: ::std::vec::Vec<Decorator<'tree>>,
8152    pub name: PublicFieldDefinitionName<'tree>,
8153    pub r#type: ::core::option::Option<TypeAnnotation<'tree>>,
8154    pub value: ::core::option::Option<Expression<'tree>>,
8155    pub children: ::std::vec::Vec<PublicFieldDefinitionChildren<'tree>>,
8156}
8157impl<'tree> ::treesitter_types::FromNode<'tree> for PublicFieldDefinition<'tree> {
8158    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
8159    fn from_node(
8160        node: ::treesitter_types::tree_sitter::Node<'tree>,
8161        src: &'tree [u8],
8162    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
8163        debug_assert_eq!(node.kind(), "public_field_definition");
8164        Ok(Self {
8165            span: ::treesitter_types::Span::from(node),
8166            decorator: {
8167                let mut cursor = node.walk();
8168                let mut items = ::std::vec::Vec::new();
8169                for child in node.children_by_field_name("decorator", &mut cursor) {
8170                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
8171                        <Decorator as ::treesitter_types::FromNode>::from_node(child, src)
8172                    })?);
8173                }
8174                items
8175            },
8176            name: {
8177                let child = node
8178                    .child_by_field_name("name")
8179                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("name", node))?;
8180                ::treesitter_types::runtime::maybe_grow_stack(|| {
8181                    <PublicFieldDefinitionName as ::treesitter_types::FromNode>::from_node(
8182                        child, src,
8183                    )
8184                })?
8185            },
8186            r#type: match node.child_by_field_name("type") {
8187                Some(child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
8188                    <TypeAnnotation as ::treesitter_types::FromNode>::from_node(child, src)
8189                })?),
8190                None => None,
8191            },
8192            value: match node.child_by_field_name("value") {
8193                Some(child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
8194                    <Expression as ::treesitter_types::FromNode>::from_node(child, src)
8195                })?),
8196                None => None,
8197            },
8198            children: {
8199                #[allow(clippy::suspicious_else_formatting)]
8200                let non_field_children = {
8201                    let mut cursor = node.walk();
8202                    let mut result = ::std::vec::Vec::new();
8203                    if cursor.goto_first_child() {
8204                        loop {
8205                            if cursor.field_name().is_none()
8206                                && cursor.node().is_named()
8207                                && !cursor.node().is_extra()
8208                            {
8209                                result.push(cursor.node());
8210                            }
8211                            if !cursor.goto_next_sibling() {
8212                                break;
8213                            }
8214                        }
8215                    }
8216                    result
8217                };
8218                let mut items = ::std::vec::Vec::new();
8219                for child in non_field_children {
8220                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
8221                        <PublicFieldDefinitionChildren as ::treesitter_types::FromNode>::from_node(
8222                            child, src,
8223                        )
8224                    })?);
8225                }
8226                items
8227            },
8228        })
8229    }
8230}
8231impl ::treesitter_types::Spanned for PublicFieldDefinition<'_> {
8232    fn span(&self) -> ::treesitter_types::Span {
8233        self.span
8234    }
8235}
8236#[derive(Debug, Clone, PartialEq, Eq)]
8237pub struct ReadonlyType<'tree> {
8238    pub span: ::treesitter_types::Span,
8239    pub children: Type<'tree>,
8240}
8241impl<'tree> ::treesitter_types::FromNode<'tree> for ReadonlyType<'tree> {
8242    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
8243    fn from_node(
8244        node: ::treesitter_types::tree_sitter::Node<'tree>,
8245        src: &'tree [u8],
8246    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
8247        debug_assert_eq!(node.kind(), "readonly_type");
8248        Ok(Self {
8249            span: ::treesitter_types::Span::from(node),
8250            children: {
8251                #[allow(clippy::suspicious_else_formatting)]
8252                let non_field_children = {
8253                    let mut cursor = node.walk();
8254                    let mut result = ::std::vec::Vec::new();
8255                    if cursor.goto_first_child() {
8256                        loop {
8257                            if cursor.field_name().is_none()
8258                                && cursor.node().is_named()
8259                                && !cursor.node().is_extra()
8260                            {
8261                                result.push(cursor.node());
8262                            }
8263                            if !cursor.goto_next_sibling() {
8264                                break;
8265                            }
8266                        }
8267                    }
8268                    result
8269                };
8270                let child = if let Some(&c) = non_field_children.first() {
8271                    c
8272                } else {
8273                    let mut fallback_cursor = node.walk();
8274                    let mut fallback_child = None;
8275                    if fallback_cursor.goto_first_child() {
8276                        loop {
8277                            if fallback_cursor.field_name().is_none()
8278                                && !fallback_cursor.node().is_extra()
8279                            {
8280                                let candidate = fallback_cursor.node();
8281                                #[allow(clippy::needless_question_mark)]
8282                                if (|| -> ::core::result::Result<
8283                                    _,
8284                                    ::treesitter_types::ParseError,
8285                                > {
8286                                    let child = candidate;
8287                                    Ok(
8288                                        ::treesitter_types::runtime::maybe_grow_stack(|| <Type as ::treesitter_types::FromNode>::from_node(
8289                                            child,
8290                                            src,
8291                                        ))?,
8292                                    )
8293                                })()
8294                                    .is_ok()
8295                                {
8296                                    fallback_child = Some(candidate);
8297                                    break;
8298                                }
8299                            }
8300                            if !fallback_cursor.goto_next_sibling() {
8301                                break;
8302                            }
8303                        }
8304                    }
8305                    if fallback_child.is_none() {
8306                        let mut cursor2 = node.walk();
8307                        if cursor2.goto_first_child() {
8308                            loop {
8309                                if cursor2.node().is_named() && !cursor2.node().is_extra() {
8310                                    let candidate = cursor2.node();
8311                                    #[allow(clippy::needless_question_mark)]
8312                                    if (|| -> ::core::result::Result<
8313                                        _,
8314                                        ::treesitter_types::ParseError,
8315                                    > {
8316                                        let child = candidate;
8317                                        Ok(
8318                                            ::treesitter_types::runtime::maybe_grow_stack(|| <Type as ::treesitter_types::FromNode>::from_node(
8319                                                child,
8320                                                src,
8321                                            ))?,
8322                                        )
8323                                    })()
8324                                        .is_ok()
8325                                    {
8326                                        fallback_child = Some(candidate);
8327                                        break;
8328                                    }
8329                                }
8330                                if !cursor2.goto_next_sibling() {
8331                                    break;
8332                                }
8333                            }
8334                        }
8335                    }
8336                    fallback_child.ok_or_else(|| {
8337                        ::treesitter_types::ParseError::missing_field("children", node)
8338                    })?
8339                };
8340                ::treesitter_types::runtime::maybe_grow_stack(|| {
8341                    <Type as ::treesitter_types::FromNode>::from_node(child, src)
8342                })?
8343            },
8344        })
8345    }
8346}
8347impl ::treesitter_types::Spanned for ReadonlyType<'_> {
8348    fn span(&self) -> ::treesitter_types::Span {
8349        self.span
8350    }
8351}
8352#[derive(Debug, Clone, PartialEq, Eq)]
8353pub struct Regex<'tree> {
8354    pub span: ::treesitter_types::Span,
8355    pub flags: ::core::option::Option<RegexFlags<'tree>>,
8356    pub pattern: RegexPattern<'tree>,
8357}
8358impl<'tree> ::treesitter_types::FromNode<'tree> for Regex<'tree> {
8359    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
8360    fn from_node(
8361        node: ::treesitter_types::tree_sitter::Node<'tree>,
8362        src: &'tree [u8],
8363    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
8364        debug_assert_eq!(node.kind(), "regex");
8365        Ok(Self {
8366            span: ::treesitter_types::Span::from(node),
8367            flags: match node.child_by_field_name("flags") {
8368                Some(child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
8369                    <RegexFlags as ::treesitter_types::FromNode>::from_node(child, src)
8370                })?),
8371                None => None,
8372            },
8373            pattern: {
8374                let child = node.child_by_field_name("pattern").ok_or_else(|| {
8375                    ::treesitter_types::ParseError::missing_field("pattern", node)
8376                })?;
8377                ::treesitter_types::runtime::maybe_grow_stack(|| {
8378                    <RegexPattern as ::treesitter_types::FromNode>::from_node(child, src)
8379                })?
8380            },
8381        })
8382    }
8383}
8384impl ::treesitter_types::Spanned for Regex<'_> {
8385    fn span(&self) -> ::treesitter_types::Span {
8386        self.span
8387    }
8388}
8389#[derive(Debug, Clone, PartialEq, Eq)]
8390pub struct RequiredParameter<'tree> {
8391    pub span: ::treesitter_types::Span,
8392    pub decorator: ::std::vec::Vec<Decorator<'tree>>,
8393    pub name: ::core::option::Option<RequiredParameterName<'tree>>,
8394    pub pattern: ::core::option::Option<RequiredParameterPattern<'tree>>,
8395    pub r#type: ::core::option::Option<TypeAnnotation<'tree>>,
8396    pub value: ::core::option::Option<Expression<'tree>>,
8397    pub children: ::std::vec::Vec<RequiredParameterChildren<'tree>>,
8398}
8399impl<'tree> ::treesitter_types::FromNode<'tree> for RequiredParameter<'tree> {
8400    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
8401    fn from_node(
8402        node: ::treesitter_types::tree_sitter::Node<'tree>,
8403        src: &'tree [u8],
8404    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
8405        debug_assert_eq!(node.kind(), "required_parameter");
8406        Ok(Self {
8407            span: ::treesitter_types::Span::from(node),
8408            decorator: {
8409                let mut cursor = node.walk();
8410                let mut items = ::std::vec::Vec::new();
8411                for child in node.children_by_field_name("decorator", &mut cursor) {
8412                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
8413                        <Decorator as ::treesitter_types::FromNode>::from_node(child, src)
8414                    })?);
8415                }
8416                items
8417            },
8418            name: match node.child_by_field_name("name") {
8419                Some(child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
8420                    <RequiredParameterName as ::treesitter_types::FromNode>::from_node(child, src)
8421                })?),
8422                None => None,
8423            },
8424            pattern: match node.child_by_field_name("pattern") {
8425                Some(child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
8426                    <RequiredParameterPattern as ::treesitter_types::FromNode>::from_node(
8427                        child, src,
8428                    )
8429                })?),
8430                None => None,
8431            },
8432            r#type: match node.child_by_field_name("type") {
8433                Some(child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
8434                    <TypeAnnotation as ::treesitter_types::FromNode>::from_node(child, src)
8435                })?),
8436                None => None,
8437            },
8438            value: match node.child_by_field_name("value") {
8439                Some(child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
8440                    <Expression as ::treesitter_types::FromNode>::from_node(child, src)
8441                })?),
8442                None => None,
8443            },
8444            children: {
8445                #[allow(clippy::suspicious_else_formatting)]
8446                let non_field_children = {
8447                    let mut cursor = node.walk();
8448                    let mut result = ::std::vec::Vec::new();
8449                    if cursor.goto_first_child() {
8450                        loop {
8451                            if cursor.field_name().is_none()
8452                                && cursor.node().is_named()
8453                                && !cursor.node().is_extra()
8454                            {
8455                                result.push(cursor.node());
8456                            }
8457                            if !cursor.goto_next_sibling() {
8458                                break;
8459                            }
8460                        }
8461                    }
8462                    result
8463                };
8464                let mut items = ::std::vec::Vec::new();
8465                for child in non_field_children {
8466                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
8467                        <RequiredParameterChildren as ::treesitter_types::FromNode>::from_node(
8468                            child, src,
8469                        )
8470                    })?);
8471                }
8472                items
8473            },
8474        })
8475    }
8476}
8477impl ::treesitter_types::Spanned for RequiredParameter<'_> {
8478    fn span(&self) -> ::treesitter_types::Span {
8479        self.span
8480    }
8481}
8482#[derive(Debug, Clone, PartialEq, Eq)]
8483pub struct RestPattern<'tree> {
8484    pub span: ::treesitter_types::Span,
8485    pub children: RestPatternChildren<'tree>,
8486}
8487impl<'tree> ::treesitter_types::FromNode<'tree> for RestPattern<'tree> {
8488    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
8489    fn from_node(
8490        node: ::treesitter_types::tree_sitter::Node<'tree>,
8491        src: &'tree [u8],
8492    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
8493        debug_assert_eq!(node.kind(), "rest_pattern");
8494        Ok(Self {
8495            span: ::treesitter_types::Span::from(node),
8496            children: {
8497                #[allow(clippy::suspicious_else_formatting)]
8498                let non_field_children = {
8499                    let mut cursor = node.walk();
8500                    let mut result = ::std::vec::Vec::new();
8501                    if cursor.goto_first_child() {
8502                        loop {
8503                            if cursor.field_name().is_none()
8504                                && cursor.node().is_named()
8505                                && !cursor.node().is_extra()
8506                            {
8507                                result.push(cursor.node());
8508                            }
8509                            if !cursor.goto_next_sibling() {
8510                                break;
8511                            }
8512                        }
8513                    }
8514                    result
8515                };
8516                let child = if let Some(&c) = non_field_children.first() {
8517                    c
8518                } else {
8519                    let mut fallback_cursor = node.walk();
8520                    let mut fallback_child = None;
8521                    if fallback_cursor.goto_first_child() {
8522                        loop {
8523                            if fallback_cursor.field_name().is_none()
8524                                && !fallback_cursor.node().is_extra()
8525                            {
8526                                let candidate = fallback_cursor.node();
8527                                #[allow(clippy::needless_question_mark)]
8528                                if (|| -> ::core::result::Result<
8529                                    _,
8530                                    ::treesitter_types::ParseError,
8531                                > {
8532                                    let child = candidate;
8533                                    Ok(
8534                                        ::treesitter_types::runtime::maybe_grow_stack(|| <RestPatternChildren as ::treesitter_types::FromNode>::from_node(
8535                                            child,
8536                                            src,
8537                                        ))?,
8538                                    )
8539                                })()
8540                                    .is_ok()
8541                                {
8542                                    fallback_child = Some(candidate);
8543                                    break;
8544                                }
8545                            }
8546                            if !fallback_cursor.goto_next_sibling() {
8547                                break;
8548                            }
8549                        }
8550                    }
8551                    if fallback_child.is_none() {
8552                        let mut cursor2 = node.walk();
8553                        if cursor2.goto_first_child() {
8554                            loop {
8555                                if cursor2.node().is_named() && !cursor2.node().is_extra() {
8556                                    let candidate = cursor2.node();
8557                                    #[allow(clippy::needless_question_mark)]
8558                                    if (|| -> ::core::result::Result<
8559                                        _,
8560                                        ::treesitter_types::ParseError,
8561                                    > {
8562                                        let child = candidate;
8563                                        Ok(
8564                                            ::treesitter_types::runtime::maybe_grow_stack(|| <RestPatternChildren as ::treesitter_types::FromNode>::from_node(
8565                                                child,
8566                                                src,
8567                                            ))?,
8568                                        )
8569                                    })()
8570                                        .is_ok()
8571                                    {
8572                                        fallback_child = Some(candidate);
8573                                        break;
8574                                    }
8575                                }
8576                                if !cursor2.goto_next_sibling() {
8577                                    break;
8578                                }
8579                            }
8580                        }
8581                    }
8582                    fallback_child.ok_or_else(|| {
8583                        ::treesitter_types::ParseError::missing_field("children", node)
8584                    })?
8585                };
8586                ::treesitter_types::runtime::maybe_grow_stack(|| {
8587                    <RestPatternChildren as ::treesitter_types::FromNode>::from_node(child, src)
8588                })?
8589            },
8590        })
8591    }
8592}
8593impl ::treesitter_types::Spanned for RestPattern<'_> {
8594    fn span(&self) -> ::treesitter_types::Span {
8595        self.span
8596    }
8597}
8598#[derive(Debug, Clone, PartialEq, Eq)]
8599pub struct RestType<'tree> {
8600    pub span: ::treesitter_types::Span,
8601    pub children: Type<'tree>,
8602}
8603impl<'tree> ::treesitter_types::FromNode<'tree> for RestType<'tree> {
8604    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
8605    fn from_node(
8606        node: ::treesitter_types::tree_sitter::Node<'tree>,
8607        src: &'tree [u8],
8608    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
8609        debug_assert_eq!(node.kind(), "rest_type");
8610        Ok(Self {
8611            span: ::treesitter_types::Span::from(node),
8612            children: {
8613                #[allow(clippy::suspicious_else_formatting)]
8614                let non_field_children = {
8615                    let mut cursor = node.walk();
8616                    let mut result = ::std::vec::Vec::new();
8617                    if cursor.goto_first_child() {
8618                        loop {
8619                            if cursor.field_name().is_none()
8620                                && cursor.node().is_named()
8621                                && !cursor.node().is_extra()
8622                            {
8623                                result.push(cursor.node());
8624                            }
8625                            if !cursor.goto_next_sibling() {
8626                                break;
8627                            }
8628                        }
8629                    }
8630                    result
8631                };
8632                let child = if let Some(&c) = non_field_children.first() {
8633                    c
8634                } else {
8635                    let mut fallback_cursor = node.walk();
8636                    let mut fallback_child = None;
8637                    if fallback_cursor.goto_first_child() {
8638                        loop {
8639                            if fallback_cursor.field_name().is_none()
8640                                && !fallback_cursor.node().is_extra()
8641                            {
8642                                let candidate = fallback_cursor.node();
8643                                #[allow(clippy::needless_question_mark)]
8644                                if (|| -> ::core::result::Result<
8645                                    _,
8646                                    ::treesitter_types::ParseError,
8647                                > {
8648                                    let child = candidate;
8649                                    Ok(
8650                                        ::treesitter_types::runtime::maybe_grow_stack(|| <Type as ::treesitter_types::FromNode>::from_node(
8651                                            child,
8652                                            src,
8653                                        ))?,
8654                                    )
8655                                })()
8656                                    .is_ok()
8657                                {
8658                                    fallback_child = Some(candidate);
8659                                    break;
8660                                }
8661                            }
8662                            if !fallback_cursor.goto_next_sibling() {
8663                                break;
8664                            }
8665                        }
8666                    }
8667                    if fallback_child.is_none() {
8668                        let mut cursor2 = node.walk();
8669                        if cursor2.goto_first_child() {
8670                            loop {
8671                                if cursor2.node().is_named() && !cursor2.node().is_extra() {
8672                                    let candidate = cursor2.node();
8673                                    #[allow(clippy::needless_question_mark)]
8674                                    if (|| -> ::core::result::Result<
8675                                        _,
8676                                        ::treesitter_types::ParseError,
8677                                    > {
8678                                        let child = candidate;
8679                                        Ok(
8680                                            ::treesitter_types::runtime::maybe_grow_stack(|| <Type as ::treesitter_types::FromNode>::from_node(
8681                                                child,
8682                                                src,
8683                                            ))?,
8684                                        )
8685                                    })()
8686                                        .is_ok()
8687                                    {
8688                                        fallback_child = Some(candidate);
8689                                        break;
8690                                    }
8691                                }
8692                                if !cursor2.goto_next_sibling() {
8693                                    break;
8694                                }
8695                            }
8696                        }
8697                    }
8698                    fallback_child.ok_or_else(|| {
8699                        ::treesitter_types::ParseError::missing_field("children", node)
8700                    })?
8701                };
8702                ::treesitter_types::runtime::maybe_grow_stack(|| {
8703                    <Type as ::treesitter_types::FromNode>::from_node(child, src)
8704                })?
8705            },
8706        })
8707    }
8708}
8709impl ::treesitter_types::Spanned for RestType<'_> {
8710    fn span(&self) -> ::treesitter_types::Span {
8711        self.span
8712    }
8713}
8714#[derive(Debug, Clone, PartialEq, Eq)]
8715pub struct ReturnStatement<'tree> {
8716    pub span: ::treesitter_types::Span,
8717    pub children: ::core::option::Option<ReturnStatementChildren<'tree>>,
8718}
8719impl<'tree> ::treesitter_types::FromNode<'tree> for ReturnStatement<'tree> {
8720    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
8721    fn from_node(
8722        node: ::treesitter_types::tree_sitter::Node<'tree>,
8723        src: &'tree [u8],
8724    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
8725        debug_assert_eq!(node.kind(), "return_statement");
8726        Ok(Self {
8727            span: ::treesitter_types::Span::from(node),
8728            children: {
8729                #[allow(clippy::suspicious_else_formatting)]
8730                let non_field_children = {
8731                    let mut cursor = node.walk();
8732                    let mut result = ::std::vec::Vec::new();
8733                    if cursor.goto_first_child() {
8734                        loop {
8735                            if cursor.field_name().is_none()
8736                                && cursor.node().is_named()
8737                                && !cursor.node().is_extra()
8738                            {
8739                                result.push(cursor.node());
8740                            }
8741                            if !cursor.goto_next_sibling() {
8742                                break;
8743                            }
8744                        }
8745                    }
8746                    result
8747                };
8748                match non_field_children.first() {
8749                    Some(&child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
8750                        <ReturnStatementChildren as ::treesitter_types::FromNode>::from_node(
8751                            child, src,
8752                        )
8753                    })?),
8754                    None => None,
8755                }
8756            },
8757        })
8758    }
8759}
8760impl ::treesitter_types::Spanned for ReturnStatement<'_> {
8761    fn span(&self) -> ::treesitter_types::Span {
8762        self.span
8763    }
8764}
8765#[derive(Debug, Clone, PartialEq, Eq)]
8766pub struct SatisfiesExpression<'tree> {
8767    pub span: ::treesitter_types::Span,
8768    pub children: ::std::vec::Vec<SatisfiesExpressionChildren<'tree>>,
8769}
8770impl<'tree> ::treesitter_types::FromNode<'tree> for SatisfiesExpression<'tree> {
8771    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
8772    fn from_node(
8773        node: ::treesitter_types::tree_sitter::Node<'tree>,
8774        src: &'tree [u8],
8775    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
8776        debug_assert_eq!(node.kind(), "satisfies_expression");
8777        Ok(Self {
8778            span: ::treesitter_types::Span::from(node),
8779            children: {
8780                #[allow(clippy::suspicious_else_formatting)]
8781                let non_field_children = {
8782                    let mut cursor = node.walk();
8783                    let mut result = ::std::vec::Vec::new();
8784                    if cursor.goto_first_child() {
8785                        loop {
8786                            if cursor.field_name().is_none()
8787                                && cursor.node().is_named()
8788                                && !cursor.node().is_extra()
8789                            {
8790                                result.push(cursor.node());
8791                            }
8792                            if !cursor.goto_next_sibling() {
8793                                break;
8794                            }
8795                        }
8796                    }
8797                    result
8798                };
8799                let mut items = ::std::vec::Vec::new();
8800                for child in non_field_children {
8801                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
8802                        <SatisfiesExpressionChildren as ::treesitter_types::FromNode>::from_node(
8803                            child, src,
8804                        )
8805                    })?);
8806                }
8807                items
8808            },
8809        })
8810    }
8811}
8812impl ::treesitter_types::Spanned for SatisfiesExpression<'_> {
8813    fn span(&self) -> ::treesitter_types::Span {
8814        self.span
8815    }
8816}
8817#[derive(Debug, Clone, PartialEq, Eq)]
8818pub struct SequenceExpression<'tree> {
8819    pub span: ::treesitter_types::Span,
8820    pub children: ::std::vec::Vec<Expression<'tree>>,
8821}
8822impl<'tree> ::treesitter_types::FromNode<'tree> for SequenceExpression<'tree> {
8823    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
8824    fn from_node(
8825        node: ::treesitter_types::tree_sitter::Node<'tree>,
8826        src: &'tree [u8],
8827    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
8828        debug_assert_eq!(node.kind(), "sequence_expression");
8829        Ok(Self {
8830            span: ::treesitter_types::Span::from(node),
8831            children: {
8832                #[allow(clippy::suspicious_else_formatting)]
8833                let non_field_children = {
8834                    let mut cursor = node.walk();
8835                    let mut result = ::std::vec::Vec::new();
8836                    if cursor.goto_first_child() {
8837                        loop {
8838                            if cursor.field_name().is_none()
8839                                && cursor.node().is_named()
8840                                && !cursor.node().is_extra()
8841                            {
8842                                result.push(cursor.node());
8843                            }
8844                            if !cursor.goto_next_sibling() {
8845                                break;
8846                            }
8847                        }
8848                    }
8849                    result
8850                };
8851                let mut items = ::std::vec::Vec::new();
8852                for child in non_field_children {
8853                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
8854                        <Expression as ::treesitter_types::FromNode>::from_node(child, src)
8855                    })?);
8856                }
8857                items
8858            },
8859        })
8860    }
8861}
8862impl ::treesitter_types::Spanned for SequenceExpression<'_> {
8863    fn span(&self) -> ::treesitter_types::Span {
8864        self.span
8865    }
8866}
8867#[derive(Debug, Clone, PartialEq, Eq)]
8868pub struct SpreadElement<'tree> {
8869    pub span: ::treesitter_types::Span,
8870    pub children: Expression<'tree>,
8871}
8872impl<'tree> ::treesitter_types::FromNode<'tree> for SpreadElement<'tree> {
8873    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
8874    fn from_node(
8875        node: ::treesitter_types::tree_sitter::Node<'tree>,
8876        src: &'tree [u8],
8877    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
8878        debug_assert_eq!(node.kind(), "spread_element");
8879        Ok(Self {
8880            span: ::treesitter_types::Span::from(node),
8881            children: {
8882                #[allow(clippy::suspicious_else_formatting)]
8883                let non_field_children = {
8884                    let mut cursor = node.walk();
8885                    let mut result = ::std::vec::Vec::new();
8886                    if cursor.goto_first_child() {
8887                        loop {
8888                            if cursor.field_name().is_none()
8889                                && cursor.node().is_named()
8890                                && !cursor.node().is_extra()
8891                            {
8892                                result.push(cursor.node());
8893                            }
8894                            if !cursor.goto_next_sibling() {
8895                                break;
8896                            }
8897                        }
8898                    }
8899                    result
8900                };
8901                let child = if let Some(&c) = non_field_children.first() {
8902                    c
8903                } else {
8904                    let mut fallback_cursor = node.walk();
8905                    let mut fallback_child = None;
8906                    if fallback_cursor.goto_first_child() {
8907                        loop {
8908                            if fallback_cursor.field_name().is_none()
8909                                && !fallback_cursor.node().is_extra()
8910                            {
8911                                let candidate = fallback_cursor.node();
8912                                #[allow(clippy::needless_question_mark)]
8913                                if (|| -> ::core::result::Result<
8914                                    _,
8915                                    ::treesitter_types::ParseError,
8916                                > {
8917                                    let child = candidate;
8918                                    Ok(
8919                                        ::treesitter_types::runtime::maybe_grow_stack(|| <Expression as ::treesitter_types::FromNode>::from_node(
8920                                            child,
8921                                            src,
8922                                        ))?,
8923                                    )
8924                                })()
8925                                    .is_ok()
8926                                {
8927                                    fallback_child = Some(candidate);
8928                                    break;
8929                                }
8930                            }
8931                            if !fallback_cursor.goto_next_sibling() {
8932                                break;
8933                            }
8934                        }
8935                    }
8936                    if fallback_child.is_none() {
8937                        let mut cursor2 = node.walk();
8938                        if cursor2.goto_first_child() {
8939                            loop {
8940                                if cursor2.node().is_named() && !cursor2.node().is_extra() {
8941                                    let candidate = cursor2.node();
8942                                    #[allow(clippy::needless_question_mark)]
8943                                    if (|| -> ::core::result::Result<
8944                                        _,
8945                                        ::treesitter_types::ParseError,
8946                                    > {
8947                                        let child = candidate;
8948                                        Ok(
8949                                            ::treesitter_types::runtime::maybe_grow_stack(|| <Expression as ::treesitter_types::FromNode>::from_node(
8950                                                child,
8951                                                src,
8952                                            ))?,
8953                                        )
8954                                    })()
8955                                        .is_ok()
8956                                    {
8957                                        fallback_child = Some(candidate);
8958                                        break;
8959                                    }
8960                                }
8961                                if !cursor2.goto_next_sibling() {
8962                                    break;
8963                                }
8964                            }
8965                        }
8966                    }
8967                    fallback_child.ok_or_else(|| {
8968                        ::treesitter_types::ParseError::missing_field("children", node)
8969                    })?
8970                };
8971                ::treesitter_types::runtime::maybe_grow_stack(|| {
8972                    <Expression as ::treesitter_types::FromNode>::from_node(child, src)
8973                })?
8974            },
8975        })
8976    }
8977}
8978impl ::treesitter_types::Spanned for SpreadElement<'_> {
8979    fn span(&self) -> ::treesitter_types::Span {
8980        self.span
8981    }
8982}
8983#[derive(Debug, Clone, PartialEq, Eq)]
8984pub struct StatementBlock<'tree> {
8985    pub span: ::treesitter_types::Span,
8986    pub children: ::std::vec::Vec<Statement<'tree>>,
8987}
8988impl<'tree> ::treesitter_types::FromNode<'tree> for StatementBlock<'tree> {
8989    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
8990    fn from_node(
8991        node: ::treesitter_types::tree_sitter::Node<'tree>,
8992        src: &'tree [u8],
8993    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
8994        debug_assert_eq!(node.kind(), "statement_block");
8995        Ok(Self {
8996            span: ::treesitter_types::Span::from(node),
8997            children: {
8998                #[allow(clippy::suspicious_else_formatting)]
8999                let non_field_children = {
9000                    let mut cursor = node.walk();
9001                    let mut result = ::std::vec::Vec::new();
9002                    if cursor.goto_first_child() {
9003                        loop {
9004                            if cursor.field_name().is_none()
9005                                && cursor.node().is_named()
9006                                && !cursor.node().is_extra()
9007                            {
9008                                result.push(cursor.node());
9009                            }
9010                            if !cursor.goto_next_sibling() {
9011                                break;
9012                            }
9013                        }
9014                    }
9015                    result
9016                };
9017                let mut items = ::std::vec::Vec::new();
9018                for child in non_field_children {
9019                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
9020                        <Statement as ::treesitter_types::FromNode>::from_node(child, src)
9021                    })?);
9022                }
9023                items
9024            },
9025        })
9026    }
9027}
9028impl ::treesitter_types::Spanned for StatementBlock<'_> {
9029    fn span(&self) -> ::treesitter_types::Span {
9030        self.span
9031    }
9032}
9033#[derive(Debug, Clone, PartialEq, Eq)]
9034pub struct String<'tree> {
9035    pub span: ::treesitter_types::Span,
9036    pub children: ::std::vec::Vec<StringChildren<'tree>>,
9037}
9038impl<'tree> ::treesitter_types::FromNode<'tree> for String<'tree> {
9039    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
9040    fn from_node(
9041        node: ::treesitter_types::tree_sitter::Node<'tree>,
9042        src: &'tree [u8],
9043    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
9044        debug_assert_eq!(node.kind(), "string");
9045        Ok(Self {
9046            span: ::treesitter_types::Span::from(node),
9047            children: {
9048                #[allow(clippy::suspicious_else_formatting)]
9049                let non_field_children = {
9050                    let mut cursor = node.walk();
9051                    let mut result = ::std::vec::Vec::new();
9052                    if cursor.goto_first_child() {
9053                        loop {
9054                            if cursor.field_name().is_none()
9055                                && cursor.node().is_named()
9056                                && !cursor.node().is_extra()
9057                            {
9058                                result.push(cursor.node());
9059                            }
9060                            if !cursor.goto_next_sibling() {
9061                                break;
9062                            }
9063                        }
9064                    }
9065                    result
9066                };
9067                let mut items = ::std::vec::Vec::new();
9068                for child in non_field_children {
9069                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
9070                        <StringChildren as ::treesitter_types::FromNode>::from_node(child, src)
9071                    })?);
9072                }
9073                items
9074            },
9075        })
9076    }
9077}
9078impl ::treesitter_types::Spanned for String<'_> {
9079    fn span(&self) -> ::treesitter_types::Span {
9080        self.span
9081    }
9082}
9083#[derive(Debug, Clone, PartialEq, Eq)]
9084pub struct SubscriptExpression<'tree> {
9085    pub span: ::treesitter_types::Span,
9086    pub index: SubscriptExpressionIndex<'tree>,
9087    pub object: Expression<'tree>,
9088    pub optional_chain: ::core::option::Option<OptionalChain<'tree>>,
9089}
9090impl<'tree> ::treesitter_types::FromNode<'tree> for SubscriptExpression<'tree> {
9091    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
9092    fn from_node(
9093        node: ::treesitter_types::tree_sitter::Node<'tree>,
9094        src: &'tree [u8],
9095    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
9096        debug_assert_eq!(node.kind(), "subscript_expression");
9097        Ok(Self {
9098            span: ::treesitter_types::Span::from(node),
9099            index: {
9100                let child = node
9101                    .child_by_field_name("index")
9102                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("index", node))?;
9103                ::treesitter_types::runtime::maybe_grow_stack(|| {
9104                    <SubscriptExpressionIndex as ::treesitter_types::FromNode>::from_node(
9105                        child, src,
9106                    )
9107                })?
9108            },
9109            object: {
9110                let child = node
9111                    .child_by_field_name("object")
9112                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("object", node))?;
9113                ::treesitter_types::runtime::maybe_grow_stack(|| {
9114                    <Expression as ::treesitter_types::FromNode>::from_node(child, src)
9115                })?
9116            },
9117            optional_chain: match node.child_by_field_name("optional_chain") {
9118                Some(child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
9119                    <OptionalChain as ::treesitter_types::FromNode>::from_node(child, src)
9120                })?),
9121                None => None,
9122            },
9123        })
9124    }
9125}
9126impl ::treesitter_types::Spanned for SubscriptExpression<'_> {
9127    fn span(&self) -> ::treesitter_types::Span {
9128        self.span
9129    }
9130}
9131#[derive(Debug, Clone, PartialEq, Eq)]
9132pub struct SwitchBody<'tree> {
9133    pub span: ::treesitter_types::Span,
9134    pub children: ::std::vec::Vec<SwitchBodyChildren<'tree>>,
9135}
9136impl<'tree> ::treesitter_types::FromNode<'tree> for SwitchBody<'tree> {
9137    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
9138    fn from_node(
9139        node: ::treesitter_types::tree_sitter::Node<'tree>,
9140        src: &'tree [u8],
9141    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
9142        debug_assert_eq!(node.kind(), "switch_body");
9143        Ok(Self {
9144            span: ::treesitter_types::Span::from(node),
9145            children: {
9146                #[allow(clippy::suspicious_else_formatting)]
9147                let non_field_children = {
9148                    let mut cursor = node.walk();
9149                    let mut result = ::std::vec::Vec::new();
9150                    if cursor.goto_first_child() {
9151                        loop {
9152                            if cursor.field_name().is_none()
9153                                && cursor.node().is_named()
9154                                && !cursor.node().is_extra()
9155                            {
9156                                result.push(cursor.node());
9157                            }
9158                            if !cursor.goto_next_sibling() {
9159                                break;
9160                            }
9161                        }
9162                    }
9163                    result
9164                };
9165                let mut items = ::std::vec::Vec::new();
9166                for child in non_field_children {
9167                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
9168                        <SwitchBodyChildren as ::treesitter_types::FromNode>::from_node(child, src)
9169                    })?);
9170                }
9171                items
9172            },
9173        })
9174    }
9175}
9176impl ::treesitter_types::Spanned for SwitchBody<'_> {
9177    fn span(&self) -> ::treesitter_types::Span {
9178        self.span
9179    }
9180}
9181#[derive(Debug, Clone, PartialEq, Eq)]
9182pub struct SwitchCase<'tree> {
9183    pub span: ::treesitter_types::Span,
9184    pub body: ::std::vec::Vec<Statement<'tree>>,
9185    pub value: SwitchCaseValue<'tree>,
9186}
9187impl<'tree> ::treesitter_types::FromNode<'tree> for SwitchCase<'tree> {
9188    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
9189    fn from_node(
9190        node: ::treesitter_types::tree_sitter::Node<'tree>,
9191        src: &'tree [u8],
9192    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
9193        debug_assert_eq!(node.kind(), "switch_case");
9194        Ok(Self {
9195            span: ::treesitter_types::Span::from(node),
9196            body: {
9197                let mut cursor = node.walk();
9198                let mut items = ::std::vec::Vec::new();
9199                for child in node.children_by_field_name("body", &mut cursor) {
9200                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
9201                        <Statement as ::treesitter_types::FromNode>::from_node(child, src)
9202                    })?);
9203                }
9204                items
9205            },
9206            value: {
9207                let child = node
9208                    .child_by_field_name("value")
9209                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("value", node))?;
9210                ::treesitter_types::runtime::maybe_grow_stack(|| {
9211                    <SwitchCaseValue as ::treesitter_types::FromNode>::from_node(child, src)
9212                })?
9213            },
9214        })
9215    }
9216}
9217impl ::treesitter_types::Spanned for SwitchCase<'_> {
9218    fn span(&self) -> ::treesitter_types::Span {
9219        self.span
9220    }
9221}
9222#[derive(Debug, Clone, PartialEq, Eq)]
9223pub struct SwitchDefault<'tree> {
9224    pub span: ::treesitter_types::Span,
9225    pub body: ::std::vec::Vec<Statement<'tree>>,
9226}
9227impl<'tree> ::treesitter_types::FromNode<'tree> for SwitchDefault<'tree> {
9228    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
9229    fn from_node(
9230        node: ::treesitter_types::tree_sitter::Node<'tree>,
9231        src: &'tree [u8],
9232    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
9233        debug_assert_eq!(node.kind(), "switch_default");
9234        Ok(Self {
9235            span: ::treesitter_types::Span::from(node),
9236            body: {
9237                let mut cursor = node.walk();
9238                let mut items = ::std::vec::Vec::new();
9239                for child in node.children_by_field_name("body", &mut cursor) {
9240                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
9241                        <Statement as ::treesitter_types::FromNode>::from_node(child, src)
9242                    })?);
9243                }
9244                items
9245            },
9246        })
9247    }
9248}
9249impl ::treesitter_types::Spanned for SwitchDefault<'_> {
9250    fn span(&self) -> ::treesitter_types::Span {
9251        self.span
9252    }
9253}
9254#[derive(Debug, Clone, PartialEq, Eq)]
9255pub struct SwitchStatement<'tree> {
9256    pub span: ::treesitter_types::Span,
9257    pub body: SwitchBody<'tree>,
9258    pub value: ParenthesizedExpression<'tree>,
9259}
9260impl<'tree> ::treesitter_types::FromNode<'tree> for SwitchStatement<'tree> {
9261    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
9262    fn from_node(
9263        node: ::treesitter_types::tree_sitter::Node<'tree>,
9264        src: &'tree [u8],
9265    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
9266        debug_assert_eq!(node.kind(), "switch_statement");
9267        Ok(Self {
9268            span: ::treesitter_types::Span::from(node),
9269            body: {
9270                let child = node
9271                    .child_by_field_name("body")
9272                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("body", node))?;
9273                ::treesitter_types::runtime::maybe_grow_stack(|| {
9274                    <SwitchBody as ::treesitter_types::FromNode>::from_node(child, src)
9275                })?
9276            },
9277            value: {
9278                let child = node
9279                    .child_by_field_name("value")
9280                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("value", node))?;
9281                ::treesitter_types::runtime::maybe_grow_stack(|| {
9282                    <ParenthesizedExpression as ::treesitter_types::FromNode>::from_node(child, src)
9283                })?
9284            },
9285        })
9286    }
9287}
9288impl ::treesitter_types::Spanned for SwitchStatement<'_> {
9289    fn span(&self) -> ::treesitter_types::Span {
9290        self.span
9291    }
9292}
9293#[derive(Debug, Clone, PartialEq, Eq)]
9294pub struct TemplateLiteralType<'tree> {
9295    pub span: ::treesitter_types::Span,
9296    pub children: ::std::vec::Vec<TemplateLiteralTypeChildren<'tree>>,
9297}
9298impl<'tree> ::treesitter_types::FromNode<'tree> for TemplateLiteralType<'tree> {
9299    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
9300    fn from_node(
9301        node: ::treesitter_types::tree_sitter::Node<'tree>,
9302        src: &'tree [u8],
9303    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
9304        debug_assert_eq!(node.kind(), "template_literal_type");
9305        Ok(Self {
9306            span: ::treesitter_types::Span::from(node),
9307            children: {
9308                #[allow(clippy::suspicious_else_formatting)]
9309                let non_field_children = {
9310                    let mut cursor = node.walk();
9311                    let mut result = ::std::vec::Vec::new();
9312                    if cursor.goto_first_child() {
9313                        loop {
9314                            if cursor.field_name().is_none()
9315                                && cursor.node().is_named()
9316                                && !cursor.node().is_extra()
9317                            {
9318                                result.push(cursor.node());
9319                            }
9320                            if !cursor.goto_next_sibling() {
9321                                break;
9322                            }
9323                        }
9324                    }
9325                    result
9326                };
9327                let mut items = ::std::vec::Vec::new();
9328                for child in non_field_children {
9329                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
9330                        <TemplateLiteralTypeChildren as ::treesitter_types::FromNode>::from_node(
9331                            child, src,
9332                        )
9333                    })?);
9334                }
9335                items
9336            },
9337        })
9338    }
9339}
9340impl ::treesitter_types::Spanned for TemplateLiteralType<'_> {
9341    fn span(&self) -> ::treesitter_types::Span {
9342        self.span
9343    }
9344}
9345#[derive(Debug, Clone, PartialEq, Eq)]
9346pub struct TemplateString<'tree> {
9347    pub span: ::treesitter_types::Span,
9348    pub children: ::std::vec::Vec<TemplateStringChildren<'tree>>,
9349}
9350impl<'tree> ::treesitter_types::FromNode<'tree> for TemplateString<'tree> {
9351    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
9352    fn from_node(
9353        node: ::treesitter_types::tree_sitter::Node<'tree>,
9354        src: &'tree [u8],
9355    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
9356        debug_assert_eq!(node.kind(), "template_string");
9357        Ok(Self {
9358            span: ::treesitter_types::Span::from(node),
9359            children: {
9360                #[allow(clippy::suspicious_else_formatting)]
9361                let non_field_children = {
9362                    let mut cursor = node.walk();
9363                    let mut result = ::std::vec::Vec::new();
9364                    if cursor.goto_first_child() {
9365                        loop {
9366                            if cursor.field_name().is_none()
9367                                && cursor.node().is_named()
9368                                && !cursor.node().is_extra()
9369                            {
9370                                result.push(cursor.node());
9371                            }
9372                            if !cursor.goto_next_sibling() {
9373                                break;
9374                            }
9375                        }
9376                    }
9377                    result
9378                };
9379                let mut items = ::std::vec::Vec::new();
9380                for child in non_field_children {
9381                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
9382                        <TemplateStringChildren as ::treesitter_types::FromNode>::from_node(
9383                            child, src,
9384                        )
9385                    })?);
9386                }
9387                items
9388            },
9389        })
9390    }
9391}
9392impl ::treesitter_types::Spanned for TemplateString<'_> {
9393    fn span(&self) -> ::treesitter_types::Span {
9394        self.span
9395    }
9396}
9397#[derive(Debug, Clone, PartialEq, Eq)]
9398pub struct TemplateSubstitution<'tree> {
9399    pub span: ::treesitter_types::Span,
9400    pub children: TemplateSubstitutionChildren<'tree>,
9401}
9402impl<'tree> ::treesitter_types::FromNode<'tree> for TemplateSubstitution<'tree> {
9403    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
9404    fn from_node(
9405        node: ::treesitter_types::tree_sitter::Node<'tree>,
9406        src: &'tree [u8],
9407    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
9408        debug_assert_eq!(node.kind(), "template_substitution");
9409        Ok(Self {
9410            span: ::treesitter_types::Span::from(node),
9411            children: {
9412                #[allow(clippy::suspicious_else_formatting)]
9413                let non_field_children = {
9414                    let mut cursor = node.walk();
9415                    let mut result = ::std::vec::Vec::new();
9416                    if cursor.goto_first_child() {
9417                        loop {
9418                            if cursor.field_name().is_none()
9419                                && cursor.node().is_named()
9420                                && !cursor.node().is_extra()
9421                            {
9422                                result.push(cursor.node());
9423                            }
9424                            if !cursor.goto_next_sibling() {
9425                                break;
9426                            }
9427                        }
9428                    }
9429                    result
9430                };
9431                let child = if let Some(&c) = non_field_children.first() {
9432                    c
9433                } else {
9434                    let mut fallback_cursor = node.walk();
9435                    let mut fallback_child = None;
9436                    if fallback_cursor.goto_first_child() {
9437                        loop {
9438                            if fallback_cursor.field_name().is_none()
9439                                && !fallback_cursor.node().is_extra()
9440                            {
9441                                let candidate = fallback_cursor.node();
9442                                #[allow(clippy::needless_question_mark)]
9443                                if (|| -> ::core::result::Result<
9444                                    _,
9445                                    ::treesitter_types::ParseError,
9446                                > {
9447                                    let child = candidate;
9448                                    Ok(
9449                                        ::treesitter_types::runtime::maybe_grow_stack(|| <TemplateSubstitutionChildren as ::treesitter_types::FromNode>::from_node(
9450                                            child,
9451                                            src,
9452                                        ))?,
9453                                    )
9454                                })()
9455                                    .is_ok()
9456                                {
9457                                    fallback_child = Some(candidate);
9458                                    break;
9459                                }
9460                            }
9461                            if !fallback_cursor.goto_next_sibling() {
9462                                break;
9463                            }
9464                        }
9465                    }
9466                    if fallback_child.is_none() {
9467                        let mut cursor2 = node.walk();
9468                        if cursor2.goto_first_child() {
9469                            loop {
9470                                if cursor2.node().is_named() && !cursor2.node().is_extra() {
9471                                    let candidate = cursor2.node();
9472                                    #[allow(clippy::needless_question_mark)]
9473                                    if (|| -> ::core::result::Result<
9474                                        _,
9475                                        ::treesitter_types::ParseError,
9476                                    > {
9477                                        let child = candidate;
9478                                        Ok(
9479                                            ::treesitter_types::runtime::maybe_grow_stack(|| <TemplateSubstitutionChildren as ::treesitter_types::FromNode>::from_node(
9480                                                child,
9481                                                src,
9482                                            ))?,
9483                                        )
9484                                    })()
9485                                        .is_ok()
9486                                    {
9487                                        fallback_child = Some(candidate);
9488                                        break;
9489                                    }
9490                                }
9491                                if !cursor2.goto_next_sibling() {
9492                                    break;
9493                                }
9494                            }
9495                        }
9496                    }
9497                    fallback_child.ok_or_else(|| {
9498                        ::treesitter_types::ParseError::missing_field("children", node)
9499                    })?
9500                };
9501                ::treesitter_types::runtime::maybe_grow_stack(|| {
9502                    <TemplateSubstitutionChildren as ::treesitter_types::FromNode>::from_node(
9503                        child, src,
9504                    )
9505                })?
9506            },
9507        })
9508    }
9509}
9510impl ::treesitter_types::Spanned for TemplateSubstitution<'_> {
9511    fn span(&self) -> ::treesitter_types::Span {
9512        self.span
9513    }
9514}
9515#[derive(Debug, Clone, PartialEq, Eq)]
9516pub struct TemplateType<'tree> {
9517    pub span: ::treesitter_types::Span,
9518    pub children: TemplateTypeChildren<'tree>,
9519}
9520impl<'tree> ::treesitter_types::FromNode<'tree> for TemplateType<'tree> {
9521    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
9522    fn from_node(
9523        node: ::treesitter_types::tree_sitter::Node<'tree>,
9524        src: &'tree [u8],
9525    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
9526        debug_assert_eq!(node.kind(), "template_type");
9527        Ok(Self {
9528            span: ::treesitter_types::Span::from(node),
9529            children: {
9530                #[allow(clippy::suspicious_else_formatting)]
9531                let non_field_children = {
9532                    let mut cursor = node.walk();
9533                    let mut result = ::std::vec::Vec::new();
9534                    if cursor.goto_first_child() {
9535                        loop {
9536                            if cursor.field_name().is_none()
9537                                && cursor.node().is_named()
9538                                && !cursor.node().is_extra()
9539                            {
9540                                result.push(cursor.node());
9541                            }
9542                            if !cursor.goto_next_sibling() {
9543                                break;
9544                            }
9545                        }
9546                    }
9547                    result
9548                };
9549                let child = if let Some(&c) = non_field_children.first() {
9550                    c
9551                } else {
9552                    let mut fallback_cursor = node.walk();
9553                    let mut fallback_child = None;
9554                    if fallback_cursor.goto_first_child() {
9555                        loop {
9556                            if fallback_cursor.field_name().is_none()
9557                                && !fallback_cursor.node().is_extra()
9558                            {
9559                                let candidate = fallback_cursor.node();
9560                                #[allow(clippy::needless_question_mark)]
9561                                if (|| -> ::core::result::Result<
9562                                    _,
9563                                    ::treesitter_types::ParseError,
9564                                > {
9565                                    let child = candidate;
9566                                    Ok(
9567                                        ::treesitter_types::runtime::maybe_grow_stack(|| <TemplateTypeChildren as ::treesitter_types::FromNode>::from_node(
9568                                            child,
9569                                            src,
9570                                        ))?,
9571                                    )
9572                                })()
9573                                    .is_ok()
9574                                {
9575                                    fallback_child = Some(candidate);
9576                                    break;
9577                                }
9578                            }
9579                            if !fallback_cursor.goto_next_sibling() {
9580                                break;
9581                            }
9582                        }
9583                    }
9584                    if fallback_child.is_none() {
9585                        let mut cursor2 = node.walk();
9586                        if cursor2.goto_first_child() {
9587                            loop {
9588                                if cursor2.node().is_named() && !cursor2.node().is_extra() {
9589                                    let candidate = cursor2.node();
9590                                    #[allow(clippy::needless_question_mark)]
9591                                    if (|| -> ::core::result::Result<
9592                                        _,
9593                                        ::treesitter_types::ParseError,
9594                                    > {
9595                                        let child = candidate;
9596                                        Ok(
9597                                            ::treesitter_types::runtime::maybe_grow_stack(|| <TemplateTypeChildren as ::treesitter_types::FromNode>::from_node(
9598                                                child,
9599                                                src,
9600                                            ))?,
9601                                        )
9602                                    })()
9603                                        .is_ok()
9604                                    {
9605                                        fallback_child = Some(candidate);
9606                                        break;
9607                                    }
9608                                }
9609                                if !cursor2.goto_next_sibling() {
9610                                    break;
9611                                }
9612                            }
9613                        }
9614                    }
9615                    fallback_child.ok_or_else(|| {
9616                        ::treesitter_types::ParseError::missing_field("children", node)
9617                    })?
9618                };
9619                ::treesitter_types::runtime::maybe_grow_stack(|| {
9620                    <TemplateTypeChildren as ::treesitter_types::FromNode>::from_node(child, src)
9621                })?
9622            },
9623        })
9624    }
9625}
9626impl ::treesitter_types::Spanned for TemplateType<'_> {
9627    fn span(&self) -> ::treesitter_types::Span {
9628        self.span
9629    }
9630}
9631#[derive(Debug, Clone, PartialEq, Eq)]
9632pub struct TernaryExpression<'tree> {
9633    pub span: ::treesitter_types::Span,
9634    pub alternative: Expression<'tree>,
9635    pub condition: Expression<'tree>,
9636    pub consequence: Expression<'tree>,
9637}
9638impl<'tree> ::treesitter_types::FromNode<'tree> for TernaryExpression<'tree> {
9639    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
9640    fn from_node(
9641        node: ::treesitter_types::tree_sitter::Node<'tree>,
9642        src: &'tree [u8],
9643    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
9644        debug_assert_eq!(node.kind(), "ternary_expression");
9645        Ok(Self {
9646            span: ::treesitter_types::Span::from(node),
9647            alternative: {
9648                let child = node.child_by_field_name("alternative").ok_or_else(|| {
9649                    ::treesitter_types::ParseError::missing_field("alternative", node)
9650                })?;
9651                ::treesitter_types::runtime::maybe_grow_stack(|| {
9652                    <Expression as ::treesitter_types::FromNode>::from_node(child, src)
9653                })?
9654            },
9655            condition: {
9656                let child = node.child_by_field_name("condition").ok_or_else(|| {
9657                    ::treesitter_types::ParseError::missing_field("condition", node)
9658                })?;
9659                ::treesitter_types::runtime::maybe_grow_stack(|| {
9660                    <Expression as ::treesitter_types::FromNode>::from_node(child, src)
9661                })?
9662            },
9663            consequence: {
9664                let child = node.child_by_field_name("consequence").ok_or_else(|| {
9665                    ::treesitter_types::ParseError::missing_field("consequence", node)
9666                })?;
9667                ::treesitter_types::runtime::maybe_grow_stack(|| {
9668                    <Expression as ::treesitter_types::FromNode>::from_node(child, src)
9669                })?
9670            },
9671        })
9672    }
9673}
9674impl ::treesitter_types::Spanned for TernaryExpression<'_> {
9675    fn span(&self) -> ::treesitter_types::Span {
9676        self.span
9677    }
9678}
9679#[derive(Debug, Clone, PartialEq, Eq)]
9680pub struct ThrowStatement<'tree> {
9681    pub span: ::treesitter_types::Span,
9682    pub children: ThrowStatementChildren<'tree>,
9683}
9684impl<'tree> ::treesitter_types::FromNode<'tree> for ThrowStatement<'tree> {
9685    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
9686    fn from_node(
9687        node: ::treesitter_types::tree_sitter::Node<'tree>,
9688        src: &'tree [u8],
9689    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
9690        debug_assert_eq!(node.kind(), "throw_statement");
9691        Ok(Self {
9692            span: ::treesitter_types::Span::from(node),
9693            children: {
9694                #[allow(clippy::suspicious_else_formatting)]
9695                let non_field_children = {
9696                    let mut cursor = node.walk();
9697                    let mut result = ::std::vec::Vec::new();
9698                    if cursor.goto_first_child() {
9699                        loop {
9700                            if cursor.field_name().is_none()
9701                                && cursor.node().is_named()
9702                                && !cursor.node().is_extra()
9703                            {
9704                                result.push(cursor.node());
9705                            }
9706                            if !cursor.goto_next_sibling() {
9707                                break;
9708                            }
9709                        }
9710                    }
9711                    result
9712                };
9713                let child = if let Some(&c) = non_field_children.first() {
9714                    c
9715                } else {
9716                    let mut fallback_cursor = node.walk();
9717                    let mut fallback_child = None;
9718                    if fallback_cursor.goto_first_child() {
9719                        loop {
9720                            if fallback_cursor.field_name().is_none()
9721                                && !fallback_cursor.node().is_extra()
9722                            {
9723                                let candidate = fallback_cursor.node();
9724                                #[allow(clippy::needless_question_mark)]
9725                                if (|| -> ::core::result::Result<
9726                                    _,
9727                                    ::treesitter_types::ParseError,
9728                                > {
9729                                    let child = candidate;
9730                                    Ok(
9731                                        ::treesitter_types::runtime::maybe_grow_stack(|| <ThrowStatementChildren as ::treesitter_types::FromNode>::from_node(
9732                                            child,
9733                                            src,
9734                                        ))?,
9735                                    )
9736                                })()
9737                                    .is_ok()
9738                                {
9739                                    fallback_child = Some(candidate);
9740                                    break;
9741                                }
9742                            }
9743                            if !fallback_cursor.goto_next_sibling() {
9744                                break;
9745                            }
9746                        }
9747                    }
9748                    if fallback_child.is_none() {
9749                        let mut cursor2 = node.walk();
9750                        if cursor2.goto_first_child() {
9751                            loop {
9752                                if cursor2.node().is_named() && !cursor2.node().is_extra() {
9753                                    let candidate = cursor2.node();
9754                                    #[allow(clippy::needless_question_mark)]
9755                                    if (|| -> ::core::result::Result<
9756                                        _,
9757                                        ::treesitter_types::ParseError,
9758                                    > {
9759                                        let child = candidate;
9760                                        Ok(
9761                                            ::treesitter_types::runtime::maybe_grow_stack(|| <ThrowStatementChildren as ::treesitter_types::FromNode>::from_node(
9762                                                child,
9763                                                src,
9764                                            ))?,
9765                                        )
9766                                    })()
9767                                        .is_ok()
9768                                    {
9769                                        fallback_child = Some(candidate);
9770                                        break;
9771                                    }
9772                                }
9773                                if !cursor2.goto_next_sibling() {
9774                                    break;
9775                                }
9776                            }
9777                        }
9778                    }
9779                    fallback_child.ok_or_else(|| {
9780                        ::treesitter_types::ParseError::missing_field("children", node)
9781                    })?
9782                };
9783                ::treesitter_types::runtime::maybe_grow_stack(|| {
9784                    <ThrowStatementChildren as ::treesitter_types::FromNode>::from_node(child, src)
9785                })?
9786            },
9787        })
9788    }
9789}
9790impl ::treesitter_types::Spanned for ThrowStatement<'_> {
9791    fn span(&self) -> ::treesitter_types::Span {
9792        self.span
9793    }
9794}
9795#[derive(Debug, Clone, PartialEq, Eq)]
9796pub struct TryStatement<'tree> {
9797    pub span: ::treesitter_types::Span,
9798    pub body: StatementBlock<'tree>,
9799    pub finalizer: ::core::option::Option<FinallyClause<'tree>>,
9800    pub handler: ::core::option::Option<CatchClause<'tree>>,
9801}
9802impl<'tree> ::treesitter_types::FromNode<'tree> for TryStatement<'tree> {
9803    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
9804    fn from_node(
9805        node: ::treesitter_types::tree_sitter::Node<'tree>,
9806        src: &'tree [u8],
9807    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
9808        debug_assert_eq!(node.kind(), "try_statement");
9809        Ok(Self {
9810            span: ::treesitter_types::Span::from(node),
9811            body: {
9812                let child = node
9813                    .child_by_field_name("body")
9814                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("body", node))?;
9815                ::treesitter_types::runtime::maybe_grow_stack(|| {
9816                    <StatementBlock as ::treesitter_types::FromNode>::from_node(child, src)
9817                })?
9818            },
9819            finalizer: match node.child_by_field_name("finalizer") {
9820                Some(child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
9821                    <FinallyClause as ::treesitter_types::FromNode>::from_node(child, src)
9822                })?),
9823                None => None,
9824            },
9825            handler: match node.child_by_field_name("handler") {
9826                Some(child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
9827                    <CatchClause as ::treesitter_types::FromNode>::from_node(child, src)
9828                })?),
9829                None => None,
9830            },
9831        })
9832    }
9833}
9834impl ::treesitter_types::Spanned for TryStatement<'_> {
9835    fn span(&self) -> ::treesitter_types::Span {
9836        self.span
9837    }
9838}
9839#[derive(Debug, Clone, PartialEq, Eq)]
9840pub struct TupleType<'tree> {
9841    pub span: ::treesitter_types::Span,
9842    pub children: ::std::vec::Vec<TupleTypeChildren<'tree>>,
9843}
9844impl<'tree> ::treesitter_types::FromNode<'tree> for TupleType<'tree> {
9845    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
9846    fn from_node(
9847        node: ::treesitter_types::tree_sitter::Node<'tree>,
9848        src: &'tree [u8],
9849    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
9850        debug_assert_eq!(node.kind(), "tuple_type");
9851        Ok(Self {
9852            span: ::treesitter_types::Span::from(node),
9853            children: {
9854                #[allow(clippy::suspicious_else_formatting)]
9855                let non_field_children = {
9856                    let mut cursor = node.walk();
9857                    let mut result = ::std::vec::Vec::new();
9858                    if cursor.goto_first_child() {
9859                        loop {
9860                            if cursor.field_name().is_none()
9861                                && cursor.node().is_named()
9862                                && !cursor.node().is_extra()
9863                            {
9864                                result.push(cursor.node());
9865                            }
9866                            if !cursor.goto_next_sibling() {
9867                                break;
9868                            }
9869                        }
9870                    }
9871                    result
9872                };
9873                let mut items = ::std::vec::Vec::new();
9874                for child in non_field_children {
9875                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
9876                        <TupleTypeChildren as ::treesitter_types::FromNode>::from_node(child, src)
9877                    })?);
9878                }
9879                items
9880            },
9881        })
9882    }
9883}
9884impl ::treesitter_types::Spanned for TupleType<'_> {
9885    fn span(&self) -> ::treesitter_types::Span {
9886        self.span
9887    }
9888}
9889#[derive(Debug, Clone, PartialEq, Eq)]
9890pub struct TypeAliasDeclaration<'tree> {
9891    pub span: ::treesitter_types::Span,
9892    pub name: TypeIdentifier<'tree>,
9893    pub type_parameters: ::core::option::Option<TypeParameters<'tree>>,
9894    pub value: Type<'tree>,
9895}
9896impl<'tree> ::treesitter_types::FromNode<'tree> for TypeAliasDeclaration<'tree> {
9897    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
9898    fn from_node(
9899        node: ::treesitter_types::tree_sitter::Node<'tree>,
9900        src: &'tree [u8],
9901    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
9902        debug_assert_eq!(node.kind(), "type_alias_declaration");
9903        Ok(Self {
9904            span: ::treesitter_types::Span::from(node),
9905            name: {
9906                let child = node
9907                    .child_by_field_name("name")
9908                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("name", node))?;
9909                ::treesitter_types::runtime::maybe_grow_stack(|| {
9910                    <TypeIdentifier as ::treesitter_types::FromNode>::from_node(child, src)
9911                })?
9912            },
9913            type_parameters: match node.child_by_field_name("type_parameters") {
9914                Some(child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
9915                    <TypeParameters as ::treesitter_types::FromNode>::from_node(child, src)
9916                })?),
9917                None => None,
9918            },
9919            value: {
9920                let child = node
9921                    .child_by_field_name("value")
9922                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("value", node))?;
9923                ::treesitter_types::runtime::maybe_grow_stack(|| {
9924                    <Type as ::treesitter_types::FromNode>::from_node(child, src)
9925                })?
9926            },
9927        })
9928    }
9929}
9930impl ::treesitter_types::Spanned for TypeAliasDeclaration<'_> {
9931    fn span(&self) -> ::treesitter_types::Span {
9932        self.span
9933    }
9934}
9935#[derive(Debug, Clone, PartialEq, Eq)]
9936pub struct TypeAnnotation<'tree> {
9937    pub span: ::treesitter_types::Span,
9938    pub children: Type<'tree>,
9939}
9940impl<'tree> ::treesitter_types::FromNode<'tree> for TypeAnnotation<'tree> {
9941    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
9942    fn from_node(
9943        node: ::treesitter_types::tree_sitter::Node<'tree>,
9944        src: &'tree [u8],
9945    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
9946        debug_assert_eq!(node.kind(), "type_annotation");
9947        Ok(Self {
9948            span: ::treesitter_types::Span::from(node),
9949            children: {
9950                #[allow(clippy::suspicious_else_formatting)]
9951                let non_field_children = {
9952                    let mut cursor = node.walk();
9953                    let mut result = ::std::vec::Vec::new();
9954                    if cursor.goto_first_child() {
9955                        loop {
9956                            if cursor.field_name().is_none()
9957                                && cursor.node().is_named()
9958                                && !cursor.node().is_extra()
9959                            {
9960                                result.push(cursor.node());
9961                            }
9962                            if !cursor.goto_next_sibling() {
9963                                break;
9964                            }
9965                        }
9966                    }
9967                    result
9968                };
9969                let child = if let Some(&c) = non_field_children.first() {
9970                    c
9971                } else {
9972                    let mut fallback_cursor = node.walk();
9973                    let mut fallback_child = None;
9974                    if fallback_cursor.goto_first_child() {
9975                        loop {
9976                            if fallback_cursor.field_name().is_none()
9977                                && !fallback_cursor.node().is_extra()
9978                            {
9979                                let candidate = fallback_cursor.node();
9980                                #[allow(clippy::needless_question_mark)]
9981                                if (|| -> ::core::result::Result<
9982                                    _,
9983                                    ::treesitter_types::ParseError,
9984                                > {
9985                                    let child = candidate;
9986                                    Ok(
9987                                        ::treesitter_types::runtime::maybe_grow_stack(|| <Type as ::treesitter_types::FromNode>::from_node(
9988                                            child,
9989                                            src,
9990                                        ))?,
9991                                    )
9992                                })()
9993                                    .is_ok()
9994                                {
9995                                    fallback_child = Some(candidate);
9996                                    break;
9997                                }
9998                            }
9999                            if !fallback_cursor.goto_next_sibling() {
10000                                break;
10001                            }
10002                        }
10003                    }
10004                    if fallback_child.is_none() {
10005                        let mut cursor2 = node.walk();
10006                        if cursor2.goto_first_child() {
10007                            loop {
10008                                if cursor2.node().is_named() && !cursor2.node().is_extra() {
10009                                    let candidate = cursor2.node();
10010                                    #[allow(clippy::needless_question_mark)]
10011                                    if (|| -> ::core::result::Result<
10012                                        _,
10013                                        ::treesitter_types::ParseError,
10014                                    > {
10015                                        let child = candidate;
10016                                        Ok(
10017                                            ::treesitter_types::runtime::maybe_grow_stack(|| <Type as ::treesitter_types::FromNode>::from_node(
10018                                                child,
10019                                                src,
10020                                            ))?,
10021                                        )
10022                                    })()
10023                                        .is_ok()
10024                                    {
10025                                        fallback_child = Some(candidate);
10026                                        break;
10027                                    }
10028                                }
10029                                if !cursor2.goto_next_sibling() {
10030                                    break;
10031                                }
10032                            }
10033                        }
10034                    }
10035                    fallback_child.ok_or_else(|| {
10036                        ::treesitter_types::ParseError::missing_field("children", node)
10037                    })?
10038                };
10039                ::treesitter_types::runtime::maybe_grow_stack(|| {
10040                    <Type as ::treesitter_types::FromNode>::from_node(child, src)
10041                })?
10042            },
10043        })
10044    }
10045}
10046impl ::treesitter_types::Spanned for TypeAnnotation<'_> {
10047    fn span(&self) -> ::treesitter_types::Span {
10048        self.span
10049    }
10050}
10051#[derive(Debug, Clone, PartialEq, Eq)]
10052pub struct TypeArguments<'tree> {
10053    pub span: ::treesitter_types::Span,
10054    pub children: ::std::vec::Vec<Type<'tree>>,
10055}
10056impl<'tree> ::treesitter_types::FromNode<'tree> for TypeArguments<'tree> {
10057    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
10058    fn from_node(
10059        node: ::treesitter_types::tree_sitter::Node<'tree>,
10060        src: &'tree [u8],
10061    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
10062        debug_assert_eq!(node.kind(), "type_arguments");
10063        Ok(Self {
10064            span: ::treesitter_types::Span::from(node),
10065            children: {
10066                #[allow(clippy::suspicious_else_formatting)]
10067                let non_field_children = {
10068                    let mut cursor = node.walk();
10069                    let mut result = ::std::vec::Vec::new();
10070                    if cursor.goto_first_child() {
10071                        loop {
10072                            if cursor.field_name().is_none()
10073                                && cursor.node().is_named()
10074                                && !cursor.node().is_extra()
10075                            {
10076                                result.push(cursor.node());
10077                            }
10078                            if !cursor.goto_next_sibling() {
10079                                break;
10080                            }
10081                        }
10082                    }
10083                    result
10084                };
10085                let mut items = ::std::vec::Vec::new();
10086                for child in non_field_children {
10087                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
10088                        <Type as ::treesitter_types::FromNode>::from_node(child, src)
10089                    })?);
10090                }
10091                items
10092            },
10093        })
10094    }
10095}
10096impl ::treesitter_types::Spanned for TypeArguments<'_> {
10097    fn span(&self) -> ::treesitter_types::Span {
10098        self.span
10099    }
10100}
10101#[derive(Debug, Clone, PartialEq, Eq)]
10102pub struct TypeAssertion<'tree> {
10103    pub span: ::treesitter_types::Span,
10104    pub children: ::std::vec::Vec<TypeAssertionChildren<'tree>>,
10105}
10106impl<'tree> ::treesitter_types::FromNode<'tree> for TypeAssertion<'tree> {
10107    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
10108    fn from_node(
10109        node: ::treesitter_types::tree_sitter::Node<'tree>,
10110        src: &'tree [u8],
10111    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
10112        debug_assert_eq!(node.kind(), "type_assertion");
10113        Ok(Self {
10114            span: ::treesitter_types::Span::from(node),
10115            children: {
10116                #[allow(clippy::suspicious_else_formatting)]
10117                let non_field_children = {
10118                    let mut cursor = node.walk();
10119                    let mut result = ::std::vec::Vec::new();
10120                    if cursor.goto_first_child() {
10121                        loop {
10122                            if cursor.field_name().is_none()
10123                                && cursor.node().is_named()
10124                                && !cursor.node().is_extra()
10125                            {
10126                                result.push(cursor.node());
10127                            }
10128                            if !cursor.goto_next_sibling() {
10129                                break;
10130                            }
10131                        }
10132                    }
10133                    result
10134                };
10135                let mut items = ::std::vec::Vec::new();
10136                for child in non_field_children {
10137                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
10138                        <TypeAssertionChildren as ::treesitter_types::FromNode>::from_node(
10139                            child, src,
10140                        )
10141                    })?);
10142                }
10143                items
10144            },
10145        })
10146    }
10147}
10148impl ::treesitter_types::Spanned for TypeAssertion<'_> {
10149    fn span(&self) -> ::treesitter_types::Span {
10150        self.span
10151    }
10152}
10153#[derive(Debug, Clone, PartialEq, Eq)]
10154pub struct TypeParameter<'tree> {
10155    pub span: ::treesitter_types::Span,
10156    pub constraint: ::core::option::Option<Constraint<'tree>>,
10157    pub name: TypeIdentifier<'tree>,
10158    pub value: ::core::option::Option<DefaultType<'tree>>,
10159}
10160impl<'tree> ::treesitter_types::FromNode<'tree> for TypeParameter<'tree> {
10161    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
10162    fn from_node(
10163        node: ::treesitter_types::tree_sitter::Node<'tree>,
10164        src: &'tree [u8],
10165    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
10166        debug_assert_eq!(node.kind(), "type_parameter");
10167        Ok(Self {
10168            span: ::treesitter_types::Span::from(node),
10169            constraint: match node.child_by_field_name("constraint") {
10170                Some(child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
10171                    <Constraint as ::treesitter_types::FromNode>::from_node(child, src)
10172                })?),
10173                None => None,
10174            },
10175            name: {
10176                let child = node
10177                    .child_by_field_name("name")
10178                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("name", node))?;
10179                ::treesitter_types::runtime::maybe_grow_stack(|| {
10180                    <TypeIdentifier as ::treesitter_types::FromNode>::from_node(child, src)
10181                })?
10182            },
10183            value: match node.child_by_field_name("value") {
10184                Some(child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
10185                    <DefaultType as ::treesitter_types::FromNode>::from_node(child, src)
10186                })?),
10187                None => None,
10188            },
10189        })
10190    }
10191}
10192impl ::treesitter_types::Spanned for TypeParameter<'_> {
10193    fn span(&self) -> ::treesitter_types::Span {
10194        self.span
10195    }
10196}
10197#[derive(Debug, Clone, PartialEq, Eq)]
10198pub struct TypeParameters<'tree> {
10199    pub span: ::treesitter_types::Span,
10200    pub children: ::std::vec::Vec<TypeParameter<'tree>>,
10201}
10202impl<'tree> ::treesitter_types::FromNode<'tree> for TypeParameters<'tree> {
10203    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
10204    fn from_node(
10205        node: ::treesitter_types::tree_sitter::Node<'tree>,
10206        src: &'tree [u8],
10207    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
10208        debug_assert_eq!(node.kind(), "type_parameters");
10209        Ok(Self {
10210            span: ::treesitter_types::Span::from(node),
10211            children: {
10212                #[allow(clippy::suspicious_else_formatting)]
10213                let non_field_children = {
10214                    let mut cursor = node.walk();
10215                    let mut result = ::std::vec::Vec::new();
10216                    if cursor.goto_first_child() {
10217                        loop {
10218                            if cursor.field_name().is_none()
10219                                && cursor.node().is_named()
10220                                && !cursor.node().is_extra()
10221                            {
10222                                result.push(cursor.node());
10223                            }
10224                            if !cursor.goto_next_sibling() {
10225                                break;
10226                            }
10227                        }
10228                    }
10229                    result
10230                };
10231                let mut items = ::std::vec::Vec::new();
10232                for child in non_field_children {
10233                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
10234                        <TypeParameter as ::treesitter_types::FromNode>::from_node(child, src)
10235                    })?);
10236                }
10237                items
10238            },
10239        })
10240    }
10241}
10242impl ::treesitter_types::Spanned for TypeParameters<'_> {
10243    fn span(&self) -> ::treesitter_types::Span {
10244        self.span
10245    }
10246}
10247#[derive(Debug, Clone, PartialEq, Eq)]
10248pub struct TypePredicate<'tree> {
10249    pub span: ::treesitter_types::Span,
10250    pub name: TypePredicateName<'tree>,
10251    pub r#type: Type<'tree>,
10252}
10253impl<'tree> ::treesitter_types::FromNode<'tree> for TypePredicate<'tree> {
10254    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
10255    fn from_node(
10256        node: ::treesitter_types::tree_sitter::Node<'tree>,
10257        src: &'tree [u8],
10258    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
10259        debug_assert_eq!(node.kind(), "type_predicate");
10260        Ok(Self {
10261            span: ::treesitter_types::Span::from(node),
10262            name: {
10263                let child = node
10264                    .child_by_field_name("name")
10265                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("name", node))?;
10266                ::treesitter_types::runtime::maybe_grow_stack(|| {
10267                    <TypePredicateName as ::treesitter_types::FromNode>::from_node(child, src)
10268                })?
10269            },
10270            r#type: {
10271                let child = node
10272                    .child_by_field_name("type")
10273                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("type", node))?;
10274                ::treesitter_types::runtime::maybe_grow_stack(|| {
10275                    <Type as ::treesitter_types::FromNode>::from_node(child, src)
10276                })?
10277            },
10278        })
10279    }
10280}
10281impl ::treesitter_types::Spanned for TypePredicate<'_> {
10282    fn span(&self) -> ::treesitter_types::Span {
10283        self.span
10284    }
10285}
10286#[derive(Debug, Clone, PartialEq, Eq)]
10287pub struct TypePredicateAnnotation<'tree> {
10288    pub span: ::treesitter_types::Span,
10289    pub children: TypePredicate<'tree>,
10290}
10291impl<'tree> ::treesitter_types::FromNode<'tree> for TypePredicateAnnotation<'tree> {
10292    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
10293    fn from_node(
10294        node: ::treesitter_types::tree_sitter::Node<'tree>,
10295        src: &'tree [u8],
10296    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
10297        debug_assert_eq!(node.kind(), "type_predicate_annotation");
10298        Ok(Self {
10299            span: ::treesitter_types::Span::from(node),
10300            children: {
10301                #[allow(clippy::suspicious_else_formatting)]
10302                let non_field_children = {
10303                    let mut cursor = node.walk();
10304                    let mut result = ::std::vec::Vec::new();
10305                    if cursor.goto_first_child() {
10306                        loop {
10307                            if cursor.field_name().is_none()
10308                                && cursor.node().is_named()
10309                                && !cursor.node().is_extra()
10310                            {
10311                                result.push(cursor.node());
10312                            }
10313                            if !cursor.goto_next_sibling() {
10314                                break;
10315                            }
10316                        }
10317                    }
10318                    result
10319                };
10320                let child = if let Some(&c) = non_field_children.first() {
10321                    c
10322                } else {
10323                    let mut fallback_cursor = node.walk();
10324                    let mut fallback_child = None;
10325                    if fallback_cursor.goto_first_child() {
10326                        loop {
10327                            if fallback_cursor.field_name().is_none()
10328                                && !fallback_cursor.node().is_extra()
10329                            {
10330                                let candidate = fallback_cursor.node();
10331                                #[allow(clippy::needless_question_mark)]
10332                                if (|| -> ::core::result::Result<
10333                                    _,
10334                                    ::treesitter_types::ParseError,
10335                                > {
10336                                    let child = candidate;
10337                                    Ok(
10338                                        ::treesitter_types::runtime::maybe_grow_stack(|| <TypePredicate as ::treesitter_types::FromNode>::from_node(
10339                                            child,
10340                                            src,
10341                                        ))?,
10342                                    )
10343                                })()
10344                                    .is_ok()
10345                                {
10346                                    fallback_child = Some(candidate);
10347                                    break;
10348                                }
10349                            }
10350                            if !fallback_cursor.goto_next_sibling() {
10351                                break;
10352                            }
10353                        }
10354                    }
10355                    if fallback_child.is_none() {
10356                        let mut cursor2 = node.walk();
10357                        if cursor2.goto_first_child() {
10358                            loop {
10359                                if cursor2.node().is_named() && !cursor2.node().is_extra() {
10360                                    let candidate = cursor2.node();
10361                                    #[allow(clippy::needless_question_mark)]
10362                                    if (|| -> ::core::result::Result<
10363                                        _,
10364                                        ::treesitter_types::ParseError,
10365                                    > {
10366                                        let child = candidate;
10367                                        Ok(
10368                                            ::treesitter_types::runtime::maybe_grow_stack(|| <TypePredicate as ::treesitter_types::FromNode>::from_node(
10369                                                child,
10370                                                src,
10371                                            ))?,
10372                                        )
10373                                    })()
10374                                        .is_ok()
10375                                    {
10376                                        fallback_child = Some(candidate);
10377                                        break;
10378                                    }
10379                                }
10380                                if !cursor2.goto_next_sibling() {
10381                                    break;
10382                                }
10383                            }
10384                        }
10385                    }
10386                    fallback_child.ok_or_else(|| {
10387                        ::treesitter_types::ParseError::missing_field("children", node)
10388                    })?
10389                };
10390                ::treesitter_types::runtime::maybe_grow_stack(|| {
10391                    <TypePredicate as ::treesitter_types::FromNode>::from_node(child, src)
10392                })?
10393            },
10394        })
10395    }
10396}
10397impl ::treesitter_types::Spanned for TypePredicateAnnotation<'_> {
10398    fn span(&self) -> ::treesitter_types::Span {
10399        self.span
10400    }
10401}
10402#[derive(Debug, Clone, PartialEq, Eq)]
10403pub struct TypeQuery<'tree> {
10404    pub span: ::treesitter_types::Span,
10405    pub children: TypeQueryChildren<'tree>,
10406}
10407impl<'tree> ::treesitter_types::FromNode<'tree> for TypeQuery<'tree> {
10408    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
10409    fn from_node(
10410        node: ::treesitter_types::tree_sitter::Node<'tree>,
10411        src: &'tree [u8],
10412    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
10413        debug_assert_eq!(node.kind(), "type_query");
10414        Ok(Self {
10415            span: ::treesitter_types::Span::from(node),
10416            children: {
10417                #[allow(clippy::suspicious_else_formatting)]
10418                let non_field_children = {
10419                    let mut cursor = node.walk();
10420                    let mut result = ::std::vec::Vec::new();
10421                    if cursor.goto_first_child() {
10422                        loop {
10423                            if cursor.field_name().is_none()
10424                                && cursor.node().is_named()
10425                                && !cursor.node().is_extra()
10426                            {
10427                                result.push(cursor.node());
10428                            }
10429                            if !cursor.goto_next_sibling() {
10430                                break;
10431                            }
10432                        }
10433                    }
10434                    result
10435                };
10436                let child = if let Some(&c) = non_field_children.first() {
10437                    c
10438                } else {
10439                    let mut fallback_cursor = node.walk();
10440                    let mut fallback_child = None;
10441                    if fallback_cursor.goto_first_child() {
10442                        loop {
10443                            if fallback_cursor.field_name().is_none()
10444                                && !fallback_cursor.node().is_extra()
10445                            {
10446                                let candidate = fallback_cursor.node();
10447                                #[allow(clippy::needless_question_mark)]
10448                                if (|| -> ::core::result::Result<
10449                                    _,
10450                                    ::treesitter_types::ParseError,
10451                                > {
10452                                    let child = candidate;
10453                                    Ok(
10454                                        ::treesitter_types::runtime::maybe_grow_stack(|| <TypeQueryChildren as ::treesitter_types::FromNode>::from_node(
10455                                            child,
10456                                            src,
10457                                        ))?,
10458                                    )
10459                                })()
10460                                    .is_ok()
10461                                {
10462                                    fallback_child = Some(candidate);
10463                                    break;
10464                                }
10465                            }
10466                            if !fallback_cursor.goto_next_sibling() {
10467                                break;
10468                            }
10469                        }
10470                    }
10471                    if fallback_child.is_none() {
10472                        let mut cursor2 = node.walk();
10473                        if cursor2.goto_first_child() {
10474                            loop {
10475                                if cursor2.node().is_named() && !cursor2.node().is_extra() {
10476                                    let candidate = cursor2.node();
10477                                    #[allow(clippy::needless_question_mark)]
10478                                    if (|| -> ::core::result::Result<
10479                                        _,
10480                                        ::treesitter_types::ParseError,
10481                                    > {
10482                                        let child = candidate;
10483                                        Ok(
10484                                            ::treesitter_types::runtime::maybe_grow_stack(|| <TypeQueryChildren as ::treesitter_types::FromNode>::from_node(
10485                                                child,
10486                                                src,
10487                                            ))?,
10488                                        )
10489                                    })()
10490                                        .is_ok()
10491                                    {
10492                                        fallback_child = Some(candidate);
10493                                        break;
10494                                    }
10495                                }
10496                                if !cursor2.goto_next_sibling() {
10497                                    break;
10498                                }
10499                            }
10500                        }
10501                    }
10502                    fallback_child.ok_or_else(|| {
10503                        ::treesitter_types::ParseError::missing_field("children", node)
10504                    })?
10505                };
10506                ::treesitter_types::runtime::maybe_grow_stack(|| {
10507                    <TypeQueryChildren as ::treesitter_types::FromNode>::from_node(child, src)
10508                })?
10509            },
10510        })
10511    }
10512}
10513impl ::treesitter_types::Spanned for TypeQuery<'_> {
10514    fn span(&self) -> ::treesitter_types::Span {
10515        self.span
10516    }
10517}
10518#[derive(Debug, Clone, PartialEq, Eq)]
10519pub struct UnaryExpression<'tree> {
10520    pub span: ::treesitter_types::Span,
10521    pub argument: UnaryExpressionArgument<'tree>,
10522    pub operator: UnaryExpressionOperator,
10523}
10524impl<'tree> ::treesitter_types::FromNode<'tree> for UnaryExpression<'tree> {
10525    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
10526    fn from_node(
10527        node: ::treesitter_types::tree_sitter::Node<'tree>,
10528        src: &'tree [u8],
10529    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
10530        debug_assert_eq!(node.kind(), "unary_expression");
10531        Ok(Self {
10532            span: ::treesitter_types::Span::from(node),
10533            argument: {
10534                let child = node.child_by_field_name("argument").ok_or_else(|| {
10535                    ::treesitter_types::ParseError::missing_field("argument", node)
10536                })?;
10537                ::treesitter_types::runtime::maybe_grow_stack(|| {
10538                    <UnaryExpressionArgument as ::treesitter_types::FromNode>::from_node(child, src)
10539                })?
10540            },
10541            operator: {
10542                let child = node.child_by_field_name("operator").ok_or_else(|| {
10543                    ::treesitter_types::ParseError::missing_field("operator", node)
10544                })?;
10545                ::treesitter_types::runtime::maybe_grow_stack(|| {
10546                    <UnaryExpressionOperator as ::treesitter_types::FromNode>::from_node(child, src)
10547                })?
10548            },
10549        })
10550    }
10551}
10552impl ::treesitter_types::Spanned for UnaryExpression<'_> {
10553    fn span(&self) -> ::treesitter_types::Span {
10554        self.span
10555    }
10556}
10557#[derive(Debug, Clone, PartialEq, Eq)]
10558pub struct UnionType<'tree> {
10559    pub span: ::treesitter_types::Span,
10560    pub children: ::std::vec::Vec<Type<'tree>>,
10561}
10562impl<'tree> ::treesitter_types::FromNode<'tree> for UnionType<'tree> {
10563    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
10564    fn from_node(
10565        node: ::treesitter_types::tree_sitter::Node<'tree>,
10566        src: &'tree [u8],
10567    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
10568        debug_assert_eq!(node.kind(), "union_type");
10569        Ok(Self {
10570            span: ::treesitter_types::Span::from(node),
10571            children: {
10572                #[allow(clippy::suspicious_else_formatting)]
10573                let non_field_children = {
10574                    let mut cursor = node.walk();
10575                    let mut result = ::std::vec::Vec::new();
10576                    if cursor.goto_first_child() {
10577                        loop {
10578                            if cursor.field_name().is_none()
10579                                && cursor.node().is_named()
10580                                && !cursor.node().is_extra()
10581                            {
10582                                result.push(cursor.node());
10583                            }
10584                            if !cursor.goto_next_sibling() {
10585                                break;
10586                            }
10587                        }
10588                    }
10589                    result
10590                };
10591                let mut items = ::std::vec::Vec::new();
10592                for child in non_field_children {
10593                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
10594                        <Type as ::treesitter_types::FromNode>::from_node(child, src)
10595                    })?);
10596                }
10597                items
10598            },
10599        })
10600    }
10601}
10602impl ::treesitter_types::Spanned for UnionType<'_> {
10603    fn span(&self) -> ::treesitter_types::Span {
10604        self.span
10605    }
10606}
10607#[derive(Debug, Clone, PartialEq, Eq)]
10608pub struct UpdateExpression<'tree> {
10609    pub span: ::treesitter_types::Span,
10610    pub argument: Expression<'tree>,
10611    pub operator: UpdateExpressionOperator,
10612}
10613impl<'tree> ::treesitter_types::FromNode<'tree> for UpdateExpression<'tree> {
10614    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
10615    fn from_node(
10616        node: ::treesitter_types::tree_sitter::Node<'tree>,
10617        src: &'tree [u8],
10618    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
10619        debug_assert_eq!(node.kind(), "update_expression");
10620        Ok(Self {
10621            span: ::treesitter_types::Span::from(node),
10622            argument: {
10623                let child = node.child_by_field_name("argument").ok_or_else(|| {
10624                    ::treesitter_types::ParseError::missing_field("argument", node)
10625                })?;
10626                ::treesitter_types::runtime::maybe_grow_stack(|| {
10627                    <Expression as ::treesitter_types::FromNode>::from_node(child, src)
10628                })?
10629            },
10630            operator: {
10631                let child = node.child_by_field_name("operator").ok_or_else(|| {
10632                    ::treesitter_types::ParseError::missing_field("operator", node)
10633                })?;
10634                ::treesitter_types::runtime::maybe_grow_stack(|| {
10635                    <UpdateExpressionOperator as ::treesitter_types::FromNode>::from_node(
10636                        child, src,
10637                    )
10638                })?
10639            },
10640        })
10641    }
10642}
10643impl ::treesitter_types::Spanned for UpdateExpression<'_> {
10644    fn span(&self) -> ::treesitter_types::Span {
10645        self.span
10646    }
10647}
10648#[derive(Debug, Clone, PartialEq, Eq)]
10649pub struct VariableDeclaration<'tree> {
10650    pub span: ::treesitter_types::Span,
10651    pub children: ::std::vec::Vec<VariableDeclarator<'tree>>,
10652}
10653impl<'tree> ::treesitter_types::FromNode<'tree> for VariableDeclaration<'tree> {
10654    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
10655    fn from_node(
10656        node: ::treesitter_types::tree_sitter::Node<'tree>,
10657        src: &'tree [u8],
10658    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
10659        debug_assert_eq!(node.kind(), "variable_declaration");
10660        Ok(Self {
10661            span: ::treesitter_types::Span::from(node),
10662            children: {
10663                #[allow(clippy::suspicious_else_formatting)]
10664                let non_field_children = {
10665                    let mut cursor = node.walk();
10666                    let mut result = ::std::vec::Vec::new();
10667                    if cursor.goto_first_child() {
10668                        loop {
10669                            if cursor.field_name().is_none()
10670                                && cursor.node().is_named()
10671                                && !cursor.node().is_extra()
10672                            {
10673                                result.push(cursor.node());
10674                            }
10675                            if !cursor.goto_next_sibling() {
10676                                break;
10677                            }
10678                        }
10679                    }
10680                    result
10681                };
10682                let mut items = ::std::vec::Vec::new();
10683                for child in non_field_children {
10684                    items.push(::treesitter_types::runtime::maybe_grow_stack(|| {
10685                        <VariableDeclarator as ::treesitter_types::FromNode>::from_node(child, src)
10686                    })?);
10687                }
10688                items
10689            },
10690        })
10691    }
10692}
10693impl ::treesitter_types::Spanned for VariableDeclaration<'_> {
10694    fn span(&self) -> ::treesitter_types::Span {
10695        self.span
10696    }
10697}
10698#[derive(Debug, Clone, PartialEq, Eq)]
10699pub struct VariableDeclarator<'tree> {
10700    pub span: ::treesitter_types::Span,
10701    pub name: VariableDeclaratorName<'tree>,
10702    pub r#type: ::core::option::Option<TypeAnnotation<'tree>>,
10703    pub value: ::core::option::Option<Expression<'tree>>,
10704}
10705impl<'tree> ::treesitter_types::FromNode<'tree> for VariableDeclarator<'tree> {
10706    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
10707    fn from_node(
10708        node: ::treesitter_types::tree_sitter::Node<'tree>,
10709        src: &'tree [u8],
10710    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
10711        debug_assert_eq!(node.kind(), "variable_declarator");
10712        Ok(Self {
10713            span: ::treesitter_types::Span::from(node),
10714            name: {
10715                let child = node
10716                    .child_by_field_name("name")
10717                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("name", node))?;
10718                ::treesitter_types::runtime::maybe_grow_stack(|| {
10719                    <VariableDeclaratorName as ::treesitter_types::FromNode>::from_node(child, src)
10720                })?
10721            },
10722            r#type: match node.child_by_field_name("type") {
10723                Some(child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
10724                    <TypeAnnotation as ::treesitter_types::FromNode>::from_node(child, src)
10725                })?),
10726                None => None,
10727            },
10728            value: match node.child_by_field_name("value") {
10729                Some(child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
10730                    <Expression as ::treesitter_types::FromNode>::from_node(child, src)
10731                })?),
10732                None => None,
10733            },
10734        })
10735    }
10736}
10737impl ::treesitter_types::Spanned for VariableDeclarator<'_> {
10738    fn span(&self) -> ::treesitter_types::Span {
10739        self.span
10740    }
10741}
10742#[derive(Debug, Clone, PartialEq, Eq)]
10743pub struct WhileStatement<'tree> {
10744    pub span: ::treesitter_types::Span,
10745    pub body: Statement<'tree>,
10746    pub condition: ParenthesizedExpression<'tree>,
10747}
10748impl<'tree> ::treesitter_types::FromNode<'tree> for WhileStatement<'tree> {
10749    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
10750    fn from_node(
10751        node: ::treesitter_types::tree_sitter::Node<'tree>,
10752        src: &'tree [u8],
10753    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
10754        debug_assert_eq!(node.kind(), "while_statement");
10755        Ok(Self {
10756            span: ::treesitter_types::Span::from(node),
10757            body: {
10758                let child = node
10759                    .child_by_field_name("body")
10760                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("body", node))?;
10761                ::treesitter_types::runtime::maybe_grow_stack(|| {
10762                    <Statement as ::treesitter_types::FromNode>::from_node(child, src)
10763                })?
10764            },
10765            condition: {
10766                let child = node.child_by_field_name("condition").ok_or_else(|| {
10767                    ::treesitter_types::ParseError::missing_field("condition", node)
10768                })?;
10769                ::treesitter_types::runtime::maybe_grow_stack(|| {
10770                    <ParenthesizedExpression as ::treesitter_types::FromNode>::from_node(child, src)
10771                })?
10772            },
10773        })
10774    }
10775}
10776impl ::treesitter_types::Spanned for WhileStatement<'_> {
10777    fn span(&self) -> ::treesitter_types::Span {
10778        self.span
10779    }
10780}
10781#[derive(Debug, Clone, PartialEq, Eq)]
10782pub struct WithStatement<'tree> {
10783    pub span: ::treesitter_types::Span,
10784    pub body: Statement<'tree>,
10785    pub object: ParenthesizedExpression<'tree>,
10786}
10787impl<'tree> ::treesitter_types::FromNode<'tree> for WithStatement<'tree> {
10788    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
10789    fn from_node(
10790        node: ::treesitter_types::tree_sitter::Node<'tree>,
10791        src: &'tree [u8],
10792    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
10793        debug_assert_eq!(node.kind(), "with_statement");
10794        Ok(Self {
10795            span: ::treesitter_types::Span::from(node),
10796            body: {
10797                let child = node
10798                    .child_by_field_name("body")
10799                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("body", node))?;
10800                ::treesitter_types::runtime::maybe_grow_stack(|| {
10801                    <Statement as ::treesitter_types::FromNode>::from_node(child, src)
10802                })?
10803            },
10804            object: {
10805                let child = node
10806                    .child_by_field_name("object")
10807                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("object", node))?;
10808                ::treesitter_types::runtime::maybe_grow_stack(|| {
10809                    <ParenthesizedExpression as ::treesitter_types::FromNode>::from_node(child, src)
10810                })?
10811            },
10812        })
10813    }
10814}
10815impl ::treesitter_types::Spanned for WithStatement<'_> {
10816    fn span(&self) -> ::treesitter_types::Span {
10817        self.span
10818    }
10819}
10820#[derive(Debug, Clone, PartialEq, Eq)]
10821pub struct YieldExpression<'tree> {
10822    pub span: ::treesitter_types::Span,
10823    pub children: ::core::option::Option<Expression<'tree>>,
10824}
10825impl<'tree> ::treesitter_types::FromNode<'tree> for YieldExpression<'tree> {
10826    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
10827    fn from_node(
10828        node: ::treesitter_types::tree_sitter::Node<'tree>,
10829        src: &'tree [u8],
10830    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
10831        debug_assert_eq!(node.kind(), "yield_expression");
10832        Ok(Self {
10833            span: ::treesitter_types::Span::from(node),
10834            children: {
10835                #[allow(clippy::suspicious_else_formatting)]
10836                let non_field_children = {
10837                    let mut cursor = node.walk();
10838                    let mut result = ::std::vec::Vec::new();
10839                    if cursor.goto_first_child() {
10840                        loop {
10841                            if cursor.field_name().is_none()
10842                                && cursor.node().is_named()
10843                                && !cursor.node().is_extra()
10844                            {
10845                                result.push(cursor.node());
10846                            }
10847                            if !cursor.goto_next_sibling() {
10848                                break;
10849                            }
10850                        }
10851                    }
10852                    result
10853                };
10854                match non_field_children.first() {
10855                    Some(&child) => Some(::treesitter_types::runtime::maybe_grow_stack(|| {
10856                        <Expression as ::treesitter_types::FromNode>::from_node(child, src)
10857                    })?),
10858                    None => None,
10859                }
10860            },
10861        })
10862    }
10863}
10864impl ::treesitter_types::Spanned for YieldExpression<'_> {
10865    fn span(&self) -> ::treesitter_types::Span {
10866        self.span
10867    }
10868}
10869#[derive(Debug, Clone, PartialEq, Eq)]
10870pub struct Comment<'tree> {
10871    pub span: ::treesitter_types::Span,
10872    text: &'tree str,
10873}
10874impl<'tree> ::treesitter_types::FromNode<'tree> for Comment<'tree> {
10875    fn from_node(
10876        node: ::treesitter_types::tree_sitter::Node<'tree>,
10877        src: &'tree [u8],
10878    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
10879        debug_assert_eq!(node.kind(), "comment");
10880        Ok(Self {
10881            span: ::treesitter_types::Span::from(node),
10882            text: node.utf8_text(src)?,
10883        })
10884    }
10885}
10886impl<'tree> ::treesitter_types::LeafNode<'tree> for Comment<'tree> {
10887    fn text(&self) -> &'tree str {
10888        self.text
10889    }
10890}
10891impl ::treesitter_types::Spanned for Comment<'_> {
10892    fn span(&self) -> ::treesitter_types::Span {
10893        self.span
10894    }
10895}
10896#[derive(Debug, Clone, PartialEq, Eq)]
10897pub struct EscapeSequence<'tree> {
10898    pub span: ::treesitter_types::Span,
10899    text: &'tree str,
10900}
10901impl<'tree> ::treesitter_types::FromNode<'tree> for EscapeSequence<'tree> {
10902    fn from_node(
10903        node: ::treesitter_types::tree_sitter::Node<'tree>,
10904        src: &'tree [u8],
10905    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
10906        debug_assert_eq!(node.kind(), "escape_sequence");
10907        Ok(Self {
10908            span: ::treesitter_types::Span::from(node),
10909            text: node.utf8_text(src)?,
10910        })
10911    }
10912}
10913impl<'tree> ::treesitter_types::LeafNode<'tree> for EscapeSequence<'tree> {
10914    fn text(&self) -> &'tree str {
10915        self.text
10916    }
10917}
10918impl ::treesitter_types::Spanned for EscapeSequence<'_> {
10919    fn span(&self) -> ::treesitter_types::Span {
10920        self.span
10921    }
10922}
10923#[derive(Debug, Clone, PartialEq, Eq)]
10924pub struct False<'tree> {
10925    pub span: ::treesitter_types::Span,
10926    text: &'tree str,
10927}
10928impl<'tree> ::treesitter_types::FromNode<'tree> for False<'tree> {
10929    fn from_node(
10930        node: ::treesitter_types::tree_sitter::Node<'tree>,
10931        src: &'tree [u8],
10932    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
10933        debug_assert_eq!(node.kind(), "false");
10934        Ok(Self {
10935            span: ::treesitter_types::Span::from(node),
10936            text: node.utf8_text(src)?,
10937        })
10938    }
10939}
10940impl<'tree> ::treesitter_types::LeafNode<'tree> for False<'tree> {
10941    fn text(&self) -> &'tree str {
10942        self.text
10943    }
10944}
10945impl ::treesitter_types::Spanned for False<'_> {
10946    fn span(&self) -> ::treesitter_types::Span {
10947        self.span
10948    }
10949}
10950#[derive(Debug, Clone, PartialEq, Eq)]
10951pub struct HashBangLine<'tree> {
10952    pub span: ::treesitter_types::Span,
10953    text: &'tree str,
10954}
10955impl<'tree> ::treesitter_types::FromNode<'tree> for HashBangLine<'tree> {
10956    fn from_node(
10957        node: ::treesitter_types::tree_sitter::Node<'tree>,
10958        src: &'tree [u8],
10959    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
10960        debug_assert_eq!(node.kind(), "hash_bang_line");
10961        Ok(Self {
10962            span: ::treesitter_types::Span::from(node),
10963            text: node.utf8_text(src)?,
10964        })
10965    }
10966}
10967impl<'tree> ::treesitter_types::LeafNode<'tree> for HashBangLine<'tree> {
10968    fn text(&self) -> &'tree str {
10969        self.text
10970    }
10971}
10972impl ::treesitter_types::Spanned for HashBangLine<'_> {
10973    fn span(&self) -> ::treesitter_types::Span {
10974        self.span
10975    }
10976}
10977#[derive(Debug, Clone, PartialEq, Eq)]
10978pub struct HtmlComment<'tree> {
10979    pub span: ::treesitter_types::Span,
10980    text: &'tree str,
10981}
10982impl<'tree> ::treesitter_types::FromNode<'tree> for HtmlComment<'tree> {
10983    fn from_node(
10984        node: ::treesitter_types::tree_sitter::Node<'tree>,
10985        src: &'tree [u8],
10986    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
10987        debug_assert_eq!(node.kind(), "html_comment");
10988        Ok(Self {
10989            span: ::treesitter_types::Span::from(node),
10990            text: node.utf8_text(src)?,
10991        })
10992    }
10993}
10994impl<'tree> ::treesitter_types::LeafNode<'tree> for HtmlComment<'tree> {
10995    fn text(&self) -> &'tree str {
10996        self.text
10997    }
10998}
10999impl ::treesitter_types::Spanned for HtmlComment<'_> {
11000    fn span(&self) -> ::treesitter_types::Span {
11001        self.span
11002    }
11003}
11004#[derive(Debug, Clone, PartialEq, Eq)]
11005pub struct Null<'tree> {
11006    pub span: ::treesitter_types::Span,
11007    text: &'tree str,
11008}
11009impl<'tree> ::treesitter_types::FromNode<'tree> for Null<'tree> {
11010    fn from_node(
11011        node: ::treesitter_types::tree_sitter::Node<'tree>,
11012        src: &'tree [u8],
11013    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
11014        debug_assert_eq!(node.kind(), "null");
11015        Ok(Self {
11016            span: ::treesitter_types::Span::from(node),
11017            text: node.utf8_text(src)?,
11018        })
11019    }
11020}
11021impl<'tree> ::treesitter_types::LeafNode<'tree> for Null<'tree> {
11022    fn text(&self) -> &'tree str {
11023        self.text
11024    }
11025}
11026impl ::treesitter_types::Spanned for Null<'_> {
11027    fn span(&self) -> ::treesitter_types::Span {
11028        self.span
11029    }
11030}
11031#[derive(Debug, Clone, PartialEq, Eq)]
11032pub struct Number<'tree> {
11033    pub span: ::treesitter_types::Span,
11034    text: &'tree str,
11035}
11036impl<'tree> ::treesitter_types::FromNode<'tree> for Number<'tree> {
11037    fn from_node(
11038        node: ::treesitter_types::tree_sitter::Node<'tree>,
11039        src: &'tree [u8],
11040    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
11041        debug_assert_eq!(node.kind(), "number");
11042        Ok(Self {
11043            span: ::treesitter_types::Span::from(node),
11044            text: node.utf8_text(src)?,
11045        })
11046    }
11047}
11048impl<'tree> ::treesitter_types::LeafNode<'tree> for Number<'tree> {
11049    fn text(&self) -> &'tree str {
11050        self.text
11051    }
11052}
11053impl ::treesitter_types::Spanned for Number<'_> {
11054    fn span(&self) -> ::treesitter_types::Span {
11055        self.span
11056    }
11057}
11058#[derive(Debug, Clone, PartialEq, Eq)]
11059pub struct PrivatePropertyIdentifier<'tree> {
11060    pub span: ::treesitter_types::Span,
11061    text: &'tree str,
11062}
11063impl<'tree> ::treesitter_types::FromNode<'tree> for PrivatePropertyIdentifier<'tree> {
11064    fn from_node(
11065        node: ::treesitter_types::tree_sitter::Node<'tree>,
11066        src: &'tree [u8],
11067    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
11068        debug_assert_eq!(node.kind(), "private_property_identifier");
11069        Ok(Self {
11070            span: ::treesitter_types::Span::from(node),
11071            text: node.utf8_text(src)?,
11072        })
11073    }
11074}
11075impl<'tree> ::treesitter_types::LeafNode<'tree> for PrivatePropertyIdentifier<'tree> {
11076    fn text(&self) -> &'tree str {
11077        self.text
11078    }
11079}
11080impl ::treesitter_types::Spanned for PrivatePropertyIdentifier<'_> {
11081    fn span(&self) -> ::treesitter_types::Span {
11082        self.span
11083    }
11084}
11085#[derive(Debug, Clone, PartialEq, Eq)]
11086pub struct PropertyIdentifier<'tree> {
11087    pub span: ::treesitter_types::Span,
11088    text: &'tree str,
11089}
11090impl<'tree> ::treesitter_types::FromNode<'tree> for PropertyIdentifier<'tree> {
11091    fn from_node(
11092        node: ::treesitter_types::tree_sitter::Node<'tree>,
11093        src: &'tree [u8],
11094    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
11095        debug_assert_eq!(node.kind(), "property_identifier");
11096        Ok(Self {
11097            span: ::treesitter_types::Span::from(node),
11098            text: node.utf8_text(src)?,
11099        })
11100    }
11101}
11102impl<'tree> ::treesitter_types::LeafNode<'tree> for PropertyIdentifier<'tree> {
11103    fn text(&self) -> &'tree str {
11104        self.text
11105    }
11106}
11107impl ::treesitter_types::Spanned for PropertyIdentifier<'_> {
11108    fn span(&self) -> ::treesitter_types::Span {
11109        self.span
11110    }
11111}
11112#[derive(Debug, Clone, PartialEq, Eq)]
11113pub struct RegexFlags<'tree> {
11114    pub span: ::treesitter_types::Span,
11115    text: &'tree str,
11116}
11117impl<'tree> ::treesitter_types::FromNode<'tree> for RegexFlags<'tree> {
11118    fn from_node(
11119        node: ::treesitter_types::tree_sitter::Node<'tree>,
11120        src: &'tree [u8],
11121    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
11122        debug_assert_eq!(node.kind(), "regex_flags");
11123        Ok(Self {
11124            span: ::treesitter_types::Span::from(node),
11125            text: node.utf8_text(src)?,
11126        })
11127    }
11128}
11129impl<'tree> ::treesitter_types::LeafNode<'tree> for RegexFlags<'tree> {
11130    fn text(&self) -> &'tree str {
11131        self.text
11132    }
11133}
11134impl ::treesitter_types::Spanned for RegexFlags<'_> {
11135    fn span(&self) -> ::treesitter_types::Span {
11136        self.span
11137    }
11138}
11139#[derive(Debug, Clone, PartialEq, Eq)]
11140pub struct RegexPattern<'tree> {
11141    pub span: ::treesitter_types::Span,
11142    text: &'tree str,
11143}
11144impl<'tree> ::treesitter_types::FromNode<'tree> for RegexPattern<'tree> {
11145    fn from_node(
11146        node: ::treesitter_types::tree_sitter::Node<'tree>,
11147        src: &'tree [u8],
11148    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
11149        debug_assert_eq!(node.kind(), "regex_pattern");
11150        Ok(Self {
11151            span: ::treesitter_types::Span::from(node),
11152            text: node.utf8_text(src)?,
11153        })
11154    }
11155}
11156impl<'tree> ::treesitter_types::LeafNode<'tree> for RegexPattern<'tree> {
11157    fn text(&self) -> &'tree str {
11158        self.text
11159    }
11160}
11161impl ::treesitter_types::Spanned for RegexPattern<'_> {
11162    fn span(&self) -> ::treesitter_types::Span {
11163        self.span
11164    }
11165}
11166#[derive(Debug, Clone, PartialEq, Eq)]
11167pub struct ShorthandPropertyIdentifier<'tree> {
11168    pub span: ::treesitter_types::Span,
11169    text: &'tree str,
11170}
11171impl<'tree> ::treesitter_types::FromNode<'tree> for ShorthandPropertyIdentifier<'tree> {
11172    fn from_node(
11173        node: ::treesitter_types::tree_sitter::Node<'tree>,
11174        src: &'tree [u8],
11175    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
11176        debug_assert_eq!(node.kind(), "shorthand_property_identifier");
11177        Ok(Self {
11178            span: ::treesitter_types::Span::from(node),
11179            text: node.utf8_text(src)?,
11180        })
11181    }
11182}
11183impl<'tree> ::treesitter_types::LeafNode<'tree> for ShorthandPropertyIdentifier<'tree> {
11184    fn text(&self) -> &'tree str {
11185        self.text
11186    }
11187}
11188impl ::treesitter_types::Spanned for ShorthandPropertyIdentifier<'_> {
11189    fn span(&self) -> ::treesitter_types::Span {
11190        self.span
11191    }
11192}
11193#[derive(Debug, Clone, PartialEq, Eq)]
11194pub struct ShorthandPropertyIdentifierPattern<'tree> {
11195    pub span: ::treesitter_types::Span,
11196    text: &'tree str,
11197}
11198impl<'tree> ::treesitter_types::FromNode<'tree> for ShorthandPropertyIdentifierPattern<'tree> {
11199    fn from_node(
11200        node: ::treesitter_types::tree_sitter::Node<'tree>,
11201        src: &'tree [u8],
11202    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
11203        debug_assert_eq!(node.kind(), "shorthand_property_identifier_pattern");
11204        Ok(Self {
11205            span: ::treesitter_types::Span::from(node),
11206            text: node.utf8_text(src)?,
11207        })
11208    }
11209}
11210impl<'tree> ::treesitter_types::LeafNode<'tree> for ShorthandPropertyIdentifierPattern<'tree> {
11211    fn text(&self) -> &'tree str {
11212        self.text
11213    }
11214}
11215impl ::treesitter_types::Spanned for ShorthandPropertyIdentifierPattern<'_> {
11216    fn span(&self) -> ::treesitter_types::Span {
11217        self.span
11218    }
11219}
11220#[derive(Debug, Clone, PartialEq, Eq)]
11221pub struct StatementIdentifier<'tree> {
11222    pub span: ::treesitter_types::Span,
11223    text: &'tree str,
11224}
11225impl<'tree> ::treesitter_types::FromNode<'tree> for StatementIdentifier<'tree> {
11226    fn from_node(
11227        node: ::treesitter_types::tree_sitter::Node<'tree>,
11228        src: &'tree [u8],
11229    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
11230        debug_assert_eq!(node.kind(), "statement_identifier");
11231        Ok(Self {
11232            span: ::treesitter_types::Span::from(node),
11233            text: node.utf8_text(src)?,
11234        })
11235    }
11236}
11237impl<'tree> ::treesitter_types::LeafNode<'tree> for StatementIdentifier<'tree> {
11238    fn text(&self) -> &'tree str {
11239        self.text
11240    }
11241}
11242impl ::treesitter_types::Spanned for StatementIdentifier<'_> {
11243    fn span(&self) -> ::treesitter_types::Span {
11244        self.span
11245    }
11246}
11247#[derive(Debug, Clone, PartialEq, Eq)]
11248pub struct StringFragment<'tree> {
11249    pub span: ::treesitter_types::Span,
11250    text: &'tree str,
11251}
11252impl<'tree> ::treesitter_types::FromNode<'tree> for StringFragment<'tree> {
11253    fn from_node(
11254        node: ::treesitter_types::tree_sitter::Node<'tree>,
11255        src: &'tree [u8],
11256    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
11257        debug_assert_eq!(node.kind(), "string_fragment");
11258        Ok(Self {
11259            span: ::treesitter_types::Span::from(node),
11260            text: node.utf8_text(src)?,
11261        })
11262    }
11263}
11264impl<'tree> ::treesitter_types::LeafNode<'tree> for StringFragment<'tree> {
11265    fn text(&self) -> &'tree str {
11266        self.text
11267    }
11268}
11269impl ::treesitter_types::Spanned for StringFragment<'_> {
11270    fn span(&self) -> ::treesitter_types::Span {
11271        self.span
11272    }
11273}
11274#[derive(Debug, Clone, PartialEq, Eq)]
11275pub struct Super<'tree> {
11276    pub span: ::treesitter_types::Span,
11277    text: &'tree str,
11278}
11279impl<'tree> ::treesitter_types::FromNode<'tree> for Super<'tree> {
11280    fn from_node(
11281        node: ::treesitter_types::tree_sitter::Node<'tree>,
11282        src: &'tree [u8],
11283    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
11284        debug_assert_eq!(node.kind(), "super");
11285        Ok(Self {
11286            span: ::treesitter_types::Span::from(node),
11287            text: node.utf8_text(src)?,
11288        })
11289    }
11290}
11291impl<'tree> ::treesitter_types::LeafNode<'tree> for Super<'tree> {
11292    fn text(&self) -> &'tree str {
11293        self.text
11294    }
11295}
11296impl ::treesitter_types::Spanned for Super<'_> {
11297    fn span(&self) -> ::treesitter_types::Span {
11298        self.span
11299    }
11300}
11301#[derive(Debug, Clone, PartialEq, Eq)]
11302pub struct This<'tree> {
11303    pub span: ::treesitter_types::Span,
11304    text: &'tree str,
11305}
11306impl<'tree> ::treesitter_types::FromNode<'tree> for This<'tree> {
11307    fn from_node(
11308        node: ::treesitter_types::tree_sitter::Node<'tree>,
11309        src: &'tree [u8],
11310    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
11311        debug_assert_eq!(node.kind(), "this");
11312        Ok(Self {
11313            span: ::treesitter_types::Span::from(node),
11314            text: node.utf8_text(src)?,
11315        })
11316    }
11317}
11318impl<'tree> ::treesitter_types::LeafNode<'tree> for This<'tree> {
11319    fn text(&self) -> &'tree str {
11320        self.text
11321    }
11322}
11323impl ::treesitter_types::Spanned for This<'_> {
11324    fn span(&self) -> ::treesitter_types::Span {
11325        self.span
11326    }
11327}
11328#[derive(Debug, Clone, PartialEq, Eq)]
11329pub struct ThisType<'tree> {
11330    pub span: ::treesitter_types::Span,
11331    text: &'tree str,
11332}
11333impl<'tree> ::treesitter_types::FromNode<'tree> for ThisType<'tree> {
11334    fn from_node(
11335        node: ::treesitter_types::tree_sitter::Node<'tree>,
11336        src: &'tree [u8],
11337    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
11338        debug_assert_eq!(node.kind(), "this_type");
11339        Ok(Self {
11340            span: ::treesitter_types::Span::from(node),
11341            text: node.utf8_text(src)?,
11342        })
11343    }
11344}
11345impl<'tree> ::treesitter_types::LeafNode<'tree> for ThisType<'tree> {
11346    fn text(&self) -> &'tree str {
11347        self.text
11348    }
11349}
11350impl ::treesitter_types::Spanned for ThisType<'_> {
11351    fn span(&self) -> ::treesitter_types::Span {
11352        self.span
11353    }
11354}
11355#[derive(Debug, Clone, PartialEq, Eq)]
11356pub struct True<'tree> {
11357    pub span: ::treesitter_types::Span,
11358    text: &'tree str,
11359}
11360impl<'tree> ::treesitter_types::FromNode<'tree> for True<'tree> {
11361    fn from_node(
11362        node: ::treesitter_types::tree_sitter::Node<'tree>,
11363        src: &'tree [u8],
11364    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
11365        debug_assert_eq!(node.kind(), "true");
11366        Ok(Self {
11367            span: ::treesitter_types::Span::from(node),
11368            text: node.utf8_text(src)?,
11369        })
11370    }
11371}
11372impl<'tree> ::treesitter_types::LeafNode<'tree> for True<'tree> {
11373    fn text(&self) -> &'tree str {
11374        self.text
11375    }
11376}
11377impl ::treesitter_types::Spanned for True<'_> {
11378    fn span(&self) -> ::treesitter_types::Span {
11379        self.span
11380    }
11381}
11382#[derive(Debug, Clone, PartialEq, Eq)]
11383pub struct TypeIdentifier<'tree> {
11384    pub span: ::treesitter_types::Span,
11385    text: &'tree str,
11386}
11387impl<'tree> ::treesitter_types::FromNode<'tree> for TypeIdentifier<'tree> {
11388    fn from_node(
11389        node: ::treesitter_types::tree_sitter::Node<'tree>,
11390        src: &'tree [u8],
11391    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
11392        debug_assert_eq!(node.kind(), "type_identifier");
11393        Ok(Self {
11394            span: ::treesitter_types::Span::from(node),
11395            text: node.utf8_text(src)?,
11396        })
11397    }
11398}
11399impl<'tree> ::treesitter_types::LeafNode<'tree> for TypeIdentifier<'tree> {
11400    fn text(&self) -> &'tree str {
11401        self.text
11402    }
11403}
11404impl ::treesitter_types::Spanned for TypeIdentifier<'_> {
11405    fn span(&self) -> ::treesitter_types::Span {
11406        self.span
11407    }
11408}
11409#[derive(Debug, Clone, PartialEq, Eq)]
11410pub struct Undefined<'tree> {
11411    pub span: ::treesitter_types::Span,
11412    text: &'tree str,
11413}
11414impl<'tree> ::treesitter_types::FromNode<'tree> for Undefined<'tree> {
11415    fn from_node(
11416        node: ::treesitter_types::tree_sitter::Node<'tree>,
11417        src: &'tree [u8],
11418    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
11419        debug_assert_eq!(node.kind(), "undefined");
11420        Ok(Self {
11421            span: ::treesitter_types::Span::from(node),
11422            text: node.utf8_text(src)?,
11423        })
11424    }
11425}
11426impl<'tree> ::treesitter_types::LeafNode<'tree> for Undefined<'tree> {
11427    fn text(&self) -> &'tree str {
11428        self.text
11429    }
11430}
11431impl ::treesitter_types::Spanned for Undefined<'_> {
11432    fn span(&self) -> ::treesitter_types::Span {
11433        self.span
11434    }
11435}
11436#[derive(Debug, Clone, PartialEq, Eq)]
11437pub enum AbstractMethodSignatureName<'tree> {
11438    ComputedPropertyName(::std::boxed::Box<ComputedPropertyName<'tree>>),
11439    Number(::std::boxed::Box<Number<'tree>>),
11440    PrivatePropertyIdentifier(::std::boxed::Box<PrivatePropertyIdentifier<'tree>>),
11441    PropertyIdentifier(::std::boxed::Box<PropertyIdentifier<'tree>>),
11442    String(::std::boxed::Box<String<'tree>>),
11443}
11444impl<'tree> ::treesitter_types::FromNode<'tree> for AbstractMethodSignatureName<'tree> {
11445    #[allow(clippy::collapsible_else_if)]
11446    fn from_node(
11447        node: ::treesitter_types::tree_sitter::Node<'tree>,
11448        src: &'tree [u8],
11449    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
11450        match node.kind() {
11451            "computed_property_name" => Ok(Self::ComputedPropertyName(::std::boxed::Box::new(
11452                ::treesitter_types::runtime::maybe_grow_stack(|| {
11453                    <ComputedPropertyName as ::treesitter_types::FromNode>::from_node(node, src)
11454                })?,
11455            ))),
11456            "number" => Ok(Self::Number(::std::boxed::Box::new(
11457                ::treesitter_types::runtime::maybe_grow_stack(|| {
11458                    <Number as ::treesitter_types::FromNode>::from_node(node, src)
11459                })?,
11460            ))),
11461            "private_property_identifier" => Ok(Self::PrivatePropertyIdentifier(
11462                ::std::boxed::Box::new(::treesitter_types::runtime::maybe_grow_stack(|| {
11463                    <PrivatePropertyIdentifier as ::treesitter_types::FromNode>::from_node(
11464                        node, src,
11465                    )
11466                })?),
11467            )),
11468            "property_identifier" => Ok(Self::PropertyIdentifier(::std::boxed::Box::new(
11469                ::treesitter_types::runtime::maybe_grow_stack(|| {
11470                    <PropertyIdentifier as ::treesitter_types::FromNode>::from_node(node, src)
11471                })?,
11472            ))),
11473            "string" => Ok(Self::String(::std::boxed::Box::new(
11474                ::treesitter_types::runtime::maybe_grow_stack(|| {
11475                    <String as ::treesitter_types::FromNode>::from_node(node, src)
11476                })?,
11477            ))),
11478            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
11479        }
11480    }
11481}
11482impl ::treesitter_types::Spanned for AbstractMethodSignatureName<'_> {
11483    fn span(&self) -> ::treesitter_types::Span {
11484        match self {
11485            Self::ComputedPropertyName(inner) => inner.span(),
11486            Self::Number(inner) => inner.span(),
11487            Self::PrivatePropertyIdentifier(inner) => inner.span(),
11488            Self::PropertyIdentifier(inner) => inner.span(),
11489            Self::String(inner) => inner.span(),
11490        }
11491    }
11492}
11493#[derive(Debug, Clone, PartialEq, Eq)]
11494pub enum AbstractMethodSignatureReturnType<'tree> {
11495    AssertsAnnotation(::std::boxed::Box<AssertsAnnotation<'tree>>),
11496    TypeAnnotation(::std::boxed::Box<TypeAnnotation<'tree>>),
11497    TypePredicateAnnotation(::std::boxed::Box<TypePredicateAnnotation<'tree>>),
11498}
11499impl<'tree> ::treesitter_types::FromNode<'tree> for AbstractMethodSignatureReturnType<'tree> {
11500    #[allow(clippy::collapsible_else_if)]
11501    fn from_node(
11502        node: ::treesitter_types::tree_sitter::Node<'tree>,
11503        src: &'tree [u8],
11504    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
11505        match node.kind() {
11506            "asserts_annotation" => Ok(Self::AssertsAnnotation(::std::boxed::Box::new(
11507                ::treesitter_types::runtime::maybe_grow_stack(|| {
11508                    <AssertsAnnotation as ::treesitter_types::FromNode>::from_node(node, src)
11509                })?,
11510            ))),
11511            "type_annotation" => Ok(Self::TypeAnnotation(::std::boxed::Box::new(
11512                ::treesitter_types::runtime::maybe_grow_stack(|| {
11513                    <TypeAnnotation as ::treesitter_types::FromNode>::from_node(node, src)
11514                })?,
11515            ))),
11516            "type_predicate_annotation" => Ok(Self::TypePredicateAnnotation(
11517                ::std::boxed::Box::new(::treesitter_types::runtime::maybe_grow_stack(|| {
11518                    <TypePredicateAnnotation as ::treesitter_types::FromNode>::from_node(node, src)
11519                })?),
11520            )),
11521            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
11522        }
11523    }
11524}
11525impl ::treesitter_types::Spanned for AbstractMethodSignatureReturnType<'_> {
11526    fn span(&self) -> ::treesitter_types::Span {
11527        match self {
11528            Self::AssertsAnnotation(inner) => inner.span(),
11529            Self::TypeAnnotation(inner) => inner.span(),
11530            Self::TypePredicateAnnotation(inner) => inner.span(),
11531        }
11532    }
11533}
11534#[derive(Debug, Clone, PartialEq, Eq)]
11535pub enum AbstractMethodSignatureChildren<'tree> {
11536    AccessibilityModifier(::std::boxed::Box<AccessibilityModifier<'tree>>),
11537    OverrideModifier(::std::boxed::Box<OverrideModifier<'tree>>),
11538}
11539impl<'tree> ::treesitter_types::FromNode<'tree> for AbstractMethodSignatureChildren<'tree> {
11540    #[allow(clippy::collapsible_else_if)]
11541    fn from_node(
11542        node: ::treesitter_types::tree_sitter::Node<'tree>,
11543        src: &'tree [u8],
11544    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
11545        match node.kind() {
11546            "accessibility_modifier" => Ok(Self::AccessibilityModifier(::std::boxed::Box::new(
11547                ::treesitter_types::runtime::maybe_grow_stack(|| {
11548                    <AccessibilityModifier as ::treesitter_types::FromNode>::from_node(node, src)
11549                })?,
11550            ))),
11551            "override_modifier" => Ok(Self::OverrideModifier(::std::boxed::Box::new(
11552                ::treesitter_types::runtime::maybe_grow_stack(|| {
11553                    <OverrideModifier as ::treesitter_types::FromNode>::from_node(node, src)
11554                })?,
11555            ))),
11556            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
11557        }
11558    }
11559}
11560impl ::treesitter_types::Spanned for AbstractMethodSignatureChildren<'_> {
11561    fn span(&self) -> ::treesitter_types::Span {
11562        match self {
11563            Self::AccessibilityModifier(inner) => inner.span(),
11564            Self::OverrideModifier(inner) => inner.span(),
11565        }
11566    }
11567}
11568#[derive(Debug, Clone, PartialEq, Eq)]
11569pub enum AmbientDeclarationChildren<'tree> {
11570    Declaration(::std::boxed::Box<Declaration<'tree>>),
11571    PropertyIdentifier(::std::boxed::Box<PropertyIdentifier<'tree>>),
11572    StatementBlock(::std::boxed::Box<StatementBlock<'tree>>),
11573    Type(::std::boxed::Box<Type<'tree>>),
11574}
11575impl<'tree> ::treesitter_types::FromNode<'tree> for AmbientDeclarationChildren<'tree> {
11576    #[allow(clippy::collapsible_else_if)]
11577    fn from_node(
11578        node: ::treesitter_types::tree_sitter::Node<'tree>,
11579        src: &'tree [u8],
11580    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
11581        match node.kind() {
11582            "property_identifier" => Ok(Self::PropertyIdentifier(::std::boxed::Box::new(
11583                ::treesitter_types::runtime::maybe_grow_stack(|| {
11584                    <PropertyIdentifier as ::treesitter_types::FromNode>::from_node(node, src)
11585                })?,
11586            ))),
11587            "statement_block" => Ok(Self::StatementBlock(::std::boxed::Box::new(
11588                ::treesitter_types::runtime::maybe_grow_stack(|| {
11589                    <StatementBlock as ::treesitter_types::FromNode>::from_node(node, src)
11590                })?,
11591            ))),
11592            _other => {
11593                if let Ok(v) = ::treesitter_types::runtime::maybe_grow_stack(|| {
11594                    <Declaration as ::treesitter_types::FromNode>::from_node(node, src)
11595                }) {
11596                    Ok(Self::Declaration(::std::boxed::Box::new(v)))
11597                } else {
11598                    if let Ok(v) = ::treesitter_types::runtime::maybe_grow_stack(|| {
11599                        <Type as ::treesitter_types::FromNode>::from_node(node, src)
11600                    }) {
11601                        Ok(Self::Type(::std::boxed::Box::new(v)))
11602                    } else {
11603                        Err(::treesitter_types::ParseError::unexpected_kind(
11604                            _other, node,
11605                        ))
11606                    }
11607                }
11608            }
11609        }
11610    }
11611}
11612impl ::treesitter_types::Spanned for AmbientDeclarationChildren<'_> {
11613    fn span(&self) -> ::treesitter_types::Span {
11614        match self {
11615            Self::Declaration(inner) => inner.span(),
11616            Self::PropertyIdentifier(inner) => inner.span(),
11617            Self::StatementBlock(inner) => inner.span(),
11618            Self::Type(inner) => inner.span(),
11619        }
11620    }
11621}
11622#[derive(Debug, Clone, PartialEq, Eq)]
11623pub enum ArgumentsChildren<'tree> {
11624    Expression(::std::boxed::Box<Expression<'tree>>),
11625    SpreadElement(::std::boxed::Box<SpreadElement<'tree>>),
11626}
11627impl<'tree> ::treesitter_types::FromNode<'tree> for ArgumentsChildren<'tree> {
11628    #[allow(clippy::collapsible_else_if)]
11629    fn from_node(
11630        node: ::treesitter_types::tree_sitter::Node<'tree>,
11631        src: &'tree [u8],
11632    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
11633        match node.kind() {
11634            "spread_element" => Ok(Self::SpreadElement(::std::boxed::Box::new(
11635                ::treesitter_types::runtime::maybe_grow_stack(|| {
11636                    <SpreadElement as ::treesitter_types::FromNode>::from_node(node, src)
11637                })?,
11638            ))),
11639            _other => {
11640                if let Ok(v) = ::treesitter_types::runtime::maybe_grow_stack(|| {
11641                    <Expression as ::treesitter_types::FromNode>::from_node(node, src)
11642                }) {
11643                    Ok(Self::Expression(::std::boxed::Box::new(v)))
11644                } else {
11645                    Err(::treesitter_types::ParseError::unexpected_kind(
11646                        _other, node,
11647                    ))
11648                }
11649            }
11650        }
11651    }
11652}
11653impl ::treesitter_types::Spanned for ArgumentsChildren<'_> {
11654    fn span(&self) -> ::treesitter_types::Span {
11655        match self {
11656            Self::Expression(inner) => inner.span(),
11657            Self::SpreadElement(inner) => inner.span(),
11658        }
11659    }
11660}
11661#[derive(Debug, Clone, PartialEq, Eq)]
11662pub enum ArrayChildren<'tree> {
11663    Expression(::std::boxed::Box<Expression<'tree>>),
11664    SpreadElement(::std::boxed::Box<SpreadElement<'tree>>),
11665}
11666impl<'tree> ::treesitter_types::FromNode<'tree> for ArrayChildren<'tree> {
11667    #[allow(clippy::collapsible_else_if)]
11668    fn from_node(
11669        node: ::treesitter_types::tree_sitter::Node<'tree>,
11670        src: &'tree [u8],
11671    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
11672        match node.kind() {
11673            "spread_element" => Ok(Self::SpreadElement(::std::boxed::Box::new(
11674                ::treesitter_types::runtime::maybe_grow_stack(|| {
11675                    <SpreadElement as ::treesitter_types::FromNode>::from_node(node, src)
11676                })?,
11677            ))),
11678            _other => {
11679                if let Ok(v) = ::treesitter_types::runtime::maybe_grow_stack(|| {
11680                    <Expression as ::treesitter_types::FromNode>::from_node(node, src)
11681                }) {
11682                    Ok(Self::Expression(::std::boxed::Box::new(v)))
11683                } else {
11684                    Err(::treesitter_types::ParseError::unexpected_kind(
11685                        _other, node,
11686                    ))
11687                }
11688            }
11689        }
11690    }
11691}
11692impl ::treesitter_types::Spanned for ArrayChildren<'_> {
11693    fn span(&self) -> ::treesitter_types::Span {
11694        match self {
11695            Self::Expression(inner) => inner.span(),
11696            Self::SpreadElement(inner) => inner.span(),
11697        }
11698    }
11699}
11700#[derive(Debug, Clone, PartialEq, Eq)]
11701pub enum ArrayPatternChildren<'tree> {
11702    AssignmentPattern(::std::boxed::Box<AssignmentPattern<'tree>>),
11703    Pattern(::std::boxed::Box<Pattern<'tree>>),
11704}
11705impl<'tree> ::treesitter_types::FromNode<'tree> for ArrayPatternChildren<'tree> {
11706    #[allow(clippy::collapsible_else_if)]
11707    fn from_node(
11708        node: ::treesitter_types::tree_sitter::Node<'tree>,
11709        src: &'tree [u8],
11710    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
11711        match node.kind() {
11712            "assignment_pattern" => Ok(Self::AssignmentPattern(::std::boxed::Box::new(
11713                ::treesitter_types::runtime::maybe_grow_stack(|| {
11714                    <AssignmentPattern as ::treesitter_types::FromNode>::from_node(node, src)
11715                })?,
11716            ))),
11717            _other => {
11718                if let Ok(v) = ::treesitter_types::runtime::maybe_grow_stack(|| {
11719                    <Pattern as ::treesitter_types::FromNode>::from_node(node, src)
11720                }) {
11721                    Ok(Self::Pattern(::std::boxed::Box::new(v)))
11722                } else {
11723                    Err(::treesitter_types::ParseError::unexpected_kind(
11724                        _other, node,
11725                    ))
11726                }
11727            }
11728        }
11729    }
11730}
11731impl ::treesitter_types::Spanned for ArrayPatternChildren<'_> {
11732    fn span(&self) -> ::treesitter_types::Span {
11733        match self {
11734            Self::AssignmentPattern(inner) => inner.span(),
11735            Self::Pattern(inner) => inner.span(),
11736        }
11737    }
11738}
11739#[derive(Debug, Clone, PartialEq, Eq)]
11740pub enum ArrowFunctionBody<'tree> {
11741    Expression(::std::boxed::Box<Expression<'tree>>),
11742    StatementBlock(::std::boxed::Box<StatementBlock<'tree>>),
11743}
11744impl<'tree> ::treesitter_types::FromNode<'tree> for ArrowFunctionBody<'tree> {
11745    #[allow(clippy::collapsible_else_if)]
11746    fn from_node(
11747        node: ::treesitter_types::tree_sitter::Node<'tree>,
11748        src: &'tree [u8],
11749    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
11750        match node.kind() {
11751            "statement_block" => Ok(Self::StatementBlock(::std::boxed::Box::new(
11752                ::treesitter_types::runtime::maybe_grow_stack(|| {
11753                    <StatementBlock as ::treesitter_types::FromNode>::from_node(node, src)
11754                })?,
11755            ))),
11756            _other => {
11757                if let Ok(v) = ::treesitter_types::runtime::maybe_grow_stack(|| {
11758                    <Expression as ::treesitter_types::FromNode>::from_node(node, src)
11759                }) {
11760                    Ok(Self::Expression(::std::boxed::Box::new(v)))
11761                } else {
11762                    Err(::treesitter_types::ParseError::unexpected_kind(
11763                        _other, node,
11764                    ))
11765                }
11766            }
11767        }
11768    }
11769}
11770impl ::treesitter_types::Spanned for ArrowFunctionBody<'_> {
11771    fn span(&self) -> ::treesitter_types::Span {
11772        match self {
11773            Self::Expression(inner) => inner.span(),
11774            Self::StatementBlock(inner) => inner.span(),
11775        }
11776    }
11777}
11778#[derive(Debug, Clone, PartialEq, Eq)]
11779pub enum ArrowFunctionReturnType<'tree> {
11780    AssertsAnnotation(::std::boxed::Box<AssertsAnnotation<'tree>>),
11781    TypeAnnotation(::std::boxed::Box<TypeAnnotation<'tree>>),
11782    TypePredicateAnnotation(::std::boxed::Box<TypePredicateAnnotation<'tree>>),
11783}
11784impl<'tree> ::treesitter_types::FromNode<'tree> for ArrowFunctionReturnType<'tree> {
11785    #[allow(clippy::collapsible_else_if)]
11786    fn from_node(
11787        node: ::treesitter_types::tree_sitter::Node<'tree>,
11788        src: &'tree [u8],
11789    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
11790        match node.kind() {
11791            "asserts_annotation" => Ok(Self::AssertsAnnotation(::std::boxed::Box::new(
11792                ::treesitter_types::runtime::maybe_grow_stack(|| {
11793                    <AssertsAnnotation as ::treesitter_types::FromNode>::from_node(node, src)
11794                })?,
11795            ))),
11796            "type_annotation" => Ok(Self::TypeAnnotation(::std::boxed::Box::new(
11797                ::treesitter_types::runtime::maybe_grow_stack(|| {
11798                    <TypeAnnotation as ::treesitter_types::FromNode>::from_node(node, src)
11799                })?,
11800            ))),
11801            "type_predicate_annotation" => Ok(Self::TypePredicateAnnotation(
11802                ::std::boxed::Box::new(::treesitter_types::runtime::maybe_grow_stack(|| {
11803                    <TypePredicateAnnotation as ::treesitter_types::FromNode>::from_node(node, src)
11804                })?),
11805            )),
11806            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
11807        }
11808    }
11809}
11810impl ::treesitter_types::Spanned for ArrowFunctionReturnType<'_> {
11811    fn span(&self) -> ::treesitter_types::Span {
11812        match self {
11813            Self::AssertsAnnotation(inner) => inner.span(),
11814            Self::TypeAnnotation(inner) => inner.span(),
11815            Self::TypePredicateAnnotation(inner) => inner.span(),
11816        }
11817    }
11818}
11819#[derive(Debug, Clone, PartialEq, Eq)]
11820pub enum AsExpressionChildren<'tree> {
11821    Expression(::std::boxed::Box<Expression<'tree>>),
11822    Type(::std::boxed::Box<Type<'tree>>),
11823}
11824impl<'tree> ::treesitter_types::FromNode<'tree> for AsExpressionChildren<'tree> {
11825    #[allow(clippy::collapsible_else_if)]
11826    fn from_node(
11827        node: ::treesitter_types::tree_sitter::Node<'tree>,
11828        src: &'tree [u8],
11829    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
11830        if let Ok(v) = ::treesitter_types::runtime::maybe_grow_stack(|| {
11831            <Expression as ::treesitter_types::FromNode>::from_node(node, src)
11832        }) {
11833            Ok(Self::Expression(::std::boxed::Box::new(v)))
11834        } else {
11835            if let Ok(v) = ::treesitter_types::runtime::maybe_grow_stack(|| {
11836                <Type as ::treesitter_types::FromNode>::from_node(node, src)
11837            }) {
11838                Ok(Self::Type(::std::boxed::Box::new(v)))
11839            } else {
11840                Err(::treesitter_types::ParseError::unexpected_kind(
11841                    node.kind(),
11842                    node,
11843                ))
11844            }
11845        }
11846    }
11847}
11848impl ::treesitter_types::Spanned for AsExpressionChildren<'_> {
11849    fn span(&self) -> ::treesitter_types::Span {
11850        match self {
11851            Self::Expression(inner) => inner.span(),
11852            Self::Type(inner) => inner.span(),
11853        }
11854    }
11855}
11856#[derive(Debug, Clone, PartialEq, Eq)]
11857pub enum AssertsChildren<'tree> {
11858    Identifier(::std::boxed::Box<Identifier<'tree>>),
11859    This(::std::boxed::Box<This<'tree>>),
11860    TypePredicate(::std::boxed::Box<TypePredicate<'tree>>),
11861}
11862impl<'tree> ::treesitter_types::FromNode<'tree> for AssertsChildren<'tree> {
11863    #[allow(clippy::collapsible_else_if)]
11864    fn from_node(
11865        node: ::treesitter_types::tree_sitter::Node<'tree>,
11866        src: &'tree [u8],
11867    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
11868        match node.kind() {
11869            "identifier" => Ok(Self::Identifier(::std::boxed::Box::new(
11870                ::treesitter_types::runtime::maybe_grow_stack(|| {
11871                    <Identifier as ::treesitter_types::FromNode>::from_node(node, src)
11872                })?,
11873            ))),
11874            "this" => Ok(Self::This(::std::boxed::Box::new(
11875                ::treesitter_types::runtime::maybe_grow_stack(|| {
11876                    <This as ::treesitter_types::FromNode>::from_node(node, src)
11877                })?,
11878            ))),
11879            "type_predicate" => Ok(Self::TypePredicate(::std::boxed::Box::new(
11880                ::treesitter_types::runtime::maybe_grow_stack(|| {
11881                    <TypePredicate as ::treesitter_types::FromNode>::from_node(node, src)
11882                })?,
11883            ))),
11884            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
11885        }
11886    }
11887}
11888impl ::treesitter_types::Spanned for AssertsChildren<'_> {
11889    fn span(&self) -> ::treesitter_types::Span {
11890        match self {
11891            Self::Identifier(inner) => inner.span(),
11892            Self::This(inner) => inner.span(),
11893            Self::TypePredicate(inner) => inner.span(),
11894        }
11895    }
11896}
11897#[derive(Debug, Clone, PartialEq, Eq)]
11898pub enum AssignmentExpressionLeft<'tree> {
11899    ArrayPattern(::std::boxed::Box<ArrayPattern<'tree>>),
11900    Identifier(::std::boxed::Box<Identifier<'tree>>),
11901    MemberExpression(::std::boxed::Box<MemberExpression<'tree>>),
11902    NonNullExpression(::std::boxed::Box<NonNullExpression<'tree>>),
11903    ObjectPattern(::std::boxed::Box<ObjectPattern<'tree>>),
11904    ParenthesizedExpression(::std::boxed::Box<ParenthesizedExpression<'tree>>),
11905    SubscriptExpression(::std::boxed::Box<SubscriptExpression<'tree>>),
11906    Undefined(::std::boxed::Box<Undefined<'tree>>),
11907}
11908impl<'tree> ::treesitter_types::FromNode<'tree> for AssignmentExpressionLeft<'tree> {
11909    #[allow(clippy::collapsible_else_if)]
11910    fn from_node(
11911        node: ::treesitter_types::tree_sitter::Node<'tree>,
11912        src: &'tree [u8],
11913    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
11914        match node.kind() {
11915            "array_pattern" => Ok(Self::ArrayPattern(::std::boxed::Box::new(
11916                ::treesitter_types::runtime::maybe_grow_stack(|| {
11917                    <ArrayPattern as ::treesitter_types::FromNode>::from_node(node, src)
11918                })?,
11919            ))),
11920            "identifier" => Ok(Self::Identifier(::std::boxed::Box::new(
11921                ::treesitter_types::runtime::maybe_grow_stack(|| {
11922                    <Identifier as ::treesitter_types::FromNode>::from_node(node, src)
11923                })?,
11924            ))),
11925            "member_expression" => Ok(Self::MemberExpression(::std::boxed::Box::new(
11926                ::treesitter_types::runtime::maybe_grow_stack(|| {
11927                    <MemberExpression as ::treesitter_types::FromNode>::from_node(node, src)
11928                })?,
11929            ))),
11930            "non_null_expression" => Ok(Self::NonNullExpression(::std::boxed::Box::new(
11931                ::treesitter_types::runtime::maybe_grow_stack(|| {
11932                    <NonNullExpression as ::treesitter_types::FromNode>::from_node(node, src)
11933                })?,
11934            ))),
11935            "object_pattern" => Ok(Self::ObjectPattern(::std::boxed::Box::new(
11936                ::treesitter_types::runtime::maybe_grow_stack(|| {
11937                    <ObjectPattern as ::treesitter_types::FromNode>::from_node(node, src)
11938                })?,
11939            ))),
11940            "parenthesized_expression" => Ok(Self::ParenthesizedExpression(
11941                ::std::boxed::Box::new(::treesitter_types::runtime::maybe_grow_stack(|| {
11942                    <ParenthesizedExpression as ::treesitter_types::FromNode>::from_node(node, src)
11943                })?),
11944            )),
11945            "subscript_expression" => Ok(Self::SubscriptExpression(::std::boxed::Box::new(
11946                ::treesitter_types::runtime::maybe_grow_stack(|| {
11947                    <SubscriptExpression as ::treesitter_types::FromNode>::from_node(node, src)
11948                })?,
11949            ))),
11950            "undefined" => Ok(Self::Undefined(::std::boxed::Box::new(
11951                ::treesitter_types::runtime::maybe_grow_stack(|| {
11952                    <Undefined as ::treesitter_types::FromNode>::from_node(node, src)
11953                })?,
11954            ))),
11955            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
11956        }
11957    }
11958}
11959impl ::treesitter_types::Spanned for AssignmentExpressionLeft<'_> {
11960    fn span(&self) -> ::treesitter_types::Span {
11961        match self {
11962            Self::ArrayPattern(inner) => inner.span(),
11963            Self::Identifier(inner) => inner.span(),
11964            Self::MemberExpression(inner) => inner.span(),
11965            Self::NonNullExpression(inner) => inner.span(),
11966            Self::ObjectPattern(inner) => inner.span(),
11967            Self::ParenthesizedExpression(inner) => inner.span(),
11968            Self::SubscriptExpression(inner) => inner.span(),
11969            Self::Undefined(inner) => inner.span(),
11970        }
11971    }
11972}
11973#[derive(Debug, Clone, PartialEq, Eq)]
11974pub enum AugmentedAssignmentExpressionLeft<'tree> {
11975    Identifier(::std::boxed::Box<Identifier<'tree>>),
11976    MemberExpression(::std::boxed::Box<MemberExpression<'tree>>),
11977    NonNullExpression(::std::boxed::Box<NonNullExpression<'tree>>),
11978    ParenthesizedExpression(::std::boxed::Box<ParenthesizedExpression<'tree>>),
11979    SubscriptExpression(::std::boxed::Box<SubscriptExpression<'tree>>),
11980}
11981impl<'tree> ::treesitter_types::FromNode<'tree> for AugmentedAssignmentExpressionLeft<'tree> {
11982    #[allow(clippy::collapsible_else_if)]
11983    fn from_node(
11984        node: ::treesitter_types::tree_sitter::Node<'tree>,
11985        src: &'tree [u8],
11986    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
11987        match node.kind() {
11988            "identifier" => Ok(Self::Identifier(::std::boxed::Box::new(
11989                ::treesitter_types::runtime::maybe_grow_stack(|| {
11990                    <Identifier as ::treesitter_types::FromNode>::from_node(node, src)
11991                })?,
11992            ))),
11993            "member_expression" => Ok(Self::MemberExpression(::std::boxed::Box::new(
11994                ::treesitter_types::runtime::maybe_grow_stack(|| {
11995                    <MemberExpression as ::treesitter_types::FromNode>::from_node(node, src)
11996                })?,
11997            ))),
11998            "non_null_expression" => Ok(Self::NonNullExpression(::std::boxed::Box::new(
11999                ::treesitter_types::runtime::maybe_grow_stack(|| {
12000                    <NonNullExpression as ::treesitter_types::FromNode>::from_node(node, src)
12001                })?,
12002            ))),
12003            "parenthesized_expression" => Ok(Self::ParenthesizedExpression(
12004                ::std::boxed::Box::new(::treesitter_types::runtime::maybe_grow_stack(|| {
12005                    <ParenthesizedExpression as ::treesitter_types::FromNode>::from_node(node, src)
12006                })?),
12007            )),
12008            "subscript_expression" => Ok(Self::SubscriptExpression(::std::boxed::Box::new(
12009                ::treesitter_types::runtime::maybe_grow_stack(|| {
12010                    <SubscriptExpression as ::treesitter_types::FromNode>::from_node(node, src)
12011                })?,
12012            ))),
12013            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
12014        }
12015    }
12016}
12017impl ::treesitter_types::Spanned for AugmentedAssignmentExpressionLeft<'_> {
12018    fn span(&self) -> ::treesitter_types::Span {
12019        match self {
12020            Self::Identifier(inner) => inner.span(),
12021            Self::MemberExpression(inner) => inner.span(),
12022            Self::NonNullExpression(inner) => inner.span(),
12023            Self::ParenthesizedExpression(inner) => inner.span(),
12024            Self::SubscriptExpression(inner) => inner.span(),
12025        }
12026    }
12027}
12028#[derive(Debug, Clone, PartialEq, Eq)]
12029pub enum AugmentedAssignmentExpressionOperator {
12030    PercentEq(::treesitter_types::Span),
12031    AmpAmpEq(::treesitter_types::Span),
12032    AmpEq(::treesitter_types::Span),
12033    StarStarEq(::treesitter_types::Span),
12034    StarEq(::treesitter_types::Span),
12035    PlusEq(::treesitter_types::Span),
12036    MinusEq(::treesitter_types::Span),
12037    SlashEq(::treesitter_types::Span),
12038    ShlEq(::treesitter_types::Span),
12039    ShrEq(::treesitter_types::Span),
12040    GtGtGtEq(::treesitter_types::Span),
12041    QuestionQuestionEq(::treesitter_types::Span),
12042    CaretEq(::treesitter_types::Span),
12043    PipeEq(::treesitter_types::Span),
12044    PipePipeEq(::treesitter_types::Span),
12045}
12046impl<'tree> ::treesitter_types::FromNode<'tree> for AugmentedAssignmentExpressionOperator {
12047    #[allow(clippy::collapsible_else_if)]
12048    fn from_node(
12049        node: ::treesitter_types::tree_sitter::Node<'tree>,
12050        _src: &'tree [u8],
12051    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
12052        match node.kind() {
12053            "%=" => Ok(Self::PercentEq(::treesitter_types::Span::from(node))),
12054            "&&=" => Ok(Self::AmpAmpEq(::treesitter_types::Span::from(node))),
12055            "&=" => Ok(Self::AmpEq(::treesitter_types::Span::from(node))),
12056            "**=" => Ok(Self::StarStarEq(::treesitter_types::Span::from(node))),
12057            "*=" => Ok(Self::StarEq(::treesitter_types::Span::from(node))),
12058            "+=" => Ok(Self::PlusEq(::treesitter_types::Span::from(node))),
12059            "-=" => Ok(Self::MinusEq(::treesitter_types::Span::from(node))),
12060            "/=" => Ok(Self::SlashEq(::treesitter_types::Span::from(node))),
12061            "<<=" => Ok(Self::ShlEq(::treesitter_types::Span::from(node))),
12062            ">>=" => Ok(Self::ShrEq(::treesitter_types::Span::from(node))),
12063            ">>>=" => Ok(Self::GtGtGtEq(::treesitter_types::Span::from(node))),
12064            "??=" => Ok(Self::QuestionQuestionEq(::treesitter_types::Span::from(
12065                node,
12066            ))),
12067            "^=" => Ok(Self::CaretEq(::treesitter_types::Span::from(node))),
12068            "|=" => Ok(Self::PipeEq(::treesitter_types::Span::from(node))),
12069            "||=" => Ok(Self::PipePipeEq(::treesitter_types::Span::from(node))),
12070            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
12071        }
12072    }
12073}
12074impl ::treesitter_types::Spanned for AugmentedAssignmentExpressionOperator {
12075    fn span(&self) -> ::treesitter_types::Span {
12076        match self {
12077            Self::PercentEq(span) => *span,
12078            Self::AmpAmpEq(span) => *span,
12079            Self::AmpEq(span) => *span,
12080            Self::StarStarEq(span) => *span,
12081            Self::StarEq(span) => *span,
12082            Self::PlusEq(span) => *span,
12083            Self::MinusEq(span) => *span,
12084            Self::SlashEq(span) => *span,
12085            Self::ShlEq(span) => *span,
12086            Self::ShrEq(span) => *span,
12087            Self::GtGtGtEq(span) => *span,
12088            Self::QuestionQuestionEq(span) => *span,
12089            Self::CaretEq(span) => *span,
12090            Self::PipeEq(span) => *span,
12091            Self::PipePipeEq(span) => *span,
12092        }
12093    }
12094}
12095#[derive(Debug, Clone, PartialEq, Eq)]
12096pub enum BinaryExpressionLeft<'tree> {
12097    Expression(::std::boxed::Box<Expression<'tree>>),
12098    PrivatePropertyIdentifier(::std::boxed::Box<PrivatePropertyIdentifier<'tree>>),
12099}
12100impl<'tree> ::treesitter_types::FromNode<'tree> for BinaryExpressionLeft<'tree> {
12101    #[allow(clippy::collapsible_else_if)]
12102    fn from_node(
12103        node: ::treesitter_types::tree_sitter::Node<'tree>,
12104        src: &'tree [u8],
12105    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
12106        match node.kind() {
12107            "private_property_identifier" => Ok(Self::PrivatePropertyIdentifier(
12108                ::std::boxed::Box::new(::treesitter_types::runtime::maybe_grow_stack(|| {
12109                    <PrivatePropertyIdentifier as ::treesitter_types::FromNode>::from_node(
12110                        node, src,
12111                    )
12112                })?),
12113            )),
12114            _other => {
12115                if let Ok(v) = ::treesitter_types::runtime::maybe_grow_stack(|| {
12116                    <Expression as ::treesitter_types::FromNode>::from_node(node, src)
12117                }) {
12118                    Ok(Self::Expression(::std::boxed::Box::new(v)))
12119                } else {
12120                    Err(::treesitter_types::ParseError::unexpected_kind(
12121                        _other, node,
12122                    ))
12123                }
12124            }
12125        }
12126    }
12127}
12128impl ::treesitter_types::Spanned for BinaryExpressionLeft<'_> {
12129    fn span(&self) -> ::treesitter_types::Span {
12130        match self {
12131            Self::Expression(inner) => inner.span(),
12132            Self::PrivatePropertyIdentifier(inner) => inner.span(),
12133        }
12134    }
12135}
12136#[derive(Debug, Clone, PartialEq, Eq)]
12137pub enum BinaryExpressionOperator {
12138    NotEq(::treesitter_types::Span),
12139    BangEqEq(::treesitter_types::Span),
12140    Percent(::treesitter_types::Span),
12141    Amp(::treesitter_types::Span),
12142    AmpAmp(::treesitter_types::Span),
12143    Star(::treesitter_types::Span),
12144    StarStar(::treesitter_types::Span),
12145    Plus(::treesitter_types::Span),
12146    Minus(::treesitter_types::Span),
12147    Slash(::treesitter_types::Span),
12148    Lt(::treesitter_types::Span),
12149    Shl(::treesitter_types::Span),
12150    LtEq(::treesitter_types::Span),
12151    EqEq(::treesitter_types::Span),
12152    EqEqEq(::treesitter_types::Span),
12153    Gt(::treesitter_types::Span),
12154    GtEq(::treesitter_types::Span),
12155    Shr(::treesitter_types::Span),
12156    GtGtGt(::treesitter_types::Span),
12157    QuestionQuestion(::treesitter_types::Span),
12158    Caret(::treesitter_types::Span),
12159    In(::treesitter_types::Span),
12160    Instanceof(::treesitter_types::Span),
12161    Pipe(::treesitter_types::Span),
12162    PipePipe(::treesitter_types::Span),
12163}
12164impl<'tree> ::treesitter_types::FromNode<'tree> for BinaryExpressionOperator {
12165    #[allow(clippy::collapsible_else_if)]
12166    fn from_node(
12167        node: ::treesitter_types::tree_sitter::Node<'tree>,
12168        _src: &'tree [u8],
12169    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
12170        match node.kind() {
12171            "!=" => Ok(Self::NotEq(::treesitter_types::Span::from(node))),
12172            "!==" => Ok(Self::BangEqEq(::treesitter_types::Span::from(node))),
12173            "%" => Ok(Self::Percent(::treesitter_types::Span::from(node))),
12174            "&" => Ok(Self::Amp(::treesitter_types::Span::from(node))),
12175            "&&" => Ok(Self::AmpAmp(::treesitter_types::Span::from(node))),
12176            "*" => Ok(Self::Star(::treesitter_types::Span::from(node))),
12177            "**" => Ok(Self::StarStar(::treesitter_types::Span::from(node))),
12178            "+" => Ok(Self::Plus(::treesitter_types::Span::from(node))),
12179            "-" => Ok(Self::Minus(::treesitter_types::Span::from(node))),
12180            "/" => Ok(Self::Slash(::treesitter_types::Span::from(node))),
12181            "<" => Ok(Self::Lt(::treesitter_types::Span::from(node))),
12182            "<<" => Ok(Self::Shl(::treesitter_types::Span::from(node))),
12183            "<=" => Ok(Self::LtEq(::treesitter_types::Span::from(node))),
12184            "==" => Ok(Self::EqEq(::treesitter_types::Span::from(node))),
12185            "===" => Ok(Self::EqEqEq(::treesitter_types::Span::from(node))),
12186            ">" => Ok(Self::Gt(::treesitter_types::Span::from(node))),
12187            ">=" => Ok(Self::GtEq(::treesitter_types::Span::from(node))),
12188            ">>" => Ok(Self::Shr(::treesitter_types::Span::from(node))),
12189            ">>>" => Ok(Self::GtGtGt(::treesitter_types::Span::from(node))),
12190            "??" => Ok(Self::QuestionQuestion(::treesitter_types::Span::from(node))),
12191            "^" => Ok(Self::Caret(::treesitter_types::Span::from(node))),
12192            "in" => Ok(Self::In(::treesitter_types::Span::from(node))),
12193            "instanceof" => Ok(Self::Instanceof(::treesitter_types::Span::from(node))),
12194            "|" => Ok(Self::Pipe(::treesitter_types::Span::from(node))),
12195            "||" => Ok(Self::PipePipe(::treesitter_types::Span::from(node))),
12196            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
12197        }
12198    }
12199}
12200impl ::treesitter_types::Spanned for BinaryExpressionOperator {
12201    fn span(&self) -> ::treesitter_types::Span {
12202        match self {
12203            Self::NotEq(span) => *span,
12204            Self::BangEqEq(span) => *span,
12205            Self::Percent(span) => *span,
12206            Self::Amp(span) => *span,
12207            Self::AmpAmp(span) => *span,
12208            Self::Star(span) => *span,
12209            Self::StarStar(span) => *span,
12210            Self::Plus(span) => *span,
12211            Self::Minus(span) => *span,
12212            Self::Slash(span) => *span,
12213            Self::Lt(span) => *span,
12214            Self::Shl(span) => *span,
12215            Self::LtEq(span) => *span,
12216            Self::EqEq(span) => *span,
12217            Self::EqEqEq(span) => *span,
12218            Self::Gt(span) => *span,
12219            Self::GtEq(span) => *span,
12220            Self::Shr(span) => *span,
12221            Self::GtGtGt(span) => *span,
12222            Self::QuestionQuestion(span) => *span,
12223            Self::Caret(span) => *span,
12224            Self::In(span) => *span,
12225            Self::Instanceof(span) => *span,
12226            Self::Pipe(span) => *span,
12227            Self::PipePipe(span) => *span,
12228        }
12229    }
12230}
12231#[derive(Debug, Clone, PartialEq, Eq)]
12232pub enum CallExpressionArguments<'tree> {
12233    Arguments(::std::boxed::Box<Arguments<'tree>>),
12234    TemplateString(::std::boxed::Box<TemplateString<'tree>>),
12235}
12236impl<'tree> ::treesitter_types::FromNode<'tree> for CallExpressionArguments<'tree> {
12237    #[allow(clippy::collapsible_else_if)]
12238    fn from_node(
12239        node: ::treesitter_types::tree_sitter::Node<'tree>,
12240        src: &'tree [u8],
12241    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
12242        match node.kind() {
12243            "arguments" => Ok(Self::Arguments(::std::boxed::Box::new(
12244                ::treesitter_types::runtime::maybe_grow_stack(|| {
12245                    <Arguments as ::treesitter_types::FromNode>::from_node(node, src)
12246                })?,
12247            ))),
12248            "template_string" => Ok(Self::TemplateString(::std::boxed::Box::new(
12249                ::treesitter_types::runtime::maybe_grow_stack(|| {
12250                    <TemplateString as ::treesitter_types::FromNode>::from_node(node, src)
12251                })?,
12252            ))),
12253            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
12254        }
12255    }
12256}
12257impl ::treesitter_types::Spanned for CallExpressionArguments<'_> {
12258    fn span(&self) -> ::treesitter_types::Span {
12259        match self {
12260            Self::Arguments(inner) => inner.span(),
12261            Self::TemplateString(inner) => inner.span(),
12262        }
12263    }
12264}
12265#[derive(Debug, Clone, PartialEq, Eq)]
12266pub enum CallExpressionFunction<'tree> {
12267    Expression(::std::boxed::Box<Expression<'tree>>),
12268    Import(::std::boxed::Box<Import<'tree>>),
12269}
12270impl<'tree> ::treesitter_types::FromNode<'tree> for CallExpressionFunction<'tree> {
12271    #[allow(clippy::collapsible_else_if)]
12272    fn from_node(
12273        node: ::treesitter_types::tree_sitter::Node<'tree>,
12274        src: &'tree [u8],
12275    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
12276        match node.kind() {
12277            "import" => Ok(Self::Import(::std::boxed::Box::new(
12278                ::treesitter_types::runtime::maybe_grow_stack(|| {
12279                    <Import as ::treesitter_types::FromNode>::from_node(node, src)
12280                })?,
12281            ))),
12282            _other => {
12283                if let Ok(v) = ::treesitter_types::runtime::maybe_grow_stack(|| {
12284                    <Expression as ::treesitter_types::FromNode>::from_node(node, src)
12285                }) {
12286                    Ok(Self::Expression(::std::boxed::Box::new(v)))
12287                } else {
12288                    Err(::treesitter_types::ParseError::unexpected_kind(
12289                        _other, node,
12290                    ))
12291                }
12292            }
12293        }
12294    }
12295}
12296impl ::treesitter_types::Spanned for CallExpressionFunction<'_> {
12297    fn span(&self) -> ::treesitter_types::Span {
12298        match self {
12299            Self::Expression(inner) => inner.span(),
12300            Self::Import(inner) => inner.span(),
12301        }
12302    }
12303}
12304#[derive(Debug, Clone, PartialEq, Eq)]
12305pub enum CallSignatureReturnType<'tree> {
12306    AssertsAnnotation(::std::boxed::Box<AssertsAnnotation<'tree>>),
12307    TypeAnnotation(::std::boxed::Box<TypeAnnotation<'tree>>),
12308    TypePredicateAnnotation(::std::boxed::Box<TypePredicateAnnotation<'tree>>),
12309}
12310impl<'tree> ::treesitter_types::FromNode<'tree> for CallSignatureReturnType<'tree> {
12311    #[allow(clippy::collapsible_else_if)]
12312    fn from_node(
12313        node: ::treesitter_types::tree_sitter::Node<'tree>,
12314        src: &'tree [u8],
12315    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
12316        match node.kind() {
12317            "asserts_annotation" => Ok(Self::AssertsAnnotation(::std::boxed::Box::new(
12318                ::treesitter_types::runtime::maybe_grow_stack(|| {
12319                    <AssertsAnnotation as ::treesitter_types::FromNode>::from_node(node, src)
12320                })?,
12321            ))),
12322            "type_annotation" => Ok(Self::TypeAnnotation(::std::boxed::Box::new(
12323                ::treesitter_types::runtime::maybe_grow_stack(|| {
12324                    <TypeAnnotation as ::treesitter_types::FromNode>::from_node(node, src)
12325                })?,
12326            ))),
12327            "type_predicate_annotation" => Ok(Self::TypePredicateAnnotation(
12328                ::std::boxed::Box::new(::treesitter_types::runtime::maybe_grow_stack(|| {
12329                    <TypePredicateAnnotation as ::treesitter_types::FromNode>::from_node(node, src)
12330                })?),
12331            )),
12332            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
12333        }
12334    }
12335}
12336impl ::treesitter_types::Spanned for CallSignatureReturnType<'_> {
12337    fn span(&self) -> ::treesitter_types::Span {
12338        match self {
12339            Self::AssertsAnnotation(inner) => inner.span(),
12340            Self::TypeAnnotation(inner) => inner.span(),
12341            Self::TypePredicateAnnotation(inner) => inner.span(),
12342        }
12343    }
12344}
12345#[derive(Debug, Clone, PartialEq, Eq)]
12346pub enum CatchClauseParameter<'tree> {
12347    ArrayPattern(::std::boxed::Box<ArrayPattern<'tree>>),
12348    Identifier(::std::boxed::Box<Identifier<'tree>>),
12349    ObjectPattern(::std::boxed::Box<ObjectPattern<'tree>>),
12350}
12351impl<'tree> ::treesitter_types::FromNode<'tree> for CatchClauseParameter<'tree> {
12352    #[allow(clippy::collapsible_else_if)]
12353    fn from_node(
12354        node: ::treesitter_types::tree_sitter::Node<'tree>,
12355        src: &'tree [u8],
12356    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
12357        match node.kind() {
12358            "array_pattern" => Ok(Self::ArrayPattern(::std::boxed::Box::new(
12359                ::treesitter_types::runtime::maybe_grow_stack(|| {
12360                    <ArrayPattern as ::treesitter_types::FromNode>::from_node(node, src)
12361                })?,
12362            ))),
12363            "identifier" => Ok(Self::Identifier(::std::boxed::Box::new(
12364                ::treesitter_types::runtime::maybe_grow_stack(|| {
12365                    <Identifier as ::treesitter_types::FromNode>::from_node(node, src)
12366                })?,
12367            ))),
12368            "object_pattern" => Ok(Self::ObjectPattern(::std::boxed::Box::new(
12369                ::treesitter_types::runtime::maybe_grow_stack(|| {
12370                    <ObjectPattern as ::treesitter_types::FromNode>::from_node(node, src)
12371                })?,
12372            ))),
12373            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
12374        }
12375    }
12376}
12377impl ::treesitter_types::Spanned for CatchClauseParameter<'_> {
12378    fn span(&self) -> ::treesitter_types::Span {
12379        match self {
12380            Self::ArrayPattern(inner) => inner.span(),
12381            Self::Identifier(inner) => inner.span(),
12382            Self::ObjectPattern(inner) => inner.span(),
12383        }
12384    }
12385}
12386#[derive(Debug, Clone, PartialEq, Eq)]
12387pub enum ClassBodyChildren<'tree> {
12388    AbstractMethodSignature(::std::boxed::Box<AbstractMethodSignature<'tree>>),
12389    ClassStaticBlock(::std::boxed::Box<ClassStaticBlock<'tree>>),
12390    IndexSignature(::std::boxed::Box<IndexSignature<'tree>>),
12391    MethodDefinition(::std::boxed::Box<MethodDefinition<'tree>>),
12392    MethodSignature(::std::boxed::Box<MethodSignature<'tree>>),
12393    PublicFieldDefinition(::std::boxed::Box<PublicFieldDefinition<'tree>>),
12394}
12395impl<'tree> ::treesitter_types::FromNode<'tree> for ClassBodyChildren<'tree> {
12396    #[allow(clippy::collapsible_else_if)]
12397    fn from_node(
12398        node: ::treesitter_types::tree_sitter::Node<'tree>,
12399        src: &'tree [u8],
12400    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
12401        match node.kind() {
12402            "abstract_method_signature" => Ok(Self::AbstractMethodSignature(
12403                ::std::boxed::Box::new(::treesitter_types::runtime::maybe_grow_stack(|| {
12404                    <AbstractMethodSignature as ::treesitter_types::FromNode>::from_node(node, src)
12405                })?),
12406            )),
12407            "class_static_block" => Ok(Self::ClassStaticBlock(::std::boxed::Box::new(
12408                ::treesitter_types::runtime::maybe_grow_stack(|| {
12409                    <ClassStaticBlock as ::treesitter_types::FromNode>::from_node(node, src)
12410                })?,
12411            ))),
12412            "index_signature" => Ok(Self::IndexSignature(::std::boxed::Box::new(
12413                ::treesitter_types::runtime::maybe_grow_stack(|| {
12414                    <IndexSignature as ::treesitter_types::FromNode>::from_node(node, src)
12415                })?,
12416            ))),
12417            "method_definition" => Ok(Self::MethodDefinition(::std::boxed::Box::new(
12418                ::treesitter_types::runtime::maybe_grow_stack(|| {
12419                    <MethodDefinition as ::treesitter_types::FromNode>::from_node(node, src)
12420                })?,
12421            ))),
12422            "method_signature" => Ok(Self::MethodSignature(::std::boxed::Box::new(
12423                ::treesitter_types::runtime::maybe_grow_stack(|| {
12424                    <MethodSignature as ::treesitter_types::FromNode>::from_node(node, src)
12425                })?,
12426            ))),
12427            "public_field_definition" => Ok(Self::PublicFieldDefinition(::std::boxed::Box::new(
12428                ::treesitter_types::runtime::maybe_grow_stack(|| {
12429                    <PublicFieldDefinition as ::treesitter_types::FromNode>::from_node(node, src)
12430                })?,
12431            ))),
12432            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
12433        }
12434    }
12435}
12436impl ::treesitter_types::Spanned for ClassBodyChildren<'_> {
12437    fn span(&self) -> ::treesitter_types::Span {
12438        match self {
12439            Self::AbstractMethodSignature(inner) => inner.span(),
12440            Self::ClassStaticBlock(inner) => inner.span(),
12441            Self::IndexSignature(inner) => inner.span(),
12442            Self::MethodDefinition(inner) => inner.span(),
12443            Self::MethodSignature(inner) => inner.span(),
12444            Self::PublicFieldDefinition(inner) => inner.span(),
12445        }
12446    }
12447}
12448#[derive(Debug, Clone, PartialEq, Eq)]
12449pub enum ClassHeritageChildren<'tree> {
12450    ExtendsClause(::std::boxed::Box<ExtendsClause<'tree>>),
12451    ImplementsClause(::std::boxed::Box<ImplementsClause<'tree>>),
12452}
12453impl<'tree> ::treesitter_types::FromNode<'tree> for ClassHeritageChildren<'tree> {
12454    #[allow(clippy::collapsible_else_if)]
12455    fn from_node(
12456        node: ::treesitter_types::tree_sitter::Node<'tree>,
12457        src: &'tree [u8],
12458    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
12459        match node.kind() {
12460            "extends_clause" => Ok(Self::ExtendsClause(::std::boxed::Box::new(
12461                ::treesitter_types::runtime::maybe_grow_stack(|| {
12462                    <ExtendsClause as ::treesitter_types::FromNode>::from_node(node, src)
12463                })?,
12464            ))),
12465            "implements_clause" => Ok(Self::ImplementsClause(::std::boxed::Box::new(
12466                ::treesitter_types::runtime::maybe_grow_stack(|| {
12467                    <ImplementsClause as ::treesitter_types::FromNode>::from_node(node, src)
12468                })?,
12469            ))),
12470            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
12471        }
12472    }
12473}
12474impl ::treesitter_types::Spanned for ClassHeritageChildren<'_> {
12475    fn span(&self) -> ::treesitter_types::Span {
12476        match self {
12477            Self::ExtendsClause(inner) => inner.span(),
12478            Self::ImplementsClause(inner) => inner.span(),
12479        }
12480    }
12481}
12482#[derive(Debug, Clone, PartialEq, Eq)]
12483pub enum DecoratorChildren<'tree> {
12484    CallExpression(::std::boxed::Box<CallExpression<'tree>>),
12485    Identifier(::std::boxed::Box<Identifier<'tree>>),
12486    MemberExpression(::std::boxed::Box<MemberExpression<'tree>>),
12487    ParenthesizedExpression(::std::boxed::Box<ParenthesizedExpression<'tree>>),
12488}
12489impl<'tree> ::treesitter_types::FromNode<'tree> for DecoratorChildren<'tree> {
12490    #[allow(clippy::collapsible_else_if)]
12491    fn from_node(
12492        node: ::treesitter_types::tree_sitter::Node<'tree>,
12493        src: &'tree [u8],
12494    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
12495        match node.kind() {
12496            "call_expression" => Ok(Self::CallExpression(::std::boxed::Box::new(
12497                ::treesitter_types::runtime::maybe_grow_stack(|| {
12498                    <CallExpression as ::treesitter_types::FromNode>::from_node(node, src)
12499                })?,
12500            ))),
12501            "identifier" => Ok(Self::Identifier(::std::boxed::Box::new(
12502                ::treesitter_types::runtime::maybe_grow_stack(|| {
12503                    <Identifier as ::treesitter_types::FromNode>::from_node(node, src)
12504                })?,
12505            ))),
12506            "member_expression" => Ok(Self::MemberExpression(::std::boxed::Box::new(
12507                ::treesitter_types::runtime::maybe_grow_stack(|| {
12508                    <MemberExpression as ::treesitter_types::FromNode>::from_node(node, src)
12509                })?,
12510            ))),
12511            "parenthesized_expression" => Ok(Self::ParenthesizedExpression(
12512                ::std::boxed::Box::new(::treesitter_types::runtime::maybe_grow_stack(|| {
12513                    <ParenthesizedExpression as ::treesitter_types::FromNode>::from_node(node, src)
12514                })?),
12515            )),
12516            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
12517        }
12518    }
12519}
12520impl ::treesitter_types::Spanned for DecoratorChildren<'_> {
12521    fn span(&self) -> ::treesitter_types::Span {
12522        match self {
12523            Self::CallExpression(inner) => inner.span(),
12524            Self::Identifier(inner) => inner.span(),
12525            Self::MemberExpression(inner) => inner.span(),
12526            Self::ParenthesizedExpression(inner) => inner.span(),
12527        }
12528    }
12529}
12530#[derive(Debug, Clone, PartialEq, Eq)]
12531pub enum EnumAssignmentName<'tree> {
12532    ComputedPropertyName(::std::boxed::Box<ComputedPropertyName<'tree>>),
12533    Number(::std::boxed::Box<Number<'tree>>),
12534    PrivatePropertyIdentifier(::std::boxed::Box<PrivatePropertyIdentifier<'tree>>),
12535    PropertyIdentifier(::std::boxed::Box<PropertyIdentifier<'tree>>),
12536    String(::std::boxed::Box<String<'tree>>),
12537}
12538impl<'tree> ::treesitter_types::FromNode<'tree> for EnumAssignmentName<'tree> {
12539    #[allow(clippy::collapsible_else_if)]
12540    fn from_node(
12541        node: ::treesitter_types::tree_sitter::Node<'tree>,
12542        src: &'tree [u8],
12543    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
12544        match node.kind() {
12545            "computed_property_name" => Ok(Self::ComputedPropertyName(::std::boxed::Box::new(
12546                ::treesitter_types::runtime::maybe_grow_stack(|| {
12547                    <ComputedPropertyName as ::treesitter_types::FromNode>::from_node(node, src)
12548                })?,
12549            ))),
12550            "number" => Ok(Self::Number(::std::boxed::Box::new(
12551                ::treesitter_types::runtime::maybe_grow_stack(|| {
12552                    <Number as ::treesitter_types::FromNode>::from_node(node, src)
12553                })?,
12554            ))),
12555            "private_property_identifier" => Ok(Self::PrivatePropertyIdentifier(
12556                ::std::boxed::Box::new(::treesitter_types::runtime::maybe_grow_stack(|| {
12557                    <PrivatePropertyIdentifier as ::treesitter_types::FromNode>::from_node(
12558                        node, src,
12559                    )
12560                })?),
12561            )),
12562            "property_identifier" => Ok(Self::PropertyIdentifier(::std::boxed::Box::new(
12563                ::treesitter_types::runtime::maybe_grow_stack(|| {
12564                    <PropertyIdentifier as ::treesitter_types::FromNode>::from_node(node, src)
12565                })?,
12566            ))),
12567            "string" => Ok(Self::String(::std::boxed::Box::new(
12568                ::treesitter_types::runtime::maybe_grow_stack(|| {
12569                    <String as ::treesitter_types::FromNode>::from_node(node, src)
12570                })?,
12571            ))),
12572            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
12573        }
12574    }
12575}
12576impl ::treesitter_types::Spanned for EnumAssignmentName<'_> {
12577    fn span(&self) -> ::treesitter_types::Span {
12578        match self {
12579            Self::ComputedPropertyName(inner) => inner.span(),
12580            Self::Number(inner) => inner.span(),
12581            Self::PrivatePropertyIdentifier(inner) => inner.span(),
12582            Self::PropertyIdentifier(inner) => inner.span(),
12583            Self::String(inner) => inner.span(),
12584        }
12585    }
12586}
12587#[derive(Debug, Clone, PartialEq, Eq)]
12588pub enum EnumBodyName<'tree> {
12589    ComputedPropertyName(::std::boxed::Box<ComputedPropertyName<'tree>>),
12590    Number(::std::boxed::Box<Number<'tree>>),
12591    PrivatePropertyIdentifier(::std::boxed::Box<PrivatePropertyIdentifier<'tree>>),
12592    PropertyIdentifier(::std::boxed::Box<PropertyIdentifier<'tree>>),
12593    String(::std::boxed::Box<String<'tree>>),
12594}
12595impl<'tree> ::treesitter_types::FromNode<'tree> for EnumBodyName<'tree> {
12596    #[allow(clippy::collapsible_else_if)]
12597    fn from_node(
12598        node: ::treesitter_types::tree_sitter::Node<'tree>,
12599        src: &'tree [u8],
12600    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
12601        match node.kind() {
12602            "computed_property_name" => Ok(Self::ComputedPropertyName(::std::boxed::Box::new(
12603                ::treesitter_types::runtime::maybe_grow_stack(|| {
12604                    <ComputedPropertyName as ::treesitter_types::FromNode>::from_node(node, src)
12605                })?,
12606            ))),
12607            "number" => Ok(Self::Number(::std::boxed::Box::new(
12608                ::treesitter_types::runtime::maybe_grow_stack(|| {
12609                    <Number as ::treesitter_types::FromNode>::from_node(node, src)
12610                })?,
12611            ))),
12612            "private_property_identifier" => Ok(Self::PrivatePropertyIdentifier(
12613                ::std::boxed::Box::new(::treesitter_types::runtime::maybe_grow_stack(|| {
12614                    <PrivatePropertyIdentifier as ::treesitter_types::FromNode>::from_node(
12615                        node, src,
12616                    )
12617                })?),
12618            )),
12619            "property_identifier" => Ok(Self::PropertyIdentifier(::std::boxed::Box::new(
12620                ::treesitter_types::runtime::maybe_grow_stack(|| {
12621                    <PropertyIdentifier as ::treesitter_types::FromNode>::from_node(node, src)
12622                })?,
12623            ))),
12624            "string" => Ok(Self::String(::std::boxed::Box::new(
12625                ::treesitter_types::runtime::maybe_grow_stack(|| {
12626                    <String as ::treesitter_types::FromNode>::from_node(node, src)
12627                })?,
12628            ))),
12629            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
12630        }
12631    }
12632}
12633impl ::treesitter_types::Spanned for EnumBodyName<'_> {
12634    fn span(&self) -> ::treesitter_types::Span {
12635        match self {
12636            Self::ComputedPropertyName(inner) => inner.span(),
12637            Self::Number(inner) => inner.span(),
12638            Self::PrivatePropertyIdentifier(inner) => inner.span(),
12639            Self::PropertyIdentifier(inner) => inner.span(),
12640            Self::String(inner) => inner.span(),
12641        }
12642    }
12643}
12644#[derive(Debug, Clone, PartialEq, Eq)]
12645pub enum ExportSpecifierAlias<'tree> {
12646    Identifier(::std::boxed::Box<Identifier<'tree>>),
12647    String(::std::boxed::Box<String<'tree>>),
12648}
12649impl<'tree> ::treesitter_types::FromNode<'tree> for ExportSpecifierAlias<'tree> {
12650    #[allow(clippy::collapsible_else_if)]
12651    fn from_node(
12652        node: ::treesitter_types::tree_sitter::Node<'tree>,
12653        src: &'tree [u8],
12654    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
12655        match node.kind() {
12656            "identifier" => Ok(Self::Identifier(::std::boxed::Box::new(
12657                ::treesitter_types::runtime::maybe_grow_stack(|| {
12658                    <Identifier as ::treesitter_types::FromNode>::from_node(node, src)
12659                })?,
12660            ))),
12661            "string" => Ok(Self::String(::std::boxed::Box::new(
12662                ::treesitter_types::runtime::maybe_grow_stack(|| {
12663                    <String as ::treesitter_types::FromNode>::from_node(node, src)
12664                })?,
12665            ))),
12666            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
12667        }
12668    }
12669}
12670impl ::treesitter_types::Spanned for ExportSpecifierAlias<'_> {
12671    fn span(&self) -> ::treesitter_types::Span {
12672        match self {
12673            Self::Identifier(inner) => inner.span(),
12674            Self::String(inner) => inner.span(),
12675        }
12676    }
12677}
12678#[derive(Debug, Clone, PartialEq, Eq)]
12679pub enum ExportSpecifierName<'tree> {
12680    Identifier(::std::boxed::Box<Identifier<'tree>>),
12681    String(::std::boxed::Box<String<'tree>>),
12682}
12683impl<'tree> ::treesitter_types::FromNode<'tree> for ExportSpecifierName<'tree> {
12684    #[allow(clippy::collapsible_else_if)]
12685    fn from_node(
12686        node: ::treesitter_types::tree_sitter::Node<'tree>,
12687        src: &'tree [u8],
12688    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
12689        match node.kind() {
12690            "identifier" => Ok(Self::Identifier(::std::boxed::Box::new(
12691                ::treesitter_types::runtime::maybe_grow_stack(|| {
12692                    <Identifier as ::treesitter_types::FromNode>::from_node(node, src)
12693                })?,
12694            ))),
12695            "string" => Ok(Self::String(::std::boxed::Box::new(
12696                ::treesitter_types::runtime::maybe_grow_stack(|| {
12697                    <String as ::treesitter_types::FromNode>::from_node(node, src)
12698                })?,
12699            ))),
12700            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
12701        }
12702    }
12703}
12704impl ::treesitter_types::Spanned for ExportSpecifierName<'_> {
12705    fn span(&self) -> ::treesitter_types::Span {
12706        match self {
12707            Self::Identifier(inner) => inner.span(),
12708            Self::String(inner) => inner.span(),
12709        }
12710    }
12711}
12712#[derive(Debug, Clone, PartialEq, Eq)]
12713pub enum ExportStatementChildren<'tree> {
12714    ExportClause(::std::boxed::Box<ExportClause<'tree>>),
12715    Expression(::std::boxed::Box<Expression<'tree>>),
12716    Identifier(::std::boxed::Box<Identifier<'tree>>),
12717    NamespaceExport(::std::boxed::Box<NamespaceExport<'tree>>),
12718}
12719impl<'tree> ::treesitter_types::FromNode<'tree> for ExportStatementChildren<'tree> {
12720    #[allow(clippy::collapsible_else_if)]
12721    fn from_node(
12722        node: ::treesitter_types::tree_sitter::Node<'tree>,
12723        src: &'tree [u8],
12724    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
12725        match node.kind() {
12726            "export_clause" => Ok(Self::ExportClause(::std::boxed::Box::new(
12727                ::treesitter_types::runtime::maybe_grow_stack(|| {
12728                    <ExportClause as ::treesitter_types::FromNode>::from_node(node, src)
12729                })?,
12730            ))),
12731            "identifier" => Ok(Self::Identifier(::std::boxed::Box::new(
12732                ::treesitter_types::runtime::maybe_grow_stack(|| {
12733                    <Identifier as ::treesitter_types::FromNode>::from_node(node, src)
12734                })?,
12735            ))),
12736            "namespace_export" => Ok(Self::NamespaceExport(::std::boxed::Box::new(
12737                ::treesitter_types::runtime::maybe_grow_stack(|| {
12738                    <NamespaceExport as ::treesitter_types::FromNode>::from_node(node, src)
12739                })?,
12740            ))),
12741            _other => {
12742                if let Ok(v) = ::treesitter_types::runtime::maybe_grow_stack(|| {
12743                    <Expression as ::treesitter_types::FromNode>::from_node(node, src)
12744                }) {
12745                    Ok(Self::Expression(::std::boxed::Box::new(v)))
12746                } else {
12747                    Err(::treesitter_types::ParseError::unexpected_kind(
12748                        _other, node,
12749                    ))
12750                }
12751            }
12752        }
12753    }
12754}
12755impl ::treesitter_types::Spanned for ExportStatementChildren<'_> {
12756    fn span(&self) -> ::treesitter_types::Span {
12757        match self {
12758            Self::ExportClause(inner) => inner.span(),
12759            Self::Expression(inner) => inner.span(),
12760            Self::Identifier(inner) => inner.span(),
12761            Self::NamespaceExport(inner) => inner.span(),
12762        }
12763    }
12764}
12765#[derive(Debug, Clone, PartialEq, Eq)]
12766pub enum ExpressionStatementChildren<'tree> {
12767    Expression(::std::boxed::Box<Expression<'tree>>),
12768    SequenceExpression(::std::boxed::Box<SequenceExpression<'tree>>),
12769}
12770impl<'tree> ::treesitter_types::FromNode<'tree> for ExpressionStatementChildren<'tree> {
12771    #[allow(clippy::collapsible_else_if)]
12772    fn from_node(
12773        node: ::treesitter_types::tree_sitter::Node<'tree>,
12774        src: &'tree [u8],
12775    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
12776        match node.kind() {
12777            "sequence_expression" => Ok(Self::SequenceExpression(::std::boxed::Box::new(
12778                ::treesitter_types::runtime::maybe_grow_stack(|| {
12779                    <SequenceExpression as ::treesitter_types::FromNode>::from_node(node, src)
12780                })?,
12781            ))),
12782            _other => {
12783                if let Ok(v) = ::treesitter_types::runtime::maybe_grow_stack(|| {
12784                    <Expression as ::treesitter_types::FromNode>::from_node(node, src)
12785                }) {
12786                    Ok(Self::Expression(::std::boxed::Box::new(v)))
12787                } else {
12788                    Err(::treesitter_types::ParseError::unexpected_kind(
12789                        _other, node,
12790                    ))
12791                }
12792            }
12793        }
12794    }
12795}
12796impl ::treesitter_types::Spanned for ExpressionStatementChildren<'_> {
12797    fn span(&self) -> ::treesitter_types::Span {
12798        match self {
12799            Self::Expression(inner) => inner.span(),
12800            Self::SequenceExpression(inner) => inner.span(),
12801        }
12802    }
12803}
12804#[derive(Debug, Clone, PartialEq, Eq)]
12805pub enum ExtendsTypeClauseType<'tree> {
12806    GenericType(::std::boxed::Box<GenericType<'tree>>),
12807    NestedTypeIdentifier(::std::boxed::Box<NestedTypeIdentifier<'tree>>),
12808    TypeIdentifier(::std::boxed::Box<TypeIdentifier<'tree>>),
12809}
12810impl<'tree> ::treesitter_types::FromNode<'tree> for ExtendsTypeClauseType<'tree> {
12811    #[allow(clippy::collapsible_else_if)]
12812    fn from_node(
12813        node: ::treesitter_types::tree_sitter::Node<'tree>,
12814        src: &'tree [u8],
12815    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
12816        match node.kind() {
12817            "generic_type" => Ok(Self::GenericType(::std::boxed::Box::new(
12818                ::treesitter_types::runtime::maybe_grow_stack(|| {
12819                    <GenericType as ::treesitter_types::FromNode>::from_node(node, src)
12820                })?,
12821            ))),
12822            "nested_type_identifier" => Ok(Self::NestedTypeIdentifier(::std::boxed::Box::new(
12823                ::treesitter_types::runtime::maybe_grow_stack(|| {
12824                    <NestedTypeIdentifier as ::treesitter_types::FromNode>::from_node(node, src)
12825                })?,
12826            ))),
12827            "type_identifier" => Ok(Self::TypeIdentifier(::std::boxed::Box::new(
12828                ::treesitter_types::runtime::maybe_grow_stack(|| {
12829                    <TypeIdentifier as ::treesitter_types::FromNode>::from_node(node, src)
12830                })?,
12831            ))),
12832            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
12833        }
12834    }
12835}
12836impl ::treesitter_types::Spanned for ExtendsTypeClauseType<'_> {
12837    fn span(&self) -> ::treesitter_types::Span {
12838        match self {
12839            Self::GenericType(inner) => inner.span(),
12840            Self::NestedTypeIdentifier(inner) => inner.span(),
12841            Self::TypeIdentifier(inner) => inner.span(),
12842        }
12843    }
12844}
12845#[derive(Debug, Clone, PartialEq, Eq)]
12846pub enum ForInStatementKind {
12847    Const(::treesitter_types::Span),
12848    Let(::treesitter_types::Span),
12849    Var(::treesitter_types::Span),
12850}
12851impl<'tree> ::treesitter_types::FromNode<'tree> for ForInStatementKind {
12852    #[allow(clippy::collapsible_else_if)]
12853    fn from_node(
12854        node: ::treesitter_types::tree_sitter::Node<'tree>,
12855        _src: &'tree [u8],
12856    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
12857        match node.kind() {
12858            "const" => Ok(Self::Const(::treesitter_types::Span::from(node))),
12859            "let" => Ok(Self::Let(::treesitter_types::Span::from(node))),
12860            "var" => Ok(Self::Var(::treesitter_types::Span::from(node))),
12861            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
12862        }
12863    }
12864}
12865impl ::treesitter_types::Spanned for ForInStatementKind {
12866    fn span(&self) -> ::treesitter_types::Span {
12867        match self {
12868            Self::Const(span) => *span,
12869            Self::Let(span) => *span,
12870            Self::Var(span) => *span,
12871        }
12872    }
12873}
12874#[derive(Debug, Clone, PartialEq, Eq)]
12875pub enum ForInStatementLeft<'tree> {
12876    ArrayPattern(::std::boxed::Box<ArrayPattern<'tree>>),
12877    Identifier(::std::boxed::Box<Identifier<'tree>>),
12878    MemberExpression(::std::boxed::Box<MemberExpression<'tree>>),
12879    NonNullExpression(::std::boxed::Box<NonNullExpression<'tree>>),
12880    ObjectPattern(::std::boxed::Box<ObjectPattern<'tree>>),
12881    ParenthesizedExpression(::std::boxed::Box<ParenthesizedExpression<'tree>>),
12882    SubscriptExpression(::std::boxed::Box<SubscriptExpression<'tree>>),
12883    Undefined(::std::boxed::Box<Undefined<'tree>>),
12884}
12885impl<'tree> ::treesitter_types::FromNode<'tree> for ForInStatementLeft<'tree> {
12886    #[allow(clippy::collapsible_else_if)]
12887    fn from_node(
12888        node: ::treesitter_types::tree_sitter::Node<'tree>,
12889        src: &'tree [u8],
12890    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
12891        match node.kind() {
12892            "array_pattern" => Ok(Self::ArrayPattern(::std::boxed::Box::new(
12893                ::treesitter_types::runtime::maybe_grow_stack(|| {
12894                    <ArrayPattern as ::treesitter_types::FromNode>::from_node(node, src)
12895                })?,
12896            ))),
12897            "identifier" => Ok(Self::Identifier(::std::boxed::Box::new(
12898                ::treesitter_types::runtime::maybe_grow_stack(|| {
12899                    <Identifier as ::treesitter_types::FromNode>::from_node(node, src)
12900                })?,
12901            ))),
12902            "member_expression" => Ok(Self::MemberExpression(::std::boxed::Box::new(
12903                ::treesitter_types::runtime::maybe_grow_stack(|| {
12904                    <MemberExpression as ::treesitter_types::FromNode>::from_node(node, src)
12905                })?,
12906            ))),
12907            "non_null_expression" => Ok(Self::NonNullExpression(::std::boxed::Box::new(
12908                ::treesitter_types::runtime::maybe_grow_stack(|| {
12909                    <NonNullExpression as ::treesitter_types::FromNode>::from_node(node, src)
12910                })?,
12911            ))),
12912            "object_pattern" => Ok(Self::ObjectPattern(::std::boxed::Box::new(
12913                ::treesitter_types::runtime::maybe_grow_stack(|| {
12914                    <ObjectPattern as ::treesitter_types::FromNode>::from_node(node, src)
12915                })?,
12916            ))),
12917            "parenthesized_expression" => Ok(Self::ParenthesizedExpression(
12918                ::std::boxed::Box::new(::treesitter_types::runtime::maybe_grow_stack(|| {
12919                    <ParenthesizedExpression as ::treesitter_types::FromNode>::from_node(node, src)
12920                })?),
12921            )),
12922            "subscript_expression" => Ok(Self::SubscriptExpression(::std::boxed::Box::new(
12923                ::treesitter_types::runtime::maybe_grow_stack(|| {
12924                    <SubscriptExpression as ::treesitter_types::FromNode>::from_node(node, src)
12925                })?,
12926            ))),
12927            "undefined" => Ok(Self::Undefined(::std::boxed::Box::new(
12928                ::treesitter_types::runtime::maybe_grow_stack(|| {
12929                    <Undefined as ::treesitter_types::FromNode>::from_node(node, src)
12930                })?,
12931            ))),
12932            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
12933        }
12934    }
12935}
12936impl ::treesitter_types::Spanned for ForInStatementLeft<'_> {
12937    fn span(&self) -> ::treesitter_types::Span {
12938        match self {
12939            Self::ArrayPattern(inner) => inner.span(),
12940            Self::Identifier(inner) => inner.span(),
12941            Self::MemberExpression(inner) => inner.span(),
12942            Self::NonNullExpression(inner) => inner.span(),
12943            Self::ObjectPattern(inner) => inner.span(),
12944            Self::ParenthesizedExpression(inner) => inner.span(),
12945            Self::SubscriptExpression(inner) => inner.span(),
12946            Self::Undefined(inner) => inner.span(),
12947        }
12948    }
12949}
12950#[derive(Debug, Clone, PartialEq, Eq)]
12951pub enum ForInStatementOperator {
12952    In(::treesitter_types::Span),
12953    Of(::treesitter_types::Span),
12954}
12955impl<'tree> ::treesitter_types::FromNode<'tree> for ForInStatementOperator {
12956    #[allow(clippy::collapsible_else_if)]
12957    fn from_node(
12958        node: ::treesitter_types::tree_sitter::Node<'tree>,
12959        _src: &'tree [u8],
12960    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
12961        match node.kind() {
12962            "in" => Ok(Self::In(::treesitter_types::Span::from(node))),
12963            "of" => Ok(Self::Of(::treesitter_types::Span::from(node))),
12964            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
12965        }
12966    }
12967}
12968impl ::treesitter_types::Spanned for ForInStatementOperator {
12969    fn span(&self) -> ::treesitter_types::Span {
12970        match self {
12971            Self::In(span) => *span,
12972            Self::Of(span) => *span,
12973        }
12974    }
12975}
12976#[derive(Debug, Clone, PartialEq, Eq)]
12977pub enum ForInStatementRight<'tree> {
12978    Expression(::std::boxed::Box<Expression<'tree>>),
12979    SequenceExpression(::std::boxed::Box<SequenceExpression<'tree>>),
12980}
12981impl<'tree> ::treesitter_types::FromNode<'tree> for ForInStatementRight<'tree> {
12982    #[allow(clippy::collapsible_else_if)]
12983    fn from_node(
12984        node: ::treesitter_types::tree_sitter::Node<'tree>,
12985        src: &'tree [u8],
12986    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
12987        match node.kind() {
12988            "sequence_expression" => Ok(Self::SequenceExpression(::std::boxed::Box::new(
12989                ::treesitter_types::runtime::maybe_grow_stack(|| {
12990                    <SequenceExpression as ::treesitter_types::FromNode>::from_node(node, src)
12991                })?,
12992            ))),
12993            _other => {
12994                if let Ok(v) = ::treesitter_types::runtime::maybe_grow_stack(|| {
12995                    <Expression as ::treesitter_types::FromNode>::from_node(node, src)
12996                }) {
12997                    Ok(Self::Expression(::std::boxed::Box::new(v)))
12998                } else {
12999                    Err(::treesitter_types::ParseError::unexpected_kind(
13000                        _other, node,
13001                    ))
13002                }
13003            }
13004        }
13005    }
13006}
13007impl ::treesitter_types::Spanned for ForInStatementRight<'_> {
13008    fn span(&self) -> ::treesitter_types::Span {
13009        match self {
13010            Self::Expression(inner) => inner.span(),
13011            Self::SequenceExpression(inner) => inner.span(),
13012        }
13013    }
13014}
13015#[derive(Debug, Clone, PartialEq, Eq)]
13016pub enum ForStatementCondition<'tree> {
13017    Semicolon(::treesitter_types::Span),
13018    EmptyStatement(::std::boxed::Box<EmptyStatement<'tree>>),
13019    Expression(::std::boxed::Box<Expression<'tree>>),
13020    SequenceExpression(::std::boxed::Box<SequenceExpression<'tree>>),
13021}
13022impl<'tree> ::treesitter_types::FromNode<'tree> for ForStatementCondition<'tree> {
13023    #[allow(clippy::collapsible_else_if)]
13024    fn from_node(
13025        node: ::treesitter_types::tree_sitter::Node<'tree>,
13026        src: &'tree [u8],
13027    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
13028        match node.kind() {
13029            ";" => Ok(Self::Semicolon(::treesitter_types::Span::from(node))),
13030            "empty_statement" => Ok(Self::EmptyStatement(::std::boxed::Box::new(
13031                ::treesitter_types::runtime::maybe_grow_stack(|| {
13032                    <EmptyStatement as ::treesitter_types::FromNode>::from_node(node, src)
13033                })?,
13034            ))),
13035            "sequence_expression" => Ok(Self::SequenceExpression(::std::boxed::Box::new(
13036                ::treesitter_types::runtime::maybe_grow_stack(|| {
13037                    <SequenceExpression as ::treesitter_types::FromNode>::from_node(node, src)
13038                })?,
13039            ))),
13040            _other => {
13041                if let Ok(v) = ::treesitter_types::runtime::maybe_grow_stack(|| {
13042                    <Expression as ::treesitter_types::FromNode>::from_node(node, src)
13043                }) {
13044                    Ok(Self::Expression(::std::boxed::Box::new(v)))
13045                } else {
13046                    Err(::treesitter_types::ParseError::unexpected_kind(
13047                        _other, node,
13048                    ))
13049                }
13050            }
13051        }
13052    }
13053}
13054impl ::treesitter_types::Spanned for ForStatementCondition<'_> {
13055    fn span(&self) -> ::treesitter_types::Span {
13056        match self {
13057            Self::Semicolon(span) => *span,
13058            Self::EmptyStatement(inner) => inner.span(),
13059            Self::Expression(inner) => inner.span(),
13060            Self::SequenceExpression(inner) => inner.span(),
13061        }
13062    }
13063}
13064#[derive(Debug, Clone, PartialEq, Eq)]
13065pub enum ForStatementIncrement<'tree> {
13066    Expression(::std::boxed::Box<Expression<'tree>>),
13067    SequenceExpression(::std::boxed::Box<SequenceExpression<'tree>>),
13068}
13069impl<'tree> ::treesitter_types::FromNode<'tree> for ForStatementIncrement<'tree> {
13070    #[allow(clippy::collapsible_else_if)]
13071    fn from_node(
13072        node: ::treesitter_types::tree_sitter::Node<'tree>,
13073        src: &'tree [u8],
13074    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
13075        match node.kind() {
13076            "sequence_expression" => Ok(Self::SequenceExpression(::std::boxed::Box::new(
13077                ::treesitter_types::runtime::maybe_grow_stack(|| {
13078                    <SequenceExpression as ::treesitter_types::FromNode>::from_node(node, src)
13079                })?,
13080            ))),
13081            _other => {
13082                if let Ok(v) = ::treesitter_types::runtime::maybe_grow_stack(|| {
13083                    <Expression as ::treesitter_types::FromNode>::from_node(node, src)
13084                }) {
13085                    Ok(Self::Expression(::std::boxed::Box::new(v)))
13086                } else {
13087                    Err(::treesitter_types::ParseError::unexpected_kind(
13088                        _other, node,
13089                    ))
13090                }
13091            }
13092        }
13093    }
13094}
13095impl ::treesitter_types::Spanned for ForStatementIncrement<'_> {
13096    fn span(&self) -> ::treesitter_types::Span {
13097        match self {
13098            Self::Expression(inner) => inner.span(),
13099            Self::SequenceExpression(inner) => inner.span(),
13100        }
13101    }
13102}
13103#[derive(Debug, Clone, PartialEq, Eq)]
13104pub enum ForStatementInitializer<'tree> {
13105    EmptyStatement(::std::boxed::Box<EmptyStatement<'tree>>),
13106    Expression(::std::boxed::Box<Expression<'tree>>),
13107    LexicalDeclaration(::std::boxed::Box<LexicalDeclaration<'tree>>),
13108    SequenceExpression(::std::boxed::Box<SequenceExpression<'tree>>),
13109    VariableDeclaration(::std::boxed::Box<VariableDeclaration<'tree>>),
13110}
13111impl<'tree> ::treesitter_types::FromNode<'tree> for ForStatementInitializer<'tree> {
13112    #[allow(clippy::collapsible_else_if)]
13113    fn from_node(
13114        node: ::treesitter_types::tree_sitter::Node<'tree>,
13115        src: &'tree [u8],
13116    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
13117        match node.kind() {
13118            "empty_statement" => Ok(Self::EmptyStatement(::std::boxed::Box::new(
13119                ::treesitter_types::runtime::maybe_grow_stack(|| {
13120                    <EmptyStatement as ::treesitter_types::FromNode>::from_node(node, src)
13121                })?,
13122            ))),
13123            "lexical_declaration" => Ok(Self::LexicalDeclaration(::std::boxed::Box::new(
13124                ::treesitter_types::runtime::maybe_grow_stack(|| {
13125                    <LexicalDeclaration as ::treesitter_types::FromNode>::from_node(node, src)
13126                })?,
13127            ))),
13128            "sequence_expression" => Ok(Self::SequenceExpression(::std::boxed::Box::new(
13129                ::treesitter_types::runtime::maybe_grow_stack(|| {
13130                    <SequenceExpression as ::treesitter_types::FromNode>::from_node(node, src)
13131                })?,
13132            ))),
13133            "variable_declaration" => Ok(Self::VariableDeclaration(::std::boxed::Box::new(
13134                ::treesitter_types::runtime::maybe_grow_stack(|| {
13135                    <VariableDeclaration as ::treesitter_types::FromNode>::from_node(node, src)
13136                })?,
13137            ))),
13138            _other => {
13139                if let Ok(v) = ::treesitter_types::runtime::maybe_grow_stack(|| {
13140                    <Expression as ::treesitter_types::FromNode>::from_node(node, src)
13141                }) {
13142                    Ok(Self::Expression(::std::boxed::Box::new(v)))
13143                } else {
13144                    Err(::treesitter_types::ParseError::unexpected_kind(
13145                        _other, node,
13146                    ))
13147                }
13148            }
13149        }
13150    }
13151}
13152impl ::treesitter_types::Spanned for ForStatementInitializer<'_> {
13153    fn span(&self) -> ::treesitter_types::Span {
13154        match self {
13155            Self::EmptyStatement(inner) => inner.span(),
13156            Self::Expression(inner) => inner.span(),
13157            Self::LexicalDeclaration(inner) => inner.span(),
13158            Self::SequenceExpression(inner) => inner.span(),
13159            Self::VariableDeclaration(inner) => inner.span(),
13160        }
13161    }
13162}
13163#[derive(Debug, Clone, PartialEq, Eq)]
13164pub enum FormalParametersChildren<'tree> {
13165    OptionalParameter(::std::boxed::Box<OptionalParameter<'tree>>),
13166    RequiredParameter(::std::boxed::Box<RequiredParameter<'tree>>),
13167}
13168impl<'tree> ::treesitter_types::FromNode<'tree> for FormalParametersChildren<'tree> {
13169    #[allow(clippy::collapsible_else_if)]
13170    fn from_node(
13171        node: ::treesitter_types::tree_sitter::Node<'tree>,
13172        src: &'tree [u8],
13173    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
13174        match node.kind() {
13175            "optional_parameter" => Ok(Self::OptionalParameter(::std::boxed::Box::new(
13176                ::treesitter_types::runtime::maybe_grow_stack(|| {
13177                    <OptionalParameter as ::treesitter_types::FromNode>::from_node(node, src)
13178                })?,
13179            ))),
13180            "required_parameter" => Ok(Self::RequiredParameter(::std::boxed::Box::new(
13181                ::treesitter_types::runtime::maybe_grow_stack(|| {
13182                    <RequiredParameter as ::treesitter_types::FromNode>::from_node(node, src)
13183                })?,
13184            ))),
13185            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
13186        }
13187    }
13188}
13189impl ::treesitter_types::Spanned for FormalParametersChildren<'_> {
13190    fn span(&self) -> ::treesitter_types::Span {
13191        match self {
13192            Self::OptionalParameter(inner) => inner.span(),
13193            Self::RequiredParameter(inner) => inner.span(),
13194        }
13195    }
13196}
13197#[derive(Debug, Clone, PartialEq, Eq)]
13198pub enum FunctionDeclarationReturnType<'tree> {
13199    AssertsAnnotation(::std::boxed::Box<AssertsAnnotation<'tree>>),
13200    TypeAnnotation(::std::boxed::Box<TypeAnnotation<'tree>>),
13201    TypePredicateAnnotation(::std::boxed::Box<TypePredicateAnnotation<'tree>>),
13202}
13203impl<'tree> ::treesitter_types::FromNode<'tree> for FunctionDeclarationReturnType<'tree> {
13204    #[allow(clippy::collapsible_else_if)]
13205    fn from_node(
13206        node: ::treesitter_types::tree_sitter::Node<'tree>,
13207        src: &'tree [u8],
13208    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
13209        match node.kind() {
13210            "asserts_annotation" => Ok(Self::AssertsAnnotation(::std::boxed::Box::new(
13211                ::treesitter_types::runtime::maybe_grow_stack(|| {
13212                    <AssertsAnnotation as ::treesitter_types::FromNode>::from_node(node, src)
13213                })?,
13214            ))),
13215            "type_annotation" => Ok(Self::TypeAnnotation(::std::boxed::Box::new(
13216                ::treesitter_types::runtime::maybe_grow_stack(|| {
13217                    <TypeAnnotation as ::treesitter_types::FromNode>::from_node(node, src)
13218                })?,
13219            ))),
13220            "type_predicate_annotation" => Ok(Self::TypePredicateAnnotation(
13221                ::std::boxed::Box::new(::treesitter_types::runtime::maybe_grow_stack(|| {
13222                    <TypePredicateAnnotation as ::treesitter_types::FromNode>::from_node(node, src)
13223                })?),
13224            )),
13225            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
13226        }
13227    }
13228}
13229impl ::treesitter_types::Spanned for FunctionDeclarationReturnType<'_> {
13230    fn span(&self) -> ::treesitter_types::Span {
13231        match self {
13232            Self::AssertsAnnotation(inner) => inner.span(),
13233            Self::TypeAnnotation(inner) => inner.span(),
13234            Self::TypePredicateAnnotation(inner) => inner.span(),
13235        }
13236    }
13237}
13238#[derive(Debug, Clone, PartialEq, Eq)]
13239pub enum FunctionExpressionReturnType<'tree> {
13240    AssertsAnnotation(::std::boxed::Box<AssertsAnnotation<'tree>>),
13241    TypeAnnotation(::std::boxed::Box<TypeAnnotation<'tree>>),
13242    TypePredicateAnnotation(::std::boxed::Box<TypePredicateAnnotation<'tree>>),
13243}
13244impl<'tree> ::treesitter_types::FromNode<'tree> for FunctionExpressionReturnType<'tree> {
13245    #[allow(clippy::collapsible_else_if)]
13246    fn from_node(
13247        node: ::treesitter_types::tree_sitter::Node<'tree>,
13248        src: &'tree [u8],
13249    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
13250        match node.kind() {
13251            "asserts_annotation" => Ok(Self::AssertsAnnotation(::std::boxed::Box::new(
13252                ::treesitter_types::runtime::maybe_grow_stack(|| {
13253                    <AssertsAnnotation as ::treesitter_types::FromNode>::from_node(node, src)
13254                })?,
13255            ))),
13256            "type_annotation" => Ok(Self::TypeAnnotation(::std::boxed::Box::new(
13257                ::treesitter_types::runtime::maybe_grow_stack(|| {
13258                    <TypeAnnotation as ::treesitter_types::FromNode>::from_node(node, src)
13259                })?,
13260            ))),
13261            "type_predicate_annotation" => Ok(Self::TypePredicateAnnotation(
13262                ::std::boxed::Box::new(::treesitter_types::runtime::maybe_grow_stack(|| {
13263                    <TypePredicateAnnotation as ::treesitter_types::FromNode>::from_node(node, src)
13264                })?),
13265            )),
13266            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
13267        }
13268    }
13269}
13270impl ::treesitter_types::Spanned for FunctionExpressionReturnType<'_> {
13271    fn span(&self) -> ::treesitter_types::Span {
13272        match self {
13273            Self::AssertsAnnotation(inner) => inner.span(),
13274            Self::TypeAnnotation(inner) => inner.span(),
13275            Self::TypePredicateAnnotation(inner) => inner.span(),
13276        }
13277    }
13278}
13279#[derive(Debug, Clone, PartialEq, Eq)]
13280pub enum FunctionSignatureReturnType<'tree> {
13281    AssertsAnnotation(::std::boxed::Box<AssertsAnnotation<'tree>>),
13282    TypeAnnotation(::std::boxed::Box<TypeAnnotation<'tree>>),
13283    TypePredicateAnnotation(::std::boxed::Box<TypePredicateAnnotation<'tree>>),
13284}
13285impl<'tree> ::treesitter_types::FromNode<'tree> for FunctionSignatureReturnType<'tree> {
13286    #[allow(clippy::collapsible_else_if)]
13287    fn from_node(
13288        node: ::treesitter_types::tree_sitter::Node<'tree>,
13289        src: &'tree [u8],
13290    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
13291        match node.kind() {
13292            "asserts_annotation" => Ok(Self::AssertsAnnotation(::std::boxed::Box::new(
13293                ::treesitter_types::runtime::maybe_grow_stack(|| {
13294                    <AssertsAnnotation as ::treesitter_types::FromNode>::from_node(node, src)
13295                })?,
13296            ))),
13297            "type_annotation" => Ok(Self::TypeAnnotation(::std::boxed::Box::new(
13298                ::treesitter_types::runtime::maybe_grow_stack(|| {
13299                    <TypeAnnotation as ::treesitter_types::FromNode>::from_node(node, src)
13300                })?,
13301            ))),
13302            "type_predicate_annotation" => Ok(Self::TypePredicateAnnotation(
13303                ::std::boxed::Box::new(::treesitter_types::runtime::maybe_grow_stack(|| {
13304                    <TypePredicateAnnotation as ::treesitter_types::FromNode>::from_node(node, src)
13305                })?),
13306            )),
13307            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
13308        }
13309    }
13310}
13311impl ::treesitter_types::Spanned for FunctionSignatureReturnType<'_> {
13312    fn span(&self) -> ::treesitter_types::Span {
13313        match self {
13314            Self::AssertsAnnotation(inner) => inner.span(),
13315            Self::TypeAnnotation(inner) => inner.span(),
13316            Self::TypePredicateAnnotation(inner) => inner.span(),
13317        }
13318    }
13319}
13320#[derive(Debug, Clone, PartialEq, Eq)]
13321pub enum FunctionTypeReturnType<'tree> {
13322    Asserts(::std::boxed::Box<Asserts<'tree>>),
13323    Type(::std::boxed::Box<Type<'tree>>),
13324    TypePredicate(::std::boxed::Box<TypePredicate<'tree>>),
13325}
13326impl<'tree> ::treesitter_types::FromNode<'tree> for FunctionTypeReturnType<'tree> {
13327    #[allow(clippy::collapsible_else_if)]
13328    fn from_node(
13329        node: ::treesitter_types::tree_sitter::Node<'tree>,
13330        src: &'tree [u8],
13331    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
13332        match node.kind() {
13333            "asserts" => Ok(Self::Asserts(::std::boxed::Box::new(
13334                ::treesitter_types::runtime::maybe_grow_stack(|| {
13335                    <Asserts as ::treesitter_types::FromNode>::from_node(node, src)
13336                })?,
13337            ))),
13338            "type_predicate" => Ok(Self::TypePredicate(::std::boxed::Box::new(
13339                ::treesitter_types::runtime::maybe_grow_stack(|| {
13340                    <TypePredicate as ::treesitter_types::FromNode>::from_node(node, src)
13341                })?,
13342            ))),
13343            _other => {
13344                if let Ok(v) = ::treesitter_types::runtime::maybe_grow_stack(|| {
13345                    <Type as ::treesitter_types::FromNode>::from_node(node, src)
13346                }) {
13347                    Ok(Self::Type(::std::boxed::Box::new(v)))
13348                } else {
13349                    Err(::treesitter_types::ParseError::unexpected_kind(
13350                        _other, node,
13351                    ))
13352                }
13353            }
13354        }
13355    }
13356}
13357impl ::treesitter_types::Spanned for FunctionTypeReturnType<'_> {
13358    fn span(&self) -> ::treesitter_types::Span {
13359        match self {
13360            Self::Asserts(inner) => inner.span(),
13361            Self::Type(inner) => inner.span(),
13362            Self::TypePredicate(inner) => inner.span(),
13363        }
13364    }
13365}
13366#[derive(Debug, Clone, PartialEq, Eq)]
13367pub enum GeneratorFunctionReturnType<'tree> {
13368    AssertsAnnotation(::std::boxed::Box<AssertsAnnotation<'tree>>),
13369    TypeAnnotation(::std::boxed::Box<TypeAnnotation<'tree>>),
13370    TypePredicateAnnotation(::std::boxed::Box<TypePredicateAnnotation<'tree>>),
13371}
13372impl<'tree> ::treesitter_types::FromNode<'tree> for GeneratorFunctionReturnType<'tree> {
13373    #[allow(clippy::collapsible_else_if)]
13374    fn from_node(
13375        node: ::treesitter_types::tree_sitter::Node<'tree>,
13376        src: &'tree [u8],
13377    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
13378        match node.kind() {
13379            "asserts_annotation" => Ok(Self::AssertsAnnotation(::std::boxed::Box::new(
13380                ::treesitter_types::runtime::maybe_grow_stack(|| {
13381                    <AssertsAnnotation as ::treesitter_types::FromNode>::from_node(node, src)
13382                })?,
13383            ))),
13384            "type_annotation" => Ok(Self::TypeAnnotation(::std::boxed::Box::new(
13385                ::treesitter_types::runtime::maybe_grow_stack(|| {
13386                    <TypeAnnotation as ::treesitter_types::FromNode>::from_node(node, src)
13387                })?,
13388            ))),
13389            "type_predicate_annotation" => Ok(Self::TypePredicateAnnotation(
13390                ::std::boxed::Box::new(::treesitter_types::runtime::maybe_grow_stack(|| {
13391                    <TypePredicateAnnotation as ::treesitter_types::FromNode>::from_node(node, src)
13392                })?),
13393            )),
13394            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
13395        }
13396    }
13397}
13398impl ::treesitter_types::Spanned for GeneratorFunctionReturnType<'_> {
13399    fn span(&self) -> ::treesitter_types::Span {
13400        match self {
13401            Self::AssertsAnnotation(inner) => inner.span(),
13402            Self::TypeAnnotation(inner) => inner.span(),
13403            Self::TypePredicateAnnotation(inner) => inner.span(),
13404        }
13405    }
13406}
13407#[derive(Debug, Clone, PartialEq, Eq)]
13408pub enum GeneratorFunctionDeclarationReturnType<'tree> {
13409    AssertsAnnotation(::std::boxed::Box<AssertsAnnotation<'tree>>),
13410    TypeAnnotation(::std::boxed::Box<TypeAnnotation<'tree>>),
13411    TypePredicateAnnotation(::std::boxed::Box<TypePredicateAnnotation<'tree>>),
13412}
13413impl<'tree> ::treesitter_types::FromNode<'tree> for GeneratorFunctionDeclarationReturnType<'tree> {
13414    #[allow(clippy::collapsible_else_if)]
13415    fn from_node(
13416        node: ::treesitter_types::tree_sitter::Node<'tree>,
13417        src: &'tree [u8],
13418    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
13419        match node.kind() {
13420            "asserts_annotation" => Ok(Self::AssertsAnnotation(::std::boxed::Box::new(
13421                ::treesitter_types::runtime::maybe_grow_stack(|| {
13422                    <AssertsAnnotation as ::treesitter_types::FromNode>::from_node(node, src)
13423                })?,
13424            ))),
13425            "type_annotation" => Ok(Self::TypeAnnotation(::std::boxed::Box::new(
13426                ::treesitter_types::runtime::maybe_grow_stack(|| {
13427                    <TypeAnnotation as ::treesitter_types::FromNode>::from_node(node, src)
13428                })?,
13429            ))),
13430            "type_predicate_annotation" => Ok(Self::TypePredicateAnnotation(
13431                ::std::boxed::Box::new(::treesitter_types::runtime::maybe_grow_stack(|| {
13432                    <TypePredicateAnnotation as ::treesitter_types::FromNode>::from_node(node, src)
13433                })?),
13434            )),
13435            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
13436        }
13437    }
13438}
13439impl ::treesitter_types::Spanned for GeneratorFunctionDeclarationReturnType<'_> {
13440    fn span(&self) -> ::treesitter_types::Span {
13441        match self {
13442            Self::AssertsAnnotation(inner) => inner.span(),
13443            Self::TypeAnnotation(inner) => inner.span(),
13444            Self::TypePredicateAnnotation(inner) => inner.span(),
13445        }
13446    }
13447}
13448#[derive(Debug, Clone, PartialEq, Eq)]
13449pub enum GenericTypeName<'tree> {
13450    NestedTypeIdentifier(::std::boxed::Box<NestedTypeIdentifier<'tree>>),
13451    TypeIdentifier(::std::boxed::Box<TypeIdentifier<'tree>>),
13452}
13453impl<'tree> ::treesitter_types::FromNode<'tree> for GenericTypeName<'tree> {
13454    #[allow(clippy::collapsible_else_if)]
13455    fn from_node(
13456        node: ::treesitter_types::tree_sitter::Node<'tree>,
13457        src: &'tree [u8],
13458    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
13459        match node.kind() {
13460            "nested_type_identifier" => Ok(Self::NestedTypeIdentifier(::std::boxed::Box::new(
13461                ::treesitter_types::runtime::maybe_grow_stack(|| {
13462                    <NestedTypeIdentifier as ::treesitter_types::FromNode>::from_node(node, src)
13463                })?,
13464            ))),
13465            "type_identifier" => Ok(Self::TypeIdentifier(::std::boxed::Box::new(
13466                ::treesitter_types::runtime::maybe_grow_stack(|| {
13467                    <TypeIdentifier as ::treesitter_types::FromNode>::from_node(node, src)
13468                })?,
13469            ))),
13470            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
13471        }
13472    }
13473}
13474impl ::treesitter_types::Spanned for GenericTypeName<'_> {
13475    fn span(&self) -> ::treesitter_types::Span {
13476        match self {
13477            Self::NestedTypeIdentifier(inner) => inner.span(),
13478            Self::TypeIdentifier(inner) => inner.span(),
13479        }
13480    }
13481}
13482#[derive(Debug, Clone, PartialEq, Eq)]
13483pub enum ImportAliasChildren<'tree> {
13484    Identifier(::std::boxed::Box<Identifier<'tree>>),
13485    NestedIdentifier(::std::boxed::Box<NestedIdentifier<'tree>>),
13486}
13487impl<'tree> ::treesitter_types::FromNode<'tree> for ImportAliasChildren<'tree> {
13488    #[allow(clippy::collapsible_else_if)]
13489    fn from_node(
13490        node: ::treesitter_types::tree_sitter::Node<'tree>,
13491        src: &'tree [u8],
13492    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
13493        match node.kind() {
13494            "identifier" => Ok(Self::Identifier(::std::boxed::Box::new(
13495                ::treesitter_types::runtime::maybe_grow_stack(|| {
13496                    <Identifier as ::treesitter_types::FromNode>::from_node(node, src)
13497                })?,
13498            ))),
13499            "nested_identifier" => Ok(Self::NestedIdentifier(::std::boxed::Box::new(
13500                ::treesitter_types::runtime::maybe_grow_stack(|| {
13501                    <NestedIdentifier as ::treesitter_types::FromNode>::from_node(node, src)
13502                })?,
13503            ))),
13504            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
13505        }
13506    }
13507}
13508impl ::treesitter_types::Spanned for ImportAliasChildren<'_> {
13509    fn span(&self) -> ::treesitter_types::Span {
13510        match self {
13511            Self::Identifier(inner) => inner.span(),
13512            Self::NestedIdentifier(inner) => inner.span(),
13513        }
13514    }
13515}
13516#[derive(Debug, Clone, PartialEq, Eq)]
13517pub enum ImportClauseChildren<'tree> {
13518    Identifier(::std::boxed::Box<Identifier<'tree>>),
13519    NamedImports(::std::boxed::Box<NamedImports<'tree>>),
13520    NamespaceImport(::std::boxed::Box<NamespaceImport<'tree>>),
13521}
13522impl<'tree> ::treesitter_types::FromNode<'tree> for ImportClauseChildren<'tree> {
13523    #[allow(clippy::collapsible_else_if)]
13524    fn from_node(
13525        node: ::treesitter_types::tree_sitter::Node<'tree>,
13526        src: &'tree [u8],
13527    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
13528        match node.kind() {
13529            "identifier" => Ok(Self::Identifier(::std::boxed::Box::new(
13530                ::treesitter_types::runtime::maybe_grow_stack(|| {
13531                    <Identifier as ::treesitter_types::FromNode>::from_node(node, src)
13532                })?,
13533            ))),
13534            "named_imports" => Ok(Self::NamedImports(::std::boxed::Box::new(
13535                ::treesitter_types::runtime::maybe_grow_stack(|| {
13536                    <NamedImports as ::treesitter_types::FromNode>::from_node(node, src)
13537                })?,
13538            ))),
13539            "namespace_import" => Ok(Self::NamespaceImport(::std::boxed::Box::new(
13540                ::treesitter_types::runtime::maybe_grow_stack(|| {
13541                    <NamespaceImport as ::treesitter_types::FromNode>::from_node(node, src)
13542                })?,
13543            ))),
13544            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
13545        }
13546    }
13547}
13548impl ::treesitter_types::Spanned for ImportClauseChildren<'_> {
13549    fn span(&self) -> ::treesitter_types::Span {
13550        match self {
13551            Self::Identifier(inner) => inner.span(),
13552            Self::NamedImports(inner) => inner.span(),
13553            Self::NamespaceImport(inner) => inner.span(),
13554        }
13555    }
13556}
13557#[derive(Debug, Clone, PartialEq, Eq)]
13558pub enum ImportSpecifierName<'tree> {
13559    Identifier(::std::boxed::Box<Identifier<'tree>>),
13560    String(::std::boxed::Box<String<'tree>>),
13561}
13562impl<'tree> ::treesitter_types::FromNode<'tree> for ImportSpecifierName<'tree> {
13563    #[allow(clippy::collapsible_else_if)]
13564    fn from_node(
13565        node: ::treesitter_types::tree_sitter::Node<'tree>,
13566        src: &'tree [u8],
13567    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
13568        match node.kind() {
13569            "identifier" => Ok(Self::Identifier(::std::boxed::Box::new(
13570                ::treesitter_types::runtime::maybe_grow_stack(|| {
13571                    <Identifier as ::treesitter_types::FromNode>::from_node(node, src)
13572                })?,
13573            ))),
13574            "string" => Ok(Self::String(::std::boxed::Box::new(
13575                ::treesitter_types::runtime::maybe_grow_stack(|| {
13576                    <String as ::treesitter_types::FromNode>::from_node(node, src)
13577                })?,
13578            ))),
13579            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
13580        }
13581    }
13582}
13583impl ::treesitter_types::Spanned for ImportSpecifierName<'_> {
13584    fn span(&self) -> ::treesitter_types::Span {
13585        match self {
13586            Self::Identifier(inner) => inner.span(),
13587            Self::String(inner) => inner.span(),
13588        }
13589    }
13590}
13591#[derive(Debug, Clone, PartialEq, Eq)]
13592pub enum ImportStatementChildren<'tree> {
13593    ImportAttribute(::std::boxed::Box<ImportAttribute<'tree>>),
13594    ImportClause(::std::boxed::Box<ImportClause<'tree>>),
13595    ImportRequireClause(::std::boxed::Box<ImportRequireClause<'tree>>),
13596}
13597impl<'tree> ::treesitter_types::FromNode<'tree> for ImportStatementChildren<'tree> {
13598    #[allow(clippy::collapsible_else_if)]
13599    fn from_node(
13600        node: ::treesitter_types::tree_sitter::Node<'tree>,
13601        src: &'tree [u8],
13602    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
13603        match node.kind() {
13604            "import_attribute" => Ok(Self::ImportAttribute(::std::boxed::Box::new(
13605                ::treesitter_types::runtime::maybe_grow_stack(|| {
13606                    <ImportAttribute as ::treesitter_types::FromNode>::from_node(node, src)
13607                })?,
13608            ))),
13609            "import_clause" => Ok(Self::ImportClause(::std::boxed::Box::new(
13610                ::treesitter_types::runtime::maybe_grow_stack(|| {
13611                    <ImportClause as ::treesitter_types::FromNode>::from_node(node, src)
13612                })?,
13613            ))),
13614            "import_require_clause" => Ok(Self::ImportRequireClause(::std::boxed::Box::new(
13615                ::treesitter_types::runtime::maybe_grow_stack(|| {
13616                    <ImportRequireClause as ::treesitter_types::FromNode>::from_node(node, src)
13617                })?,
13618            ))),
13619            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
13620        }
13621    }
13622}
13623impl ::treesitter_types::Spanned for ImportStatementChildren<'_> {
13624    fn span(&self) -> ::treesitter_types::Span {
13625        match self {
13626            Self::ImportAttribute(inner) => inner.span(),
13627            Self::ImportClause(inner) => inner.span(),
13628            Self::ImportRequireClause(inner) => inner.span(),
13629        }
13630    }
13631}
13632#[derive(Debug, Clone, PartialEq, Eq)]
13633pub enum IndexSignatureSign {
13634    Plus(::treesitter_types::Span),
13635    Minus(::treesitter_types::Span),
13636}
13637impl<'tree> ::treesitter_types::FromNode<'tree> for IndexSignatureSign {
13638    #[allow(clippy::collapsible_else_if)]
13639    fn from_node(
13640        node: ::treesitter_types::tree_sitter::Node<'tree>,
13641        _src: &'tree [u8],
13642    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
13643        match node.kind() {
13644            "+" => Ok(Self::Plus(::treesitter_types::Span::from(node))),
13645            "-" => Ok(Self::Minus(::treesitter_types::Span::from(node))),
13646            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
13647        }
13648    }
13649}
13650impl ::treesitter_types::Spanned for IndexSignatureSign {
13651    fn span(&self) -> ::treesitter_types::Span {
13652        match self {
13653            Self::Plus(span) => *span,
13654            Self::Minus(span) => *span,
13655        }
13656    }
13657}
13658#[derive(Debug, Clone, PartialEq, Eq)]
13659pub enum IndexSignatureType<'tree> {
13660    AddingTypeAnnotation(::std::boxed::Box<AddingTypeAnnotation<'tree>>),
13661    OmittingTypeAnnotation(::std::boxed::Box<OmittingTypeAnnotation<'tree>>),
13662    OptingTypeAnnotation(::std::boxed::Box<OptingTypeAnnotation<'tree>>),
13663    TypeAnnotation(::std::boxed::Box<TypeAnnotation<'tree>>),
13664}
13665impl<'tree> ::treesitter_types::FromNode<'tree> for IndexSignatureType<'tree> {
13666    #[allow(clippy::collapsible_else_if)]
13667    fn from_node(
13668        node: ::treesitter_types::tree_sitter::Node<'tree>,
13669        src: &'tree [u8],
13670    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
13671        match node.kind() {
13672            "adding_type_annotation" => Ok(Self::AddingTypeAnnotation(::std::boxed::Box::new(
13673                ::treesitter_types::runtime::maybe_grow_stack(|| {
13674                    <AddingTypeAnnotation as ::treesitter_types::FromNode>::from_node(node, src)
13675                })?,
13676            ))),
13677            "omitting_type_annotation" => Ok(Self::OmittingTypeAnnotation(::std::boxed::Box::new(
13678                ::treesitter_types::runtime::maybe_grow_stack(|| {
13679                    <OmittingTypeAnnotation as ::treesitter_types::FromNode>::from_node(node, src)
13680                })?,
13681            ))),
13682            "opting_type_annotation" => Ok(Self::OptingTypeAnnotation(::std::boxed::Box::new(
13683                ::treesitter_types::runtime::maybe_grow_stack(|| {
13684                    <OptingTypeAnnotation as ::treesitter_types::FromNode>::from_node(node, src)
13685                })?,
13686            ))),
13687            "type_annotation" => Ok(Self::TypeAnnotation(::std::boxed::Box::new(
13688                ::treesitter_types::runtime::maybe_grow_stack(|| {
13689                    <TypeAnnotation as ::treesitter_types::FromNode>::from_node(node, src)
13690                })?,
13691            ))),
13692            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
13693        }
13694    }
13695}
13696impl ::treesitter_types::Spanned for IndexSignatureType<'_> {
13697    fn span(&self) -> ::treesitter_types::Span {
13698        match self {
13699            Self::AddingTypeAnnotation(inner) => inner.span(),
13700            Self::OmittingTypeAnnotation(inner) => inner.span(),
13701            Self::OptingTypeAnnotation(inner) => inner.span(),
13702            Self::TypeAnnotation(inner) => inner.span(),
13703        }
13704    }
13705}
13706#[derive(Debug, Clone, PartialEq, Eq)]
13707pub enum InferTypeChildren<'tree> {
13708    Type(::std::boxed::Box<Type<'tree>>),
13709    TypeIdentifier(::std::boxed::Box<TypeIdentifier<'tree>>),
13710}
13711impl<'tree> ::treesitter_types::FromNode<'tree> for InferTypeChildren<'tree> {
13712    #[allow(clippy::collapsible_else_if)]
13713    fn from_node(
13714        node: ::treesitter_types::tree_sitter::Node<'tree>,
13715        src: &'tree [u8],
13716    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
13717        match node.kind() {
13718            "type_identifier" => Ok(Self::TypeIdentifier(::std::boxed::Box::new(
13719                ::treesitter_types::runtime::maybe_grow_stack(|| {
13720                    <TypeIdentifier as ::treesitter_types::FromNode>::from_node(node, src)
13721                })?,
13722            ))),
13723            _other => {
13724                if let Ok(v) = ::treesitter_types::runtime::maybe_grow_stack(|| {
13725                    <Type as ::treesitter_types::FromNode>::from_node(node, src)
13726                }) {
13727                    Ok(Self::Type(::std::boxed::Box::new(v)))
13728                } else {
13729                    Err(::treesitter_types::ParseError::unexpected_kind(
13730                        _other, node,
13731                    ))
13732                }
13733            }
13734        }
13735    }
13736}
13737impl ::treesitter_types::Spanned for InferTypeChildren<'_> {
13738    fn span(&self) -> ::treesitter_types::Span {
13739        match self {
13740            Self::Type(inner) => inner.span(),
13741            Self::TypeIdentifier(inner) => inner.span(),
13742        }
13743    }
13744}
13745#[derive(Debug, Clone, PartialEq, Eq)]
13746pub enum InstantiationExpressionFunction<'tree> {
13747    Identifier(::std::boxed::Box<Identifier<'tree>>),
13748    Import(::std::boxed::Box<Import<'tree>>),
13749    MemberExpression(::std::boxed::Box<MemberExpression<'tree>>),
13750    SubscriptExpression(::std::boxed::Box<SubscriptExpression<'tree>>),
13751}
13752impl<'tree> ::treesitter_types::FromNode<'tree> for InstantiationExpressionFunction<'tree> {
13753    #[allow(clippy::collapsible_else_if)]
13754    fn from_node(
13755        node: ::treesitter_types::tree_sitter::Node<'tree>,
13756        src: &'tree [u8],
13757    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
13758        match node.kind() {
13759            "identifier" => Ok(Self::Identifier(::std::boxed::Box::new(
13760                ::treesitter_types::runtime::maybe_grow_stack(|| {
13761                    <Identifier as ::treesitter_types::FromNode>::from_node(node, src)
13762                })?,
13763            ))),
13764            "import" => Ok(Self::Import(::std::boxed::Box::new(
13765                ::treesitter_types::runtime::maybe_grow_stack(|| {
13766                    <Import as ::treesitter_types::FromNode>::from_node(node, src)
13767                })?,
13768            ))),
13769            "member_expression" => Ok(Self::MemberExpression(::std::boxed::Box::new(
13770                ::treesitter_types::runtime::maybe_grow_stack(|| {
13771                    <MemberExpression as ::treesitter_types::FromNode>::from_node(node, src)
13772                })?,
13773            ))),
13774            "subscript_expression" => Ok(Self::SubscriptExpression(::std::boxed::Box::new(
13775                ::treesitter_types::runtime::maybe_grow_stack(|| {
13776                    <SubscriptExpression as ::treesitter_types::FromNode>::from_node(node, src)
13777                })?,
13778            ))),
13779            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
13780        }
13781    }
13782}
13783impl ::treesitter_types::Spanned for InstantiationExpressionFunction<'_> {
13784    fn span(&self) -> ::treesitter_types::Span {
13785        match self {
13786            Self::Identifier(inner) => inner.span(),
13787            Self::Import(inner) => inner.span(),
13788            Self::MemberExpression(inner) => inner.span(),
13789            Self::SubscriptExpression(inner) => inner.span(),
13790        }
13791    }
13792}
13793#[derive(Debug, Clone, PartialEq, Eq)]
13794pub enum InterfaceBodyChildren<'tree> {
13795    CallSignature(::std::boxed::Box<CallSignature<'tree>>),
13796    ConstructSignature(::std::boxed::Box<ConstructSignature<'tree>>),
13797    ExportStatement(::std::boxed::Box<ExportStatement<'tree>>),
13798    IndexSignature(::std::boxed::Box<IndexSignature<'tree>>),
13799    MethodSignature(::std::boxed::Box<MethodSignature<'tree>>),
13800    PropertySignature(::std::boxed::Box<PropertySignature<'tree>>),
13801}
13802impl<'tree> ::treesitter_types::FromNode<'tree> for InterfaceBodyChildren<'tree> {
13803    #[allow(clippy::collapsible_else_if)]
13804    fn from_node(
13805        node: ::treesitter_types::tree_sitter::Node<'tree>,
13806        src: &'tree [u8],
13807    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
13808        match node.kind() {
13809            "call_signature" => Ok(Self::CallSignature(::std::boxed::Box::new(
13810                ::treesitter_types::runtime::maybe_grow_stack(|| {
13811                    <CallSignature as ::treesitter_types::FromNode>::from_node(node, src)
13812                })?,
13813            ))),
13814            "construct_signature" => Ok(Self::ConstructSignature(::std::boxed::Box::new(
13815                ::treesitter_types::runtime::maybe_grow_stack(|| {
13816                    <ConstructSignature as ::treesitter_types::FromNode>::from_node(node, src)
13817                })?,
13818            ))),
13819            "export_statement" => Ok(Self::ExportStatement(::std::boxed::Box::new(
13820                ::treesitter_types::runtime::maybe_grow_stack(|| {
13821                    <ExportStatement as ::treesitter_types::FromNode>::from_node(node, src)
13822                })?,
13823            ))),
13824            "index_signature" => Ok(Self::IndexSignature(::std::boxed::Box::new(
13825                ::treesitter_types::runtime::maybe_grow_stack(|| {
13826                    <IndexSignature as ::treesitter_types::FromNode>::from_node(node, src)
13827                })?,
13828            ))),
13829            "method_signature" => Ok(Self::MethodSignature(::std::boxed::Box::new(
13830                ::treesitter_types::runtime::maybe_grow_stack(|| {
13831                    <MethodSignature as ::treesitter_types::FromNode>::from_node(node, src)
13832                })?,
13833            ))),
13834            "property_signature" => Ok(Self::PropertySignature(::std::boxed::Box::new(
13835                ::treesitter_types::runtime::maybe_grow_stack(|| {
13836                    <PropertySignature as ::treesitter_types::FromNode>::from_node(node, src)
13837                })?,
13838            ))),
13839            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
13840        }
13841    }
13842}
13843impl ::treesitter_types::Spanned for InterfaceBodyChildren<'_> {
13844    fn span(&self) -> ::treesitter_types::Span {
13845        match self {
13846            Self::CallSignature(inner) => inner.span(),
13847            Self::ConstructSignature(inner) => inner.span(),
13848            Self::ExportStatement(inner) => inner.span(),
13849            Self::IndexSignature(inner) => inner.span(),
13850            Self::MethodSignature(inner) => inner.span(),
13851            Self::PropertySignature(inner) => inner.span(),
13852        }
13853    }
13854}
13855#[derive(Debug, Clone, PartialEq, Eq)]
13856pub enum InternalModuleName<'tree> {
13857    Identifier(::std::boxed::Box<Identifier<'tree>>),
13858    NestedIdentifier(::std::boxed::Box<NestedIdentifier<'tree>>),
13859    String(::std::boxed::Box<String<'tree>>),
13860}
13861impl<'tree> ::treesitter_types::FromNode<'tree> for InternalModuleName<'tree> {
13862    #[allow(clippy::collapsible_else_if)]
13863    fn from_node(
13864        node: ::treesitter_types::tree_sitter::Node<'tree>,
13865        src: &'tree [u8],
13866    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
13867        match node.kind() {
13868            "identifier" => Ok(Self::Identifier(::std::boxed::Box::new(
13869                ::treesitter_types::runtime::maybe_grow_stack(|| {
13870                    <Identifier as ::treesitter_types::FromNode>::from_node(node, src)
13871                })?,
13872            ))),
13873            "nested_identifier" => Ok(Self::NestedIdentifier(::std::boxed::Box::new(
13874                ::treesitter_types::runtime::maybe_grow_stack(|| {
13875                    <NestedIdentifier as ::treesitter_types::FromNode>::from_node(node, src)
13876                })?,
13877            ))),
13878            "string" => Ok(Self::String(::std::boxed::Box::new(
13879                ::treesitter_types::runtime::maybe_grow_stack(|| {
13880                    <String as ::treesitter_types::FromNode>::from_node(node, src)
13881                })?,
13882            ))),
13883            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
13884        }
13885    }
13886}
13887impl ::treesitter_types::Spanned for InternalModuleName<'_> {
13888    fn span(&self) -> ::treesitter_types::Span {
13889        match self {
13890            Self::Identifier(inner) => inner.span(),
13891            Self::NestedIdentifier(inner) => inner.span(),
13892            Self::String(inner) => inner.span(),
13893        }
13894    }
13895}
13896#[derive(Debug, Clone, PartialEq, Eq)]
13897pub enum LexicalDeclarationKind {
13898    Const(::treesitter_types::Span),
13899    Let(::treesitter_types::Span),
13900}
13901impl<'tree> ::treesitter_types::FromNode<'tree> for LexicalDeclarationKind {
13902    #[allow(clippy::collapsible_else_if)]
13903    fn from_node(
13904        node: ::treesitter_types::tree_sitter::Node<'tree>,
13905        _src: &'tree [u8],
13906    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
13907        match node.kind() {
13908            "const" => Ok(Self::Const(::treesitter_types::Span::from(node))),
13909            "let" => Ok(Self::Let(::treesitter_types::Span::from(node))),
13910            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
13911        }
13912    }
13913}
13914impl ::treesitter_types::Spanned for LexicalDeclarationKind {
13915    fn span(&self) -> ::treesitter_types::Span {
13916        match self {
13917            Self::Const(span) => *span,
13918            Self::Let(span) => *span,
13919        }
13920    }
13921}
13922#[derive(Debug, Clone, PartialEq, Eq)]
13923pub enum LiteralTypeChildren<'tree> {
13924    False(::std::boxed::Box<False<'tree>>),
13925    Null(::std::boxed::Box<Null<'tree>>),
13926    Number(::std::boxed::Box<Number<'tree>>),
13927    String(::std::boxed::Box<String<'tree>>),
13928    True(::std::boxed::Box<True<'tree>>),
13929    UnaryExpression(::std::boxed::Box<UnaryExpression<'tree>>),
13930    Undefined(::std::boxed::Box<Undefined<'tree>>),
13931}
13932impl<'tree> ::treesitter_types::FromNode<'tree> for LiteralTypeChildren<'tree> {
13933    #[allow(clippy::collapsible_else_if)]
13934    fn from_node(
13935        node: ::treesitter_types::tree_sitter::Node<'tree>,
13936        src: &'tree [u8],
13937    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
13938        match node.kind() {
13939            "false" => Ok(Self::False(::std::boxed::Box::new(
13940                ::treesitter_types::runtime::maybe_grow_stack(|| {
13941                    <False as ::treesitter_types::FromNode>::from_node(node, src)
13942                })?,
13943            ))),
13944            "null" => Ok(Self::Null(::std::boxed::Box::new(
13945                ::treesitter_types::runtime::maybe_grow_stack(|| {
13946                    <Null as ::treesitter_types::FromNode>::from_node(node, src)
13947                })?,
13948            ))),
13949            "number" => Ok(Self::Number(::std::boxed::Box::new(
13950                ::treesitter_types::runtime::maybe_grow_stack(|| {
13951                    <Number as ::treesitter_types::FromNode>::from_node(node, src)
13952                })?,
13953            ))),
13954            "string" => Ok(Self::String(::std::boxed::Box::new(
13955                ::treesitter_types::runtime::maybe_grow_stack(|| {
13956                    <String as ::treesitter_types::FromNode>::from_node(node, src)
13957                })?,
13958            ))),
13959            "true" => Ok(Self::True(::std::boxed::Box::new(
13960                ::treesitter_types::runtime::maybe_grow_stack(|| {
13961                    <True as ::treesitter_types::FromNode>::from_node(node, src)
13962                })?,
13963            ))),
13964            "unary_expression" => Ok(Self::UnaryExpression(::std::boxed::Box::new(
13965                ::treesitter_types::runtime::maybe_grow_stack(|| {
13966                    <UnaryExpression as ::treesitter_types::FromNode>::from_node(node, src)
13967                })?,
13968            ))),
13969            "undefined" => Ok(Self::Undefined(::std::boxed::Box::new(
13970                ::treesitter_types::runtime::maybe_grow_stack(|| {
13971                    <Undefined as ::treesitter_types::FromNode>::from_node(node, src)
13972                })?,
13973            ))),
13974            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
13975        }
13976    }
13977}
13978impl ::treesitter_types::Spanned for LiteralTypeChildren<'_> {
13979    fn span(&self) -> ::treesitter_types::Span {
13980        match self {
13981            Self::False(inner) => inner.span(),
13982            Self::Null(inner) => inner.span(),
13983            Self::Number(inner) => inner.span(),
13984            Self::String(inner) => inner.span(),
13985            Self::True(inner) => inner.span(),
13986            Self::UnaryExpression(inner) => inner.span(),
13987            Self::Undefined(inner) => inner.span(),
13988        }
13989    }
13990}
13991#[derive(Debug, Clone, PartialEq, Eq)]
13992pub enum MemberExpressionObject<'tree> {
13993    Expression(::std::boxed::Box<Expression<'tree>>),
13994    Import(::std::boxed::Box<Import<'tree>>),
13995}
13996impl<'tree> ::treesitter_types::FromNode<'tree> for MemberExpressionObject<'tree> {
13997    #[allow(clippy::collapsible_else_if)]
13998    fn from_node(
13999        node: ::treesitter_types::tree_sitter::Node<'tree>,
14000        src: &'tree [u8],
14001    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
14002        match node.kind() {
14003            "import" => Ok(Self::Import(::std::boxed::Box::new(
14004                ::treesitter_types::runtime::maybe_grow_stack(|| {
14005                    <Import as ::treesitter_types::FromNode>::from_node(node, src)
14006                })?,
14007            ))),
14008            _other => {
14009                if let Ok(v) = ::treesitter_types::runtime::maybe_grow_stack(|| {
14010                    <Expression as ::treesitter_types::FromNode>::from_node(node, src)
14011                }) {
14012                    Ok(Self::Expression(::std::boxed::Box::new(v)))
14013                } else {
14014                    Err(::treesitter_types::ParseError::unexpected_kind(
14015                        _other, node,
14016                    ))
14017                }
14018            }
14019        }
14020    }
14021}
14022impl ::treesitter_types::Spanned for MemberExpressionObject<'_> {
14023    fn span(&self) -> ::treesitter_types::Span {
14024        match self {
14025            Self::Expression(inner) => inner.span(),
14026            Self::Import(inner) => inner.span(),
14027        }
14028    }
14029}
14030#[derive(Debug, Clone, PartialEq, Eq)]
14031pub enum MemberExpressionProperty<'tree> {
14032    PrivatePropertyIdentifier(::std::boxed::Box<PrivatePropertyIdentifier<'tree>>),
14033    PropertyIdentifier(::std::boxed::Box<PropertyIdentifier<'tree>>),
14034}
14035impl<'tree> ::treesitter_types::FromNode<'tree> for MemberExpressionProperty<'tree> {
14036    #[allow(clippy::collapsible_else_if)]
14037    fn from_node(
14038        node: ::treesitter_types::tree_sitter::Node<'tree>,
14039        src: &'tree [u8],
14040    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
14041        match node.kind() {
14042            "private_property_identifier" => Ok(Self::PrivatePropertyIdentifier(
14043                ::std::boxed::Box::new(::treesitter_types::runtime::maybe_grow_stack(|| {
14044                    <PrivatePropertyIdentifier as ::treesitter_types::FromNode>::from_node(
14045                        node, src,
14046                    )
14047                })?),
14048            )),
14049            "property_identifier" => Ok(Self::PropertyIdentifier(::std::boxed::Box::new(
14050                ::treesitter_types::runtime::maybe_grow_stack(|| {
14051                    <PropertyIdentifier as ::treesitter_types::FromNode>::from_node(node, src)
14052                })?,
14053            ))),
14054            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
14055        }
14056    }
14057}
14058impl ::treesitter_types::Spanned for MemberExpressionProperty<'_> {
14059    fn span(&self) -> ::treesitter_types::Span {
14060        match self {
14061            Self::PrivatePropertyIdentifier(inner) => inner.span(),
14062            Self::PropertyIdentifier(inner) => inner.span(),
14063        }
14064    }
14065}
14066#[derive(Debug, Clone, PartialEq, Eq)]
14067pub enum MethodDefinitionName<'tree> {
14068    ComputedPropertyName(::std::boxed::Box<ComputedPropertyName<'tree>>),
14069    Number(::std::boxed::Box<Number<'tree>>),
14070    PrivatePropertyIdentifier(::std::boxed::Box<PrivatePropertyIdentifier<'tree>>),
14071    PropertyIdentifier(::std::boxed::Box<PropertyIdentifier<'tree>>),
14072    String(::std::boxed::Box<String<'tree>>),
14073}
14074impl<'tree> ::treesitter_types::FromNode<'tree> for MethodDefinitionName<'tree> {
14075    #[allow(clippy::collapsible_else_if)]
14076    fn from_node(
14077        node: ::treesitter_types::tree_sitter::Node<'tree>,
14078        src: &'tree [u8],
14079    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
14080        match node.kind() {
14081            "computed_property_name" => Ok(Self::ComputedPropertyName(::std::boxed::Box::new(
14082                ::treesitter_types::runtime::maybe_grow_stack(|| {
14083                    <ComputedPropertyName as ::treesitter_types::FromNode>::from_node(node, src)
14084                })?,
14085            ))),
14086            "number" => Ok(Self::Number(::std::boxed::Box::new(
14087                ::treesitter_types::runtime::maybe_grow_stack(|| {
14088                    <Number as ::treesitter_types::FromNode>::from_node(node, src)
14089                })?,
14090            ))),
14091            "private_property_identifier" => Ok(Self::PrivatePropertyIdentifier(
14092                ::std::boxed::Box::new(::treesitter_types::runtime::maybe_grow_stack(|| {
14093                    <PrivatePropertyIdentifier as ::treesitter_types::FromNode>::from_node(
14094                        node, src,
14095                    )
14096                })?),
14097            )),
14098            "property_identifier" => Ok(Self::PropertyIdentifier(::std::boxed::Box::new(
14099                ::treesitter_types::runtime::maybe_grow_stack(|| {
14100                    <PropertyIdentifier as ::treesitter_types::FromNode>::from_node(node, src)
14101                })?,
14102            ))),
14103            "string" => Ok(Self::String(::std::boxed::Box::new(
14104                ::treesitter_types::runtime::maybe_grow_stack(|| {
14105                    <String as ::treesitter_types::FromNode>::from_node(node, src)
14106                })?,
14107            ))),
14108            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
14109        }
14110    }
14111}
14112impl ::treesitter_types::Spanned for MethodDefinitionName<'_> {
14113    fn span(&self) -> ::treesitter_types::Span {
14114        match self {
14115            Self::ComputedPropertyName(inner) => inner.span(),
14116            Self::Number(inner) => inner.span(),
14117            Self::PrivatePropertyIdentifier(inner) => inner.span(),
14118            Self::PropertyIdentifier(inner) => inner.span(),
14119            Self::String(inner) => inner.span(),
14120        }
14121    }
14122}
14123#[derive(Debug, Clone, PartialEq, Eq)]
14124pub enum MethodDefinitionReturnType<'tree> {
14125    AssertsAnnotation(::std::boxed::Box<AssertsAnnotation<'tree>>),
14126    TypeAnnotation(::std::boxed::Box<TypeAnnotation<'tree>>),
14127    TypePredicateAnnotation(::std::boxed::Box<TypePredicateAnnotation<'tree>>),
14128}
14129impl<'tree> ::treesitter_types::FromNode<'tree> for MethodDefinitionReturnType<'tree> {
14130    #[allow(clippy::collapsible_else_if)]
14131    fn from_node(
14132        node: ::treesitter_types::tree_sitter::Node<'tree>,
14133        src: &'tree [u8],
14134    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
14135        match node.kind() {
14136            "asserts_annotation" => Ok(Self::AssertsAnnotation(::std::boxed::Box::new(
14137                ::treesitter_types::runtime::maybe_grow_stack(|| {
14138                    <AssertsAnnotation as ::treesitter_types::FromNode>::from_node(node, src)
14139                })?,
14140            ))),
14141            "type_annotation" => Ok(Self::TypeAnnotation(::std::boxed::Box::new(
14142                ::treesitter_types::runtime::maybe_grow_stack(|| {
14143                    <TypeAnnotation as ::treesitter_types::FromNode>::from_node(node, src)
14144                })?,
14145            ))),
14146            "type_predicate_annotation" => Ok(Self::TypePredicateAnnotation(
14147                ::std::boxed::Box::new(::treesitter_types::runtime::maybe_grow_stack(|| {
14148                    <TypePredicateAnnotation as ::treesitter_types::FromNode>::from_node(node, src)
14149                })?),
14150            )),
14151            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
14152        }
14153    }
14154}
14155impl ::treesitter_types::Spanned for MethodDefinitionReturnType<'_> {
14156    fn span(&self) -> ::treesitter_types::Span {
14157        match self {
14158            Self::AssertsAnnotation(inner) => inner.span(),
14159            Self::TypeAnnotation(inner) => inner.span(),
14160            Self::TypePredicateAnnotation(inner) => inner.span(),
14161        }
14162    }
14163}
14164#[derive(Debug, Clone, PartialEq, Eq)]
14165pub enum MethodDefinitionChildren<'tree> {
14166    AccessibilityModifier(::std::boxed::Box<AccessibilityModifier<'tree>>),
14167    OverrideModifier(::std::boxed::Box<OverrideModifier<'tree>>),
14168}
14169impl<'tree> ::treesitter_types::FromNode<'tree> for MethodDefinitionChildren<'tree> {
14170    #[allow(clippy::collapsible_else_if)]
14171    fn from_node(
14172        node: ::treesitter_types::tree_sitter::Node<'tree>,
14173        src: &'tree [u8],
14174    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
14175        match node.kind() {
14176            "accessibility_modifier" => Ok(Self::AccessibilityModifier(::std::boxed::Box::new(
14177                ::treesitter_types::runtime::maybe_grow_stack(|| {
14178                    <AccessibilityModifier as ::treesitter_types::FromNode>::from_node(node, src)
14179                })?,
14180            ))),
14181            "override_modifier" => Ok(Self::OverrideModifier(::std::boxed::Box::new(
14182                ::treesitter_types::runtime::maybe_grow_stack(|| {
14183                    <OverrideModifier as ::treesitter_types::FromNode>::from_node(node, src)
14184                })?,
14185            ))),
14186            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
14187        }
14188    }
14189}
14190impl ::treesitter_types::Spanned for MethodDefinitionChildren<'_> {
14191    fn span(&self) -> ::treesitter_types::Span {
14192        match self {
14193            Self::AccessibilityModifier(inner) => inner.span(),
14194            Self::OverrideModifier(inner) => inner.span(),
14195        }
14196    }
14197}
14198#[derive(Debug, Clone, PartialEq, Eq)]
14199pub enum MethodSignatureName<'tree> {
14200    ComputedPropertyName(::std::boxed::Box<ComputedPropertyName<'tree>>),
14201    Number(::std::boxed::Box<Number<'tree>>),
14202    PrivatePropertyIdentifier(::std::boxed::Box<PrivatePropertyIdentifier<'tree>>),
14203    PropertyIdentifier(::std::boxed::Box<PropertyIdentifier<'tree>>),
14204    String(::std::boxed::Box<String<'tree>>),
14205}
14206impl<'tree> ::treesitter_types::FromNode<'tree> for MethodSignatureName<'tree> {
14207    #[allow(clippy::collapsible_else_if)]
14208    fn from_node(
14209        node: ::treesitter_types::tree_sitter::Node<'tree>,
14210        src: &'tree [u8],
14211    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
14212        match node.kind() {
14213            "computed_property_name" => Ok(Self::ComputedPropertyName(::std::boxed::Box::new(
14214                ::treesitter_types::runtime::maybe_grow_stack(|| {
14215                    <ComputedPropertyName as ::treesitter_types::FromNode>::from_node(node, src)
14216                })?,
14217            ))),
14218            "number" => Ok(Self::Number(::std::boxed::Box::new(
14219                ::treesitter_types::runtime::maybe_grow_stack(|| {
14220                    <Number as ::treesitter_types::FromNode>::from_node(node, src)
14221                })?,
14222            ))),
14223            "private_property_identifier" => Ok(Self::PrivatePropertyIdentifier(
14224                ::std::boxed::Box::new(::treesitter_types::runtime::maybe_grow_stack(|| {
14225                    <PrivatePropertyIdentifier as ::treesitter_types::FromNode>::from_node(
14226                        node, src,
14227                    )
14228                })?),
14229            )),
14230            "property_identifier" => Ok(Self::PropertyIdentifier(::std::boxed::Box::new(
14231                ::treesitter_types::runtime::maybe_grow_stack(|| {
14232                    <PropertyIdentifier as ::treesitter_types::FromNode>::from_node(node, src)
14233                })?,
14234            ))),
14235            "string" => Ok(Self::String(::std::boxed::Box::new(
14236                ::treesitter_types::runtime::maybe_grow_stack(|| {
14237                    <String as ::treesitter_types::FromNode>::from_node(node, src)
14238                })?,
14239            ))),
14240            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
14241        }
14242    }
14243}
14244impl ::treesitter_types::Spanned for MethodSignatureName<'_> {
14245    fn span(&self) -> ::treesitter_types::Span {
14246        match self {
14247            Self::ComputedPropertyName(inner) => inner.span(),
14248            Self::Number(inner) => inner.span(),
14249            Self::PrivatePropertyIdentifier(inner) => inner.span(),
14250            Self::PropertyIdentifier(inner) => inner.span(),
14251            Self::String(inner) => inner.span(),
14252        }
14253    }
14254}
14255#[derive(Debug, Clone, PartialEq, Eq)]
14256pub enum MethodSignatureReturnType<'tree> {
14257    AssertsAnnotation(::std::boxed::Box<AssertsAnnotation<'tree>>),
14258    TypeAnnotation(::std::boxed::Box<TypeAnnotation<'tree>>),
14259    TypePredicateAnnotation(::std::boxed::Box<TypePredicateAnnotation<'tree>>),
14260}
14261impl<'tree> ::treesitter_types::FromNode<'tree> for MethodSignatureReturnType<'tree> {
14262    #[allow(clippy::collapsible_else_if)]
14263    fn from_node(
14264        node: ::treesitter_types::tree_sitter::Node<'tree>,
14265        src: &'tree [u8],
14266    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
14267        match node.kind() {
14268            "asserts_annotation" => Ok(Self::AssertsAnnotation(::std::boxed::Box::new(
14269                ::treesitter_types::runtime::maybe_grow_stack(|| {
14270                    <AssertsAnnotation as ::treesitter_types::FromNode>::from_node(node, src)
14271                })?,
14272            ))),
14273            "type_annotation" => Ok(Self::TypeAnnotation(::std::boxed::Box::new(
14274                ::treesitter_types::runtime::maybe_grow_stack(|| {
14275                    <TypeAnnotation as ::treesitter_types::FromNode>::from_node(node, src)
14276                })?,
14277            ))),
14278            "type_predicate_annotation" => Ok(Self::TypePredicateAnnotation(
14279                ::std::boxed::Box::new(::treesitter_types::runtime::maybe_grow_stack(|| {
14280                    <TypePredicateAnnotation as ::treesitter_types::FromNode>::from_node(node, src)
14281                })?),
14282            )),
14283            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
14284        }
14285    }
14286}
14287impl ::treesitter_types::Spanned for MethodSignatureReturnType<'_> {
14288    fn span(&self) -> ::treesitter_types::Span {
14289        match self {
14290            Self::AssertsAnnotation(inner) => inner.span(),
14291            Self::TypeAnnotation(inner) => inner.span(),
14292            Self::TypePredicateAnnotation(inner) => inner.span(),
14293        }
14294    }
14295}
14296#[derive(Debug, Clone, PartialEq, Eq)]
14297pub enum MethodSignatureChildren<'tree> {
14298    AccessibilityModifier(::std::boxed::Box<AccessibilityModifier<'tree>>),
14299    OverrideModifier(::std::boxed::Box<OverrideModifier<'tree>>),
14300}
14301impl<'tree> ::treesitter_types::FromNode<'tree> for MethodSignatureChildren<'tree> {
14302    #[allow(clippy::collapsible_else_if)]
14303    fn from_node(
14304        node: ::treesitter_types::tree_sitter::Node<'tree>,
14305        src: &'tree [u8],
14306    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
14307        match node.kind() {
14308            "accessibility_modifier" => Ok(Self::AccessibilityModifier(::std::boxed::Box::new(
14309                ::treesitter_types::runtime::maybe_grow_stack(|| {
14310                    <AccessibilityModifier as ::treesitter_types::FromNode>::from_node(node, src)
14311                })?,
14312            ))),
14313            "override_modifier" => Ok(Self::OverrideModifier(::std::boxed::Box::new(
14314                ::treesitter_types::runtime::maybe_grow_stack(|| {
14315                    <OverrideModifier as ::treesitter_types::FromNode>::from_node(node, src)
14316                })?,
14317            ))),
14318            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
14319        }
14320    }
14321}
14322impl ::treesitter_types::Spanned for MethodSignatureChildren<'_> {
14323    fn span(&self) -> ::treesitter_types::Span {
14324        match self {
14325            Self::AccessibilityModifier(inner) => inner.span(),
14326            Self::OverrideModifier(inner) => inner.span(),
14327        }
14328    }
14329}
14330#[derive(Debug, Clone, PartialEq, Eq)]
14331pub enum ModuleName<'tree> {
14332    Identifier(::std::boxed::Box<Identifier<'tree>>),
14333    NestedIdentifier(::std::boxed::Box<NestedIdentifier<'tree>>),
14334    String(::std::boxed::Box<String<'tree>>),
14335}
14336impl<'tree> ::treesitter_types::FromNode<'tree> for ModuleName<'tree> {
14337    #[allow(clippy::collapsible_else_if)]
14338    fn from_node(
14339        node: ::treesitter_types::tree_sitter::Node<'tree>,
14340        src: &'tree [u8],
14341    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
14342        match node.kind() {
14343            "identifier" => Ok(Self::Identifier(::std::boxed::Box::new(
14344                ::treesitter_types::runtime::maybe_grow_stack(|| {
14345                    <Identifier as ::treesitter_types::FromNode>::from_node(node, src)
14346                })?,
14347            ))),
14348            "nested_identifier" => Ok(Self::NestedIdentifier(::std::boxed::Box::new(
14349                ::treesitter_types::runtime::maybe_grow_stack(|| {
14350                    <NestedIdentifier as ::treesitter_types::FromNode>::from_node(node, src)
14351                })?,
14352            ))),
14353            "string" => Ok(Self::String(::std::boxed::Box::new(
14354                ::treesitter_types::runtime::maybe_grow_stack(|| {
14355                    <String as ::treesitter_types::FromNode>::from_node(node, src)
14356                })?,
14357            ))),
14358            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
14359        }
14360    }
14361}
14362impl ::treesitter_types::Spanned for ModuleName<'_> {
14363    fn span(&self) -> ::treesitter_types::Span {
14364        match self {
14365            Self::Identifier(inner) => inner.span(),
14366            Self::NestedIdentifier(inner) => inner.span(),
14367            Self::String(inner) => inner.span(),
14368        }
14369    }
14370}
14371#[derive(Debug, Clone, PartialEq, Eq)]
14372pub enum NamespaceExportChildren<'tree> {
14373    Identifier(::std::boxed::Box<Identifier<'tree>>),
14374    String(::std::boxed::Box<String<'tree>>),
14375}
14376impl<'tree> ::treesitter_types::FromNode<'tree> for NamespaceExportChildren<'tree> {
14377    #[allow(clippy::collapsible_else_if)]
14378    fn from_node(
14379        node: ::treesitter_types::tree_sitter::Node<'tree>,
14380        src: &'tree [u8],
14381    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
14382        match node.kind() {
14383            "identifier" => Ok(Self::Identifier(::std::boxed::Box::new(
14384                ::treesitter_types::runtime::maybe_grow_stack(|| {
14385                    <Identifier as ::treesitter_types::FromNode>::from_node(node, src)
14386                })?,
14387            ))),
14388            "string" => Ok(Self::String(::std::boxed::Box::new(
14389                ::treesitter_types::runtime::maybe_grow_stack(|| {
14390                    <String as ::treesitter_types::FromNode>::from_node(node, src)
14391                })?,
14392            ))),
14393            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
14394        }
14395    }
14396}
14397impl ::treesitter_types::Spanned for NamespaceExportChildren<'_> {
14398    fn span(&self) -> ::treesitter_types::Span {
14399        match self {
14400            Self::Identifier(inner) => inner.span(),
14401            Self::String(inner) => inner.span(),
14402        }
14403    }
14404}
14405#[derive(Debug, Clone, PartialEq, Eq)]
14406pub enum NestedIdentifierObject<'tree> {
14407    Identifier(::std::boxed::Box<Identifier<'tree>>),
14408    MemberExpression(::std::boxed::Box<MemberExpression<'tree>>),
14409}
14410impl<'tree> ::treesitter_types::FromNode<'tree> for NestedIdentifierObject<'tree> {
14411    #[allow(clippy::collapsible_else_if)]
14412    fn from_node(
14413        node: ::treesitter_types::tree_sitter::Node<'tree>,
14414        src: &'tree [u8],
14415    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
14416        match node.kind() {
14417            "identifier" => Ok(Self::Identifier(::std::boxed::Box::new(
14418                ::treesitter_types::runtime::maybe_grow_stack(|| {
14419                    <Identifier as ::treesitter_types::FromNode>::from_node(node, src)
14420                })?,
14421            ))),
14422            "member_expression" => Ok(Self::MemberExpression(::std::boxed::Box::new(
14423                ::treesitter_types::runtime::maybe_grow_stack(|| {
14424                    <MemberExpression as ::treesitter_types::FromNode>::from_node(node, src)
14425                })?,
14426            ))),
14427            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
14428        }
14429    }
14430}
14431impl ::treesitter_types::Spanned for NestedIdentifierObject<'_> {
14432    fn span(&self) -> ::treesitter_types::Span {
14433        match self {
14434            Self::Identifier(inner) => inner.span(),
14435            Self::MemberExpression(inner) => inner.span(),
14436        }
14437    }
14438}
14439#[derive(Debug, Clone, PartialEq, Eq)]
14440pub enum NestedTypeIdentifierModule<'tree> {
14441    Identifier(::std::boxed::Box<Identifier<'tree>>),
14442    NestedIdentifier(::std::boxed::Box<NestedIdentifier<'tree>>),
14443}
14444impl<'tree> ::treesitter_types::FromNode<'tree> for NestedTypeIdentifierModule<'tree> {
14445    #[allow(clippy::collapsible_else_if)]
14446    fn from_node(
14447        node: ::treesitter_types::tree_sitter::Node<'tree>,
14448        src: &'tree [u8],
14449    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
14450        match node.kind() {
14451            "identifier" => Ok(Self::Identifier(::std::boxed::Box::new(
14452                ::treesitter_types::runtime::maybe_grow_stack(|| {
14453                    <Identifier as ::treesitter_types::FromNode>::from_node(node, src)
14454                })?,
14455            ))),
14456            "nested_identifier" => Ok(Self::NestedIdentifier(::std::boxed::Box::new(
14457                ::treesitter_types::runtime::maybe_grow_stack(|| {
14458                    <NestedIdentifier as ::treesitter_types::FromNode>::from_node(node, src)
14459                })?,
14460            ))),
14461            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
14462        }
14463    }
14464}
14465impl ::treesitter_types::Spanned for NestedTypeIdentifierModule<'_> {
14466    fn span(&self) -> ::treesitter_types::Span {
14467        match self {
14468            Self::Identifier(inner) => inner.span(),
14469            Self::NestedIdentifier(inner) => inner.span(),
14470        }
14471    }
14472}
14473#[derive(Debug, Clone, PartialEq, Eq)]
14474pub enum ObjectChildren<'tree> {
14475    MethodDefinition(::std::boxed::Box<MethodDefinition<'tree>>),
14476    Pair(::std::boxed::Box<Pair<'tree>>),
14477    ShorthandPropertyIdentifier(::std::boxed::Box<ShorthandPropertyIdentifier<'tree>>),
14478    SpreadElement(::std::boxed::Box<SpreadElement<'tree>>),
14479}
14480impl<'tree> ::treesitter_types::FromNode<'tree> for ObjectChildren<'tree> {
14481    #[allow(clippy::collapsible_else_if)]
14482    fn from_node(
14483        node: ::treesitter_types::tree_sitter::Node<'tree>,
14484        src: &'tree [u8],
14485    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
14486        match node.kind() {
14487            "method_definition" => Ok(Self::MethodDefinition(::std::boxed::Box::new(
14488                ::treesitter_types::runtime::maybe_grow_stack(|| {
14489                    <MethodDefinition as ::treesitter_types::FromNode>::from_node(node, src)
14490                })?,
14491            ))),
14492            "pair" => Ok(Self::Pair(::std::boxed::Box::new(
14493                ::treesitter_types::runtime::maybe_grow_stack(|| {
14494                    <Pair as ::treesitter_types::FromNode>::from_node(node, src)
14495                })?,
14496            ))),
14497            "shorthand_property_identifier" => Ok(Self::ShorthandPropertyIdentifier(
14498                ::std::boxed::Box::new(::treesitter_types::runtime::maybe_grow_stack(|| {
14499                    <ShorthandPropertyIdentifier as ::treesitter_types::FromNode>::from_node(
14500                        node, src,
14501                    )
14502                })?),
14503            )),
14504            "spread_element" => Ok(Self::SpreadElement(::std::boxed::Box::new(
14505                ::treesitter_types::runtime::maybe_grow_stack(|| {
14506                    <SpreadElement as ::treesitter_types::FromNode>::from_node(node, src)
14507                })?,
14508            ))),
14509            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
14510        }
14511    }
14512}
14513impl ::treesitter_types::Spanned for ObjectChildren<'_> {
14514    fn span(&self) -> ::treesitter_types::Span {
14515        match self {
14516            Self::MethodDefinition(inner) => inner.span(),
14517            Self::Pair(inner) => inner.span(),
14518            Self::ShorthandPropertyIdentifier(inner) => inner.span(),
14519            Self::SpreadElement(inner) => inner.span(),
14520        }
14521    }
14522}
14523#[derive(Debug, Clone, PartialEq, Eq)]
14524pub enum ObjectAssignmentPatternLeft<'tree> {
14525    ArrayPattern(::std::boxed::Box<ArrayPattern<'tree>>),
14526    ObjectPattern(::std::boxed::Box<ObjectPattern<'tree>>),
14527    ShorthandPropertyIdentifierPattern(
14528        ::std::boxed::Box<ShorthandPropertyIdentifierPattern<'tree>>,
14529    ),
14530}
14531impl<'tree> ::treesitter_types::FromNode<'tree> for ObjectAssignmentPatternLeft<'tree> {
14532    #[allow(clippy::collapsible_else_if)]
14533    fn from_node(
14534        node: ::treesitter_types::tree_sitter::Node<'tree>,
14535        src: &'tree [u8],
14536    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
14537        match node.kind() {
14538            "array_pattern" => Ok(Self::ArrayPattern(::std::boxed::Box::new(
14539                ::treesitter_types::runtime::maybe_grow_stack(|| {
14540                    <ArrayPattern as ::treesitter_types::FromNode>::from_node(node, src)
14541                })?,
14542            ))),
14543            "object_pattern" => Ok(Self::ObjectPattern(::std::boxed::Box::new(
14544                ::treesitter_types::runtime::maybe_grow_stack(|| {
14545                    <ObjectPattern as ::treesitter_types::FromNode>::from_node(node, src)
14546                })?,
14547            ))),
14548            "shorthand_property_identifier_pattern" => {
14549                Ok(Self::ShorthandPropertyIdentifierPattern(
14550                    ::std::boxed::Box::new(::treesitter_types::runtime::maybe_grow_stack(|| {
14551                        <ShorthandPropertyIdentifierPattern as ::treesitter_types::FromNode>::from_node(
14552                                node,
14553                                src,
14554                            )
14555                    })?),
14556                ))
14557            }
14558            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
14559        }
14560    }
14561}
14562impl ::treesitter_types::Spanned for ObjectAssignmentPatternLeft<'_> {
14563    fn span(&self) -> ::treesitter_types::Span {
14564        match self {
14565            Self::ArrayPattern(inner) => inner.span(),
14566            Self::ObjectPattern(inner) => inner.span(),
14567            Self::ShorthandPropertyIdentifierPattern(inner) => inner.span(),
14568        }
14569    }
14570}
14571#[derive(Debug, Clone, PartialEq, Eq)]
14572pub enum ObjectPatternChildren<'tree> {
14573    ObjectAssignmentPattern(::std::boxed::Box<ObjectAssignmentPattern<'tree>>),
14574    PairPattern(::std::boxed::Box<PairPattern<'tree>>),
14575    RestPattern(::std::boxed::Box<RestPattern<'tree>>),
14576    ShorthandPropertyIdentifierPattern(
14577        ::std::boxed::Box<ShorthandPropertyIdentifierPattern<'tree>>,
14578    ),
14579}
14580impl<'tree> ::treesitter_types::FromNode<'tree> for ObjectPatternChildren<'tree> {
14581    #[allow(clippy::collapsible_else_if)]
14582    fn from_node(
14583        node: ::treesitter_types::tree_sitter::Node<'tree>,
14584        src: &'tree [u8],
14585    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
14586        match node.kind() {
14587            "object_assignment_pattern" => Ok(Self::ObjectAssignmentPattern(
14588                ::std::boxed::Box::new(::treesitter_types::runtime::maybe_grow_stack(|| {
14589                    <ObjectAssignmentPattern as ::treesitter_types::FromNode>::from_node(node, src)
14590                })?),
14591            )),
14592            "pair_pattern" => Ok(Self::PairPattern(::std::boxed::Box::new(
14593                ::treesitter_types::runtime::maybe_grow_stack(|| {
14594                    <PairPattern as ::treesitter_types::FromNode>::from_node(node, src)
14595                })?,
14596            ))),
14597            "rest_pattern" => Ok(Self::RestPattern(::std::boxed::Box::new(
14598                ::treesitter_types::runtime::maybe_grow_stack(|| {
14599                    <RestPattern as ::treesitter_types::FromNode>::from_node(node, src)
14600                })?,
14601            ))),
14602            "shorthand_property_identifier_pattern" => {
14603                Ok(Self::ShorthandPropertyIdentifierPattern(
14604                    ::std::boxed::Box::new(::treesitter_types::runtime::maybe_grow_stack(|| {
14605                        <ShorthandPropertyIdentifierPattern as ::treesitter_types::FromNode>::from_node(
14606                                node,
14607                                src,
14608                            )
14609                    })?),
14610                ))
14611            }
14612            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
14613        }
14614    }
14615}
14616impl ::treesitter_types::Spanned for ObjectPatternChildren<'_> {
14617    fn span(&self) -> ::treesitter_types::Span {
14618        match self {
14619            Self::ObjectAssignmentPattern(inner) => inner.span(),
14620            Self::PairPattern(inner) => inner.span(),
14621            Self::RestPattern(inner) => inner.span(),
14622            Self::ShorthandPropertyIdentifierPattern(inner) => inner.span(),
14623        }
14624    }
14625}
14626#[derive(Debug, Clone, PartialEq, Eq)]
14627pub enum ObjectTypeChildren<'tree> {
14628    CallSignature(::std::boxed::Box<CallSignature<'tree>>),
14629    ConstructSignature(::std::boxed::Box<ConstructSignature<'tree>>),
14630    ExportStatement(::std::boxed::Box<ExportStatement<'tree>>),
14631    IndexSignature(::std::boxed::Box<IndexSignature<'tree>>),
14632    MethodSignature(::std::boxed::Box<MethodSignature<'tree>>),
14633    PropertySignature(::std::boxed::Box<PropertySignature<'tree>>),
14634}
14635impl<'tree> ::treesitter_types::FromNode<'tree> for ObjectTypeChildren<'tree> {
14636    #[allow(clippy::collapsible_else_if)]
14637    fn from_node(
14638        node: ::treesitter_types::tree_sitter::Node<'tree>,
14639        src: &'tree [u8],
14640    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
14641        match node.kind() {
14642            "call_signature" => Ok(Self::CallSignature(::std::boxed::Box::new(
14643                ::treesitter_types::runtime::maybe_grow_stack(|| {
14644                    <CallSignature as ::treesitter_types::FromNode>::from_node(node, src)
14645                })?,
14646            ))),
14647            "construct_signature" => Ok(Self::ConstructSignature(::std::boxed::Box::new(
14648                ::treesitter_types::runtime::maybe_grow_stack(|| {
14649                    <ConstructSignature as ::treesitter_types::FromNode>::from_node(node, src)
14650                })?,
14651            ))),
14652            "export_statement" => Ok(Self::ExportStatement(::std::boxed::Box::new(
14653                ::treesitter_types::runtime::maybe_grow_stack(|| {
14654                    <ExportStatement as ::treesitter_types::FromNode>::from_node(node, src)
14655                })?,
14656            ))),
14657            "index_signature" => Ok(Self::IndexSignature(::std::boxed::Box::new(
14658                ::treesitter_types::runtime::maybe_grow_stack(|| {
14659                    <IndexSignature as ::treesitter_types::FromNode>::from_node(node, src)
14660                })?,
14661            ))),
14662            "method_signature" => Ok(Self::MethodSignature(::std::boxed::Box::new(
14663                ::treesitter_types::runtime::maybe_grow_stack(|| {
14664                    <MethodSignature as ::treesitter_types::FromNode>::from_node(node, src)
14665                })?,
14666            ))),
14667            "property_signature" => Ok(Self::PropertySignature(::std::boxed::Box::new(
14668                ::treesitter_types::runtime::maybe_grow_stack(|| {
14669                    <PropertySignature as ::treesitter_types::FromNode>::from_node(node, src)
14670                })?,
14671            ))),
14672            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
14673        }
14674    }
14675}
14676impl ::treesitter_types::Spanned for ObjectTypeChildren<'_> {
14677    fn span(&self) -> ::treesitter_types::Span {
14678        match self {
14679            Self::CallSignature(inner) => inner.span(),
14680            Self::ConstructSignature(inner) => inner.span(),
14681            Self::ExportStatement(inner) => inner.span(),
14682            Self::IndexSignature(inner) => inner.span(),
14683            Self::MethodSignature(inner) => inner.span(),
14684            Self::PropertySignature(inner) => inner.span(),
14685        }
14686    }
14687}
14688#[derive(Debug, Clone, PartialEq, Eq)]
14689pub enum OptionalParameterPattern<'tree> {
14690    Pattern(::std::boxed::Box<Pattern<'tree>>),
14691    This(::std::boxed::Box<This<'tree>>),
14692}
14693impl<'tree> ::treesitter_types::FromNode<'tree> for OptionalParameterPattern<'tree> {
14694    #[allow(clippy::collapsible_else_if)]
14695    fn from_node(
14696        node: ::treesitter_types::tree_sitter::Node<'tree>,
14697        src: &'tree [u8],
14698    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
14699        match node.kind() {
14700            "this" => Ok(Self::This(::std::boxed::Box::new(
14701                ::treesitter_types::runtime::maybe_grow_stack(|| {
14702                    <This as ::treesitter_types::FromNode>::from_node(node, src)
14703                })?,
14704            ))),
14705            _other => {
14706                if let Ok(v) = ::treesitter_types::runtime::maybe_grow_stack(|| {
14707                    <Pattern as ::treesitter_types::FromNode>::from_node(node, src)
14708                }) {
14709                    Ok(Self::Pattern(::std::boxed::Box::new(v)))
14710                } else {
14711                    Err(::treesitter_types::ParseError::unexpected_kind(
14712                        _other, node,
14713                    ))
14714                }
14715            }
14716        }
14717    }
14718}
14719impl ::treesitter_types::Spanned for OptionalParameterPattern<'_> {
14720    fn span(&self) -> ::treesitter_types::Span {
14721        match self {
14722            Self::Pattern(inner) => inner.span(),
14723            Self::This(inner) => inner.span(),
14724        }
14725    }
14726}
14727#[derive(Debug, Clone, PartialEq, Eq)]
14728pub enum OptionalParameterChildren<'tree> {
14729    AccessibilityModifier(::std::boxed::Box<AccessibilityModifier<'tree>>),
14730    OverrideModifier(::std::boxed::Box<OverrideModifier<'tree>>),
14731}
14732impl<'tree> ::treesitter_types::FromNode<'tree> for OptionalParameterChildren<'tree> {
14733    #[allow(clippy::collapsible_else_if)]
14734    fn from_node(
14735        node: ::treesitter_types::tree_sitter::Node<'tree>,
14736        src: &'tree [u8],
14737    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
14738        match node.kind() {
14739            "accessibility_modifier" => Ok(Self::AccessibilityModifier(::std::boxed::Box::new(
14740                ::treesitter_types::runtime::maybe_grow_stack(|| {
14741                    <AccessibilityModifier as ::treesitter_types::FromNode>::from_node(node, src)
14742                })?,
14743            ))),
14744            "override_modifier" => Ok(Self::OverrideModifier(::std::boxed::Box::new(
14745                ::treesitter_types::runtime::maybe_grow_stack(|| {
14746                    <OverrideModifier as ::treesitter_types::FromNode>::from_node(node, src)
14747                })?,
14748            ))),
14749            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
14750        }
14751    }
14752}
14753impl ::treesitter_types::Spanned for OptionalParameterChildren<'_> {
14754    fn span(&self) -> ::treesitter_types::Span {
14755        match self {
14756            Self::AccessibilityModifier(inner) => inner.span(),
14757            Self::OverrideModifier(inner) => inner.span(),
14758        }
14759    }
14760}
14761#[derive(Debug, Clone, PartialEq, Eq)]
14762pub enum PairKey<'tree> {
14763    ComputedPropertyName(::std::boxed::Box<ComputedPropertyName<'tree>>),
14764    Number(::std::boxed::Box<Number<'tree>>),
14765    PrivatePropertyIdentifier(::std::boxed::Box<PrivatePropertyIdentifier<'tree>>),
14766    PropertyIdentifier(::std::boxed::Box<PropertyIdentifier<'tree>>),
14767    String(::std::boxed::Box<String<'tree>>),
14768}
14769impl<'tree> ::treesitter_types::FromNode<'tree> for PairKey<'tree> {
14770    #[allow(clippy::collapsible_else_if)]
14771    fn from_node(
14772        node: ::treesitter_types::tree_sitter::Node<'tree>,
14773        src: &'tree [u8],
14774    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
14775        match node.kind() {
14776            "computed_property_name" => Ok(Self::ComputedPropertyName(::std::boxed::Box::new(
14777                ::treesitter_types::runtime::maybe_grow_stack(|| {
14778                    <ComputedPropertyName as ::treesitter_types::FromNode>::from_node(node, src)
14779                })?,
14780            ))),
14781            "number" => Ok(Self::Number(::std::boxed::Box::new(
14782                ::treesitter_types::runtime::maybe_grow_stack(|| {
14783                    <Number as ::treesitter_types::FromNode>::from_node(node, src)
14784                })?,
14785            ))),
14786            "private_property_identifier" => Ok(Self::PrivatePropertyIdentifier(
14787                ::std::boxed::Box::new(::treesitter_types::runtime::maybe_grow_stack(|| {
14788                    <PrivatePropertyIdentifier as ::treesitter_types::FromNode>::from_node(
14789                        node, src,
14790                    )
14791                })?),
14792            )),
14793            "property_identifier" => Ok(Self::PropertyIdentifier(::std::boxed::Box::new(
14794                ::treesitter_types::runtime::maybe_grow_stack(|| {
14795                    <PropertyIdentifier as ::treesitter_types::FromNode>::from_node(node, src)
14796                })?,
14797            ))),
14798            "string" => Ok(Self::String(::std::boxed::Box::new(
14799                ::treesitter_types::runtime::maybe_grow_stack(|| {
14800                    <String as ::treesitter_types::FromNode>::from_node(node, src)
14801                })?,
14802            ))),
14803            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
14804        }
14805    }
14806}
14807impl ::treesitter_types::Spanned for PairKey<'_> {
14808    fn span(&self) -> ::treesitter_types::Span {
14809        match self {
14810            Self::ComputedPropertyName(inner) => inner.span(),
14811            Self::Number(inner) => inner.span(),
14812            Self::PrivatePropertyIdentifier(inner) => inner.span(),
14813            Self::PropertyIdentifier(inner) => inner.span(),
14814            Self::String(inner) => inner.span(),
14815        }
14816    }
14817}
14818#[derive(Debug, Clone, PartialEq, Eq)]
14819pub enum PairPatternKey<'tree> {
14820    ComputedPropertyName(::std::boxed::Box<ComputedPropertyName<'tree>>),
14821    Number(::std::boxed::Box<Number<'tree>>),
14822    PrivatePropertyIdentifier(::std::boxed::Box<PrivatePropertyIdentifier<'tree>>),
14823    PropertyIdentifier(::std::boxed::Box<PropertyIdentifier<'tree>>),
14824    String(::std::boxed::Box<String<'tree>>),
14825}
14826impl<'tree> ::treesitter_types::FromNode<'tree> for PairPatternKey<'tree> {
14827    #[allow(clippy::collapsible_else_if)]
14828    fn from_node(
14829        node: ::treesitter_types::tree_sitter::Node<'tree>,
14830        src: &'tree [u8],
14831    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
14832        match node.kind() {
14833            "computed_property_name" => Ok(Self::ComputedPropertyName(::std::boxed::Box::new(
14834                ::treesitter_types::runtime::maybe_grow_stack(|| {
14835                    <ComputedPropertyName as ::treesitter_types::FromNode>::from_node(node, src)
14836                })?,
14837            ))),
14838            "number" => Ok(Self::Number(::std::boxed::Box::new(
14839                ::treesitter_types::runtime::maybe_grow_stack(|| {
14840                    <Number as ::treesitter_types::FromNode>::from_node(node, src)
14841                })?,
14842            ))),
14843            "private_property_identifier" => Ok(Self::PrivatePropertyIdentifier(
14844                ::std::boxed::Box::new(::treesitter_types::runtime::maybe_grow_stack(|| {
14845                    <PrivatePropertyIdentifier as ::treesitter_types::FromNode>::from_node(
14846                        node, src,
14847                    )
14848                })?),
14849            )),
14850            "property_identifier" => Ok(Self::PropertyIdentifier(::std::boxed::Box::new(
14851                ::treesitter_types::runtime::maybe_grow_stack(|| {
14852                    <PropertyIdentifier as ::treesitter_types::FromNode>::from_node(node, src)
14853                })?,
14854            ))),
14855            "string" => Ok(Self::String(::std::boxed::Box::new(
14856                ::treesitter_types::runtime::maybe_grow_stack(|| {
14857                    <String as ::treesitter_types::FromNode>::from_node(node, src)
14858                })?,
14859            ))),
14860            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
14861        }
14862    }
14863}
14864impl ::treesitter_types::Spanned for PairPatternKey<'_> {
14865    fn span(&self) -> ::treesitter_types::Span {
14866        match self {
14867            Self::ComputedPropertyName(inner) => inner.span(),
14868            Self::Number(inner) => inner.span(),
14869            Self::PrivatePropertyIdentifier(inner) => inner.span(),
14870            Self::PropertyIdentifier(inner) => inner.span(),
14871            Self::String(inner) => inner.span(),
14872        }
14873    }
14874}
14875#[derive(Debug, Clone, PartialEq, Eq)]
14876pub enum PairPatternValue<'tree> {
14877    AssignmentPattern(::std::boxed::Box<AssignmentPattern<'tree>>),
14878    Pattern(::std::boxed::Box<Pattern<'tree>>),
14879}
14880impl<'tree> ::treesitter_types::FromNode<'tree> for PairPatternValue<'tree> {
14881    #[allow(clippy::collapsible_else_if)]
14882    fn from_node(
14883        node: ::treesitter_types::tree_sitter::Node<'tree>,
14884        src: &'tree [u8],
14885    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
14886        match node.kind() {
14887            "assignment_pattern" => Ok(Self::AssignmentPattern(::std::boxed::Box::new(
14888                ::treesitter_types::runtime::maybe_grow_stack(|| {
14889                    <AssignmentPattern as ::treesitter_types::FromNode>::from_node(node, src)
14890                })?,
14891            ))),
14892            _other => {
14893                if let Ok(v) = ::treesitter_types::runtime::maybe_grow_stack(|| {
14894                    <Pattern as ::treesitter_types::FromNode>::from_node(node, src)
14895                }) {
14896                    Ok(Self::Pattern(::std::boxed::Box::new(v)))
14897                } else {
14898                    Err(::treesitter_types::ParseError::unexpected_kind(
14899                        _other, node,
14900                    ))
14901                }
14902            }
14903        }
14904    }
14905}
14906impl ::treesitter_types::Spanned for PairPatternValue<'_> {
14907    fn span(&self) -> ::treesitter_types::Span {
14908        match self {
14909            Self::AssignmentPattern(inner) => inner.span(),
14910            Self::Pattern(inner) => inner.span(),
14911        }
14912    }
14913}
14914#[derive(Debug, Clone, PartialEq, Eq)]
14915pub enum ParenthesizedExpressionChildren<'tree> {
14916    CallExpression(::std::boxed::Box<CallExpression<'tree>>),
14917    Expression(::std::boxed::Box<Expression<'tree>>),
14918    Identifier(::std::boxed::Box<Identifier<'tree>>),
14919    MemberExpression(::std::boxed::Box<MemberExpression<'tree>>),
14920    SequenceExpression(::std::boxed::Box<SequenceExpression<'tree>>),
14921}
14922impl<'tree> ::treesitter_types::FromNode<'tree> for ParenthesizedExpressionChildren<'tree> {
14923    #[allow(clippy::collapsible_else_if)]
14924    fn from_node(
14925        node: ::treesitter_types::tree_sitter::Node<'tree>,
14926        src: &'tree [u8],
14927    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
14928        match node.kind() {
14929            "call_expression" => Ok(Self::CallExpression(::std::boxed::Box::new(
14930                ::treesitter_types::runtime::maybe_grow_stack(|| {
14931                    <CallExpression as ::treesitter_types::FromNode>::from_node(node, src)
14932                })?,
14933            ))),
14934            "identifier" => Ok(Self::Identifier(::std::boxed::Box::new(
14935                ::treesitter_types::runtime::maybe_grow_stack(|| {
14936                    <Identifier as ::treesitter_types::FromNode>::from_node(node, src)
14937                })?,
14938            ))),
14939            "member_expression" => Ok(Self::MemberExpression(::std::boxed::Box::new(
14940                ::treesitter_types::runtime::maybe_grow_stack(|| {
14941                    <MemberExpression as ::treesitter_types::FromNode>::from_node(node, src)
14942                })?,
14943            ))),
14944            "sequence_expression" => Ok(Self::SequenceExpression(::std::boxed::Box::new(
14945                ::treesitter_types::runtime::maybe_grow_stack(|| {
14946                    <SequenceExpression as ::treesitter_types::FromNode>::from_node(node, src)
14947                })?,
14948            ))),
14949            _other => {
14950                if let Ok(v) = ::treesitter_types::runtime::maybe_grow_stack(|| {
14951                    <Expression as ::treesitter_types::FromNode>::from_node(node, src)
14952                }) {
14953                    Ok(Self::Expression(::std::boxed::Box::new(v)))
14954                } else {
14955                    Err(::treesitter_types::ParseError::unexpected_kind(
14956                        _other, node,
14957                    ))
14958                }
14959            }
14960        }
14961    }
14962}
14963impl ::treesitter_types::Spanned for ParenthesizedExpressionChildren<'_> {
14964    fn span(&self) -> ::treesitter_types::Span {
14965        match self {
14966            Self::CallExpression(inner) => inner.span(),
14967            Self::Expression(inner) => inner.span(),
14968            Self::Identifier(inner) => inner.span(),
14969            Self::MemberExpression(inner) => inner.span(),
14970            Self::SequenceExpression(inner) => inner.span(),
14971        }
14972    }
14973}
14974#[derive(Debug, Clone, PartialEq, Eq)]
14975pub enum ProgramChildren<'tree> {
14976    HashBangLine(::std::boxed::Box<HashBangLine<'tree>>),
14977    Statement(::std::boxed::Box<Statement<'tree>>),
14978}
14979impl<'tree> ::treesitter_types::FromNode<'tree> for ProgramChildren<'tree> {
14980    #[allow(clippy::collapsible_else_if)]
14981    fn from_node(
14982        node: ::treesitter_types::tree_sitter::Node<'tree>,
14983        src: &'tree [u8],
14984    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
14985        match node.kind() {
14986            "hash_bang_line" => Ok(Self::HashBangLine(::std::boxed::Box::new(
14987                ::treesitter_types::runtime::maybe_grow_stack(|| {
14988                    <HashBangLine as ::treesitter_types::FromNode>::from_node(node, src)
14989                })?,
14990            ))),
14991            _other => {
14992                if let Ok(v) = ::treesitter_types::runtime::maybe_grow_stack(|| {
14993                    <Statement as ::treesitter_types::FromNode>::from_node(node, src)
14994                }) {
14995                    Ok(Self::Statement(::std::boxed::Box::new(v)))
14996                } else {
14997                    Err(::treesitter_types::ParseError::unexpected_kind(
14998                        _other, node,
14999                    ))
15000                }
15001            }
15002        }
15003    }
15004}
15005impl ::treesitter_types::Spanned for ProgramChildren<'_> {
15006    fn span(&self) -> ::treesitter_types::Span {
15007        match self {
15008            Self::HashBangLine(inner) => inner.span(),
15009            Self::Statement(inner) => inner.span(),
15010        }
15011    }
15012}
15013#[derive(Debug, Clone, PartialEq, Eq)]
15014pub enum PropertySignatureName<'tree> {
15015    ComputedPropertyName(::std::boxed::Box<ComputedPropertyName<'tree>>),
15016    Number(::std::boxed::Box<Number<'tree>>),
15017    PrivatePropertyIdentifier(::std::boxed::Box<PrivatePropertyIdentifier<'tree>>),
15018    PropertyIdentifier(::std::boxed::Box<PropertyIdentifier<'tree>>),
15019    String(::std::boxed::Box<String<'tree>>),
15020}
15021impl<'tree> ::treesitter_types::FromNode<'tree> for PropertySignatureName<'tree> {
15022    #[allow(clippy::collapsible_else_if)]
15023    fn from_node(
15024        node: ::treesitter_types::tree_sitter::Node<'tree>,
15025        src: &'tree [u8],
15026    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
15027        match node.kind() {
15028            "computed_property_name" => Ok(Self::ComputedPropertyName(::std::boxed::Box::new(
15029                ::treesitter_types::runtime::maybe_grow_stack(|| {
15030                    <ComputedPropertyName as ::treesitter_types::FromNode>::from_node(node, src)
15031                })?,
15032            ))),
15033            "number" => Ok(Self::Number(::std::boxed::Box::new(
15034                ::treesitter_types::runtime::maybe_grow_stack(|| {
15035                    <Number as ::treesitter_types::FromNode>::from_node(node, src)
15036                })?,
15037            ))),
15038            "private_property_identifier" => Ok(Self::PrivatePropertyIdentifier(
15039                ::std::boxed::Box::new(::treesitter_types::runtime::maybe_grow_stack(|| {
15040                    <PrivatePropertyIdentifier as ::treesitter_types::FromNode>::from_node(
15041                        node, src,
15042                    )
15043                })?),
15044            )),
15045            "property_identifier" => Ok(Self::PropertyIdentifier(::std::boxed::Box::new(
15046                ::treesitter_types::runtime::maybe_grow_stack(|| {
15047                    <PropertyIdentifier as ::treesitter_types::FromNode>::from_node(node, src)
15048                })?,
15049            ))),
15050            "string" => Ok(Self::String(::std::boxed::Box::new(
15051                ::treesitter_types::runtime::maybe_grow_stack(|| {
15052                    <String as ::treesitter_types::FromNode>::from_node(node, src)
15053                })?,
15054            ))),
15055            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
15056        }
15057    }
15058}
15059impl ::treesitter_types::Spanned for PropertySignatureName<'_> {
15060    fn span(&self) -> ::treesitter_types::Span {
15061        match self {
15062            Self::ComputedPropertyName(inner) => inner.span(),
15063            Self::Number(inner) => inner.span(),
15064            Self::PrivatePropertyIdentifier(inner) => inner.span(),
15065            Self::PropertyIdentifier(inner) => inner.span(),
15066            Self::String(inner) => inner.span(),
15067        }
15068    }
15069}
15070#[derive(Debug, Clone, PartialEq, Eq)]
15071pub enum PropertySignatureChildren<'tree> {
15072    AccessibilityModifier(::std::boxed::Box<AccessibilityModifier<'tree>>),
15073    OverrideModifier(::std::boxed::Box<OverrideModifier<'tree>>),
15074}
15075impl<'tree> ::treesitter_types::FromNode<'tree> for PropertySignatureChildren<'tree> {
15076    #[allow(clippy::collapsible_else_if)]
15077    fn from_node(
15078        node: ::treesitter_types::tree_sitter::Node<'tree>,
15079        src: &'tree [u8],
15080    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
15081        match node.kind() {
15082            "accessibility_modifier" => Ok(Self::AccessibilityModifier(::std::boxed::Box::new(
15083                ::treesitter_types::runtime::maybe_grow_stack(|| {
15084                    <AccessibilityModifier as ::treesitter_types::FromNode>::from_node(node, src)
15085                })?,
15086            ))),
15087            "override_modifier" => Ok(Self::OverrideModifier(::std::boxed::Box::new(
15088                ::treesitter_types::runtime::maybe_grow_stack(|| {
15089                    <OverrideModifier as ::treesitter_types::FromNode>::from_node(node, src)
15090                })?,
15091            ))),
15092            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
15093        }
15094    }
15095}
15096impl ::treesitter_types::Spanned for PropertySignatureChildren<'_> {
15097    fn span(&self) -> ::treesitter_types::Span {
15098        match self {
15099            Self::AccessibilityModifier(inner) => inner.span(),
15100            Self::OverrideModifier(inner) => inner.span(),
15101        }
15102    }
15103}
15104#[derive(Debug, Clone, PartialEq, Eq)]
15105pub enum PublicFieldDefinitionName<'tree> {
15106    ComputedPropertyName(::std::boxed::Box<ComputedPropertyName<'tree>>),
15107    Number(::std::boxed::Box<Number<'tree>>),
15108    PrivatePropertyIdentifier(::std::boxed::Box<PrivatePropertyIdentifier<'tree>>),
15109    PropertyIdentifier(::std::boxed::Box<PropertyIdentifier<'tree>>),
15110    String(::std::boxed::Box<String<'tree>>),
15111}
15112impl<'tree> ::treesitter_types::FromNode<'tree> for PublicFieldDefinitionName<'tree> {
15113    #[allow(clippy::collapsible_else_if)]
15114    fn from_node(
15115        node: ::treesitter_types::tree_sitter::Node<'tree>,
15116        src: &'tree [u8],
15117    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
15118        match node.kind() {
15119            "computed_property_name" => Ok(Self::ComputedPropertyName(::std::boxed::Box::new(
15120                ::treesitter_types::runtime::maybe_grow_stack(|| {
15121                    <ComputedPropertyName as ::treesitter_types::FromNode>::from_node(node, src)
15122                })?,
15123            ))),
15124            "number" => Ok(Self::Number(::std::boxed::Box::new(
15125                ::treesitter_types::runtime::maybe_grow_stack(|| {
15126                    <Number as ::treesitter_types::FromNode>::from_node(node, src)
15127                })?,
15128            ))),
15129            "private_property_identifier" => Ok(Self::PrivatePropertyIdentifier(
15130                ::std::boxed::Box::new(::treesitter_types::runtime::maybe_grow_stack(|| {
15131                    <PrivatePropertyIdentifier as ::treesitter_types::FromNode>::from_node(
15132                        node, src,
15133                    )
15134                })?),
15135            )),
15136            "property_identifier" => Ok(Self::PropertyIdentifier(::std::boxed::Box::new(
15137                ::treesitter_types::runtime::maybe_grow_stack(|| {
15138                    <PropertyIdentifier as ::treesitter_types::FromNode>::from_node(node, src)
15139                })?,
15140            ))),
15141            "string" => Ok(Self::String(::std::boxed::Box::new(
15142                ::treesitter_types::runtime::maybe_grow_stack(|| {
15143                    <String as ::treesitter_types::FromNode>::from_node(node, src)
15144                })?,
15145            ))),
15146            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
15147        }
15148    }
15149}
15150impl ::treesitter_types::Spanned for PublicFieldDefinitionName<'_> {
15151    fn span(&self) -> ::treesitter_types::Span {
15152        match self {
15153            Self::ComputedPropertyName(inner) => inner.span(),
15154            Self::Number(inner) => inner.span(),
15155            Self::PrivatePropertyIdentifier(inner) => inner.span(),
15156            Self::PropertyIdentifier(inner) => inner.span(),
15157            Self::String(inner) => inner.span(),
15158        }
15159    }
15160}
15161#[derive(Debug, Clone, PartialEq, Eq)]
15162pub enum PublicFieldDefinitionChildren<'tree> {
15163    AccessibilityModifier(::std::boxed::Box<AccessibilityModifier<'tree>>),
15164    OverrideModifier(::std::boxed::Box<OverrideModifier<'tree>>),
15165}
15166impl<'tree> ::treesitter_types::FromNode<'tree> for PublicFieldDefinitionChildren<'tree> {
15167    #[allow(clippy::collapsible_else_if)]
15168    fn from_node(
15169        node: ::treesitter_types::tree_sitter::Node<'tree>,
15170        src: &'tree [u8],
15171    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
15172        match node.kind() {
15173            "accessibility_modifier" => Ok(Self::AccessibilityModifier(::std::boxed::Box::new(
15174                ::treesitter_types::runtime::maybe_grow_stack(|| {
15175                    <AccessibilityModifier as ::treesitter_types::FromNode>::from_node(node, src)
15176                })?,
15177            ))),
15178            "override_modifier" => Ok(Self::OverrideModifier(::std::boxed::Box::new(
15179                ::treesitter_types::runtime::maybe_grow_stack(|| {
15180                    <OverrideModifier as ::treesitter_types::FromNode>::from_node(node, src)
15181                })?,
15182            ))),
15183            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
15184        }
15185    }
15186}
15187impl ::treesitter_types::Spanned for PublicFieldDefinitionChildren<'_> {
15188    fn span(&self) -> ::treesitter_types::Span {
15189        match self {
15190            Self::AccessibilityModifier(inner) => inner.span(),
15191            Self::OverrideModifier(inner) => inner.span(),
15192        }
15193    }
15194}
15195#[derive(Debug, Clone, PartialEq, Eq)]
15196pub enum RequiredParameterName<'tree> {
15197    Identifier(::std::boxed::Box<Identifier<'tree>>),
15198    RestPattern(::std::boxed::Box<RestPattern<'tree>>),
15199}
15200impl<'tree> ::treesitter_types::FromNode<'tree> for RequiredParameterName<'tree> {
15201    #[allow(clippy::collapsible_else_if)]
15202    fn from_node(
15203        node: ::treesitter_types::tree_sitter::Node<'tree>,
15204        src: &'tree [u8],
15205    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
15206        match node.kind() {
15207            "identifier" => Ok(Self::Identifier(::std::boxed::Box::new(
15208                ::treesitter_types::runtime::maybe_grow_stack(|| {
15209                    <Identifier as ::treesitter_types::FromNode>::from_node(node, src)
15210                })?,
15211            ))),
15212            "rest_pattern" => Ok(Self::RestPattern(::std::boxed::Box::new(
15213                ::treesitter_types::runtime::maybe_grow_stack(|| {
15214                    <RestPattern as ::treesitter_types::FromNode>::from_node(node, src)
15215                })?,
15216            ))),
15217            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
15218        }
15219    }
15220}
15221impl ::treesitter_types::Spanned for RequiredParameterName<'_> {
15222    fn span(&self) -> ::treesitter_types::Span {
15223        match self {
15224            Self::Identifier(inner) => inner.span(),
15225            Self::RestPattern(inner) => inner.span(),
15226        }
15227    }
15228}
15229#[derive(Debug, Clone, PartialEq, Eq)]
15230pub enum RequiredParameterPattern<'tree> {
15231    Pattern(::std::boxed::Box<Pattern<'tree>>),
15232    This(::std::boxed::Box<This<'tree>>),
15233}
15234impl<'tree> ::treesitter_types::FromNode<'tree> for RequiredParameterPattern<'tree> {
15235    #[allow(clippy::collapsible_else_if)]
15236    fn from_node(
15237        node: ::treesitter_types::tree_sitter::Node<'tree>,
15238        src: &'tree [u8],
15239    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
15240        match node.kind() {
15241            "this" => Ok(Self::This(::std::boxed::Box::new(
15242                ::treesitter_types::runtime::maybe_grow_stack(|| {
15243                    <This as ::treesitter_types::FromNode>::from_node(node, src)
15244                })?,
15245            ))),
15246            _other => {
15247                if let Ok(v) = ::treesitter_types::runtime::maybe_grow_stack(|| {
15248                    <Pattern as ::treesitter_types::FromNode>::from_node(node, src)
15249                }) {
15250                    Ok(Self::Pattern(::std::boxed::Box::new(v)))
15251                } else {
15252                    Err(::treesitter_types::ParseError::unexpected_kind(
15253                        _other, node,
15254                    ))
15255                }
15256            }
15257        }
15258    }
15259}
15260impl ::treesitter_types::Spanned for RequiredParameterPattern<'_> {
15261    fn span(&self) -> ::treesitter_types::Span {
15262        match self {
15263            Self::Pattern(inner) => inner.span(),
15264            Self::This(inner) => inner.span(),
15265        }
15266    }
15267}
15268#[derive(Debug, Clone, PartialEq, Eq)]
15269pub enum RequiredParameterChildren<'tree> {
15270    AccessibilityModifier(::std::boxed::Box<AccessibilityModifier<'tree>>),
15271    OverrideModifier(::std::boxed::Box<OverrideModifier<'tree>>),
15272}
15273impl<'tree> ::treesitter_types::FromNode<'tree> for RequiredParameterChildren<'tree> {
15274    #[allow(clippy::collapsible_else_if)]
15275    fn from_node(
15276        node: ::treesitter_types::tree_sitter::Node<'tree>,
15277        src: &'tree [u8],
15278    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
15279        match node.kind() {
15280            "accessibility_modifier" => Ok(Self::AccessibilityModifier(::std::boxed::Box::new(
15281                ::treesitter_types::runtime::maybe_grow_stack(|| {
15282                    <AccessibilityModifier as ::treesitter_types::FromNode>::from_node(node, src)
15283                })?,
15284            ))),
15285            "override_modifier" => Ok(Self::OverrideModifier(::std::boxed::Box::new(
15286                ::treesitter_types::runtime::maybe_grow_stack(|| {
15287                    <OverrideModifier as ::treesitter_types::FromNode>::from_node(node, src)
15288                })?,
15289            ))),
15290            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
15291        }
15292    }
15293}
15294impl ::treesitter_types::Spanned for RequiredParameterChildren<'_> {
15295    fn span(&self) -> ::treesitter_types::Span {
15296        match self {
15297            Self::AccessibilityModifier(inner) => inner.span(),
15298            Self::OverrideModifier(inner) => inner.span(),
15299        }
15300    }
15301}
15302#[derive(Debug, Clone, PartialEq, Eq)]
15303pub enum RestPatternChildren<'tree> {
15304    ArrayPattern(::std::boxed::Box<ArrayPattern<'tree>>),
15305    Identifier(::std::boxed::Box<Identifier<'tree>>),
15306    MemberExpression(::std::boxed::Box<MemberExpression<'tree>>),
15307    NonNullExpression(::std::boxed::Box<NonNullExpression<'tree>>),
15308    ObjectPattern(::std::boxed::Box<ObjectPattern<'tree>>),
15309    SubscriptExpression(::std::boxed::Box<SubscriptExpression<'tree>>),
15310    Undefined(::std::boxed::Box<Undefined<'tree>>),
15311}
15312impl<'tree> ::treesitter_types::FromNode<'tree> for RestPatternChildren<'tree> {
15313    #[allow(clippy::collapsible_else_if)]
15314    fn from_node(
15315        node: ::treesitter_types::tree_sitter::Node<'tree>,
15316        src: &'tree [u8],
15317    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
15318        match node.kind() {
15319            "array_pattern" => Ok(Self::ArrayPattern(::std::boxed::Box::new(
15320                ::treesitter_types::runtime::maybe_grow_stack(|| {
15321                    <ArrayPattern as ::treesitter_types::FromNode>::from_node(node, src)
15322                })?,
15323            ))),
15324            "identifier" => Ok(Self::Identifier(::std::boxed::Box::new(
15325                ::treesitter_types::runtime::maybe_grow_stack(|| {
15326                    <Identifier as ::treesitter_types::FromNode>::from_node(node, src)
15327                })?,
15328            ))),
15329            "member_expression" => Ok(Self::MemberExpression(::std::boxed::Box::new(
15330                ::treesitter_types::runtime::maybe_grow_stack(|| {
15331                    <MemberExpression as ::treesitter_types::FromNode>::from_node(node, src)
15332                })?,
15333            ))),
15334            "non_null_expression" => Ok(Self::NonNullExpression(::std::boxed::Box::new(
15335                ::treesitter_types::runtime::maybe_grow_stack(|| {
15336                    <NonNullExpression as ::treesitter_types::FromNode>::from_node(node, src)
15337                })?,
15338            ))),
15339            "object_pattern" => Ok(Self::ObjectPattern(::std::boxed::Box::new(
15340                ::treesitter_types::runtime::maybe_grow_stack(|| {
15341                    <ObjectPattern as ::treesitter_types::FromNode>::from_node(node, src)
15342                })?,
15343            ))),
15344            "subscript_expression" => Ok(Self::SubscriptExpression(::std::boxed::Box::new(
15345                ::treesitter_types::runtime::maybe_grow_stack(|| {
15346                    <SubscriptExpression as ::treesitter_types::FromNode>::from_node(node, src)
15347                })?,
15348            ))),
15349            "undefined" => Ok(Self::Undefined(::std::boxed::Box::new(
15350                ::treesitter_types::runtime::maybe_grow_stack(|| {
15351                    <Undefined as ::treesitter_types::FromNode>::from_node(node, src)
15352                })?,
15353            ))),
15354            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
15355        }
15356    }
15357}
15358impl ::treesitter_types::Spanned for RestPatternChildren<'_> {
15359    fn span(&self) -> ::treesitter_types::Span {
15360        match self {
15361            Self::ArrayPattern(inner) => inner.span(),
15362            Self::Identifier(inner) => inner.span(),
15363            Self::MemberExpression(inner) => inner.span(),
15364            Self::NonNullExpression(inner) => inner.span(),
15365            Self::ObjectPattern(inner) => inner.span(),
15366            Self::SubscriptExpression(inner) => inner.span(),
15367            Self::Undefined(inner) => inner.span(),
15368        }
15369    }
15370}
15371#[derive(Debug, Clone, PartialEq, Eq)]
15372pub enum ReturnStatementChildren<'tree> {
15373    Expression(::std::boxed::Box<Expression<'tree>>),
15374    SequenceExpression(::std::boxed::Box<SequenceExpression<'tree>>),
15375}
15376impl<'tree> ::treesitter_types::FromNode<'tree> for ReturnStatementChildren<'tree> {
15377    #[allow(clippy::collapsible_else_if)]
15378    fn from_node(
15379        node: ::treesitter_types::tree_sitter::Node<'tree>,
15380        src: &'tree [u8],
15381    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
15382        match node.kind() {
15383            "sequence_expression" => Ok(Self::SequenceExpression(::std::boxed::Box::new(
15384                ::treesitter_types::runtime::maybe_grow_stack(|| {
15385                    <SequenceExpression as ::treesitter_types::FromNode>::from_node(node, src)
15386                })?,
15387            ))),
15388            _other => {
15389                if let Ok(v) = ::treesitter_types::runtime::maybe_grow_stack(|| {
15390                    <Expression as ::treesitter_types::FromNode>::from_node(node, src)
15391                }) {
15392                    Ok(Self::Expression(::std::boxed::Box::new(v)))
15393                } else {
15394                    Err(::treesitter_types::ParseError::unexpected_kind(
15395                        _other, node,
15396                    ))
15397                }
15398            }
15399        }
15400    }
15401}
15402impl ::treesitter_types::Spanned for ReturnStatementChildren<'_> {
15403    fn span(&self) -> ::treesitter_types::Span {
15404        match self {
15405            Self::Expression(inner) => inner.span(),
15406            Self::SequenceExpression(inner) => inner.span(),
15407        }
15408    }
15409}
15410#[derive(Debug, Clone, PartialEq, Eq)]
15411pub enum SatisfiesExpressionChildren<'tree> {
15412    Expression(::std::boxed::Box<Expression<'tree>>),
15413    Type(::std::boxed::Box<Type<'tree>>),
15414}
15415impl<'tree> ::treesitter_types::FromNode<'tree> for SatisfiesExpressionChildren<'tree> {
15416    #[allow(clippy::collapsible_else_if)]
15417    fn from_node(
15418        node: ::treesitter_types::tree_sitter::Node<'tree>,
15419        src: &'tree [u8],
15420    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
15421        if let Ok(v) = ::treesitter_types::runtime::maybe_grow_stack(|| {
15422            <Expression as ::treesitter_types::FromNode>::from_node(node, src)
15423        }) {
15424            Ok(Self::Expression(::std::boxed::Box::new(v)))
15425        } else {
15426            if let Ok(v) = ::treesitter_types::runtime::maybe_grow_stack(|| {
15427                <Type as ::treesitter_types::FromNode>::from_node(node, src)
15428            }) {
15429                Ok(Self::Type(::std::boxed::Box::new(v)))
15430            } else {
15431                Err(::treesitter_types::ParseError::unexpected_kind(
15432                    node.kind(),
15433                    node,
15434                ))
15435            }
15436        }
15437    }
15438}
15439impl ::treesitter_types::Spanned for SatisfiesExpressionChildren<'_> {
15440    fn span(&self) -> ::treesitter_types::Span {
15441        match self {
15442            Self::Expression(inner) => inner.span(),
15443            Self::Type(inner) => inner.span(),
15444        }
15445    }
15446}
15447#[derive(Debug, Clone, PartialEq, Eq)]
15448pub enum StringChildren<'tree> {
15449    EscapeSequence(::std::boxed::Box<EscapeSequence<'tree>>),
15450    StringFragment(::std::boxed::Box<StringFragment<'tree>>),
15451}
15452impl<'tree> ::treesitter_types::FromNode<'tree> for StringChildren<'tree> {
15453    #[allow(clippy::collapsible_else_if)]
15454    fn from_node(
15455        node: ::treesitter_types::tree_sitter::Node<'tree>,
15456        src: &'tree [u8],
15457    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
15458        match node.kind() {
15459            "escape_sequence" => Ok(Self::EscapeSequence(::std::boxed::Box::new(
15460                ::treesitter_types::runtime::maybe_grow_stack(|| {
15461                    <EscapeSequence as ::treesitter_types::FromNode>::from_node(node, src)
15462                })?,
15463            ))),
15464            "string_fragment" => Ok(Self::StringFragment(::std::boxed::Box::new(
15465                ::treesitter_types::runtime::maybe_grow_stack(|| {
15466                    <StringFragment as ::treesitter_types::FromNode>::from_node(node, src)
15467                })?,
15468            ))),
15469            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
15470        }
15471    }
15472}
15473impl ::treesitter_types::Spanned for StringChildren<'_> {
15474    fn span(&self) -> ::treesitter_types::Span {
15475        match self {
15476            Self::EscapeSequence(inner) => inner.span(),
15477            Self::StringFragment(inner) => inner.span(),
15478        }
15479    }
15480}
15481#[derive(Debug, Clone, PartialEq, Eq)]
15482pub enum SubscriptExpressionIndex<'tree> {
15483    Expression(::std::boxed::Box<Expression<'tree>>),
15484    Number(::std::boxed::Box<Number<'tree>>),
15485    PredefinedType(::std::boxed::Box<PredefinedType<'tree>>),
15486    SequenceExpression(::std::boxed::Box<SequenceExpression<'tree>>),
15487    String(::std::boxed::Box<String<'tree>>),
15488}
15489impl<'tree> ::treesitter_types::FromNode<'tree> for SubscriptExpressionIndex<'tree> {
15490    #[allow(clippy::collapsible_else_if)]
15491    fn from_node(
15492        node: ::treesitter_types::tree_sitter::Node<'tree>,
15493        src: &'tree [u8],
15494    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
15495        match node.kind() {
15496            "number" => Ok(Self::Number(::std::boxed::Box::new(
15497                ::treesitter_types::runtime::maybe_grow_stack(|| {
15498                    <Number as ::treesitter_types::FromNode>::from_node(node, src)
15499                })?,
15500            ))),
15501            "predefined_type" => Ok(Self::PredefinedType(::std::boxed::Box::new(
15502                ::treesitter_types::runtime::maybe_grow_stack(|| {
15503                    <PredefinedType as ::treesitter_types::FromNode>::from_node(node, src)
15504                })?,
15505            ))),
15506            "sequence_expression" => Ok(Self::SequenceExpression(::std::boxed::Box::new(
15507                ::treesitter_types::runtime::maybe_grow_stack(|| {
15508                    <SequenceExpression as ::treesitter_types::FromNode>::from_node(node, src)
15509                })?,
15510            ))),
15511            "string" => Ok(Self::String(::std::boxed::Box::new(
15512                ::treesitter_types::runtime::maybe_grow_stack(|| {
15513                    <String as ::treesitter_types::FromNode>::from_node(node, src)
15514                })?,
15515            ))),
15516            _other => {
15517                if let Ok(v) = ::treesitter_types::runtime::maybe_grow_stack(|| {
15518                    <Expression as ::treesitter_types::FromNode>::from_node(node, src)
15519                }) {
15520                    Ok(Self::Expression(::std::boxed::Box::new(v)))
15521                } else {
15522                    Err(::treesitter_types::ParseError::unexpected_kind(
15523                        _other, node,
15524                    ))
15525                }
15526            }
15527        }
15528    }
15529}
15530impl ::treesitter_types::Spanned for SubscriptExpressionIndex<'_> {
15531    fn span(&self) -> ::treesitter_types::Span {
15532        match self {
15533            Self::Expression(inner) => inner.span(),
15534            Self::Number(inner) => inner.span(),
15535            Self::PredefinedType(inner) => inner.span(),
15536            Self::SequenceExpression(inner) => inner.span(),
15537            Self::String(inner) => inner.span(),
15538        }
15539    }
15540}
15541#[derive(Debug, Clone, PartialEq, Eq)]
15542pub enum SwitchBodyChildren<'tree> {
15543    SwitchCase(::std::boxed::Box<SwitchCase<'tree>>),
15544    SwitchDefault(::std::boxed::Box<SwitchDefault<'tree>>),
15545}
15546impl<'tree> ::treesitter_types::FromNode<'tree> for SwitchBodyChildren<'tree> {
15547    #[allow(clippy::collapsible_else_if)]
15548    fn from_node(
15549        node: ::treesitter_types::tree_sitter::Node<'tree>,
15550        src: &'tree [u8],
15551    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
15552        match node.kind() {
15553            "switch_case" => Ok(Self::SwitchCase(::std::boxed::Box::new(
15554                ::treesitter_types::runtime::maybe_grow_stack(|| {
15555                    <SwitchCase as ::treesitter_types::FromNode>::from_node(node, src)
15556                })?,
15557            ))),
15558            "switch_default" => Ok(Self::SwitchDefault(::std::boxed::Box::new(
15559                ::treesitter_types::runtime::maybe_grow_stack(|| {
15560                    <SwitchDefault as ::treesitter_types::FromNode>::from_node(node, src)
15561                })?,
15562            ))),
15563            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
15564        }
15565    }
15566}
15567impl ::treesitter_types::Spanned for SwitchBodyChildren<'_> {
15568    fn span(&self) -> ::treesitter_types::Span {
15569        match self {
15570            Self::SwitchCase(inner) => inner.span(),
15571            Self::SwitchDefault(inner) => inner.span(),
15572        }
15573    }
15574}
15575#[derive(Debug, Clone, PartialEq, Eq)]
15576pub enum SwitchCaseValue<'tree> {
15577    Expression(::std::boxed::Box<Expression<'tree>>),
15578    SequenceExpression(::std::boxed::Box<SequenceExpression<'tree>>),
15579}
15580impl<'tree> ::treesitter_types::FromNode<'tree> for SwitchCaseValue<'tree> {
15581    #[allow(clippy::collapsible_else_if)]
15582    fn from_node(
15583        node: ::treesitter_types::tree_sitter::Node<'tree>,
15584        src: &'tree [u8],
15585    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
15586        match node.kind() {
15587            "sequence_expression" => Ok(Self::SequenceExpression(::std::boxed::Box::new(
15588                ::treesitter_types::runtime::maybe_grow_stack(|| {
15589                    <SequenceExpression as ::treesitter_types::FromNode>::from_node(node, src)
15590                })?,
15591            ))),
15592            _other => {
15593                if let Ok(v) = ::treesitter_types::runtime::maybe_grow_stack(|| {
15594                    <Expression as ::treesitter_types::FromNode>::from_node(node, src)
15595                }) {
15596                    Ok(Self::Expression(::std::boxed::Box::new(v)))
15597                } else {
15598                    Err(::treesitter_types::ParseError::unexpected_kind(
15599                        _other, node,
15600                    ))
15601                }
15602            }
15603        }
15604    }
15605}
15606impl ::treesitter_types::Spanned for SwitchCaseValue<'_> {
15607    fn span(&self) -> ::treesitter_types::Span {
15608        match self {
15609            Self::Expression(inner) => inner.span(),
15610            Self::SequenceExpression(inner) => inner.span(),
15611        }
15612    }
15613}
15614#[derive(Debug, Clone, PartialEq, Eq)]
15615pub enum TemplateLiteralTypeChildren<'tree> {
15616    StringFragment(::std::boxed::Box<StringFragment<'tree>>),
15617    TemplateType(::std::boxed::Box<TemplateType<'tree>>),
15618}
15619impl<'tree> ::treesitter_types::FromNode<'tree> for TemplateLiteralTypeChildren<'tree> {
15620    #[allow(clippy::collapsible_else_if)]
15621    fn from_node(
15622        node: ::treesitter_types::tree_sitter::Node<'tree>,
15623        src: &'tree [u8],
15624    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
15625        match node.kind() {
15626            "string_fragment" => Ok(Self::StringFragment(::std::boxed::Box::new(
15627                ::treesitter_types::runtime::maybe_grow_stack(|| {
15628                    <StringFragment as ::treesitter_types::FromNode>::from_node(node, src)
15629                })?,
15630            ))),
15631            "template_type" => Ok(Self::TemplateType(::std::boxed::Box::new(
15632                ::treesitter_types::runtime::maybe_grow_stack(|| {
15633                    <TemplateType as ::treesitter_types::FromNode>::from_node(node, src)
15634                })?,
15635            ))),
15636            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
15637        }
15638    }
15639}
15640impl ::treesitter_types::Spanned for TemplateLiteralTypeChildren<'_> {
15641    fn span(&self) -> ::treesitter_types::Span {
15642        match self {
15643            Self::StringFragment(inner) => inner.span(),
15644            Self::TemplateType(inner) => inner.span(),
15645        }
15646    }
15647}
15648#[derive(Debug, Clone, PartialEq, Eq)]
15649pub enum TemplateStringChildren<'tree> {
15650    EscapeSequence(::std::boxed::Box<EscapeSequence<'tree>>),
15651    StringFragment(::std::boxed::Box<StringFragment<'tree>>),
15652    TemplateSubstitution(::std::boxed::Box<TemplateSubstitution<'tree>>),
15653}
15654impl<'tree> ::treesitter_types::FromNode<'tree> for TemplateStringChildren<'tree> {
15655    #[allow(clippy::collapsible_else_if)]
15656    fn from_node(
15657        node: ::treesitter_types::tree_sitter::Node<'tree>,
15658        src: &'tree [u8],
15659    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
15660        match node.kind() {
15661            "escape_sequence" => Ok(Self::EscapeSequence(::std::boxed::Box::new(
15662                ::treesitter_types::runtime::maybe_grow_stack(|| {
15663                    <EscapeSequence as ::treesitter_types::FromNode>::from_node(node, src)
15664                })?,
15665            ))),
15666            "string_fragment" => Ok(Self::StringFragment(::std::boxed::Box::new(
15667                ::treesitter_types::runtime::maybe_grow_stack(|| {
15668                    <StringFragment as ::treesitter_types::FromNode>::from_node(node, src)
15669                })?,
15670            ))),
15671            "template_substitution" => Ok(Self::TemplateSubstitution(::std::boxed::Box::new(
15672                ::treesitter_types::runtime::maybe_grow_stack(|| {
15673                    <TemplateSubstitution as ::treesitter_types::FromNode>::from_node(node, src)
15674                })?,
15675            ))),
15676            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
15677        }
15678    }
15679}
15680impl ::treesitter_types::Spanned for TemplateStringChildren<'_> {
15681    fn span(&self) -> ::treesitter_types::Span {
15682        match self {
15683            Self::EscapeSequence(inner) => inner.span(),
15684            Self::StringFragment(inner) => inner.span(),
15685            Self::TemplateSubstitution(inner) => inner.span(),
15686        }
15687    }
15688}
15689#[derive(Debug, Clone, PartialEq, Eq)]
15690pub enum TemplateSubstitutionChildren<'tree> {
15691    Expression(::std::boxed::Box<Expression<'tree>>),
15692    SequenceExpression(::std::boxed::Box<SequenceExpression<'tree>>),
15693}
15694impl<'tree> ::treesitter_types::FromNode<'tree> for TemplateSubstitutionChildren<'tree> {
15695    #[allow(clippy::collapsible_else_if)]
15696    fn from_node(
15697        node: ::treesitter_types::tree_sitter::Node<'tree>,
15698        src: &'tree [u8],
15699    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
15700        match node.kind() {
15701            "sequence_expression" => Ok(Self::SequenceExpression(::std::boxed::Box::new(
15702                ::treesitter_types::runtime::maybe_grow_stack(|| {
15703                    <SequenceExpression as ::treesitter_types::FromNode>::from_node(node, src)
15704                })?,
15705            ))),
15706            _other => {
15707                if let Ok(v) = ::treesitter_types::runtime::maybe_grow_stack(|| {
15708                    <Expression as ::treesitter_types::FromNode>::from_node(node, src)
15709                }) {
15710                    Ok(Self::Expression(::std::boxed::Box::new(v)))
15711                } else {
15712                    Err(::treesitter_types::ParseError::unexpected_kind(
15713                        _other, node,
15714                    ))
15715                }
15716            }
15717        }
15718    }
15719}
15720impl ::treesitter_types::Spanned for TemplateSubstitutionChildren<'_> {
15721    fn span(&self) -> ::treesitter_types::Span {
15722        match self {
15723            Self::Expression(inner) => inner.span(),
15724            Self::SequenceExpression(inner) => inner.span(),
15725        }
15726    }
15727}
15728#[derive(Debug, Clone, PartialEq, Eq)]
15729pub enum TemplateTypeChildren<'tree> {
15730    InferType(::std::boxed::Box<InferType<'tree>>),
15731    PrimaryType(::std::boxed::Box<PrimaryType<'tree>>),
15732}
15733impl<'tree> ::treesitter_types::FromNode<'tree> for TemplateTypeChildren<'tree> {
15734    #[allow(clippy::collapsible_else_if)]
15735    fn from_node(
15736        node: ::treesitter_types::tree_sitter::Node<'tree>,
15737        src: &'tree [u8],
15738    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
15739        match node.kind() {
15740            "infer_type" => Ok(Self::InferType(::std::boxed::Box::new(
15741                ::treesitter_types::runtime::maybe_grow_stack(|| {
15742                    <InferType as ::treesitter_types::FromNode>::from_node(node, src)
15743                })?,
15744            ))),
15745            _other => {
15746                if let Ok(v) = ::treesitter_types::runtime::maybe_grow_stack(|| {
15747                    <PrimaryType as ::treesitter_types::FromNode>::from_node(node, src)
15748                }) {
15749                    Ok(Self::PrimaryType(::std::boxed::Box::new(v)))
15750                } else {
15751                    Err(::treesitter_types::ParseError::unexpected_kind(
15752                        _other, node,
15753                    ))
15754                }
15755            }
15756        }
15757    }
15758}
15759impl ::treesitter_types::Spanned for TemplateTypeChildren<'_> {
15760    fn span(&self) -> ::treesitter_types::Span {
15761        match self {
15762            Self::InferType(inner) => inner.span(),
15763            Self::PrimaryType(inner) => inner.span(),
15764        }
15765    }
15766}
15767#[derive(Debug, Clone, PartialEq, Eq)]
15768pub enum ThrowStatementChildren<'tree> {
15769    Expression(::std::boxed::Box<Expression<'tree>>),
15770    SequenceExpression(::std::boxed::Box<SequenceExpression<'tree>>),
15771}
15772impl<'tree> ::treesitter_types::FromNode<'tree> for ThrowStatementChildren<'tree> {
15773    #[allow(clippy::collapsible_else_if)]
15774    fn from_node(
15775        node: ::treesitter_types::tree_sitter::Node<'tree>,
15776        src: &'tree [u8],
15777    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
15778        match node.kind() {
15779            "sequence_expression" => Ok(Self::SequenceExpression(::std::boxed::Box::new(
15780                ::treesitter_types::runtime::maybe_grow_stack(|| {
15781                    <SequenceExpression as ::treesitter_types::FromNode>::from_node(node, src)
15782                })?,
15783            ))),
15784            _other => {
15785                if let Ok(v) = ::treesitter_types::runtime::maybe_grow_stack(|| {
15786                    <Expression as ::treesitter_types::FromNode>::from_node(node, src)
15787                }) {
15788                    Ok(Self::Expression(::std::boxed::Box::new(v)))
15789                } else {
15790                    Err(::treesitter_types::ParseError::unexpected_kind(
15791                        _other, node,
15792                    ))
15793                }
15794            }
15795        }
15796    }
15797}
15798impl ::treesitter_types::Spanned for ThrowStatementChildren<'_> {
15799    fn span(&self) -> ::treesitter_types::Span {
15800        match self {
15801            Self::Expression(inner) => inner.span(),
15802            Self::SequenceExpression(inner) => inner.span(),
15803        }
15804    }
15805}
15806#[derive(Debug, Clone, PartialEq, Eq)]
15807pub enum TupleTypeChildren<'tree> {
15808    OptionalParameter(::std::boxed::Box<OptionalParameter<'tree>>),
15809    OptionalType(::std::boxed::Box<OptionalType<'tree>>),
15810    RequiredParameter(::std::boxed::Box<RequiredParameter<'tree>>),
15811    RestType(::std::boxed::Box<RestType<'tree>>),
15812    Type(::std::boxed::Box<Type<'tree>>),
15813}
15814impl<'tree> ::treesitter_types::FromNode<'tree> for TupleTypeChildren<'tree> {
15815    #[allow(clippy::collapsible_else_if)]
15816    fn from_node(
15817        node: ::treesitter_types::tree_sitter::Node<'tree>,
15818        src: &'tree [u8],
15819    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
15820        match node.kind() {
15821            "optional_parameter" => Ok(Self::OptionalParameter(::std::boxed::Box::new(
15822                ::treesitter_types::runtime::maybe_grow_stack(|| {
15823                    <OptionalParameter as ::treesitter_types::FromNode>::from_node(node, src)
15824                })?,
15825            ))),
15826            "optional_type" => Ok(Self::OptionalType(::std::boxed::Box::new(
15827                ::treesitter_types::runtime::maybe_grow_stack(|| {
15828                    <OptionalType as ::treesitter_types::FromNode>::from_node(node, src)
15829                })?,
15830            ))),
15831            "required_parameter" => Ok(Self::RequiredParameter(::std::boxed::Box::new(
15832                ::treesitter_types::runtime::maybe_grow_stack(|| {
15833                    <RequiredParameter as ::treesitter_types::FromNode>::from_node(node, src)
15834                })?,
15835            ))),
15836            "rest_type" => Ok(Self::RestType(::std::boxed::Box::new(
15837                ::treesitter_types::runtime::maybe_grow_stack(|| {
15838                    <RestType as ::treesitter_types::FromNode>::from_node(node, src)
15839                })?,
15840            ))),
15841            _other => {
15842                if let Ok(v) = ::treesitter_types::runtime::maybe_grow_stack(|| {
15843                    <Type as ::treesitter_types::FromNode>::from_node(node, src)
15844                }) {
15845                    Ok(Self::Type(::std::boxed::Box::new(v)))
15846                } else {
15847                    Err(::treesitter_types::ParseError::unexpected_kind(
15848                        _other, node,
15849                    ))
15850                }
15851            }
15852        }
15853    }
15854}
15855impl ::treesitter_types::Spanned for TupleTypeChildren<'_> {
15856    fn span(&self) -> ::treesitter_types::Span {
15857        match self {
15858            Self::OptionalParameter(inner) => inner.span(),
15859            Self::OptionalType(inner) => inner.span(),
15860            Self::RequiredParameter(inner) => inner.span(),
15861            Self::RestType(inner) => inner.span(),
15862            Self::Type(inner) => inner.span(),
15863        }
15864    }
15865}
15866#[derive(Debug, Clone, PartialEq, Eq)]
15867pub enum TypeAssertionChildren<'tree> {
15868    Expression(::std::boxed::Box<Expression<'tree>>),
15869    TypeArguments(::std::boxed::Box<TypeArguments<'tree>>),
15870}
15871impl<'tree> ::treesitter_types::FromNode<'tree> for TypeAssertionChildren<'tree> {
15872    #[allow(clippy::collapsible_else_if)]
15873    fn from_node(
15874        node: ::treesitter_types::tree_sitter::Node<'tree>,
15875        src: &'tree [u8],
15876    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
15877        match node.kind() {
15878            "type_arguments" => Ok(Self::TypeArguments(::std::boxed::Box::new(
15879                ::treesitter_types::runtime::maybe_grow_stack(|| {
15880                    <TypeArguments as ::treesitter_types::FromNode>::from_node(node, src)
15881                })?,
15882            ))),
15883            _other => {
15884                if let Ok(v) = ::treesitter_types::runtime::maybe_grow_stack(|| {
15885                    <Expression as ::treesitter_types::FromNode>::from_node(node, src)
15886                }) {
15887                    Ok(Self::Expression(::std::boxed::Box::new(v)))
15888                } else {
15889                    Err(::treesitter_types::ParseError::unexpected_kind(
15890                        _other, node,
15891                    ))
15892                }
15893            }
15894        }
15895    }
15896}
15897impl ::treesitter_types::Spanned for TypeAssertionChildren<'_> {
15898    fn span(&self) -> ::treesitter_types::Span {
15899        match self {
15900            Self::Expression(inner) => inner.span(),
15901            Self::TypeArguments(inner) => inner.span(),
15902        }
15903    }
15904}
15905#[derive(Debug, Clone, PartialEq, Eq)]
15906pub enum TypePredicateName<'tree> {
15907    Identifier(::std::boxed::Box<Identifier<'tree>>),
15908    This(::std::boxed::Box<This<'tree>>),
15909}
15910impl<'tree> ::treesitter_types::FromNode<'tree> for TypePredicateName<'tree> {
15911    #[allow(clippy::collapsible_else_if)]
15912    fn from_node(
15913        node: ::treesitter_types::tree_sitter::Node<'tree>,
15914        src: &'tree [u8],
15915    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
15916        match node.kind() {
15917            "identifier" => Ok(Self::Identifier(::std::boxed::Box::new(
15918                ::treesitter_types::runtime::maybe_grow_stack(|| {
15919                    <Identifier as ::treesitter_types::FromNode>::from_node(node, src)
15920                })?,
15921            ))),
15922            "this" => Ok(Self::This(::std::boxed::Box::new(
15923                ::treesitter_types::runtime::maybe_grow_stack(|| {
15924                    <This as ::treesitter_types::FromNode>::from_node(node, src)
15925                })?,
15926            ))),
15927            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
15928        }
15929    }
15930}
15931impl ::treesitter_types::Spanned for TypePredicateName<'_> {
15932    fn span(&self) -> ::treesitter_types::Span {
15933        match self {
15934            Self::Identifier(inner) => inner.span(),
15935            Self::This(inner) => inner.span(),
15936        }
15937    }
15938}
15939#[derive(Debug, Clone, PartialEq, Eq)]
15940pub enum TypeQueryChildren<'tree> {
15941    CallExpression(::std::boxed::Box<CallExpression<'tree>>),
15942    Identifier(::std::boxed::Box<Identifier<'tree>>),
15943    InstantiationExpression(::std::boxed::Box<InstantiationExpression<'tree>>),
15944    MemberExpression(::std::boxed::Box<MemberExpression<'tree>>),
15945    SubscriptExpression(::std::boxed::Box<SubscriptExpression<'tree>>),
15946    This(::std::boxed::Box<This<'tree>>),
15947}
15948impl<'tree> ::treesitter_types::FromNode<'tree> for TypeQueryChildren<'tree> {
15949    #[allow(clippy::collapsible_else_if)]
15950    fn from_node(
15951        node: ::treesitter_types::tree_sitter::Node<'tree>,
15952        src: &'tree [u8],
15953    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
15954        match node.kind() {
15955            "call_expression" => Ok(Self::CallExpression(::std::boxed::Box::new(
15956                ::treesitter_types::runtime::maybe_grow_stack(|| {
15957                    <CallExpression as ::treesitter_types::FromNode>::from_node(node, src)
15958                })?,
15959            ))),
15960            "identifier" => Ok(Self::Identifier(::std::boxed::Box::new(
15961                ::treesitter_types::runtime::maybe_grow_stack(|| {
15962                    <Identifier as ::treesitter_types::FromNode>::from_node(node, src)
15963                })?,
15964            ))),
15965            "instantiation_expression" => Ok(Self::InstantiationExpression(
15966                ::std::boxed::Box::new(::treesitter_types::runtime::maybe_grow_stack(|| {
15967                    <InstantiationExpression as ::treesitter_types::FromNode>::from_node(node, src)
15968                })?),
15969            )),
15970            "member_expression" => Ok(Self::MemberExpression(::std::boxed::Box::new(
15971                ::treesitter_types::runtime::maybe_grow_stack(|| {
15972                    <MemberExpression as ::treesitter_types::FromNode>::from_node(node, src)
15973                })?,
15974            ))),
15975            "subscript_expression" => Ok(Self::SubscriptExpression(::std::boxed::Box::new(
15976                ::treesitter_types::runtime::maybe_grow_stack(|| {
15977                    <SubscriptExpression as ::treesitter_types::FromNode>::from_node(node, src)
15978                })?,
15979            ))),
15980            "this" => Ok(Self::This(::std::boxed::Box::new(
15981                ::treesitter_types::runtime::maybe_grow_stack(|| {
15982                    <This as ::treesitter_types::FromNode>::from_node(node, src)
15983                })?,
15984            ))),
15985            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
15986        }
15987    }
15988}
15989impl ::treesitter_types::Spanned for TypeQueryChildren<'_> {
15990    fn span(&self) -> ::treesitter_types::Span {
15991        match self {
15992            Self::CallExpression(inner) => inner.span(),
15993            Self::Identifier(inner) => inner.span(),
15994            Self::InstantiationExpression(inner) => inner.span(),
15995            Self::MemberExpression(inner) => inner.span(),
15996            Self::SubscriptExpression(inner) => inner.span(),
15997            Self::This(inner) => inner.span(),
15998        }
15999    }
16000}
16001#[derive(Debug, Clone, PartialEq, Eq)]
16002pub enum UnaryExpressionArgument<'tree> {
16003    Expression(::std::boxed::Box<Expression<'tree>>),
16004    Number(::std::boxed::Box<Number<'tree>>),
16005}
16006impl<'tree> ::treesitter_types::FromNode<'tree> for UnaryExpressionArgument<'tree> {
16007    #[allow(clippy::collapsible_else_if)]
16008    fn from_node(
16009        node: ::treesitter_types::tree_sitter::Node<'tree>,
16010        src: &'tree [u8],
16011    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
16012        match node.kind() {
16013            "number" => Ok(Self::Number(::std::boxed::Box::new(
16014                ::treesitter_types::runtime::maybe_grow_stack(|| {
16015                    <Number as ::treesitter_types::FromNode>::from_node(node, src)
16016                })?,
16017            ))),
16018            _other => {
16019                if let Ok(v) = ::treesitter_types::runtime::maybe_grow_stack(|| {
16020                    <Expression as ::treesitter_types::FromNode>::from_node(node, src)
16021                }) {
16022                    Ok(Self::Expression(::std::boxed::Box::new(v)))
16023                } else {
16024                    Err(::treesitter_types::ParseError::unexpected_kind(
16025                        _other, node,
16026                    ))
16027                }
16028            }
16029        }
16030    }
16031}
16032impl ::treesitter_types::Spanned for UnaryExpressionArgument<'_> {
16033    fn span(&self) -> ::treesitter_types::Span {
16034        match self {
16035            Self::Expression(inner) => inner.span(),
16036            Self::Number(inner) => inner.span(),
16037        }
16038    }
16039}
16040#[derive(Debug, Clone, PartialEq, Eq)]
16041pub enum UnaryExpressionOperator {
16042    Bang(::treesitter_types::Span),
16043    Plus(::treesitter_types::Span),
16044    Minus(::treesitter_types::Span),
16045    Delete(::treesitter_types::Span),
16046    Typeof(::treesitter_types::Span),
16047    Void(::treesitter_types::Span),
16048    Tilde(::treesitter_types::Span),
16049}
16050impl<'tree> ::treesitter_types::FromNode<'tree> for UnaryExpressionOperator {
16051    #[allow(clippy::collapsible_else_if)]
16052    fn from_node(
16053        node: ::treesitter_types::tree_sitter::Node<'tree>,
16054        _src: &'tree [u8],
16055    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
16056        match node.kind() {
16057            "!" => Ok(Self::Bang(::treesitter_types::Span::from(node))),
16058            "+" => Ok(Self::Plus(::treesitter_types::Span::from(node))),
16059            "-" => Ok(Self::Minus(::treesitter_types::Span::from(node))),
16060            "delete" => Ok(Self::Delete(::treesitter_types::Span::from(node))),
16061            "typeof" => Ok(Self::Typeof(::treesitter_types::Span::from(node))),
16062            "void" => Ok(Self::Void(::treesitter_types::Span::from(node))),
16063            "~" => Ok(Self::Tilde(::treesitter_types::Span::from(node))),
16064            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
16065        }
16066    }
16067}
16068impl ::treesitter_types::Spanned for UnaryExpressionOperator {
16069    fn span(&self) -> ::treesitter_types::Span {
16070        match self {
16071            Self::Bang(span) => *span,
16072            Self::Plus(span) => *span,
16073            Self::Minus(span) => *span,
16074            Self::Delete(span) => *span,
16075            Self::Typeof(span) => *span,
16076            Self::Void(span) => *span,
16077            Self::Tilde(span) => *span,
16078        }
16079    }
16080}
16081#[derive(Debug, Clone, PartialEq, Eq)]
16082pub enum UpdateExpressionOperator {
16083    PlusPlus(::treesitter_types::Span),
16084    MinusMinus(::treesitter_types::Span),
16085}
16086impl<'tree> ::treesitter_types::FromNode<'tree> for UpdateExpressionOperator {
16087    #[allow(clippy::collapsible_else_if)]
16088    fn from_node(
16089        node: ::treesitter_types::tree_sitter::Node<'tree>,
16090        _src: &'tree [u8],
16091    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
16092        match node.kind() {
16093            "++" => Ok(Self::PlusPlus(::treesitter_types::Span::from(node))),
16094            "--" => Ok(Self::MinusMinus(::treesitter_types::Span::from(node))),
16095            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
16096        }
16097    }
16098}
16099impl ::treesitter_types::Spanned for UpdateExpressionOperator {
16100    fn span(&self) -> ::treesitter_types::Span {
16101        match self {
16102            Self::PlusPlus(span) => *span,
16103            Self::MinusMinus(span) => *span,
16104        }
16105    }
16106}
16107#[derive(Debug, Clone, PartialEq, Eq)]
16108pub enum VariableDeclaratorName<'tree> {
16109    ArrayPattern(::std::boxed::Box<ArrayPattern<'tree>>),
16110    Identifier(::std::boxed::Box<Identifier<'tree>>),
16111    ObjectPattern(::std::boxed::Box<ObjectPattern<'tree>>),
16112}
16113impl<'tree> ::treesitter_types::FromNode<'tree> for VariableDeclaratorName<'tree> {
16114    #[allow(clippy::collapsible_else_if)]
16115    fn from_node(
16116        node: ::treesitter_types::tree_sitter::Node<'tree>,
16117        src: &'tree [u8],
16118    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
16119        match node.kind() {
16120            "array_pattern" => Ok(Self::ArrayPattern(::std::boxed::Box::new(
16121                ::treesitter_types::runtime::maybe_grow_stack(|| {
16122                    <ArrayPattern as ::treesitter_types::FromNode>::from_node(node, src)
16123                })?,
16124            ))),
16125            "identifier" => Ok(Self::Identifier(::std::boxed::Box::new(
16126                ::treesitter_types::runtime::maybe_grow_stack(|| {
16127                    <Identifier as ::treesitter_types::FromNode>::from_node(node, src)
16128                })?,
16129            ))),
16130            "object_pattern" => Ok(Self::ObjectPattern(::std::boxed::Box::new(
16131                ::treesitter_types::runtime::maybe_grow_stack(|| {
16132                    <ObjectPattern as ::treesitter_types::FromNode>::from_node(node, src)
16133                })?,
16134            ))),
16135            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
16136        }
16137    }
16138}
16139impl ::treesitter_types::Spanned for VariableDeclaratorName<'_> {
16140    fn span(&self) -> ::treesitter_types::Span {
16141        match self {
16142            Self::ArrayPattern(inner) => inner.span(),
16143            Self::Identifier(inner) => inner.span(),
16144            Self::ObjectPattern(inner) => inner.span(),
16145        }
16146    }
16147}
16148#[derive(Debug, Clone, PartialEq, Eq)]
16149pub enum AnyNode<'tree> {
16150    Declaration(Declaration<'tree>),
16151    Expression(Expression<'tree>),
16152    Pattern(Pattern<'tree>),
16153    PrimaryExpression(PrimaryExpression<'tree>),
16154    PrimaryType(PrimaryType<'tree>),
16155    Statement(Statement<'tree>),
16156    Type(Type<'tree>),
16157    AbstractClassDeclaration(AbstractClassDeclaration<'tree>),
16158    AbstractMethodSignature(AbstractMethodSignature<'tree>),
16159    AccessibilityModifier(AccessibilityModifier<'tree>),
16160    AddingTypeAnnotation(AddingTypeAnnotation<'tree>),
16161    AmbientDeclaration(AmbientDeclaration<'tree>),
16162    Arguments(Arguments<'tree>),
16163    Array(Array<'tree>),
16164    ArrayPattern(ArrayPattern<'tree>),
16165    ArrayType(ArrayType<'tree>),
16166    ArrowFunction(ArrowFunction<'tree>),
16167    AsExpression(AsExpression<'tree>),
16168    Asserts(Asserts<'tree>),
16169    AssertsAnnotation(AssertsAnnotation<'tree>),
16170    AssignmentExpression(AssignmentExpression<'tree>),
16171    AssignmentPattern(AssignmentPattern<'tree>),
16172    AugmentedAssignmentExpression(AugmentedAssignmentExpression<'tree>),
16173    AwaitExpression(AwaitExpression<'tree>),
16174    BinaryExpression(BinaryExpression<'tree>),
16175    BreakStatement(BreakStatement<'tree>),
16176    CallExpression(CallExpression<'tree>),
16177    CallSignature(CallSignature<'tree>),
16178    CatchClause(CatchClause<'tree>),
16179    Class(Class<'tree>),
16180    ClassBody(ClassBody<'tree>),
16181    ClassDeclaration(ClassDeclaration<'tree>),
16182    ClassHeritage(ClassHeritage<'tree>),
16183    ClassStaticBlock(ClassStaticBlock<'tree>),
16184    ComputedPropertyName(ComputedPropertyName<'tree>),
16185    ConditionalType(ConditionalType<'tree>),
16186    Constraint(Constraint<'tree>),
16187    ConstructSignature(ConstructSignature<'tree>),
16188    ConstructorType(ConstructorType<'tree>),
16189    ContinueStatement(ContinueStatement<'tree>),
16190    DebuggerStatement(DebuggerStatement<'tree>),
16191    Decorator(Decorator<'tree>),
16192    DefaultType(DefaultType<'tree>),
16193    DoStatement(DoStatement<'tree>),
16194    ElseClause(ElseClause<'tree>),
16195    EmptyStatement(EmptyStatement<'tree>),
16196    EnumAssignment(EnumAssignment<'tree>),
16197    EnumBody(EnumBody<'tree>),
16198    EnumDeclaration(EnumDeclaration<'tree>),
16199    ExistentialType(ExistentialType<'tree>),
16200    ExportClause(ExportClause<'tree>),
16201    ExportSpecifier(ExportSpecifier<'tree>),
16202    ExportStatement(ExportStatement<'tree>),
16203    ExpressionStatement(ExpressionStatement<'tree>),
16204    ExtendsClause(ExtendsClause<'tree>),
16205    ExtendsTypeClause(ExtendsTypeClause<'tree>),
16206    FinallyClause(FinallyClause<'tree>),
16207    FlowMaybeType(FlowMaybeType<'tree>),
16208    ForInStatement(ForInStatement<'tree>),
16209    ForStatement(ForStatement<'tree>),
16210    FormalParameters(FormalParameters<'tree>),
16211    FunctionDeclaration(FunctionDeclaration<'tree>),
16212    FunctionExpression(FunctionExpression<'tree>),
16213    FunctionSignature(FunctionSignature<'tree>),
16214    FunctionType(FunctionType<'tree>),
16215    GeneratorFunction(GeneratorFunction<'tree>),
16216    GeneratorFunctionDeclaration(GeneratorFunctionDeclaration<'tree>),
16217    GenericType(GenericType<'tree>),
16218    Identifier(Identifier<'tree>),
16219    IfStatement(IfStatement<'tree>),
16220    ImplementsClause(ImplementsClause<'tree>),
16221    Import(Import<'tree>),
16222    ImportAlias(ImportAlias<'tree>),
16223    ImportAttribute(ImportAttribute<'tree>),
16224    ImportClause(ImportClause<'tree>),
16225    ImportRequireClause(ImportRequireClause<'tree>),
16226    ImportSpecifier(ImportSpecifier<'tree>),
16227    ImportStatement(ImportStatement<'tree>),
16228    IndexSignature(IndexSignature<'tree>),
16229    IndexTypeQuery(IndexTypeQuery<'tree>),
16230    InferType(InferType<'tree>),
16231    InstantiationExpression(InstantiationExpression<'tree>),
16232    InterfaceBody(InterfaceBody<'tree>),
16233    InterfaceDeclaration(InterfaceDeclaration<'tree>),
16234    InternalModule(InternalModule<'tree>),
16235    IntersectionType(IntersectionType<'tree>),
16236    LabeledStatement(LabeledStatement<'tree>),
16237    LexicalDeclaration(LexicalDeclaration<'tree>),
16238    LiteralType(LiteralType<'tree>),
16239    LookupType(LookupType<'tree>),
16240    MappedTypeClause(MappedTypeClause<'tree>),
16241    MemberExpression(MemberExpression<'tree>),
16242    MetaProperty(MetaProperty<'tree>),
16243    MethodDefinition(MethodDefinition<'tree>),
16244    MethodSignature(MethodSignature<'tree>),
16245    Module(Module<'tree>),
16246    NamedImports(NamedImports<'tree>),
16247    NamespaceExport(NamespaceExport<'tree>),
16248    NamespaceImport(NamespaceImport<'tree>),
16249    NestedIdentifier(NestedIdentifier<'tree>),
16250    NestedTypeIdentifier(NestedTypeIdentifier<'tree>),
16251    NewExpression(NewExpression<'tree>),
16252    NonNullExpression(NonNullExpression<'tree>),
16253    Object(Object<'tree>),
16254    ObjectAssignmentPattern(ObjectAssignmentPattern<'tree>),
16255    ObjectPattern(ObjectPattern<'tree>),
16256    ObjectType(ObjectType<'tree>),
16257    OmittingTypeAnnotation(OmittingTypeAnnotation<'tree>),
16258    OptingTypeAnnotation(OptingTypeAnnotation<'tree>),
16259    OptionalChain(OptionalChain<'tree>),
16260    OptionalParameter(OptionalParameter<'tree>),
16261    OptionalType(OptionalType<'tree>),
16262    OverrideModifier(OverrideModifier<'tree>),
16263    Pair(Pair<'tree>),
16264    PairPattern(PairPattern<'tree>),
16265    ParenthesizedExpression(ParenthesizedExpression<'tree>),
16266    ParenthesizedType(ParenthesizedType<'tree>),
16267    PredefinedType(PredefinedType<'tree>),
16268    Program(Program<'tree>),
16269    PropertySignature(PropertySignature<'tree>),
16270    PublicFieldDefinition(PublicFieldDefinition<'tree>),
16271    ReadonlyType(ReadonlyType<'tree>),
16272    Regex(Regex<'tree>),
16273    RequiredParameter(RequiredParameter<'tree>),
16274    RestPattern(RestPattern<'tree>),
16275    RestType(RestType<'tree>),
16276    ReturnStatement(ReturnStatement<'tree>),
16277    SatisfiesExpression(SatisfiesExpression<'tree>),
16278    SequenceExpression(SequenceExpression<'tree>),
16279    SpreadElement(SpreadElement<'tree>),
16280    StatementBlock(StatementBlock<'tree>),
16281    String(String<'tree>),
16282    SubscriptExpression(SubscriptExpression<'tree>),
16283    SwitchBody(SwitchBody<'tree>),
16284    SwitchCase(SwitchCase<'tree>),
16285    SwitchDefault(SwitchDefault<'tree>),
16286    SwitchStatement(SwitchStatement<'tree>),
16287    TemplateLiteralType(TemplateLiteralType<'tree>),
16288    TemplateString(TemplateString<'tree>),
16289    TemplateSubstitution(TemplateSubstitution<'tree>),
16290    TemplateType(TemplateType<'tree>),
16291    TernaryExpression(TernaryExpression<'tree>),
16292    ThrowStatement(ThrowStatement<'tree>),
16293    TryStatement(TryStatement<'tree>),
16294    TupleType(TupleType<'tree>),
16295    TypeAliasDeclaration(TypeAliasDeclaration<'tree>),
16296    TypeAnnotation(TypeAnnotation<'tree>),
16297    TypeArguments(TypeArguments<'tree>),
16298    TypeAssertion(TypeAssertion<'tree>),
16299    TypeParameter(TypeParameter<'tree>),
16300    TypeParameters(TypeParameters<'tree>),
16301    TypePredicate(TypePredicate<'tree>),
16302    TypePredicateAnnotation(TypePredicateAnnotation<'tree>),
16303    TypeQuery(TypeQuery<'tree>),
16304    UnaryExpression(UnaryExpression<'tree>),
16305    UnionType(UnionType<'tree>),
16306    UpdateExpression(UpdateExpression<'tree>),
16307    VariableDeclaration(VariableDeclaration<'tree>),
16308    VariableDeclarator(VariableDeclarator<'tree>),
16309    WhileStatement(WhileStatement<'tree>),
16310    WithStatement(WithStatement<'tree>),
16311    YieldExpression(YieldExpression<'tree>),
16312    Comment(Comment<'tree>),
16313    EscapeSequence(EscapeSequence<'tree>),
16314    False(False<'tree>),
16315    HashBangLine(HashBangLine<'tree>),
16316    HtmlComment(HtmlComment<'tree>),
16317    Null(Null<'tree>),
16318    Number(Number<'tree>),
16319    PrivatePropertyIdentifier(PrivatePropertyIdentifier<'tree>),
16320    PropertyIdentifier(PropertyIdentifier<'tree>),
16321    RegexFlags(RegexFlags<'tree>),
16322    RegexPattern(RegexPattern<'tree>),
16323    ShorthandPropertyIdentifier(ShorthandPropertyIdentifier<'tree>),
16324    ShorthandPropertyIdentifierPattern(ShorthandPropertyIdentifierPattern<'tree>),
16325    StatementIdentifier(StatementIdentifier<'tree>),
16326    StringFragment(StringFragment<'tree>),
16327    Super(Super<'tree>),
16328    This(This<'tree>),
16329    ThisType(ThisType<'tree>),
16330    True(True<'tree>),
16331    TypeIdentifier(TypeIdentifier<'tree>),
16332    Undefined(Undefined<'tree>),
16333    Unknown(::treesitter_types::tree_sitter::Node<'tree>),
16334}
16335impl<'tree> AnyNode<'tree> {
16336    pub fn from_node(node: ::treesitter_types::tree_sitter::Node<'tree>, src: &'tree [u8]) -> Self {
16337        match node.kind() {
16338            "declaration" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16339                <Declaration as ::treesitter_types::FromNode>::from_node(node, src)
16340            })
16341            .map(Self::Declaration)
16342            .unwrap_or(Self::Unknown(node)),
16343            "expression" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16344                <Expression as ::treesitter_types::FromNode>::from_node(node, src)
16345            })
16346            .map(Self::Expression)
16347            .unwrap_or(Self::Unknown(node)),
16348            "pattern" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16349                <Pattern as ::treesitter_types::FromNode>::from_node(node, src)
16350            })
16351            .map(Self::Pattern)
16352            .unwrap_or(Self::Unknown(node)),
16353            "primary_expression" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16354                <PrimaryExpression as ::treesitter_types::FromNode>::from_node(node, src)
16355            })
16356            .map(Self::PrimaryExpression)
16357            .unwrap_or(Self::Unknown(node)),
16358            "primary_type" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16359                <PrimaryType as ::treesitter_types::FromNode>::from_node(node, src)
16360            })
16361            .map(Self::PrimaryType)
16362            .unwrap_or(Self::Unknown(node)),
16363            "statement" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16364                <Statement as ::treesitter_types::FromNode>::from_node(node, src)
16365            })
16366            .map(Self::Statement)
16367            .unwrap_or(Self::Unknown(node)),
16368            "type" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16369                <Type as ::treesitter_types::FromNode>::from_node(node, src)
16370            })
16371            .map(Self::Type)
16372            .unwrap_or(Self::Unknown(node)),
16373            "abstract_class_declaration" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16374                <AbstractClassDeclaration as ::treesitter_types::FromNode>::from_node(node, src)
16375            })
16376            .map(Self::AbstractClassDeclaration)
16377            .unwrap_or(Self::Unknown(node)),
16378            "abstract_method_signature" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16379                <AbstractMethodSignature as ::treesitter_types::FromNode>::from_node(node, src)
16380            })
16381            .map(Self::AbstractMethodSignature)
16382            .unwrap_or(Self::Unknown(node)),
16383            "accessibility_modifier" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16384                <AccessibilityModifier as ::treesitter_types::FromNode>::from_node(node, src)
16385            })
16386            .map(Self::AccessibilityModifier)
16387            .unwrap_or(Self::Unknown(node)),
16388            "adding_type_annotation" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16389                <AddingTypeAnnotation as ::treesitter_types::FromNode>::from_node(node, src)
16390            })
16391            .map(Self::AddingTypeAnnotation)
16392            .unwrap_or(Self::Unknown(node)),
16393            "ambient_declaration" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16394                <AmbientDeclaration as ::treesitter_types::FromNode>::from_node(node, src)
16395            })
16396            .map(Self::AmbientDeclaration)
16397            .unwrap_or(Self::Unknown(node)),
16398            "arguments" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16399                <Arguments as ::treesitter_types::FromNode>::from_node(node, src)
16400            })
16401            .map(Self::Arguments)
16402            .unwrap_or(Self::Unknown(node)),
16403            "array" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16404                <Array as ::treesitter_types::FromNode>::from_node(node, src)
16405            })
16406            .map(Self::Array)
16407            .unwrap_or(Self::Unknown(node)),
16408            "array_pattern" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16409                <ArrayPattern as ::treesitter_types::FromNode>::from_node(node, src)
16410            })
16411            .map(Self::ArrayPattern)
16412            .unwrap_or(Self::Unknown(node)),
16413            "array_type" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16414                <ArrayType as ::treesitter_types::FromNode>::from_node(node, src)
16415            })
16416            .map(Self::ArrayType)
16417            .unwrap_or(Self::Unknown(node)),
16418            "arrow_function" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16419                <ArrowFunction as ::treesitter_types::FromNode>::from_node(node, src)
16420            })
16421            .map(Self::ArrowFunction)
16422            .unwrap_or(Self::Unknown(node)),
16423            "as_expression" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16424                <AsExpression as ::treesitter_types::FromNode>::from_node(node, src)
16425            })
16426            .map(Self::AsExpression)
16427            .unwrap_or(Self::Unknown(node)),
16428            "asserts" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16429                <Asserts as ::treesitter_types::FromNode>::from_node(node, src)
16430            })
16431            .map(Self::Asserts)
16432            .unwrap_or(Self::Unknown(node)),
16433            "asserts_annotation" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16434                <AssertsAnnotation as ::treesitter_types::FromNode>::from_node(node, src)
16435            })
16436            .map(Self::AssertsAnnotation)
16437            .unwrap_or(Self::Unknown(node)),
16438            "assignment_expression" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16439                <AssignmentExpression as ::treesitter_types::FromNode>::from_node(node, src)
16440            })
16441            .map(Self::AssignmentExpression)
16442            .unwrap_or(Self::Unknown(node)),
16443            "assignment_pattern" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16444                <AssignmentPattern as ::treesitter_types::FromNode>::from_node(node, src)
16445            })
16446            .map(Self::AssignmentPattern)
16447            .unwrap_or(Self::Unknown(node)),
16448            "augmented_assignment_expression" => {
16449                ::treesitter_types::runtime::maybe_grow_stack(|| {
16450                    <AugmentedAssignmentExpression as ::treesitter_types::FromNode>::from_node(
16451                        node, src,
16452                    )
16453                })
16454                .map(Self::AugmentedAssignmentExpression)
16455                .unwrap_or(Self::Unknown(node))
16456            }
16457            "await_expression" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16458                <AwaitExpression as ::treesitter_types::FromNode>::from_node(node, src)
16459            })
16460            .map(Self::AwaitExpression)
16461            .unwrap_or(Self::Unknown(node)),
16462            "binary_expression" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16463                <BinaryExpression as ::treesitter_types::FromNode>::from_node(node, src)
16464            })
16465            .map(Self::BinaryExpression)
16466            .unwrap_or(Self::Unknown(node)),
16467            "break_statement" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16468                <BreakStatement as ::treesitter_types::FromNode>::from_node(node, src)
16469            })
16470            .map(Self::BreakStatement)
16471            .unwrap_or(Self::Unknown(node)),
16472            "call_expression" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16473                <CallExpression as ::treesitter_types::FromNode>::from_node(node, src)
16474            })
16475            .map(Self::CallExpression)
16476            .unwrap_or(Self::Unknown(node)),
16477            "call_signature" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16478                <CallSignature as ::treesitter_types::FromNode>::from_node(node, src)
16479            })
16480            .map(Self::CallSignature)
16481            .unwrap_or(Self::Unknown(node)),
16482            "catch_clause" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16483                <CatchClause as ::treesitter_types::FromNode>::from_node(node, src)
16484            })
16485            .map(Self::CatchClause)
16486            .unwrap_or(Self::Unknown(node)),
16487            "class" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16488                <Class as ::treesitter_types::FromNode>::from_node(node, src)
16489            })
16490            .map(Self::Class)
16491            .unwrap_or(Self::Unknown(node)),
16492            "class_body" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16493                <ClassBody as ::treesitter_types::FromNode>::from_node(node, src)
16494            })
16495            .map(Self::ClassBody)
16496            .unwrap_or(Self::Unknown(node)),
16497            "class_declaration" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16498                <ClassDeclaration as ::treesitter_types::FromNode>::from_node(node, src)
16499            })
16500            .map(Self::ClassDeclaration)
16501            .unwrap_or(Self::Unknown(node)),
16502            "class_heritage" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16503                <ClassHeritage as ::treesitter_types::FromNode>::from_node(node, src)
16504            })
16505            .map(Self::ClassHeritage)
16506            .unwrap_or(Self::Unknown(node)),
16507            "class_static_block" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16508                <ClassStaticBlock as ::treesitter_types::FromNode>::from_node(node, src)
16509            })
16510            .map(Self::ClassStaticBlock)
16511            .unwrap_or(Self::Unknown(node)),
16512            "computed_property_name" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16513                <ComputedPropertyName as ::treesitter_types::FromNode>::from_node(node, src)
16514            })
16515            .map(Self::ComputedPropertyName)
16516            .unwrap_or(Self::Unknown(node)),
16517            "conditional_type" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16518                <ConditionalType as ::treesitter_types::FromNode>::from_node(node, src)
16519            })
16520            .map(Self::ConditionalType)
16521            .unwrap_or(Self::Unknown(node)),
16522            "constraint" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16523                <Constraint as ::treesitter_types::FromNode>::from_node(node, src)
16524            })
16525            .map(Self::Constraint)
16526            .unwrap_or(Self::Unknown(node)),
16527            "construct_signature" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16528                <ConstructSignature as ::treesitter_types::FromNode>::from_node(node, src)
16529            })
16530            .map(Self::ConstructSignature)
16531            .unwrap_or(Self::Unknown(node)),
16532            "constructor_type" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16533                <ConstructorType as ::treesitter_types::FromNode>::from_node(node, src)
16534            })
16535            .map(Self::ConstructorType)
16536            .unwrap_or(Self::Unknown(node)),
16537            "continue_statement" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16538                <ContinueStatement as ::treesitter_types::FromNode>::from_node(node, src)
16539            })
16540            .map(Self::ContinueStatement)
16541            .unwrap_or(Self::Unknown(node)),
16542            "debugger_statement" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16543                <DebuggerStatement as ::treesitter_types::FromNode>::from_node(node, src)
16544            })
16545            .map(Self::DebuggerStatement)
16546            .unwrap_or(Self::Unknown(node)),
16547            "decorator" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16548                <Decorator as ::treesitter_types::FromNode>::from_node(node, src)
16549            })
16550            .map(Self::Decorator)
16551            .unwrap_or(Self::Unknown(node)),
16552            "default_type" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16553                <DefaultType as ::treesitter_types::FromNode>::from_node(node, src)
16554            })
16555            .map(Self::DefaultType)
16556            .unwrap_or(Self::Unknown(node)),
16557            "do_statement" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16558                <DoStatement as ::treesitter_types::FromNode>::from_node(node, src)
16559            })
16560            .map(Self::DoStatement)
16561            .unwrap_or(Self::Unknown(node)),
16562            "else_clause" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16563                <ElseClause as ::treesitter_types::FromNode>::from_node(node, src)
16564            })
16565            .map(Self::ElseClause)
16566            .unwrap_or(Self::Unknown(node)),
16567            "empty_statement" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16568                <EmptyStatement as ::treesitter_types::FromNode>::from_node(node, src)
16569            })
16570            .map(Self::EmptyStatement)
16571            .unwrap_or(Self::Unknown(node)),
16572            "enum_assignment" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16573                <EnumAssignment as ::treesitter_types::FromNode>::from_node(node, src)
16574            })
16575            .map(Self::EnumAssignment)
16576            .unwrap_or(Self::Unknown(node)),
16577            "enum_body" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16578                <EnumBody as ::treesitter_types::FromNode>::from_node(node, src)
16579            })
16580            .map(Self::EnumBody)
16581            .unwrap_or(Self::Unknown(node)),
16582            "enum_declaration" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16583                <EnumDeclaration as ::treesitter_types::FromNode>::from_node(node, src)
16584            })
16585            .map(Self::EnumDeclaration)
16586            .unwrap_or(Self::Unknown(node)),
16587            "existential_type" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16588                <ExistentialType as ::treesitter_types::FromNode>::from_node(node, src)
16589            })
16590            .map(Self::ExistentialType)
16591            .unwrap_or(Self::Unknown(node)),
16592            "export_clause" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16593                <ExportClause as ::treesitter_types::FromNode>::from_node(node, src)
16594            })
16595            .map(Self::ExportClause)
16596            .unwrap_or(Self::Unknown(node)),
16597            "export_specifier" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16598                <ExportSpecifier as ::treesitter_types::FromNode>::from_node(node, src)
16599            })
16600            .map(Self::ExportSpecifier)
16601            .unwrap_or(Self::Unknown(node)),
16602            "export_statement" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16603                <ExportStatement as ::treesitter_types::FromNode>::from_node(node, src)
16604            })
16605            .map(Self::ExportStatement)
16606            .unwrap_or(Self::Unknown(node)),
16607            "expression_statement" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16608                <ExpressionStatement as ::treesitter_types::FromNode>::from_node(node, src)
16609            })
16610            .map(Self::ExpressionStatement)
16611            .unwrap_or(Self::Unknown(node)),
16612            "extends_clause" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16613                <ExtendsClause as ::treesitter_types::FromNode>::from_node(node, src)
16614            })
16615            .map(Self::ExtendsClause)
16616            .unwrap_or(Self::Unknown(node)),
16617            "extends_type_clause" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16618                <ExtendsTypeClause as ::treesitter_types::FromNode>::from_node(node, src)
16619            })
16620            .map(Self::ExtendsTypeClause)
16621            .unwrap_or(Self::Unknown(node)),
16622            "finally_clause" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16623                <FinallyClause as ::treesitter_types::FromNode>::from_node(node, src)
16624            })
16625            .map(Self::FinallyClause)
16626            .unwrap_or(Self::Unknown(node)),
16627            "flow_maybe_type" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16628                <FlowMaybeType as ::treesitter_types::FromNode>::from_node(node, src)
16629            })
16630            .map(Self::FlowMaybeType)
16631            .unwrap_or(Self::Unknown(node)),
16632            "for_in_statement" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16633                <ForInStatement as ::treesitter_types::FromNode>::from_node(node, src)
16634            })
16635            .map(Self::ForInStatement)
16636            .unwrap_or(Self::Unknown(node)),
16637            "for_statement" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16638                <ForStatement as ::treesitter_types::FromNode>::from_node(node, src)
16639            })
16640            .map(Self::ForStatement)
16641            .unwrap_or(Self::Unknown(node)),
16642            "formal_parameters" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16643                <FormalParameters as ::treesitter_types::FromNode>::from_node(node, src)
16644            })
16645            .map(Self::FormalParameters)
16646            .unwrap_or(Self::Unknown(node)),
16647            "function_declaration" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16648                <FunctionDeclaration as ::treesitter_types::FromNode>::from_node(node, src)
16649            })
16650            .map(Self::FunctionDeclaration)
16651            .unwrap_or(Self::Unknown(node)),
16652            "function_expression" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16653                <FunctionExpression as ::treesitter_types::FromNode>::from_node(node, src)
16654            })
16655            .map(Self::FunctionExpression)
16656            .unwrap_or(Self::Unknown(node)),
16657            "function_signature" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16658                <FunctionSignature as ::treesitter_types::FromNode>::from_node(node, src)
16659            })
16660            .map(Self::FunctionSignature)
16661            .unwrap_or(Self::Unknown(node)),
16662            "function_type" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16663                <FunctionType as ::treesitter_types::FromNode>::from_node(node, src)
16664            })
16665            .map(Self::FunctionType)
16666            .unwrap_or(Self::Unknown(node)),
16667            "generator_function" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16668                <GeneratorFunction as ::treesitter_types::FromNode>::from_node(node, src)
16669            })
16670            .map(Self::GeneratorFunction)
16671            .unwrap_or(Self::Unknown(node)),
16672            "generator_function_declaration" => {
16673                ::treesitter_types::runtime::maybe_grow_stack(|| {
16674                    <GeneratorFunctionDeclaration as ::treesitter_types::FromNode>::from_node(
16675                        node, src,
16676                    )
16677                })
16678                .map(Self::GeneratorFunctionDeclaration)
16679                .unwrap_or(Self::Unknown(node))
16680            }
16681            "generic_type" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16682                <GenericType as ::treesitter_types::FromNode>::from_node(node, src)
16683            })
16684            .map(Self::GenericType)
16685            .unwrap_or(Self::Unknown(node)),
16686            "identifier" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16687                <Identifier as ::treesitter_types::FromNode>::from_node(node, src)
16688            })
16689            .map(Self::Identifier)
16690            .unwrap_or(Self::Unknown(node)),
16691            "if_statement" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16692                <IfStatement as ::treesitter_types::FromNode>::from_node(node, src)
16693            })
16694            .map(Self::IfStatement)
16695            .unwrap_or(Self::Unknown(node)),
16696            "implements_clause" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16697                <ImplementsClause as ::treesitter_types::FromNode>::from_node(node, src)
16698            })
16699            .map(Self::ImplementsClause)
16700            .unwrap_or(Self::Unknown(node)),
16701            "import" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16702                <Import as ::treesitter_types::FromNode>::from_node(node, src)
16703            })
16704            .map(Self::Import)
16705            .unwrap_or(Self::Unknown(node)),
16706            "import_alias" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16707                <ImportAlias as ::treesitter_types::FromNode>::from_node(node, src)
16708            })
16709            .map(Self::ImportAlias)
16710            .unwrap_or(Self::Unknown(node)),
16711            "import_attribute" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16712                <ImportAttribute as ::treesitter_types::FromNode>::from_node(node, src)
16713            })
16714            .map(Self::ImportAttribute)
16715            .unwrap_or(Self::Unknown(node)),
16716            "import_clause" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16717                <ImportClause as ::treesitter_types::FromNode>::from_node(node, src)
16718            })
16719            .map(Self::ImportClause)
16720            .unwrap_or(Self::Unknown(node)),
16721            "import_require_clause" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16722                <ImportRequireClause as ::treesitter_types::FromNode>::from_node(node, src)
16723            })
16724            .map(Self::ImportRequireClause)
16725            .unwrap_or(Self::Unknown(node)),
16726            "import_specifier" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16727                <ImportSpecifier as ::treesitter_types::FromNode>::from_node(node, src)
16728            })
16729            .map(Self::ImportSpecifier)
16730            .unwrap_or(Self::Unknown(node)),
16731            "import_statement" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16732                <ImportStatement as ::treesitter_types::FromNode>::from_node(node, src)
16733            })
16734            .map(Self::ImportStatement)
16735            .unwrap_or(Self::Unknown(node)),
16736            "index_signature" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16737                <IndexSignature as ::treesitter_types::FromNode>::from_node(node, src)
16738            })
16739            .map(Self::IndexSignature)
16740            .unwrap_or(Self::Unknown(node)),
16741            "index_type_query" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16742                <IndexTypeQuery as ::treesitter_types::FromNode>::from_node(node, src)
16743            })
16744            .map(Self::IndexTypeQuery)
16745            .unwrap_or(Self::Unknown(node)),
16746            "infer_type" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16747                <InferType as ::treesitter_types::FromNode>::from_node(node, src)
16748            })
16749            .map(Self::InferType)
16750            .unwrap_or(Self::Unknown(node)),
16751            "instantiation_expression" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16752                <InstantiationExpression as ::treesitter_types::FromNode>::from_node(node, src)
16753            })
16754            .map(Self::InstantiationExpression)
16755            .unwrap_or(Self::Unknown(node)),
16756            "interface_body" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16757                <InterfaceBody as ::treesitter_types::FromNode>::from_node(node, src)
16758            })
16759            .map(Self::InterfaceBody)
16760            .unwrap_or(Self::Unknown(node)),
16761            "interface_declaration" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16762                <InterfaceDeclaration as ::treesitter_types::FromNode>::from_node(node, src)
16763            })
16764            .map(Self::InterfaceDeclaration)
16765            .unwrap_or(Self::Unknown(node)),
16766            "internal_module" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16767                <InternalModule as ::treesitter_types::FromNode>::from_node(node, src)
16768            })
16769            .map(Self::InternalModule)
16770            .unwrap_or(Self::Unknown(node)),
16771            "intersection_type" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16772                <IntersectionType as ::treesitter_types::FromNode>::from_node(node, src)
16773            })
16774            .map(Self::IntersectionType)
16775            .unwrap_or(Self::Unknown(node)),
16776            "labeled_statement" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16777                <LabeledStatement as ::treesitter_types::FromNode>::from_node(node, src)
16778            })
16779            .map(Self::LabeledStatement)
16780            .unwrap_or(Self::Unknown(node)),
16781            "lexical_declaration" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16782                <LexicalDeclaration as ::treesitter_types::FromNode>::from_node(node, src)
16783            })
16784            .map(Self::LexicalDeclaration)
16785            .unwrap_or(Self::Unknown(node)),
16786            "literal_type" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16787                <LiteralType as ::treesitter_types::FromNode>::from_node(node, src)
16788            })
16789            .map(Self::LiteralType)
16790            .unwrap_or(Self::Unknown(node)),
16791            "lookup_type" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16792                <LookupType as ::treesitter_types::FromNode>::from_node(node, src)
16793            })
16794            .map(Self::LookupType)
16795            .unwrap_or(Self::Unknown(node)),
16796            "mapped_type_clause" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16797                <MappedTypeClause as ::treesitter_types::FromNode>::from_node(node, src)
16798            })
16799            .map(Self::MappedTypeClause)
16800            .unwrap_or(Self::Unknown(node)),
16801            "member_expression" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16802                <MemberExpression as ::treesitter_types::FromNode>::from_node(node, src)
16803            })
16804            .map(Self::MemberExpression)
16805            .unwrap_or(Self::Unknown(node)),
16806            "meta_property" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16807                <MetaProperty as ::treesitter_types::FromNode>::from_node(node, src)
16808            })
16809            .map(Self::MetaProperty)
16810            .unwrap_or(Self::Unknown(node)),
16811            "method_definition" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16812                <MethodDefinition as ::treesitter_types::FromNode>::from_node(node, src)
16813            })
16814            .map(Self::MethodDefinition)
16815            .unwrap_or(Self::Unknown(node)),
16816            "method_signature" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16817                <MethodSignature as ::treesitter_types::FromNode>::from_node(node, src)
16818            })
16819            .map(Self::MethodSignature)
16820            .unwrap_or(Self::Unknown(node)),
16821            "module" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16822                <Module as ::treesitter_types::FromNode>::from_node(node, src)
16823            })
16824            .map(Self::Module)
16825            .unwrap_or(Self::Unknown(node)),
16826            "named_imports" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16827                <NamedImports as ::treesitter_types::FromNode>::from_node(node, src)
16828            })
16829            .map(Self::NamedImports)
16830            .unwrap_or(Self::Unknown(node)),
16831            "namespace_export" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16832                <NamespaceExport as ::treesitter_types::FromNode>::from_node(node, src)
16833            })
16834            .map(Self::NamespaceExport)
16835            .unwrap_or(Self::Unknown(node)),
16836            "namespace_import" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16837                <NamespaceImport as ::treesitter_types::FromNode>::from_node(node, src)
16838            })
16839            .map(Self::NamespaceImport)
16840            .unwrap_or(Self::Unknown(node)),
16841            "nested_identifier" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16842                <NestedIdentifier as ::treesitter_types::FromNode>::from_node(node, src)
16843            })
16844            .map(Self::NestedIdentifier)
16845            .unwrap_or(Self::Unknown(node)),
16846            "nested_type_identifier" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16847                <NestedTypeIdentifier as ::treesitter_types::FromNode>::from_node(node, src)
16848            })
16849            .map(Self::NestedTypeIdentifier)
16850            .unwrap_or(Self::Unknown(node)),
16851            "new_expression" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16852                <NewExpression as ::treesitter_types::FromNode>::from_node(node, src)
16853            })
16854            .map(Self::NewExpression)
16855            .unwrap_or(Self::Unknown(node)),
16856            "non_null_expression" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16857                <NonNullExpression as ::treesitter_types::FromNode>::from_node(node, src)
16858            })
16859            .map(Self::NonNullExpression)
16860            .unwrap_or(Self::Unknown(node)),
16861            "object" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16862                <Object as ::treesitter_types::FromNode>::from_node(node, src)
16863            })
16864            .map(Self::Object)
16865            .unwrap_or(Self::Unknown(node)),
16866            "object_assignment_pattern" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16867                <ObjectAssignmentPattern as ::treesitter_types::FromNode>::from_node(node, src)
16868            })
16869            .map(Self::ObjectAssignmentPattern)
16870            .unwrap_or(Self::Unknown(node)),
16871            "object_pattern" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16872                <ObjectPattern as ::treesitter_types::FromNode>::from_node(node, src)
16873            })
16874            .map(Self::ObjectPattern)
16875            .unwrap_or(Self::Unknown(node)),
16876            "object_type" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16877                <ObjectType as ::treesitter_types::FromNode>::from_node(node, src)
16878            })
16879            .map(Self::ObjectType)
16880            .unwrap_or(Self::Unknown(node)),
16881            "omitting_type_annotation" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16882                <OmittingTypeAnnotation as ::treesitter_types::FromNode>::from_node(node, src)
16883            })
16884            .map(Self::OmittingTypeAnnotation)
16885            .unwrap_or(Self::Unknown(node)),
16886            "opting_type_annotation" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16887                <OptingTypeAnnotation as ::treesitter_types::FromNode>::from_node(node, src)
16888            })
16889            .map(Self::OptingTypeAnnotation)
16890            .unwrap_or(Self::Unknown(node)),
16891            "optional_chain" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16892                <OptionalChain as ::treesitter_types::FromNode>::from_node(node, src)
16893            })
16894            .map(Self::OptionalChain)
16895            .unwrap_or(Self::Unknown(node)),
16896            "optional_parameter" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16897                <OptionalParameter as ::treesitter_types::FromNode>::from_node(node, src)
16898            })
16899            .map(Self::OptionalParameter)
16900            .unwrap_or(Self::Unknown(node)),
16901            "optional_type" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16902                <OptionalType as ::treesitter_types::FromNode>::from_node(node, src)
16903            })
16904            .map(Self::OptionalType)
16905            .unwrap_or(Self::Unknown(node)),
16906            "override_modifier" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16907                <OverrideModifier as ::treesitter_types::FromNode>::from_node(node, src)
16908            })
16909            .map(Self::OverrideModifier)
16910            .unwrap_or(Self::Unknown(node)),
16911            "pair" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16912                <Pair as ::treesitter_types::FromNode>::from_node(node, src)
16913            })
16914            .map(Self::Pair)
16915            .unwrap_or(Self::Unknown(node)),
16916            "pair_pattern" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16917                <PairPattern as ::treesitter_types::FromNode>::from_node(node, src)
16918            })
16919            .map(Self::PairPattern)
16920            .unwrap_or(Self::Unknown(node)),
16921            "parenthesized_expression" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16922                <ParenthesizedExpression as ::treesitter_types::FromNode>::from_node(node, src)
16923            })
16924            .map(Self::ParenthesizedExpression)
16925            .unwrap_or(Self::Unknown(node)),
16926            "parenthesized_type" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16927                <ParenthesizedType as ::treesitter_types::FromNode>::from_node(node, src)
16928            })
16929            .map(Self::ParenthesizedType)
16930            .unwrap_or(Self::Unknown(node)),
16931            "predefined_type" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16932                <PredefinedType as ::treesitter_types::FromNode>::from_node(node, src)
16933            })
16934            .map(Self::PredefinedType)
16935            .unwrap_or(Self::Unknown(node)),
16936            "program" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16937                <Program as ::treesitter_types::FromNode>::from_node(node, src)
16938            })
16939            .map(Self::Program)
16940            .unwrap_or(Self::Unknown(node)),
16941            "property_signature" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16942                <PropertySignature as ::treesitter_types::FromNode>::from_node(node, src)
16943            })
16944            .map(Self::PropertySignature)
16945            .unwrap_or(Self::Unknown(node)),
16946            "public_field_definition" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16947                <PublicFieldDefinition as ::treesitter_types::FromNode>::from_node(node, src)
16948            })
16949            .map(Self::PublicFieldDefinition)
16950            .unwrap_or(Self::Unknown(node)),
16951            "readonly_type" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16952                <ReadonlyType as ::treesitter_types::FromNode>::from_node(node, src)
16953            })
16954            .map(Self::ReadonlyType)
16955            .unwrap_or(Self::Unknown(node)),
16956            "regex" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16957                <Regex as ::treesitter_types::FromNode>::from_node(node, src)
16958            })
16959            .map(Self::Regex)
16960            .unwrap_or(Self::Unknown(node)),
16961            "required_parameter" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16962                <RequiredParameter as ::treesitter_types::FromNode>::from_node(node, src)
16963            })
16964            .map(Self::RequiredParameter)
16965            .unwrap_or(Self::Unknown(node)),
16966            "rest_pattern" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16967                <RestPattern as ::treesitter_types::FromNode>::from_node(node, src)
16968            })
16969            .map(Self::RestPattern)
16970            .unwrap_or(Self::Unknown(node)),
16971            "rest_type" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16972                <RestType as ::treesitter_types::FromNode>::from_node(node, src)
16973            })
16974            .map(Self::RestType)
16975            .unwrap_or(Self::Unknown(node)),
16976            "return_statement" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16977                <ReturnStatement as ::treesitter_types::FromNode>::from_node(node, src)
16978            })
16979            .map(Self::ReturnStatement)
16980            .unwrap_or(Self::Unknown(node)),
16981            "satisfies_expression" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16982                <SatisfiesExpression as ::treesitter_types::FromNode>::from_node(node, src)
16983            })
16984            .map(Self::SatisfiesExpression)
16985            .unwrap_or(Self::Unknown(node)),
16986            "sequence_expression" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16987                <SequenceExpression as ::treesitter_types::FromNode>::from_node(node, src)
16988            })
16989            .map(Self::SequenceExpression)
16990            .unwrap_or(Self::Unknown(node)),
16991            "spread_element" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16992                <SpreadElement as ::treesitter_types::FromNode>::from_node(node, src)
16993            })
16994            .map(Self::SpreadElement)
16995            .unwrap_or(Self::Unknown(node)),
16996            "statement_block" => ::treesitter_types::runtime::maybe_grow_stack(|| {
16997                <StatementBlock as ::treesitter_types::FromNode>::from_node(node, src)
16998            })
16999            .map(Self::StatementBlock)
17000            .unwrap_or(Self::Unknown(node)),
17001            "string" => ::treesitter_types::runtime::maybe_grow_stack(|| {
17002                <String as ::treesitter_types::FromNode>::from_node(node, src)
17003            })
17004            .map(Self::String)
17005            .unwrap_or(Self::Unknown(node)),
17006            "subscript_expression" => ::treesitter_types::runtime::maybe_grow_stack(|| {
17007                <SubscriptExpression as ::treesitter_types::FromNode>::from_node(node, src)
17008            })
17009            .map(Self::SubscriptExpression)
17010            .unwrap_or(Self::Unknown(node)),
17011            "switch_body" => ::treesitter_types::runtime::maybe_grow_stack(|| {
17012                <SwitchBody as ::treesitter_types::FromNode>::from_node(node, src)
17013            })
17014            .map(Self::SwitchBody)
17015            .unwrap_or(Self::Unknown(node)),
17016            "switch_case" => ::treesitter_types::runtime::maybe_grow_stack(|| {
17017                <SwitchCase as ::treesitter_types::FromNode>::from_node(node, src)
17018            })
17019            .map(Self::SwitchCase)
17020            .unwrap_or(Self::Unknown(node)),
17021            "switch_default" => ::treesitter_types::runtime::maybe_grow_stack(|| {
17022                <SwitchDefault as ::treesitter_types::FromNode>::from_node(node, src)
17023            })
17024            .map(Self::SwitchDefault)
17025            .unwrap_or(Self::Unknown(node)),
17026            "switch_statement" => ::treesitter_types::runtime::maybe_grow_stack(|| {
17027                <SwitchStatement as ::treesitter_types::FromNode>::from_node(node, src)
17028            })
17029            .map(Self::SwitchStatement)
17030            .unwrap_or(Self::Unknown(node)),
17031            "template_literal_type" => ::treesitter_types::runtime::maybe_grow_stack(|| {
17032                <TemplateLiteralType as ::treesitter_types::FromNode>::from_node(node, src)
17033            })
17034            .map(Self::TemplateLiteralType)
17035            .unwrap_or(Self::Unknown(node)),
17036            "template_string" => ::treesitter_types::runtime::maybe_grow_stack(|| {
17037                <TemplateString as ::treesitter_types::FromNode>::from_node(node, src)
17038            })
17039            .map(Self::TemplateString)
17040            .unwrap_or(Self::Unknown(node)),
17041            "template_substitution" => ::treesitter_types::runtime::maybe_grow_stack(|| {
17042                <TemplateSubstitution as ::treesitter_types::FromNode>::from_node(node, src)
17043            })
17044            .map(Self::TemplateSubstitution)
17045            .unwrap_or(Self::Unknown(node)),
17046            "template_type" => ::treesitter_types::runtime::maybe_grow_stack(|| {
17047                <TemplateType as ::treesitter_types::FromNode>::from_node(node, src)
17048            })
17049            .map(Self::TemplateType)
17050            .unwrap_or(Self::Unknown(node)),
17051            "ternary_expression" => ::treesitter_types::runtime::maybe_grow_stack(|| {
17052                <TernaryExpression as ::treesitter_types::FromNode>::from_node(node, src)
17053            })
17054            .map(Self::TernaryExpression)
17055            .unwrap_or(Self::Unknown(node)),
17056            "throw_statement" => ::treesitter_types::runtime::maybe_grow_stack(|| {
17057                <ThrowStatement as ::treesitter_types::FromNode>::from_node(node, src)
17058            })
17059            .map(Self::ThrowStatement)
17060            .unwrap_or(Self::Unknown(node)),
17061            "try_statement" => ::treesitter_types::runtime::maybe_grow_stack(|| {
17062                <TryStatement as ::treesitter_types::FromNode>::from_node(node, src)
17063            })
17064            .map(Self::TryStatement)
17065            .unwrap_or(Self::Unknown(node)),
17066            "tuple_type" => ::treesitter_types::runtime::maybe_grow_stack(|| {
17067                <TupleType as ::treesitter_types::FromNode>::from_node(node, src)
17068            })
17069            .map(Self::TupleType)
17070            .unwrap_or(Self::Unknown(node)),
17071            "type_alias_declaration" => ::treesitter_types::runtime::maybe_grow_stack(|| {
17072                <TypeAliasDeclaration as ::treesitter_types::FromNode>::from_node(node, src)
17073            })
17074            .map(Self::TypeAliasDeclaration)
17075            .unwrap_or(Self::Unknown(node)),
17076            "type_annotation" => ::treesitter_types::runtime::maybe_grow_stack(|| {
17077                <TypeAnnotation as ::treesitter_types::FromNode>::from_node(node, src)
17078            })
17079            .map(Self::TypeAnnotation)
17080            .unwrap_or(Self::Unknown(node)),
17081            "type_arguments" => ::treesitter_types::runtime::maybe_grow_stack(|| {
17082                <TypeArguments as ::treesitter_types::FromNode>::from_node(node, src)
17083            })
17084            .map(Self::TypeArguments)
17085            .unwrap_or(Self::Unknown(node)),
17086            "type_assertion" => ::treesitter_types::runtime::maybe_grow_stack(|| {
17087                <TypeAssertion as ::treesitter_types::FromNode>::from_node(node, src)
17088            })
17089            .map(Self::TypeAssertion)
17090            .unwrap_or(Self::Unknown(node)),
17091            "type_parameter" => ::treesitter_types::runtime::maybe_grow_stack(|| {
17092                <TypeParameter as ::treesitter_types::FromNode>::from_node(node, src)
17093            })
17094            .map(Self::TypeParameter)
17095            .unwrap_or(Self::Unknown(node)),
17096            "type_parameters" => ::treesitter_types::runtime::maybe_grow_stack(|| {
17097                <TypeParameters as ::treesitter_types::FromNode>::from_node(node, src)
17098            })
17099            .map(Self::TypeParameters)
17100            .unwrap_or(Self::Unknown(node)),
17101            "type_predicate" => ::treesitter_types::runtime::maybe_grow_stack(|| {
17102                <TypePredicate as ::treesitter_types::FromNode>::from_node(node, src)
17103            })
17104            .map(Self::TypePredicate)
17105            .unwrap_or(Self::Unknown(node)),
17106            "type_predicate_annotation" => ::treesitter_types::runtime::maybe_grow_stack(|| {
17107                <TypePredicateAnnotation as ::treesitter_types::FromNode>::from_node(node, src)
17108            })
17109            .map(Self::TypePredicateAnnotation)
17110            .unwrap_or(Self::Unknown(node)),
17111            "type_query" => ::treesitter_types::runtime::maybe_grow_stack(|| {
17112                <TypeQuery as ::treesitter_types::FromNode>::from_node(node, src)
17113            })
17114            .map(Self::TypeQuery)
17115            .unwrap_or(Self::Unknown(node)),
17116            "unary_expression" => ::treesitter_types::runtime::maybe_grow_stack(|| {
17117                <UnaryExpression as ::treesitter_types::FromNode>::from_node(node, src)
17118            })
17119            .map(Self::UnaryExpression)
17120            .unwrap_or(Self::Unknown(node)),
17121            "union_type" => ::treesitter_types::runtime::maybe_grow_stack(|| {
17122                <UnionType as ::treesitter_types::FromNode>::from_node(node, src)
17123            })
17124            .map(Self::UnionType)
17125            .unwrap_or(Self::Unknown(node)),
17126            "update_expression" => ::treesitter_types::runtime::maybe_grow_stack(|| {
17127                <UpdateExpression as ::treesitter_types::FromNode>::from_node(node, src)
17128            })
17129            .map(Self::UpdateExpression)
17130            .unwrap_or(Self::Unknown(node)),
17131            "variable_declaration" => ::treesitter_types::runtime::maybe_grow_stack(|| {
17132                <VariableDeclaration as ::treesitter_types::FromNode>::from_node(node, src)
17133            })
17134            .map(Self::VariableDeclaration)
17135            .unwrap_or(Self::Unknown(node)),
17136            "variable_declarator" => ::treesitter_types::runtime::maybe_grow_stack(|| {
17137                <VariableDeclarator as ::treesitter_types::FromNode>::from_node(node, src)
17138            })
17139            .map(Self::VariableDeclarator)
17140            .unwrap_or(Self::Unknown(node)),
17141            "while_statement" => ::treesitter_types::runtime::maybe_grow_stack(|| {
17142                <WhileStatement as ::treesitter_types::FromNode>::from_node(node, src)
17143            })
17144            .map(Self::WhileStatement)
17145            .unwrap_or(Self::Unknown(node)),
17146            "with_statement" => ::treesitter_types::runtime::maybe_grow_stack(|| {
17147                <WithStatement as ::treesitter_types::FromNode>::from_node(node, src)
17148            })
17149            .map(Self::WithStatement)
17150            .unwrap_or(Self::Unknown(node)),
17151            "yield_expression" => ::treesitter_types::runtime::maybe_grow_stack(|| {
17152                <YieldExpression as ::treesitter_types::FromNode>::from_node(node, src)
17153            })
17154            .map(Self::YieldExpression)
17155            .unwrap_or(Self::Unknown(node)),
17156            "comment" => ::treesitter_types::runtime::maybe_grow_stack(|| {
17157                <Comment as ::treesitter_types::FromNode>::from_node(node, src)
17158            })
17159            .map(Self::Comment)
17160            .unwrap_or(Self::Unknown(node)),
17161            "escape_sequence" => ::treesitter_types::runtime::maybe_grow_stack(|| {
17162                <EscapeSequence as ::treesitter_types::FromNode>::from_node(node, src)
17163            })
17164            .map(Self::EscapeSequence)
17165            .unwrap_or(Self::Unknown(node)),
17166            "false" => ::treesitter_types::runtime::maybe_grow_stack(|| {
17167                <False as ::treesitter_types::FromNode>::from_node(node, src)
17168            })
17169            .map(Self::False)
17170            .unwrap_or(Self::Unknown(node)),
17171            "hash_bang_line" => ::treesitter_types::runtime::maybe_grow_stack(|| {
17172                <HashBangLine as ::treesitter_types::FromNode>::from_node(node, src)
17173            })
17174            .map(Self::HashBangLine)
17175            .unwrap_or(Self::Unknown(node)),
17176            "html_comment" => ::treesitter_types::runtime::maybe_grow_stack(|| {
17177                <HtmlComment as ::treesitter_types::FromNode>::from_node(node, src)
17178            })
17179            .map(Self::HtmlComment)
17180            .unwrap_or(Self::Unknown(node)),
17181            "null" => ::treesitter_types::runtime::maybe_grow_stack(|| {
17182                <Null as ::treesitter_types::FromNode>::from_node(node, src)
17183            })
17184            .map(Self::Null)
17185            .unwrap_or(Self::Unknown(node)),
17186            "number" => ::treesitter_types::runtime::maybe_grow_stack(|| {
17187                <Number as ::treesitter_types::FromNode>::from_node(node, src)
17188            })
17189            .map(Self::Number)
17190            .unwrap_or(Self::Unknown(node)),
17191            "private_property_identifier" => ::treesitter_types::runtime::maybe_grow_stack(|| {
17192                <PrivatePropertyIdentifier as ::treesitter_types::FromNode>::from_node(node, src)
17193            })
17194            .map(Self::PrivatePropertyIdentifier)
17195            .unwrap_or(Self::Unknown(node)),
17196            "property_identifier" => ::treesitter_types::runtime::maybe_grow_stack(|| {
17197                <PropertyIdentifier as ::treesitter_types::FromNode>::from_node(node, src)
17198            })
17199            .map(Self::PropertyIdentifier)
17200            .unwrap_or(Self::Unknown(node)),
17201            "regex_flags" => ::treesitter_types::runtime::maybe_grow_stack(|| {
17202                <RegexFlags as ::treesitter_types::FromNode>::from_node(node, src)
17203            })
17204            .map(Self::RegexFlags)
17205            .unwrap_or(Self::Unknown(node)),
17206            "regex_pattern" => ::treesitter_types::runtime::maybe_grow_stack(|| {
17207                <RegexPattern as ::treesitter_types::FromNode>::from_node(node, src)
17208            })
17209            .map(Self::RegexPattern)
17210            .unwrap_or(Self::Unknown(node)),
17211            "shorthand_property_identifier" => {
17212                ::treesitter_types::runtime::maybe_grow_stack(|| {
17213                    <ShorthandPropertyIdentifier as ::treesitter_types::FromNode>::from_node(
17214                        node, src,
17215                    )
17216                })
17217                .map(Self::ShorthandPropertyIdentifier)
17218                .unwrap_or(Self::Unknown(node))
17219            }
17220            "shorthand_property_identifier_pattern" => {
17221                ::treesitter_types::runtime::maybe_grow_stack(|| {
17222                    <ShorthandPropertyIdentifierPattern as ::treesitter_types::FromNode>::from_node(
17223                        node, src,
17224                    )
17225                })
17226                .map(Self::ShorthandPropertyIdentifierPattern)
17227                .unwrap_or(Self::Unknown(node))
17228            }
17229            "statement_identifier" => ::treesitter_types::runtime::maybe_grow_stack(|| {
17230                <StatementIdentifier as ::treesitter_types::FromNode>::from_node(node, src)
17231            })
17232            .map(Self::StatementIdentifier)
17233            .unwrap_or(Self::Unknown(node)),
17234            "string_fragment" => ::treesitter_types::runtime::maybe_grow_stack(|| {
17235                <StringFragment as ::treesitter_types::FromNode>::from_node(node, src)
17236            })
17237            .map(Self::StringFragment)
17238            .unwrap_or(Self::Unknown(node)),
17239            "super" => ::treesitter_types::runtime::maybe_grow_stack(|| {
17240                <Super as ::treesitter_types::FromNode>::from_node(node, src)
17241            })
17242            .map(Self::Super)
17243            .unwrap_or(Self::Unknown(node)),
17244            "this" => ::treesitter_types::runtime::maybe_grow_stack(|| {
17245                <This as ::treesitter_types::FromNode>::from_node(node, src)
17246            })
17247            .map(Self::This)
17248            .unwrap_or(Self::Unknown(node)),
17249            "this_type" => ::treesitter_types::runtime::maybe_grow_stack(|| {
17250                <ThisType as ::treesitter_types::FromNode>::from_node(node, src)
17251            })
17252            .map(Self::ThisType)
17253            .unwrap_or(Self::Unknown(node)),
17254            "true" => ::treesitter_types::runtime::maybe_grow_stack(|| {
17255                <True as ::treesitter_types::FromNode>::from_node(node, src)
17256            })
17257            .map(Self::True)
17258            .unwrap_or(Self::Unknown(node)),
17259            "type_identifier" => ::treesitter_types::runtime::maybe_grow_stack(|| {
17260                <TypeIdentifier as ::treesitter_types::FromNode>::from_node(node, src)
17261            })
17262            .map(Self::TypeIdentifier)
17263            .unwrap_or(Self::Unknown(node)),
17264            "undefined" => ::treesitter_types::runtime::maybe_grow_stack(|| {
17265                <Undefined as ::treesitter_types::FromNode>::from_node(node, src)
17266            })
17267            .map(Self::Undefined)
17268            .unwrap_or(Self::Unknown(node)),
17269            _ => Self::Unknown(node),
17270        }
17271    }
17272}
17273impl ::treesitter_types::Spanned for AnyNode<'_> {
17274    fn span(&self) -> ::treesitter_types::Span {
17275        match self {
17276            Self::Declaration(inner) => inner.span(),
17277            Self::Expression(inner) => inner.span(),
17278            Self::Pattern(inner) => inner.span(),
17279            Self::PrimaryExpression(inner) => inner.span(),
17280            Self::PrimaryType(inner) => inner.span(),
17281            Self::Statement(inner) => inner.span(),
17282            Self::Type(inner) => inner.span(),
17283            Self::AbstractClassDeclaration(inner) => inner.span(),
17284            Self::AbstractMethodSignature(inner) => inner.span(),
17285            Self::AccessibilityModifier(inner) => inner.span(),
17286            Self::AddingTypeAnnotation(inner) => inner.span(),
17287            Self::AmbientDeclaration(inner) => inner.span(),
17288            Self::Arguments(inner) => inner.span(),
17289            Self::Array(inner) => inner.span(),
17290            Self::ArrayPattern(inner) => inner.span(),
17291            Self::ArrayType(inner) => inner.span(),
17292            Self::ArrowFunction(inner) => inner.span(),
17293            Self::AsExpression(inner) => inner.span(),
17294            Self::Asserts(inner) => inner.span(),
17295            Self::AssertsAnnotation(inner) => inner.span(),
17296            Self::AssignmentExpression(inner) => inner.span(),
17297            Self::AssignmentPattern(inner) => inner.span(),
17298            Self::AugmentedAssignmentExpression(inner) => inner.span(),
17299            Self::AwaitExpression(inner) => inner.span(),
17300            Self::BinaryExpression(inner) => inner.span(),
17301            Self::BreakStatement(inner) => inner.span(),
17302            Self::CallExpression(inner) => inner.span(),
17303            Self::CallSignature(inner) => inner.span(),
17304            Self::CatchClause(inner) => inner.span(),
17305            Self::Class(inner) => inner.span(),
17306            Self::ClassBody(inner) => inner.span(),
17307            Self::ClassDeclaration(inner) => inner.span(),
17308            Self::ClassHeritage(inner) => inner.span(),
17309            Self::ClassStaticBlock(inner) => inner.span(),
17310            Self::ComputedPropertyName(inner) => inner.span(),
17311            Self::ConditionalType(inner) => inner.span(),
17312            Self::Constraint(inner) => inner.span(),
17313            Self::ConstructSignature(inner) => inner.span(),
17314            Self::ConstructorType(inner) => inner.span(),
17315            Self::ContinueStatement(inner) => inner.span(),
17316            Self::DebuggerStatement(inner) => inner.span(),
17317            Self::Decorator(inner) => inner.span(),
17318            Self::DefaultType(inner) => inner.span(),
17319            Self::DoStatement(inner) => inner.span(),
17320            Self::ElseClause(inner) => inner.span(),
17321            Self::EmptyStatement(inner) => inner.span(),
17322            Self::EnumAssignment(inner) => inner.span(),
17323            Self::EnumBody(inner) => inner.span(),
17324            Self::EnumDeclaration(inner) => inner.span(),
17325            Self::ExistentialType(inner) => inner.span(),
17326            Self::ExportClause(inner) => inner.span(),
17327            Self::ExportSpecifier(inner) => inner.span(),
17328            Self::ExportStatement(inner) => inner.span(),
17329            Self::ExpressionStatement(inner) => inner.span(),
17330            Self::ExtendsClause(inner) => inner.span(),
17331            Self::ExtendsTypeClause(inner) => inner.span(),
17332            Self::FinallyClause(inner) => inner.span(),
17333            Self::FlowMaybeType(inner) => inner.span(),
17334            Self::ForInStatement(inner) => inner.span(),
17335            Self::ForStatement(inner) => inner.span(),
17336            Self::FormalParameters(inner) => inner.span(),
17337            Self::FunctionDeclaration(inner) => inner.span(),
17338            Self::FunctionExpression(inner) => inner.span(),
17339            Self::FunctionSignature(inner) => inner.span(),
17340            Self::FunctionType(inner) => inner.span(),
17341            Self::GeneratorFunction(inner) => inner.span(),
17342            Self::GeneratorFunctionDeclaration(inner) => inner.span(),
17343            Self::GenericType(inner) => inner.span(),
17344            Self::Identifier(inner) => inner.span(),
17345            Self::IfStatement(inner) => inner.span(),
17346            Self::ImplementsClause(inner) => inner.span(),
17347            Self::Import(inner) => inner.span(),
17348            Self::ImportAlias(inner) => inner.span(),
17349            Self::ImportAttribute(inner) => inner.span(),
17350            Self::ImportClause(inner) => inner.span(),
17351            Self::ImportRequireClause(inner) => inner.span(),
17352            Self::ImportSpecifier(inner) => inner.span(),
17353            Self::ImportStatement(inner) => inner.span(),
17354            Self::IndexSignature(inner) => inner.span(),
17355            Self::IndexTypeQuery(inner) => inner.span(),
17356            Self::InferType(inner) => inner.span(),
17357            Self::InstantiationExpression(inner) => inner.span(),
17358            Self::InterfaceBody(inner) => inner.span(),
17359            Self::InterfaceDeclaration(inner) => inner.span(),
17360            Self::InternalModule(inner) => inner.span(),
17361            Self::IntersectionType(inner) => inner.span(),
17362            Self::LabeledStatement(inner) => inner.span(),
17363            Self::LexicalDeclaration(inner) => inner.span(),
17364            Self::LiteralType(inner) => inner.span(),
17365            Self::LookupType(inner) => inner.span(),
17366            Self::MappedTypeClause(inner) => inner.span(),
17367            Self::MemberExpression(inner) => inner.span(),
17368            Self::MetaProperty(inner) => inner.span(),
17369            Self::MethodDefinition(inner) => inner.span(),
17370            Self::MethodSignature(inner) => inner.span(),
17371            Self::Module(inner) => inner.span(),
17372            Self::NamedImports(inner) => inner.span(),
17373            Self::NamespaceExport(inner) => inner.span(),
17374            Self::NamespaceImport(inner) => inner.span(),
17375            Self::NestedIdentifier(inner) => inner.span(),
17376            Self::NestedTypeIdentifier(inner) => inner.span(),
17377            Self::NewExpression(inner) => inner.span(),
17378            Self::NonNullExpression(inner) => inner.span(),
17379            Self::Object(inner) => inner.span(),
17380            Self::ObjectAssignmentPattern(inner) => inner.span(),
17381            Self::ObjectPattern(inner) => inner.span(),
17382            Self::ObjectType(inner) => inner.span(),
17383            Self::OmittingTypeAnnotation(inner) => inner.span(),
17384            Self::OptingTypeAnnotation(inner) => inner.span(),
17385            Self::OptionalChain(inner) => inner.span(),
17386            Self::OptionalParameter(inner) => inner.span(),
17387            Self::OptionalType(inner) => inner.span(),
17388            Self::OverrideModifier(inner) => inner.span(),
17389            Self::Pair(inner) => inner.span(),
17390            Self::PairPattern(inner) => inner.span(),
17391            Self::ParenthesizedExpression(inner) => inner.span(),
17392            Self::ParenthesizedType(inner) => inner.span(),
17393            Self::PredefinedType(inner) => inner.span(),
17394            Self::Program(inner) => inner.span(),
17395            Self::PropertySignature(inner) => inner.span(),
17396            Self::PublicFieldDefinition(inner) => inner.span(),
17397            Self::ReadonlyType(inner) => inner.span(),
17398            Self::Regex(inner) => inner.span(),
17399            Self::RequiredParameter(inner) => inner.span(),
17400            Self::RestPattern(inner) => inner.span(),
17401            Self::RestType(inner) => inner.span(),
17402            Self::ReturnStatement(inner) => inner.span(),
17403            Self::SatisfiesExpression(inner) => inner.span(),
17404            Self::SequenceExpression(inner) => inner.span(),
17405            Self::SpreadElement(inner) => inner.span(),
17406            Self::StatementBlock(inner) => inner.span(),
17407            Self::String(inner) => inner.span(),
17408            Self::SubscriptExpression(inner) => inner.span(),
17409            Self::SwitchBody(inner) => inner.span(),
17410            Self::SwitchCase(inner) => inner.span(),
17411            Self::SwitchDefault(inner) => inner.span(),
17412            Self::SwitchStatement(inner) => inner.span(),
17413            Self::TemplateLiteralType(inner) => inner.span(),
17414            Self::TemplateString(inner) => inner.span(),
17415            Self::TemplateSubstitution(inner) => inner.span(),
17416            Self::TemplateType(inner) => inner.span(),
17417            Self::TernaryExpression(inner) => inner.span(),
17418            Self::ThrowStatement(inner) => inner.span(),
17419            Self::TryStatement(inner) => inner.span(),
17420            Self::TupleType(inner) => inner.span(),
17421            Self::TypeAliasDeclaration(inner) => inner.span(),
17422            Self::TypeAnnotation(inner) => inner.span(),
17423            Self::TypeArguments(inner) => inner.span(),
17424            Self::TypeAssertion(inner) => inner.span(),
17425            Self::TypeParameter(inner) => inner.span(),
17426            Self::TypeParameters(inner) => inner.span(),
17427            Self::TypePredicate(inner) => inner.span(),
17428            Self::TypePredicateAnnotation(inner) => inner.span(),
17429            Self::TypeQuery(inner) => inner.span(),
17430            Self::UnaryExpression(inner) => inner.span(),
17431            Self::UnionType(inner) => inner.span(),
17432            Self::UpdateExpression(inner) => inner.span(),
17433            Self::VariableDeclaration(inner) => inner.span(),
17434            Self::VariableDeclarator(inner) => inner.span(),
17435            Self::WhileStatement(inner) => inner.span(),
17436            Self::WithStatement(inner) => inner.span(),
17437            Self::YieldExpression(inner) => inner.span(),
17438            Self::Comment(inner) => inner.span(),
17439            Self::EscapeSequence(inner) => inner.span(),
17440            Self::False(inner) => inner.span(),
17441            Self::HashBangLine(inner) => inner.span(),
17442            Self::HtmlComment(inner) => inner.span(),
17443            Self::Null(inner) => inner.span(),
17444            Self::Number(inner) => inner.span(),
17445            Self::PrivatePropertyIdentifier(inner) => inner.span(),
17446            Self::PropertyIdentifier(inner) => inner.span(),
17447            Self::RegexFlags(inner) => inner.span(),
17448            Self::RegexPattern(inner) => inner.span(),
17449            Self::ShorthandPropertyIdentifier(inner) => inner.span(),
17450            Self::ShorthandPropertyIdentifierPattern(inner) => inner.span(),
17451            Self::StatementIdentifier(inner) => inner.span(),
17452            Self::StringFragment(inner) => inner.span(),
17453            Self::Super(inner) => inner.span(),
17454            Self::This(inner) => inner.span(),
17455            Self::ThisType(inner) => inner.span(),
17456            Self::True(inner) => inner.span(),
17457            Self::TypeIdentifier(inner) => inner.span(),
17458            Self::Undefined(inner) => inner.span(),
17459            Self::Unknown(node) => ::treesitter_types::Span::from(*node),
17460        }
17461    }
17462}