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: ::tree_sitter::Node<'tree>,
22        src: &'tree [u8],
23    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
24        match node.kind() {
25            "abstract_class_declaration" => {
26                Ok(Self::AbstractClassDeclaration(::std::boxed::Box::new(
27                    <AbstractClassDeclaration as ::treesitter_types::FromNode>::from_node(
28                        node, src,
29                    )?,
30                )))
31            }
32            "ambient_declaration" => Ok(Self::AmbientDeclaration(::std::boxed::Box::new(
33                <AmbientDeclaration as ::treesitter_types::FromNode>::from_node(node, src)?,
34            ))),
35            "class_declaration" => Ok(Self::ClassDeclaration(::std::boxed::Box::new(
36                <ClassDeclaration as ::treesitter_types::FromNode>::from_node(node, src)?,
37            ))),
38            "enum_declaration" => Ok(Self::EnumDeclaration(::std::boxed::Box::new(
39                <EnumDeclaration as ::treesitter_types::FromNode>::from_node(node, src)?,
40            ))),
41            "function_declaration" => Ok(Self::FunctionDeclaration(::std::boxed::Box::new(
42                <FunctionDeclaration as ::treesitter_types::FromNode>::from_node(node, src)?,
43            ))),
44            "function_signature" => Ok(Self::FunctionSignature(::std::boxed::Box::new(
45                <FunctionSignature as ::treesitter_types::FromNode>::from_node(node, src)?,
46            ))),
47            "generator_function_declaration" => {
48                Ok(Self::GeneratorFunctionDeclaration(::std::boxed::Box::new(
49                    <GeneratorFunctionDeclaration as ::treesitter_types::FromNode>::from_node(
50                        node, src,
51                    )?,
52                )))
53            }
54            "import_alias" => Ok(Self::ImportAlias(::std::boxed::Box::new(
55                <ImportAlias as ::treesitter_types::FromNode>::from_node(node, src)?,
56            ))),
57            "interface_declaration" => Ok(Self::InterfaceDeclaration(::std::boxed::Box::new(
58                <InterfaceDeclaration as ::treesitter_types::FromNode>::from_node(node, src)?,
59            ))),
60            "internal_module" => Ok(Self::InternalModule(::std::boxed::Box::new(
61                <InternalModule as ::treesitter_types::FromNode>::from_node(node, src)?,
62            ))),
63            "lexical_declaration" => Ok(Self::LexicalDeclaration(::std::boxed::Box::new(
64                <LexicalDeclaration as ::treesitter_types::FromNode>::from_node(node, src)?,
65            ))),
66            "module" => Ok(Self::Module(::std::boxed::Box::new(
67                <Module as ::treesitter_types::FromNode>::from_node(node, src)?,
68            ))),
69            "type_alias_declaration" => Ok(Self::TypeAliasDeclaration(::std::boxed::Box::new(
70                <TypeAliasDeclaration as ::treesitter_types::FromNode>::from_node(node, src)?,
71            ))),
72            "variable_declaration" => Ok(Self::VariableDeclaration(::std::boxed::Box::new(
73                <VariableDeclaration as ::treesitter_types::FromNode>::from_node(node, src)?,
74            ))),
75            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
76        }
77    }
78}
79impl ::treesitter_types::Spanned for Declaration<'_> {
80    fn span(&self) -> ::treesitter_types::Span {
81        match self {
82            Self::AbstractClassDeclaration(inner) => inner.span(),
83            Self::AmbientDeclaration(inner) => inner.span(),
84            Self::ClassDeclaration(inner) => inner.span(),
85            Self::EnumDeclaration(inner) => inner.span(),
86            Self::FunctionDeclaration(inner) => inner.span(),
87            Self::FunctionSignature(inner) => inner.span(),
88            Self::GeneratorFunctionDeclaration(inner) => inner.span(),
89            Self::ImportAlias(inner) => inner.span(),
90            Self::InterfaceDeclaration(inner) => inner.span(),
91            Self::InternalModule(inner) => inner.span(),
92            Self::LexicalDeclaration(inner) => inner.span(),
93            Self::Module(inner) => inner.span(),
94            Self::TypeAliasDeclaration(inner) => inner.span(),
95            Self::VariableDeclaration(inner) => inner.span(),
96        }
97    }
98}
99#[derive(Debug, Clone, PartialEq, Eq)]
100pub enum Expression<'tree> {
101    AsExpression(::std::boxed::Box<AsExpression<'tree>>),
102    AssignmentExpression(::std::boxed::Box<AssignmentExpression<'tree>>),
103    AugmentedAssignmentExpression(::std::boxed::Box<AugmentedAssignmentExpression<'tree>>),
104    AwaitExpression(::std::boxed::Box<AwaitExpression<'tree>>),
105    BinaryExpression(::std::boxed::Box<BinaryExpression<'tree>>),
106    InstantiationExpression(::std::boxed::Box<InstantiationExpression<'tree>>),
107    InternalModule(::std::boxed::Box<InternalModule<'tree>>),
108    NewExpression(::std::boxed::Box<NewExpression<'tree>>),
109    PrimaryExpression(::std::boxed::Box<PrimaryExpression<'tree>>),
110    SatisfiesExpression(::std::boxed::Box<SatisfiesExpression<'tree>>),
111    TernaryExpression(::std::boxed::Box<TernaryExpression<'tree>>),
112    TypeAssertion(::std::boxed::Box<TypeAssertion<'tree>>),
113    UnaryExpression(::std::boxed::Box<UnaryExpression<'tree>>),
114    UpdateExpression(::std::boxed::Box<UpdateExpression<'tree>>),
115    YieldExpression(::std::boxed::Box<YieldExpression<'tree>>),
116}
117impl<'tree> ::treesitter_types::FromNode<'tree> for Expression<'tree> {
118    #[allow(clippy::collapsible_else_if)]
119    fn from_node(
120        node: ::tree_sitter::Node<'tree>,
121        src: &'tree [u8],
122    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
123        match node.kind() {
124            "as_expression" => Ok(Self::AsExpression(::std::boxed::Box::new(
125                <AsExpression as ::treesitter_types::FromNode>::from_node(node, src)?,
126            ))),
127            "assignment_expression" => Ok(Self::AssignmentExpression(::std::boxed::Box::new(
128                <AssignmentExpression as ::treesitter_types::FromNode>::from_node(node, src)?,
129            ))),
130            "augmented_assignment_expression" => {
131                Ok(Self::AugmentedAssignmentExpression(::std::boxed::Box::new(
132                    <AugmentedAssignmentExpression as ::treesitter_types::FromNode>::from_node(
133                        node, src,
134                    )?,
135                )))
136            }
137            "await_expression" => Ok(Self::AwaitExpression(::std::boxed::Box::new(
138                <AwaitExpression as ::treesitter_types::FromNode>::from_node(node, src)?,
139            ))),
140            "binary_expression" => Ok(Self::BinaryExpression(::std::boxed::Box::new(
141                <BinaryExpression as ::treesitter_types::FromNode>::from_node(node, src)?,
142            ))),
143            "instantiation_expression" => {
144                Ok(Self::InstantiationExpression(::std::boxed::Box::new(
145                    <InstantiationExpression as ::treesitter_types::FromNode>::from_node(
146                        node, src,
147                    )?,
148                )))
149            }
150            "internal_module" => Ok(Self::InternalModule(::std::boxed::Box::new(
151                <InternalModule as ::treesitter_types::FromNode>::from_node(node, src)?,
152            ))),
153            "new_expression" => Ok(Self::NewExpression(::std::boxed::Box::new(
154                <NewExpression as ::treesitter_types::FromNode>::from_node(node, src)?,
155            ))),
156            "satisfies_expression" => Ok(Self::SatisfiesExpression(::std::boxed::Box::new(
157                <SatisfiesExpression as ::treesitter_types::FromNode>::from_node(node, src)?,
158            ))),
159            "ternary_expression" => Ok(Self::TernaryExpression(::std::boxed::Box::new(
160                <TernaryExpression as ::treesitter_types::FromNode>::from_node(node, src)?,
161            ))),
162            "type_assertion" => Ok(Self::TypeAssertion(::std::boxed::Box::new(
163                <TypeAssertion as ::treesitter_types::FromNode>::from_node(node, src)?,
164            ))),
165            "unary_expression" => Ok(Self::UnaryExpression(::std::boxed::Box::new(
166                <UnaryExpression as ::treesitter_types::FromNode>::from_node(node, src)?,
167            ))),
168            "update_expression" => Ok(Self::UpdateExpression(::std::boxed::Box::new(
169                <UpdateExpression as ::treesitter_types::FromNode>::from_node(node, src)?,
170            ))),
171            "yield_expression" => Ok(Self::YieldExpression(::std::boxed::Box::new(
172                <YieldExpression as ::treesitter_types::FromNode>::from_node(node, src)?,
173            ))),
174            _other => {
175                if let Ok(v) =
176                    <PrimaryExpression as ::treesitter_types::FromNode>::from_node(node, src)
177                {
178                    Ok(Self::PrimaryExpression(::std::boxed::Box::new(v)))
179                } else {
180                    Err(::treesitter_types::ParseError::unexpected_kind(
181                        _other, node,
182                    ))
183                }
184            }
185        }
186    }
187}
188impl ::treesitter_types::Spanned for Expression<'_> {
189    fn span(&self) -> ::treesitter_types::Span {
190        match self {
191            Self::AsExpression(inner) => inner.span(),
192            Self::AssignmentExpression(inner) => inner.span(),
193            Self::AugmentedAssignmentExpression(inner) => inner.span(),
194            Self::AwaitExpression(inner) => inner.span(),
195            Self::BinaryExpression(inner) => inner.span(),
196            Self::InstantiationExpression(inner) => inner.span(),
197            Self::InternalModule(inner) => inner.span(),
198            Self::NewExpression(inner) => inner.span(),
199            Self::PrimaryExpression(inner) => inner.span(),
200            Self::SatisfiesExpression(inner) => inner.span(),
201            Self::TernaryExpression(inner) => inner.span(),
202            Self::TypeAssertion(inner) => inner.span(),
203            Self::UnaryExpression(inner) => inner.span(),
204            Self::UpdateExpression(inner) => inner.span(),
205            Self::YieldExpression(inner) => inner.span(),
206        }
207    }
208}
209#[derive(Debug, Clone, PartialEq, Eq)]
210pub enum Pattern<'tree> {
211    ArrayPattern(::std::boxed::Box<ArrayPattern<'tree>>),
212    Identifier(::std::boxed::Box<Identifier<'tree>>),
213    MemberExpression(::std::boxed::Box<MemberExpression<'tree>>),
214    NonNullExpression(::std::boxed::Box<NonNullExpression<'tree>>),
215    ObjectPattern(::std::boxed::Box<ObjectPattern<'tree>>),
216    RestPattern(::std::boxed::Box<RestPattern<'tree>>),
217    SubscriptExpression(::std::boxed::Box<SubscriptExpression<'tree>>),
218    Undefined(::std::boxed::Box<Undefined<'tree>>),
219}
220impl<'tree> ::treesitter_types::FromNode<'tree> for Pattern<'tree> {
221    #[allow(clippy::collapsible_else_if)]
222    fn from_node(
223        node: ::tree_sitter::Node<'tree>,
224        src: &'tree [u8],
225    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
226        match node.kind() {
227            "array_pattern" => Ok(Self::ArrayPattern(::std::boxed::Box::new(
228                <ArrayPattern as ::treesitter_types::FromNode>::from_node(node, src)?,
229            ))),
230            "identifier" => Ok(Self::Identifier(::std::boxed::Box::new(
231                <Identifier as ::treesitter_types::FromNode>::from_node(node, src)?,
232            ))),
233            "member_expression" => Ok(Self::MemberExpression(::std::boxed::Box::new(
234                <MemberExpression as ::treesitter_types::FromNode>::from_node(node, src)?,
235            ))),
236            "non_null_expression" => Ok(Self::NonNullExpression(::std::boxed::Box::new(
237                <NonNullExpression as ::treesitter_types::FromNode>::from_node(node, src)?,
238            ))),
239            "object_pattern" => Ok(Self::ObjectPattern(::std::boxed::Box::new(
240                <ObjectPattern as ::treesitter_types::FromNode>::from_node(node, src)?,
241            ))),
242            "rest_pattern" => Ok(Self::RestPattern(::std::boxed::Box::new(
243                <RestPattern as ::treesitter_types::FromNode>::from_node(node, src)?,
244            ))),
245            "subscript_expression" => Ok(Self::SubscriptExpression(::std::boxed::Box::new(
246                <SubscriptExpression as ::treesitter_types::FromNode>::from_node(node, src)?,
247            ))),
248            "undefined" => Ok(Self::Undefined(::std::boxed::Box::new(
249                <Undefined as ::treesitter_types::FromNode>::from_node(node, src)?,
250            ))),
251            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
252        }
253    }
254}
255impl ::treesitter_types::Spanned for Pattern<'_> {
256    fn span(&self) -> ::treesitter_types::Span {
257        match self {
258            Self::ArrayPattern(inner) => inner.span(),
259            Self::Identifier(inner) => inner.span(),
260            Self::MemberExpression(inner) => inner.span(),
261            Self::NonNullExpression(inner) => inner.span(),
262            Self::ObjectPattern(inner) => inner.span(),
263            Self::RestPattern(inner) => inner.span(),
264            Self::SubscriptExpression(inner) => inner.span(),
265            Self::Undefined(inner) => inner.span(),
266        }
267    }
268}
269#[derive(Debug, Clone, PartialEq, Eq)]
270pub enum PrimaryExpression<'tree> {
271    Array(::std::boxed::Box<Array<'tree>>),
272    ArrowFunction(::std::boxed::Box<ArrowFunction<'tree>>),
273    CallExpression(::std::boxed::Box<CallExpression<'tree>>),
274    Class(::std::boxed::Box<Class<'tree>>),
275    False(::std::boxed::Box<False<'tree>>),
276    FunctionExpression(::std::boxed::Box<FunctionExpression<'tree>>),
277    GeneratorFunction(::std::boxed::Box<GeneratorFunction<'tree>>),
278    Identifier(::std::boxed::Box<Identifier<'tree>>),
279    MemberExpression(::std::boxed::Box<MemberExpression<'tree>>),
280    MetaProperty(::std::boxed::Box<MetaProperty<'tree>>),
281    NonNullExpression(::std::boxed::Box<NonNullExpression<'tree>>),
282    Null(::std::boxed::Box<Null<'tree>>),
283    Number(::std::boxed::Box<Number<'tree>>),
284    Object(::std::boxed::Box<Object<'tree>>),
285    ParenthesizedExpression(::std::boxed::Box<ParenthesizedExpression<'tree>>),
286    Regex(::std::boxed::Box<Regex<'tree>>),
287    String(::std::boxed::Box<String<'tree>>),
288    SubscriptExpression(::std::boxed::Box<SubscriptExpression<'tree>>),
289    Super(::std::boxed::Box<Super<'tree>>),
290    TemplateString(::std::boxed::Box<TemplateString<'tree>>),
291    This(::std::boxed::Box<This<'tree>>),
292    True(::std::boxed::Box<True<'tree>>),
293    Undefined(::std::boxed::Box<Undefined<'tree>>),
294}
295impl<'tree> ::treesitter_types::FromNode<'tree> for PrimaryExpression<'tree> {
296    #[allow(clippy::collapsible_else_if)]
297    fn from_node(
298        node: ::tree_sitter::Node<'tree>,
299        src: &'tree [u8],
300    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
301        match node.kind() {
302            "array" => Ok(Self::Array(::std::boxed::Box::new(
303                <Array as ::treesitter_types::FromNode>::from_node(node, src)?,
304            ))),
305            "arrow_function" => Ok(Self::ArrowFunction(::std::boxed::Box::new(
306                <ArrowFunction as ::treesitter_types::FromNode>::from_node(node, src)?,
307            ))),
308            "call_expression" => Ok(Self::CallExpression(::std::boxed::Box::new(
309                <CallExpression as ::treesitter_types::FromNode>::from_node(node, src)?,
310            ))),
311            "class" => Ok(Self::Class(::std::boxed::Box::new(
312                <Class as ::treesitter_types::FromNode>::from_node(node, src)?,
313            ))),
314            "false" => Ok(Self::False(::std::boxed::Box::new(
315                <False as ::treesitter_types::FromNode>::from_node(node, src)?,
316            ))),
317            "function_expression" => Ok(Self::FunctionExpression(::std::boxed::Box::new(
318                <FunctionExpression as ::treesitter_types::FromNode>::from_node(node, src)?,
319            ))),
320            "generator_function" => Ok(Self::GeneratorFunction(::std::boxed::Box::new(
321                <GeneratorFunction as ::treesitter_types::FromNode>::from_node(node, src)?,
322            ))),
323            "identifier" => Ok(Self::Identifier(::std::boxed::Box::new(
324                <Identifier as ::treesitter_types::FromNode>::from_node(node, src)?,
325            ))),
326            "member_expression" => Ok(Self::MemberExpression(::std::boxed::Box::new(
327                <MemberExpression as ::treesitter_types::FromNode>::from_node(node, src)?,
328            ))),
329            "meta_property" => Ok(Self::MetaProperty(::std::boxed::Box::new(
330                <MetaProperty as ::treesitter_types::FromNode>::from_node(node, src)?,
331            ))),
332            "non_null_expression" => Ok(Self::NonNullExpression(::std::boxed::Box::new(
333                <NonNullExpression as ::treesitter_types::FromNode>::from_node(node, src)?,
334            ))),
335            "null" => Ok(Self::Null(::std::boxed::Box::new(
336                <Null as ::treesitter_types::FromNode>::from_node(node, src)?,
337            ))),
338            "number" => Ok(Self::Number(::std::boxed::Box::new(
339                <Number as ::treesitter_types::FromNode>::from_node(node, src)?,
340            ))),
341            "object" => Ok(Self::Object(::std::boxed::Box::new(
342                <Object as ::treesitter_types::FromNode>::from_node(node, src)?,
343            ))),
344            "parenthesized_expression" => {
345                Ok(Self::ParenthesizedExpression(::std::boxed::Box::new(
346                    <ParenthesizedExpression as ::treesitter_types::FromNode>::from_node(
347                        node, src,
348                    )?,
349                )))
350            }
351            "regex" => Ok(Self::Regex(::std::boxed::Box::new(
352                <Regex as ::treesitter_types::FromNode>::from_node(node, src)?,
353            ))),
354            "string" => Ok(Self::String(::std::boxed::Box::new(
355                <String as ::treesitter_types::FromNode>::from_node(node, src)?,
356            ))),
357            "subscript_expression" => Ok(Self::SubscriptExpression(::std::boxed::Box::new(
358                <SubscriptExpression as ::treesitter_types::FromNode>::from_node(node, src)?,
359            ))),
360            "super" => Ok(Self::Super(::std::boxed::Box::new(
361                <Super as ::treesitter_types::FromNode>::from_node(node, src)?,
362            ))),
363            "template_string" => Ok(Self::TemplateString(::std::boxed::Box::new(
364                <TemplateString as ::treesitter_types::FromNode>::from_node(node, src)?,
365            ))),
366            "this" => Ok(Self::This(::std::boxed::Box::new(
367                <This as ::treesitter_types::FromNode>::from_node(node, src)?,
368            ))),
369            "true" => Ok(Self::True(::std::boxed::Box::new(
370                <True as ::treesitter_types::FromNode>::from_node(node, src)?,
371            ))),
372            "undefined" => Ok(Self::Undefined(::std::boxed::Box::new(
373                <Undefined as ::treesitter_types::FromNode>::from_node(node, src)?,
374            ))),
375            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
376        }
377    }
378}
379impl ::treesitter_types::Spanned for PrimaryExpression<'_> {
380    fn span(&self) -> ::treesitter_types::Span {
381        match self {
382            Self::Array(inner) => inner.span(),
383            Self::ArrowFunction(inner) => inner.span(),
384            Self::CallExpression(inner) => inner.span(),
385            Self::Class(inner) => inner.span(),
386            Self::False(inner) => inner.span(),
387            Self::FunctionExpression(inner) => inner.span(),
388            Self::GeneratorFunction(inner) => inner.span(),
389            Self::Identifier(inner) => inner.span(),
390            Self::MemberExpression(inner) => inner.span(),
391            Self::MetaProperty(inner) => inner.span(),
392            Self::NonNullExpression(inner) => inner.span(),
393            Self::Null(inner) => inner.span(),
394            Self::Number(inner) => inner.span(),
395            Self::Object(inner) => inner.span(),
396            Self::ParenthesizedExpression(inner) => inner.span(),
397            Self::Regex(inner) => inner.span(),
398            Self::String(inner) => inner.span(),
399            Self::SubscriptExpression(inner) => inner.span(),
400            Self::Super(inner) => inner.span(),
401            Self::TemplateString(inner) => inner.span(),
402            Self::This(inner) => inner.span(),
403            Self::True(inner) => inner.span(),
404            Self::Undefined(inner) => inner.span(),
405        }
406    }
407}
408#[derive(Debug, Clone, PartialEq, Eq)]
409pub enum PrimaryType<'tree> {
410    ArrayType(::std::boxed::Box<ArrayType<'tree>>),
411    ConditionalType(::std::boxed::Box<ConditionalType<'tree>>),
412    Const(::treesitter_types::Span),
413    ExistentialType(::std::boxed::Box<ExistentialType<'tree>>),
414    FlowMaybeType(::std::boxed::Box<FlowMaybeType<'tree>>),
415    GenericType(::std::boxed::Box<GenericType<'tree>>),
416    IndexTypeQuery(::std::boxed::Box<IndexTypeQuery<'tree>>),
417    IntersectionType(::std::boxed::Box<IntersectionType<'tree>>),
418    LiteralType(::std::boxed::Box<LiteralType<'tree>>),
419    LookupType(::std::boxed::Box<LookupType<'tree>>),
420    NestedTypeIdentifier(::std::boxed::Box<NestedTypeIdentifier<'tree>>),
421    ObjectType(::std::boxed::Box<ObjectType<'tree>>),
422    ParenthesizedType(::std::boxed::Box<ParenthesizedType<'tree>>),
423    PredefinedType(::std::boxed::Box<PredefinedType<'tree>>),
424    TemplateLiteralType(::std::boxed::Box<TemplateLiteralType<'tree>>),
425    ThisType(::std::boxed::Box<ThisType<'tree>>),
426    TupleType(::std::boxed::Box<TupleType<'tree>>),
427    TypeIdentifier(::std::boxed::Box<TypeIdentifier<'tree>>),
428    TypeQuery(::std::boxed::Box<TypeQuery<'tree>>),
429    UnionType(::std::boxed::Box<UnionType<'tree>>),
430}
431impl<'tree> ::treesitter_types::FromNode<'tree> for PrimaryType<'tree> {
432    #[allow(clippy::collapsible_else_if)]
433    fn from_node(
434        node: ::tree_sitter::Node<'tree>,
435        src: &'tree [u8],
436    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
437        match node.kind() {
438            "array_type" => Ok(Self::ArrayType(::std::boxed::Box::new(
439                <ArrayType as ::treesitter_types::FromNode>::from_node(node, src)?,
440            ))),
441            "conditional_type" => Ok(Self::ConditionalType(::std::boxed::Box::new(
442                <ConditionalType as ::treesitter_types::FromNode>::from_node(node, src)?,
443            ))),
444            "const" => Ok(Self::Const(::treesitter_types::Span::from(node))),
445            "existential_type" => Ok(Self::ExistentialType(::std::boxed::Box::new(
446                <ExistentialType as ::treesitter_types::FromNode>::from_node(node, src)?,
447            ))),
448            "flow_maybe_type" => Ok(Self::FlowMaybeType(::std::boxed::Box::new(
449                <FlowMaybeType as ::treesitter_types::FromNode>::from_node(node, src)?,
450            ))),
451            "generic_type" => Ok(Self::GenericType(::std::boxed::Box::new(
452                <GenericType as ::treesitter_types::FromNode>::from_node(node, src)?,
453            ))),
454            "index_type_query" => Ok(Self::IndexTypeQuery(::std::boxed::Box::new(
455                <IndexTypeQuery as ::treesitter_types::FromNode>::from_node(node, src)?,
456            ))),
457            "intersection_type" => Ok(Self::IntersectionType(::std::boxed::Box::new(
458                <IntersectionType as ::treesitter_types::FromNode>::from_node(node, src)?,
459            ))),
460            "literal_type" => Ok(Self::LiteralType(::std::boxed::Box::new(
461                <LiteralType as ::treesitter_types::FromNode>::from_node(node, src)?,
462            ))),
463            "lookup_type" => Ok(Self::LookupType(::std::boxed::Box::new(
464                <LookupType as ::treesitter_types::FromNode>::from_node(node, src)?,
465            ))),
466            "nested_type_identifier" => Ok(Self::NestedTypeIdentifier(::std::boxed::Box::new(
467                <NestedTypeIdentifier as ::treesitter_types::FromNode>::from_node(node, src)?,
468            ))),
469            "object_type" => Ok(Self::ObjectType(::std::boxed::Box::new(
470                <ObjectType as ::treesitter_types::FromNode>::from_node(node, src)?,
471            ))),
472            "parenthesized_type" => Ok(Self::ParenthesizedType(::std::boxed::Box::new(
473                <ParenthesizedType as ::treesitter_types::FromNode>::from_node(node, src)?,
474            ))),
475            "predefined_type" => Ok(Self::PredefinedType(::std::boxed::Box::new(
476                <PredefinedType as ::treesitter_types::FromNode>::from_node(node, src)?,
477            ))),
478            "template_literal_type" => Ok(Self::TemplateLiteralType(::std::boxed::Box::new(
479                <TemplateLiteralType as ::treesitter_types::FromNode>::from_node(node, src)?,
480            ))),
481            "this_type" => Ok(Self::ThisType(::std::boxed::Box::new(
482                <ThisType as ::treesitter_types::FromNode>::from_node(node, src)?,
483            ))),
484            "tuple_type" => Ok(Self::TupleType(::std::boxed::Box::new(
485                <TupleType as ::treesitter_types::FromNode>::from_node(node, src)?,
486            ))),
487            "type_identifier" => Ok(Self::TypeIdentifier(::std::boxed::Box::new(
488                <TypeIdentifier as ::treesitter_types::FromNode>::from_node(node, src)?,
489            ))),
490            "type_query" => Ok(Self::TypeQuery(::std::boxed::Box::new(
491                <TypeQuery as ::treesitter_types::FromNode>::from_node(node, src)?,
492            ))),
493            "union_type" => Ok(Self::UnionType(::std::boxed::Box::new(
494                <UnionType as ::treesitter_types::FromNode>::from_node(node, src)?,
495            ))),
496            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
497        }
498    }
499}
500impl ::treesitter_types::Spanned for PrimaryType<'_> {
501    fn span(&self) -> ::treesitter_types::Span {
502        match self {
503            Self::ArrayType(inner) => inner.span(),
504            Self::ConditionalType(inner) => inner.span(),
505            Self::Const(span) => *span,
506            Self::ExistentialType(inner) => inner.span(),
507            Self::FlowMaybeType(inner) => inner.span(),
508            Self::GenericType(inner) => inner.span(),
509            Self::IndexTypeQuery(inner) => inner.span(),
510            Self::IntersectionType(inner) => inner.span(),
511            Self::LiteralType(inner) => inner.span(),
512            Self::LookupType(inner) => inner.span(),
513            Self::NestedTypeIdentifier(inner) => inner.span(),
514            Self::ObjectType(inner) => inner.span(),
515            Self::ParenthesizedType(inner) => inner.span(),
516            Self::PredefinedType(inner) => inner.span(),
517            Self::TemplateLiteralType(inner) => inner.span(),
518            Self::ThisType(inner) => inner.span(),
519            Self::TupleType(inner) => inner.span(),
520            Self::TypeIdentifier(inner) => inner.span(),
521            Self::TypeQuery(inner) => inner.span(),
522            Self::UnionType(inner) => inner.span(),
523        }
524    }
525}
526#[derive(Debug, Clone, PartialEq, Eq)]
527pub enum Statement<'tree> {
528    BreakStatement(::std::boxed::Box<BreakStatement<'tree>>),
529    ContinueStatement(::std::boxed::Box<ContinueStatement<'tree>>),
530    DebuggerStatement(::std::boxed::Box<DebuggerStatement<'tree>>),
531    Declaration(::std::boxed::Box<Declaration<'tree>>),
532    DoStatement(::std::boxed::Box<DoStatement<'tree>>),
533    EmptyStatement(::std::boxed::Box<EmptyStatement<'tree>>),
534    ExportStatement(::std::boxed::Box<ExportStatement<'tree>>),
535    ExpressionStatement(::std::boxed::Box<ExpressionStatement<'tree>>),
536    ForInStatement(::std::boxed::Box<ForInStatement<'tree>>),
537    ForStatement(::std::boxed::Box<ForStatement<'tree>>),
538    IfStatement(::std::boxed::Box<IfStatement<'tree>>),
539    ImportStatement(::std::boxed::Box<ImportStatement<'tree>>),
540    LabeledStatement(::std::boxed::Box<LabeledStatement<'tree>>),
541    ReturnStatement(::std::boxed::Box<ReturnStatement<'tree>>),
542    StatementBlock(::std::boxed::Box<StatementBlock<'tree>>),
543    SwitchStatement(::std::boxed::Box<SwitchStatement<'tree>>),
544    ThrowStatement(::std::boxed::Box<ThrowStatement<'tree>>),
545    TryStatement(::std::boxed::Box<TryStatement<'tree>>),
546    WhileStatement(::std::boxed::Box<WhileStatement<'tree>>),
547    WithStatement(::std::boxed::Box<WithStatement<'tree>>),
548}
549impl<'tree> ::treesitter_types::FromNode<'tree> for Statement<'tree> {
550    #[allow(clippy::collapsible_else_if)]
551    fn from_node(
552        node: ::tree_sitter::Node<'tree>,
553        src: &'tree [u8],
554    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
555        match node.kind() {
556            "break_statement" => Ok(Self::BreakStatement(::std::boxed::Box::new(
557                <BreakStatement as ::treesitter_types::FromNode>::from_node(node, src)?,
558            ))),
559            "continue_statement" => Ok(Self::ContinueStatement(::std::boxed::Box::new(
560                <ContinueStatement as ::treesitter_types::FromNode>::from_node(node, src)?,
561            ))),
562            "debugger_statement" => Ok(Self::DebuggerStatement(::std::boxed::Box::new(
563                <DebuggerStatement as ::treesitter_types::FromNode>::from_node(node, src)?,
564            ))),
565            "do_statement" => Ok(Self::DoStatement(::std::boxed::Box::new(
566                <DoStatement as ::treesitter_types::FromNode>::from_node(node, src)?,
567            ))),
568            "empty_statement" => Ok(Self::EmptyStatement(::std::boxed::Box::new(
569                <EmptyStatement as ::treesitter_types::FromNode>::from_node(node, src)?,
570            ))),
571            "export_statement" => Ok(Self::ExportStatement(::std::boxed::Box::new(
572                <ExportStatement as ::treesitter_types::FromNode>::from_node(node, src)?,
573            ))),
574            "expression_statement" => Ok(Self::ExpressionStatement(::std::boxed::Box::new(
575                <ExpressionStatement as ::treesitter_types::FromNode>::from_node(node, src)?,
576            ))),
577            "for_in_statement" => Ok(Self::ForInStatement(::std::boxed::Box::new(
578                <ForInStatement as ::treesitter_types::FromNode>::from_node(node, src)?,
579            ))),
580            "for_statement" => Ok(Self::ForStatement(::std::boxed::Box::new(
581                <ForStatement as ::treesitter_types::FromNode>::from_node(node, src)?,
582            ))),
583            "if_statement" => Ok(Self::IfStatement(::std::boxed::Box::new(
584                <IfStatement as ::treesitter_types::FromNode>::from_node(node, src)?,
585            ))),
586            "import_statement" => Ok(Self::ImportStatement(::std::boxed::Box::new(
587                <ImportStatement as ::treesitter_types::FromNode>::from_node(node, src)?,
588            ))),
589            "labeled_statement" => Ok(Self::LabeledStatement(::std::boxed::Box::new(
590                <LabeledStatement as ::treesitter_types::FromNode>::from_node(node, src)?,
591            ))),
592            "return_statement" => Ok(Self::ReturnStatement(::std::boxed::Box::new(
593                <ReturnStatement as ::treesitter_types::FromNode>::from_node(node, src)?,
594            ))),
595            "statement_block" => Ok(Self::StatementBlock(::std::boxed::Box::new(
596                <StatementBlock as ::treesitter_types::FromNode>::from_node(node, src)?,
597            ))),
598            "switch_statement" => Ok(Self::SwitchStatement(::std::boxed::Box::new(
599                <SwitchStatement as ::treesitter_types::FromNode>::from_node(node, src)?,
600            ))),
601            "throw_statement" => Ok(Self::ThrowStatement(::std::boxed::Box::new(
602                <ThrowStatement as ::treesitter_types::FromNode>::from_node(node, src)?,
603            ))),
604            "try_statement" => Ok(Self::TryStatement(::std::boxed::Box::new(
605                <TryStatement as ::treesitter_types::FromNode>::from_node(node, src)?,
606            ))),
607            "while_statement" => Ok(Self::WhileStatement(::std::boxed::Box::new(
608                <WhileStatement as ::treesitter_types::FromNode>::from_node(node, src)?,
609            ))),
610            "with_statement" => Ok(Self::WithStatement(::std::boxed::Box::new(
611                <WithStatement as ::treesitter_types::FromNode>::from_node(node, src)?,
612            ))),
613            _other => {
614                if let Ok(v) = <Declaration as ::treesitter_types::FromNode>::from_node(node, src) {
615                    Ok(Self::Declaration(::std::boxed::Box::new(v)))
616                } else {
617                    Err(::treesitter_types::ParseError::unexpected_kind(
618                        _other, node,
619                    ))
620                }
621            }
622        }
623    }
624}
625impl ::treesitter_types::Spanned for Statement<'_> {
626    fn span(&self) -> ::treesitter_types::Span {
627        match self {
628            Self::BreakStatement(inner) => inner.span(),
629            Self::ContinueStatement(inner) => inner.span(),
630            Self::DebuggerStatement(inner) => inner.span(),
631            Self::Declaration(inner) => inner.span(),
632            Self::DoStatement(inner) => inner.span(),
633            Self::EmptyStatement(inner) => inner.span(),
634            Self::ExportStatement(inner) => inner.span(),
635            Self::ExpressionStatement(inner) => inner.span(),
636            Self::ForInStatement(inner) => inner.span(),
637            Self::ForStatement(inner) => inner.span(),
638            Self::IfStatement(inner) => inner.span(),
639            Self::ImportStatement(inner) => inner.span(),
640            Self::LabeledStatement(inner) => inner.span(),
641            Self::ReturnStatement(inner) => inner.span(),
642            Self::StatementBlock(inner) => inner.span(),
643            Self::SwitchStatement(inner) => inner.span(),
644            Self::ThrowStatement(inner) => inner.span(),
645            Self::TryStatement(inner) => inner.span(),
646            Self::WhileStatement(inner) => inner.span(),
647            Self::WithStatement(inner) => inner.span(),
648        }
649    }
650}
651#[derive(Debug, Clone, PartialEq, Eq)]
652pub enum Type<'tree> {
653    CallExpression(::std::boxed::Box<CallExpression<'tree>>),
654    ConstructorType(::std::boxed::Box<ConstructorType<'tree>>),
655    FunctionType(::std::boxed::Box<FunctionType<'tree>>),
656    InferType(::std::boxed::Box<InferType<'tree>>),
657    MemberExpression(::std::boxed::Box<MemberExpression<'tree>>),
658    PrimaryType(::std::boxed::Box<PrimaryType<'tree>>),
659    ReadonlyType(::std::boxed::Box<ReadonlyType<'tree>>),
660}
661impl<'tree> ::treesitter_types::FromNode<'tree> for Type<'tree> {
662    #[allow(clippy::collapsible_else_if)]
663    fn from_node(
664        node: ::tree_sitter::Node<'tree>,
665        src: &'tree [u8],
666    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
667        match node.kind() {
668            "call_expression" => Ok(Self::CallExpression(::std::boxed::Box::new(
669                <CallExpression as ::treesitter_types::FromNode>::from_node(node, src)?,
670            ))),
671            "constructor_type" => Ok(Self::ConstructorType(::std::boxed::Box::new(
672                <ConstructorType as ::treesitter_types::FromNode>::from_node(node, src)?,
673            ))),
674            "function_type" => Ok(Self::FunctionType(::std::boxed::Box::new(
675                <FunctionType as ::treesitter_types::FromNode>::from_node(node, src)?,
676            ))),
677            "infer_type" => Ok(Self::InferType(::std::boxed::Box::new(
678                <InferType as ::treesitter_types::FromNode>::from_node(node, src)?,
679            ))),
680            "member_expression" => Ok(Self::MemberExpression(::std::boxed::Box::new(
681                <MemberExpression as ::treesitter_types::FromNode>::from_node(node, src)?,
682            ))),
683            "readonly_type" => Ok(Self::ReadonlyType(::std::boxed::Box::new(
684                <ReadonlyType as ::treesitter_types::FromNode>::from_node(node, src)?,
685            ))),
686            _other => {
687                if let Ok(v) = <PrimaryType as ::treesitter_types::FromNode>::from_node(node, src) {
688                    Ok(Self::PrimaryType(::std::boxed::Box::new(v)))
689                } else {
690                    Err(::treesitter_types::ParseError::unexpected_kind(
691                        _other, node,
692                    ))
693                }
694            }
695        }
696    }
697}
698impl ::treesitter_types::Spanned for Type<'_> {
699    fn span(&self) -> ::treesitter_types::Span {
700        match self {
701            Self::CallExpression(inner) => inner.span(),
702            Self::ConstructorType(inner) => inner.span(),
703            Self::FunctionType(inner) => inner.span(),
704            Self::InferType(inner) => inner.span(),
705            Self::MemberExpression(inner) => inner.span(),
706            Self::PrimaryType(inner) => inner.span(),
707            Self::ReadonlyType(inner) => inner.span(),
708        }
709    }
710}
711#[derive(Debug, Clone, PartialEq, Eq)]
712pub struct AbstractClassDeclaration<'tree> {
713    pub span: ::treesitter_types::Span,
714    pub body: ClassBody<'tree>,
715    pub decorator: ::std::vec::Vec<Decorator<'tree>>,
716    pub name: TypeIdentifier<'tree>,
717    pub type_parameters: ::core::option::Option<TypeParameters<'tree>>,
718    pub children: ::core::option::Option<ClassHeritage<'tree>>,
719}
720impl<'tree> ::treesitter_types::FromNode<'tree> for AbstractClassDeclaration<'tree> {
721    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
722    fn from_node(
723        node: ::tree_sitter::Node<'tree>,
724        src: &'tree [u8],
725    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
726        debug_assert_eq!(node.kind(), "abstract_class_declaration");
727        Ok(Self {
728            span: ::treesitter_types::Span::from(node),
729            body: {
730                let child = node
731                    .child_by_field_name("body")
732                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("body", node))?;
733                <ClassBody as ::treesitter_types::FromNode>::from_node(child, src)?
734            },
735            decorator: {
736                let mut cursor = node.walk();
737                let mut items = ::std::vec::Vec::new();
738                for child in node.children_by_field_name("decorator", &mut cursor) {
739                    items.push(<Decorator as ::treesitter_types::FromNode>::from_node(
740                        child, src,
741                    )?);
742                }
743                items
744            },
745            name: {
746                let child = node
747                    .child_by_field_name("name")
748                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("name", node))?;
749                <TypeIdentifier as ::treesitter_types::FromNode>::from_node(child, src)?
750            },
751            type_parameters: match node.child_by_field_name("type_parameters") {
752                Some(child) => Some(<TypeParameters as ::treesitter_types::FromNode>::from_node(
753                    child, src,
754                )?),
755                None => None,
756            },
757            children: {
758                #[allow(clippy::suspicious_else_formatting)]
759                let non_field_children = {
760                    let mut cursor = node.walk();
761                    let mut result = ::std::vec::Vec::new();
762                    if cursor.goto_first_child() {
763                        loop {
764                            if cursor.field_name().is_none()
765                                && cursor.node().is_named()
766                                && !cursor.node().is_extra()
767                            {
768                                result.push(cursor.node());
769                            }
770                            if !cursor.goto_next_sibling() {
771                                break;
772                            }
773                        }
774                    }
775                    result
776                };
777                match non_field_children.first() {
778                    Some(&child) => Some(
779                        <ClassHeritage as ::treesitter_types::FromNode>::from_node(child, src)?,
780                    ),
781                    None => None,
782                }
783            },
784        })
785    }
786}
787impl ::treesitter_types::Spanned for AbstractClassDeclaration<'_> {
788    fn span(&self) -> ::treesitter_types::Span {
789        self.span
790    }
791}
792#[derive(Debug, Clone, PartialEq, Eq)]
793pub struct AbstractMethodSignature<'tree> {
794    pub span: ::treesitter_types::Span,
795    pub name: AbstractMethodSignatureName<'tree>,
796    pub parameters: FormalParameters<'tree>,
797    pub return_type: ::core::option::Option<AbstractMethodSignatureReturnType<'tree>>,
798    pub type_parameters: ::core::option::Option<TypeParameters<'tree>>,
799    pub children: ::std::vec::Vec<AbstractMethodSignatureChildren<'tree>>,
800}
801impl<'tree> ::treesitter_types::FromNode<'tree> for AbstractMethodSignature<'tree> {
802    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
803    fn from_node(
804        node: ::tree_sitter::Node<'tree>,
805        src: &'tree [u8],
806    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
807        debug_assert_eq!(node.kind(), "abstract_method_signature");
808        Ok(Self {
809            span: ::treesitter_types::Span::from(node),
810            name: {
811                let child = node
812                    .child_by_field_name("name")
813                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("name", node))?;
814                <AbstractMethodSignatureName as ::treesitter_types::FromNode>::from_node(
815                    child, src,
816                )?
817            },
818            parameters: {
819                let child = node.child_by_field_name("parameters").ok_or_else(|| {
820                    ::treesitter_types::ParseError::missing_field("parameters", node)
821                })?;
822                <FormalParameters as ::treesitter_types::FromNode>::from_node(child, src)?
823            },
824            return_type: match node.child_by_field_name("return_type") {
825                Some(child) => Some(
826                    <AbstractMethodSignatureReturnType as ::treesitter_types::FromNode>::from_node(
827                        child, src,
828                    )?,
829                ),
830                None => None,
831            },
832            type_parameters: match node.child_by_field_name("type_parameters") {
833                Some(child) => Some(<TypeParameters as ::treesitter_types::FromNode>::from_node(
834                    child, src,
835                )?),
836                None => None,
837            },
838            children: {
839                #[allow(clippy::suspicious_else_formatting)]
840                let non_field_children = {
841                    let mut cursor = node.walk();
842                    let mut result = ::std::vec::Vec::new();
843                    if cursor.goto_first_child() {
844                        loop {
845                            if cursor.field_name().is_none()
846                                && cursor.node().is_named()
847                                && !cursor.node().is_extra()
848                            {
849                                result.push(cursor.node());
850                            }
851                            if !cursor.goto_next_sibling() {
852                                break;
853                            }
854                        }
855                    }
856                    result
857                };
858                let mut items = ::std::vec::Vec::new();
859                for child in non_field_children {
860                    items
861                        .push(
862                            <AbstractMethodSignatureChildren as ::treesitter_types::FromNode>::from_node(
863                                child,
864                                src,
865                            )?,
866                        );
867                }
868                items
869            },
870        })
871    }
872}
873impl ::treesitter_types::Spanned for AbstractMethodSignature<'_> {
874    fn span(&self) -> ::treesitter_types::Span {
875        self.span
876    }
877}
878#[derive(Debug, Clone, PartialEq, Eq)]
879pub struct AccessibilityModifier<'tree> {
880    pub span: ::treesitter_types::Span,
881    text: &'tree str,
882}
883impl<'tree> ::treesitter_types::FromNode<'tree> for AccessibilityModifier<'tree> {
884    fn from_node(
885        node: ::tree_sitter::Node<'tree>,
886        src: &'tree [u8],
887    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
888        debug_assert_eq!(node.kind(), "accessibility_modifier");
889        Ok(Self {
890            span: ::treesitter_types::Span::from(node),
891            text: node.utf8_text(src)?,
892        })
893    }
894}
895impl<'tree> ::treesitter_types::LeafNode<'tree> for AccessibilityModifier<'tree> {
896    fn text(&self) -> &'tree str {
897        self.text
898    }
899}
900impl ::treesitter_types::Spanned for AccessibilityModifier<'_> {
901    fn span(&self) -> ::treesitter_types::Span {
902        self.span
903    }
904}
905#[derive(Debug, Clone, PartialEq, Eq)]
906pub struct AddingTypeAnnotation<'tree> {
907    pub span: ::treesitter_types::Span,
908    pub children: Type<'tree>,
909}
910impl<'tree> ::treesitter_types::FromNode<'tree> for AddingTypeAnnotation<'tree> {
911    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
912    fn from_node(
913        node: ::tree_sitter::Node<'tree>,
914        src: &'tree [u8],
915    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
916        debug_assert_eq!(node.kind(), "adding_type_annotation");
917        Ok(Self {
918            span: ::treesitter_types::Span::from(node),
919            children: {
920                #[allow(clippy::suspicious_else_formatting)]
921                let non_field_children = {
922                    let mut cursor = node.walk();
923                    let mut result = ::std::vec::Vec::new();
924                    if cursor.goto_first_child() {
925                        loop {
926                            if cursor.field_name().is_none()
927                                && cursor.node().is_named()
928                                && !cursor.node().is_extra()
929                            {
930                                result.push(cursor.node());
931                            }
932                            if !cursor.goto_next_sibling() {
933                                break;
934                            }
935                        }
936                    }
937                    result
938                };
939                let child = if let Some(&c) = non_field_children.first() {
940                    c
941                } else {
942                    let mut fallback_cursor = node.walk();
943                    let mut fallback_child = None;
944                    if fallback_cursor.goto_first_child() {
945                        loop {
946                            if fallback_cursor.field_name().is_none()
947                                && !fallback_cursor.node().is_extra()
948                            {
949                                let candidate = fallback_cursor.node();
950                                #[allow(clippy::needless_question_mark)]
951                                if (|| -> ::core::result::Result<
952                                    _,
953                                    ::treesitter_types::ParseError,
954                                > {
955                                    let child = candidate;
956                                    Ok(
957                                        <Type as ::treesitter_types::FromNode>::from_node(
958                                            child,
959                                            src,
960                                        )?,
961                                    )
962                                })()
963                                    .is_ok()
964                                {
965                                    fallback_child = Some(candidate);
966                                    break;
967                                }
968                            }
969                            if !fallback_cursor.goto_next_sibling() {
970                                break;
971                            }
972                        }
973                    }
974                    if fallback_child.is_none() {
975                        let mut cursor2 = node.walk();
976                        if cursor2.goto_first_child() {
977                            loop {
978                                if cursor2.node().is_named() && !cursor2.node().is_extra() {
979                                    let candidate = cursor2.node();
980                                    #[allow(clippy::needless_question_mark)]
981                                    if (|| -> ::core::result::Result<
982                                        _,
983                                        ::treesitter_types::ParseError,
984                                    > {
985                                        let child = candidate;
986                                        Ok(
987                                            <Type as ::treesitter_types::FromNode>::from_node(
988                                                child,
989                                                src,
990                                            )?,
991                                        )
992                                    })()
993                                        .is_ok()
994                                    {
995                                        fallback_child = Some(candidate);
996                                        break;
997                                    }
998                                }
999                                if !cursor2.goto_next_sibling() {
1000                                    break;
1001                                }
1002                            }
1003                        }
1004                    }
1005                    fallback_child.ok_or_else(|| {
1006                        ::treesitter_types::ParseError::missing_field("children", node)
1007                    })?
1008                };
1009                <Type as ::treesitter_types::FromNode>::from_node(child, src)?
1010            },
1011        })
1012    }
1013}
1014impl ::treesitter_types::Spanned for AddingTypeAnnotation<'_> {
1015    fn span(&self) -> ::treesitter_types::Span {
1016        self.span
1017    }
1018}
1019#[derive(Debug, Clone, PartialEq, Eq)]
1020pub struct AmbientDeclaration<'tree> {
1021    pub span: ::treesitter_types::Span,
1022    pub children: ::std::vec::Vec<AmbientDeclarationChildren<'tree>>,
1023}
1024impl<'tree> ::treesitter_types::FromNode<'tree> for AmbientDeclaration<'tree> {
1025    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
1026    fn from_node(
1027        node: ::tree_sitter::Node<'tree>,
1028        src: &'tree [u8],
1029    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
1030        debug_assert_eq!(node.kind(), "ambient_declaration");
1031        Ok(Self {
1032            span: ::treesitter_types::Span::from(node),
1033            children: {
1034                #[allow(clippy::suspicious_else_formatting)]
1035                let non_field_children = {
1036                    let mut cursor = node.walk();
1037                    let mut result = ::std::vec::Vec::new();
1038                    if cursor.goto_first_child() {
1039                        loop {
1040                            if cursor.field_name().is_none()
1041                                && cursor.node().is_named()
1042                                && !cursor.node().is_extra()
1043                            {
1044                                result.push(cursor.node());
1045                            }
1046                            if !cursor.goto_next_sibling() {
1047                                break;
1048                            }
1049                        }
1050                    }
1051                    result
1052                };
1053                let mut items = ::std::vec::Vec::new();
1054                for child in non_field_children {
1055                    items.push(
1056                        <AmbientDeclarationChildren as ::treesitter_types::FromNode>::from_node(
1057                            child, src,
1058                        )?,
1059                    );
1060                }
1061                items
1062            },
1063        })
1064    }
1065}
1066impl ::treesitter_types::Spanned for AmbientDeclaration<'_> {
1067    fn span(&self) -> ::treesitter_types::Span {
1068        self.span
1069    }
1070}
1071#[derive(Debug, Clone, PartialEq, Eq)]
1072pub struct Arguments<'tree> {
1073    pub span: ::treesitter_types::Span,
1074    pub children: ::std::vec::Vec<ArgumentsChildren<'tree>>,
1075}
1076impl<'tree> ::treesitter_types::FromNode<'tree> for Arguments<'tree> {
1077    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
1078    fn from_node(
1079        node: ::tree_sitter::Node<'tree>,
1080        src: &'tree [u8],
1081    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
1082        debug_assert_eq!(node.kind(), "arguments");
1083        Ok(Self {
1084            span: ::treesitter_types::Span::from(node),
1085            children: {
1086                #[allow(clippy::suspicious_else_formatting)]
1087                let non_field_children = {
1088                    let mut cursor = node.walk();
1089                    let mut result = ::std::vec::Vec::new();
1090                    if cursor.goto_first_child() {
1091                        loop {
1092                            if cursor.field_name().is_none()
1093                                && cursor.node().is_named()
1094                                && !cursor.node().is_extra()
1095                            {
1096                                result.push(cursor.node());
1097                            }
1098                            if !cursor.goto_next_sibling() {
1099                                break;
1100                            }
1101                        }
1102                    }
1103                    result
1104                };
1105                let mut items = ::std::vec::Vec::new();
1106                for child in non_field_children {
1107                    items.push(
1108                        <ArgumentsChildren as ::treesitter_types::FromNode>::from_node(child, src)?,
1109                    );
1110                }
1111                items
1112            },
1113        })
1114    }
1115}
1116impl ::treesitter_types::Spanned for Arguments<'_> {
1117    fn span(&self) -> ::treesitter_types::Span {
1118        self.span
1119    }
1120}
1121#[derive(Debug, Clone, PartialEq, Eq)]
1122pub struct Array<'tree> {
1123    pub span: ::treesitter_types::Span,
1124    pub children: ::std::vec::Vec<ArrayChildren<'tree>>,
1125}
1126impl<'tree> ::treesitter_types::FromNode<'tree> for Array<'tree> {
1127    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
1128    fn from_node(
1129        node: ::tree_sitter::Node<'tree>,
1130        src: &'tree [u8],
1131    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
1132        debug_assert_eq!(node.kind(), "array");
1133        Ok(Self {
1134            span: ::treesitter_types::Span::from(node),
1135            children: {
1136                #[allow(clippy::suspicious_else_formatting)]
1137                let non_field_children = {
1138                    let mut cursor = node.walk();
1139                    let mut result = ::std::vec::Vec::new();
1140                    if cursor.goto_first_child() {
1141                        loop {
1142                            if cursor.field_name().is_none()
1143                                && cursor.node().is_named()
1144                                && !cursor.node().is_extra()
1145                            {
1146                                result.push(cursor.node());
1147                            }
1148                            if !cursor.goto_next_sibling() {
1149                                break;
1150                            }
1151                        }
1152                    }
1153                    result
1154                };
1155                let mut items = ::std::vec::Vec::new();
1156                for child in non_field_children {
1157                    items.push(<ArrayChildren as ::treesitter_types::FromNode>::from_node(
1158                        child, src,
1159                    )?);
1160                }
1161                items
1162            },
1163        })
1164    }
1165}
1166impl ::treesitter_types::Spanned for Array<'_> {
1167    fn span(&self) -> ::treesitter_types::Span {
1168        self.span
1169    }
1170}
1171#[derive(Debug, Clone, PartialEq, Eq)]
1172pub struct ArrayPattern<'tree> {
1173    pub span: ::treesitter_types::Span,
1174    pub children: ::std::vec::Vec<ArrayPatternChildren<'tree>>,
1175}
1176impl<'tree> ::treesitter_types::FromNode<'tree> for ArrayPattern<'tree> {
1177    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
1178    fn from_node(
1179        node: ::tree_sitter::Node<'tree>,
1180        src: &'tree [u8],
1181    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
1182        debug_assert_eq!(node.kind(), "array_pattern");
1183        Ok(Self {
1184            span: ::treesitter_types::Span::from(node),
1185            children: {
1186                #[allow(clippy::suspicious_else_formatting)]
1187                let non_field_children = {
1188                    let mut cursor = node.walk();
1189                    let mut result = ::std::vec::Vec::new();
1190                    if cursor.goto_first_child() {
1191                        loop {
1192                            if cursor.field_name().is_none()
1193                                && cursor.node().is_named()
1194                                && !cursor.node().is_extra()
1195                            {
1196                                result.push(cursor.node());
1197                            }
1198                            if !cursor.goto_next_sibling() {
1199                                break;
1200                            }
1201                        }
1202                    }
1203                    result
1204                };
1205                let mut items = ::std::vec::Vec::new();
1206                for child in non_field_children {
1207                    items.push(
1208                        <ArrayPatternChildren as ::treesitter_types::FromNode>::from_node(
1209                            child, src,
1210                        )?,
1211                    );
1212                }
1213                items
1214            },
1215        })
1216    }
1217}
1218impl ::treesitter_types::Spanned for ArrayPattern<'_> {
1219    fn span(&self) -> ::treesitter_types::Span {
1220        self.span
1221    }
1222}
1223#[derive(Debug, Clone, PartialEq, Eq)]
1224pub struct ArrayType<'tree> {
1225    pub span: ::treesitter_types::Span,
1226    pub children: PrimaryType<'tree>,
1227}
1228impl<'tree> ::treesitter_types::FromNode<'tree> for ArrayType<'tree> {
1229    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
1230    fn from_node(
1231        node: ::tree_sitter::Node<'tree>,
1232        src: &'tree [u8],
1233    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
1234        debug_assert_eq!(node.kind(), "array_type");
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 child = if let Some(&c) = non_field_children.first() {
1258                    c
1259                } else {
1260                    let mut fallback_cursor = node.walk();
1261                    let mut fallback_child = None;
1262                    if fallback_cursor.goto_first_child() {
1263                        loop {
1264                            if fallback_cursor.field_name().is_none()
1265                                && !fallback_cursor.node().is_extra()
1266                            {
1267                                let candidate = fallback_cursor.node();
1268                                #[allow(clippy::needless_question_mark)]
1269                                if (|| -> ::core::result::Result<
1270                                    _,
1271                                    ::treesitter_types::ParseError,
1272                                > {
1273                                    let child = candidate;
1274                                    Ok(
1275                                        <PrimaryType as ::treesitter_types::FromNode>::from_node(
1276                                            child,
1277                                            src,
1278                                        )?,
1279                                    )
1280                                })()
1281                                    .is_ok()
1282                                {
1283                                    fallback_child = Some(candidate);
1284                                    break;
1285                                }
1286                            }
1287                            if !fallback_cursor.goto_next_sibling() {
1288                                break;
1289                            }
1290                        }
1291                    }
1292                    if fallback_child.is_none() {
1293                        let mut cursor2 = node.walk();
1294                        if cursor2.goto_first_child() {
1295                            loop {
1296                                if cursor2.node().is_named() && !cursor2.node().is_extra() {
1297                                    let candidate = cursor2.node();
1298                                    #[allow(clippy::needless_question_mark)]
1299                                    if (|| -> ::core::result::Result<
1300                                        _,
1301                                        ::treesitter_types::ParseError,
1302                                    > {
1303                                        let child = candidate;
1304                                        Ok(
1305                                            <PrimaryType as ::treesitter_types::FromNode>::from_node(
1306                                                child,
1307                                                src,
1308                                            )?,
1309                                        )
1310                                    })()
1311                                        .is_ok()
1312                                    {
1313                                        fallback_child = Some(candidate);
1314                                        break;
1315                                    }
1316                                }
1317                                if !cursor2.goto_next_sibling() {
1318                                    break;
1319                                }
1320                            }
1321                        }
1322                    }
1323                    fallback_child.ok_or_else(|| {
1324                        ::treesitter_types::ParseError::missing_field("children", node)
1325                    })?
1326                };
1327                <PrimaryType as ::treesitter_types::FromNode>::from_node(child, src)?
1328            },
1329        })
1330    }
1331}
1332impl ::treesitter_types::Spanned for ArrayType<'_> {
1333    fn span(&self) -> ::treesitter_types::Span {
1334        self.span
1335    }
1336}
1337#[derive(Debug, Clone, PartialEq, Eq)]
1338pub struct ArrowFunction<'tree> {
1339    pub span: ::treesitter_types::Span,
1340    pub body: ArrowFunctionBody<'tree>,
1341    pub parameter: ::core::option::Option<Identifier<'tree>>,
1342    pub parameters: ::core::option::Option<FormalParameters<'tree>>,
1343    pub return_type: ::core::option::Option<ArrowFunctionReturnType<'tree>>,
1344    pub type_parameters: ::core::option::Option<TypeParameters<'tree>>,
1345}
1346impl<'tree> ::treesitter_types::FromNode<'tree> for ArrowFunction<'tree> {
1347    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
1348    fn from_node(
1349        node: ::tree_sitter::Node<'tree>,
1350        src: &'tree [u8],
1351    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
1352        debug_assert_eq!(node.kind(), "arrow_function");
1353        Ok(Self {
1354            span: ::treesitter_types::Span::from(node),
1355            body: {
1356                let child = node
1357                    .child_by_field_name("body")
1358                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("body", node))?;
1359                <ArrowFunctionBody as ::treesitter_types::FromNode>::from_node(child, src)?
1360            },
1361            parameter: match node.child_by_field_name("parameter") {
1362                Some(child) => Some(<Identifier as ::treesitter_types::FromNode>::from_node(
1363                    child, src,
1364                )?),
1365                None => None,
1366            },
1367            parameters: match node.child_by_field_name("parameters") {
1368                Some(child) => {
1369                    Some(<FormalParameters as ::treesitter_types::FromNode>::from_node(child, src)?)
1370                }
1371                None => None,
1372            },
1373            return_type: match node.child_by_field_name("return_type") {
1374                Some(child) => Some(
1375                    <ArrowFunctionReturnType as ::treesitter_types::FromNode>::from_node(
1376                        child, src,
1377                    )?,
1378                ),
1379                None => None,
1380            },
1381            type_parameters: match node.child_by_field_name("type_parameters") {
1382                Some(child) => Some(<TypeParameters as ::treesitter_types::FromNode>::from_node(
1383                    child, src,
1384                )?),
1385                None => None,
1386            },
1387        })
1388    }
1389}
1390impl ::treesitter_types::Spanned for ArrowFunction<'_> {
1391    fn span(&self) -> ::treesitter_types::Span {
1392        self.span
1393    }
1394}
1395#[derive(Debug, Clone, PartialEq, Eq)]
1396pub struct AsExpression<'tree> {
1397    pub span: ::treesitter_types::Span,
1398    pub children: ::std::vec::Vec<AsExpressionChildren<'tree>>,
1399}
1400impl<'tree> ::treesitter_types::FromNode<'tree> for AsExpression<'tree> {
1401    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
1402    fn from_node(
1403        node: ::tree_sitter::Node<'tree>,
1404        src: &'tree [u8],
1405    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
1406        debug_assert_eq!(node.kind(), "as_expression");
1407        Ok(Self {
1408            span: ::treesitter_types::Span::from(node),
1409            children: {
1410                #[allow(clippy::suspicious_else_formatting)]
1411                let non_field_children = {
1412                    let mut cursor = node.walk();
1413                    let mut result = ::std::vec::Vec::new();
1414                    if cursor.goto_first_child() {
1415                        loop {
1416                            if cursor.field_name().is_none()
1417                                && cursor.node().is_named()
1418                                && !cursor.node().is_extra()
1419                            {
1420                                result.push(cursor.node());
1421                            }
1422                            if !cursor.goto_next_sibling() {
1423                                break;
1424                            }
1425                        }
1426                    }
1427                    result
1428                };
1429                let mut items = ::std::vec::Vec::new();
1430                for child in non_field_children {
1431                    items.push(
1432                        <AsExpressionChildren as ::treesitter_types::FromNode>::from_node(
1433                            child, src,
1434                        )?,
1435                    );
1436                }
1437                items
1438            },
1439        })
1440    }
1441}
1442impl ::treesitter_types::Spanned for AsExpression<'_> {
1443    fn span(&self) -> ::treesitter_types::Span {
1444        self.span
1445    }
1446}
1447#[derive(Debug, Clone, PartialEq, Eq)]
1448pub struct Asserts<'tree> {
1449    pub span: ::treesitter_types::Span,
1450    pub children: AssertsChildren<'tree>,
1451}
1452impl<'tree> ::treesitter_types::FromNode<'tree> for Asserts<'tree> {
1453    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
1454    fn from_node(
1455        node: ::tree_sitter::Node<'tree>,
1456        src: &'tree [u8],
1457    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
1458        debug_assert_eq!(node.kind(), "asserts");
1459        Ok(Self {
1460            span: ::treesitter_types::Span::from(node),
1461            children: {
1462                #[allow(clippy::suspicious_else_formatting)]
1463                let non_field_children = {
1464                    let mut cursor = node.walk();
1465                    let mut result = ::std::vec::Vec::new();
1466                    if cursor.goto_first_child() {
1467                        loop {
1468                            if cursor.field_name().is_none()
1469                                && cursor.node().is_named()
1470                                && !cursor.node().is_extra()
1471                            {
1472                                result.push(cursor.node());
1473                            }
1474                            if !cursor.goto_next_sibling() {
1475                                break;
1476                            }
1477                        }
1478                    }
1479                    result
1480                };
1481                let child = if let Some(&c) = non_field_children.first() {
1482                    c
1483                } else {
1484                    let mut fallback_cursor = node.walk();
1485                    let mut fallback_child = None;
1486                    if fallback_cursor.goto_first_child() {
1487                        loop {
1488                            if fallback_cursor.field_name().is_none()
1489                                && !fallback_cursor.node().is_extra()
1490                            {
1491                                let candidate = fallback_cursor.node();
1492                                #[allow(clippy::needless_question_mark)]
1493                                if (|| -> ::core::result::Result<
1494                                    _,
1495                                    ::treesitter_types::ParseError,
1496                                > {
1497                                    let child = candidate;
1498                                    Ok(
1499                                        <AssertsChildren as ::treesitter_types::FromNode>::from_node(
1500                                            child,
1501                                            src,
1502                                        )?,
1503                                    )
1504                                })()
1505                                    .is_ok()
1506                                {
1507                                    fallback_child = Some(candidate);
1508                                    break;
1509                                }
1510                            }
1511                            if !fallback_cursor.goto_next_sibling() {
1512                                break;
1513                            }
1514                        }
1515                    }
1516                    if fallback_child.is_none() {
1517                        let mut cursor2 = node.walk();
1518                        if cursor2.goto_first_child() {
1519                            loop {
1520                                if cursor2.node().is_named() && !cursor2.node().is_extra() {
1521                                    let candidate = cursor2.node();
1522                                    #[allow(clippy::needless_question_mark)]
1523                                    if (|| -> ::core::result::Result<
1524                                        _,
1525                                        ::treesitter_types::ParseError,
1526                                    > {
1527                                        let child = candidate;
1528                                        Ok(
1529                                            <AssertsChildren as ::treesitter_types::FromNode>::from_node(
1530                                                child,
1531                                                src,
1532                                            )?,
1533                                        )
1534                                    })()
1535                                        .is_ok()
1536                                    {
1537                                        fallback_child = Some(candidate);
1538                                        break;
1539                                    }
1540                                }
1541                                if !cursor2.goto_next_sibling() {
1542                                    break;
1543                                }
1544                            }
1545                        }
1546                    }
1547                    fallback_child.ok_or_else(|| {
1548                        ::treesitter_types::ParseError::missing_field("children", node)
1549                    })?
1550                };
1551                <AssertsChildren as ::treesitter_types::FromNode>::from_node(child, src)?
1552            },
1553        })
1554    }
1555}
1556impl ::treesitter_types::Spanned for Asserts<'_> {
1557    fn span(&self) -> ::treesitter_types::Span {
1558        self.span
1559    }
1560}
1561#[derive(Debug, Clone, PartialEq, Eq)]
1562pub struct AssertsAnnotation<'tree> {
1563    pub span: ::treesitter_types::Span,
1564    pub children: Asserts<'tree>,
1565}
1566impl<'tree> ::treesitter_types::FromNode<'tree> for AssertsAnnotation<'tree> {
1567    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
1568    fn from_node(
1569        node: ::tree_sitter::Node<'tree>,
1570        src: &'tree [u8],
1571    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
1572        debug_assert_eq!(node.kind(), "asserts_annotation");
1573        Ok(Self {
1574            span: ::treesitter_types::Span::from(node),
1575            children: {
1576                #[allow(clippy::suspicious_else_formatting)]
1577                let non_field_children = {
1578                    let mut cursor = node.walk();
1579                    let mut result = ::std::vec::Vec::new();
1580                    if cursor.goto_first_child() {
1581                        loop {
1582                            if cursor.field_name().is_none()
1583                                && cursor.node().is_named()
1584                                && !cursor.node().is_extra()
1585                            {
1586                                result.push(cursor.node());
1587                            }
1588                            if !cursor.goto_next_sibling() {
1589                                break;
1590                            }
1591                        }
1592                    }
1593                    result
1594                };
1595                let child = if let Some(&c) = non_field_children.first() {
1596                    c
1597                } else {
1598                    let mut fallback_cursor = node.walk();
1599                    let mut fallback_child = None;
1600                    if fallback_cursor.goto_first_child() {
1601                        loop {
1602                            if fallback_cursor.field_name().is_none()
1603                                && !fallback_cursor.node().is_extra()
1604                            {
1605                                let candidate = fallback_cursor.node();
1606                                #[allow(clippy::needless_question_mark)]
1607                                if (|| -> ::core::result::Result<
1608                                    _,
1609                                    ::treesitter_types::ParseError,
1610                                > {
1611                                    let child = candidate;
1612                                    Ok(
1613                                        <Asserts as ::treesitter_types::FromNode>::from_node(
1614                                            child,
1615                                            src,
1616                                        )?,
1617                                    )
1618                                })()
1619                                    .is_ok()
1620                                {
1621                                    fallback_child = Some(candidate);
1622                                    break;
1623                                }
1624                            }
1625                            if !fallback_cursor.goto_next_sibling() {
1626                                break;
1627                            }
1628                        }
1629                    }
1630                    if fallback_child.is_none() {
1631                        let mut cursor2 = node.walk();
1632                        if cursor2.goto_first_child() {
1633                            loop {
1634                                if cursor2.node().is_named() && !cursor2.node().is_extra() {
1635                                    let candidate = cursor2.node();
1636                                    #[allow(clippy::needless_question_mark)]
1637                                    if (|| -> ::core::result::Result<
1638                                        _,
1639                                        ::treesitter_types::ParseError,
1640                                    > {
1641                                        let child = candidate;
1642                                        Ok(
1643                                            <Asserts as ::treesitter_types::FromNode>::from_node(
1644                                                child,
1645                                                src,
1646                                            )?,
1647                                        )
1648                                    })()
1649                                        .is_ok()
1650                                    {
1651                                        fallback_child = Some(candidate);
1652                                        break;
1653                                    }
1654                                }
1655                                if !cursor2.goto_next_sibling() {
1656                                    break;
1657                                }
1658                            }
1659                        }
1660                    }
1661                    fallback_child.ok_or_else(|| {
1662                        ::treesitter_types::ParseError::missing_field("children", node)
1663                    })?
1664                };
1665                <Asserts as ::treesitter_types::FromNode>::from_node(child, src)?
1666            },
1667        })
1668    }
1669}
1670impl ::treesitter_types::Spanned for AssertsAnnotation<'_> {
1671    fn span(&self) -> ::treesitter_types::Span {
1672        self.span
1673    }
1674}
1675#[derive(Debug, Clone, PartialEq, Eq)]
1676pub struct AssignmentExpression<'tree> {
1677    pub span: ::treesitter_types::Span,
1678    pub left: AssignmentExpressionLeft<'tree>,
1679    pub right: Expression<'tree>,
1680}
1681impl<'tree> ::treesitter_types::FromNode<'tree> for AssignmentExpression<'tree> {
1682    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
1683    fn from_node(
1684        node: ::tree_sitter::Node<'tree>,
1685        src: &'tree [u8],
1686    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
1687        debug_assert_eq!(node.kind(), "assignment_expression");
1688        Ok(Self {
1689            span: ::treesitter_types::Span::from(node),
1690            left: {
1691                let child = node
1692                    .child_by_field_name("left")
1693                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("left", node))?;
1694                <AssignmentExpressionLeft as ::treesitter_types::FromNode>::from_node(child, src)?
1695            },
1696            right: {
1697                let child = node
1698                    .child_by_field_name("right")
1699                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("right", node))?;
1700                <Expression as ::treesitter_types::FromNode>::from_node(child, src)?
1701            },
1702        })
1703    }
1704}
1705impl ::treesitter_types::Spanned for AssignmentExpression<'_> {
1706    fn span(&self) -> ::treesitter_types::Span {
1707        self.span
1708    }
1709}
1710#[derive(Debug, Clone, PartialEq, Eq)]
1711pub struct AssignmentPattern<'tree> {
1712    pub span: ::treesitter_types::Span,
1713    pub left: Pattern<'tree>,
1714    pub right: Expression<'tree>,
1715}
1716impl<'tree> ::treesitter_types::FromNode<'tree> for AssignmentPattern<'tree> {
1717    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
1718    fn from_node(
1719        node: ::tree_sitter::Node<'tree>,
1720        src: &'tree [u8],
1721    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
1722        debug_assert_eq!(node.kind(), "assignment_pattern");
1723        Ok(Self {
1724            span: ::treesitter_types::Span::from(node),
1725            left: {
1726                let child = node
1727                    .child_by_field_name("left")
1728                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("left", node))?;
1729                <Pattern as ::treesitter_types::FromNode>::from_node(child, src)?
1730            },
1731            right: {
1732                let child = node
1733                    .child_by_field_name("right")
1734                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("right", node))?;
1735                <Expression as ::treesitter_types::FromNode>::from_node(child, src)?
1736            },
1737        })
1738    }
1739}
1740impl ::treesitter_types::Spanned for AssignmentPattern<'_> {
1741    fn span(&self) -> ::treesitter_types::Span {
1742        self.span
1743    }
1744}
1745#[derive(Debug, Clone, PartialEq, Eq)]
1746pub struct AugmentedAssignmentExpression<'tree> {
1747    pub span: ::treesitter_types::Span,
1748    pub left: AugmentedAssignmentExpressionLeft<'tree>,
1749    pub operator: AugmentedAssignmentExpressionOperator,
1750    pub right: Expression<'tree>,
1751}
1752impl<'tree> ::treesitter_types::FromNode<'tree> for AugmentedAssignmentExpression<'tree> {
1753    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
1754    fn from_node(
1755        node: ::tree_sitter::Node<'tree>,
1756        src: &'tree [u8],
1757    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
1758        debug_assert_eq!(node.kind(), "augmented_assignment_expression");
1759        Ok(Self {
1760            span: ::treesitter_types::Span::from(node),
1761            left: {
1762                let child = node
1763                    .child_by_field_name("left")
1764                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("left", node))?;
1765                <AugmentedAssignmentExpressionLeft as ::treesitter_types::FromNode>::from_node(
1766                    child, src,
1767                )?
1768            },
1769            operator: {
1770                let child = node.child_by_field_name("operator").ok_or_else(|| {
1771                    ::treesitter_types::ParseError::missing_field("operator", node)
1772                })?;
1773                <AugmentedAssignmentExpressionOperator as ::treesitter_types::FromNode>::from_node(
1774                    child, src,
1775                )?
1776            },
1777            right: {
1778                let child = node
1779                    .child_by_field_name("right")
1780                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("right", node))?;
1781                <Expression as ::treesitter_types::FromNode>::from_node(child, src)?
1782            },
1783        })
1784    }
1785}
1786impl ::treesitter_types::Spanned for AugmentedAssignmentExpression<'_> {
1787    fn span(&self) -> ::treesitter_types::Span {
1788        self.span
1789    }
1790}
1791#[derive(Debug, Clone, PartialEq, Eq)]
1792pub struct AwaitExpression<'tree> {
1793    pub span: ::treesitter_types::Span,
1794    pub children: Expression<'tree>,
1795}
1796impl<'tree> ::treesitter_types::FromNode<'tree> for AwaitExpression<'tree> {
1797    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
1798    fn from_node(
1799        node: ::tree_sitter::Node<'tree>,
1800        src: &'tree [u8],
1801    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
1802        debug_assert_eq!(node.kind(), "await_expression");
1803        Ok(Self {
1804            span: ::treesitter_types::Span::from(node),
1805            children: {
1806                #[allow(clippy::suspicious_else_formatting)]
1807                let non_field_children = {
1808                    let mut cursor = node.walk();
1809                    let mut result = ::std::vec::Vec::new();
1810                    if cursor.goto_first_child() {
1811                        loop {
1812                            if cursor.field_name().is_none()
1813                                && cursor.node().is_named()
1814                                && !cursor.node().is_extra()
1815                            {
1816                                result.push(cursor.node());
1817                            }
1818                            if !cursor.goto_next_sibling() {
1819                                break;
1820                            }
1821                        }
1822                    }
1823                    result
1824                };
1825                let child = if let Some(&c) = non_field_children.first() {
1826                    c
1827                } else {
1828                    let mut fallback_cursor = node.walk();
1829                    let mut fallback_child = None;
1830                    if fallback_cursor.goto_first_child() {
1831                        loop {
1832                            if fallback_cursor.field_name().is_none()
1833                                && !fallback_cursor.node().is_extra()
1834                            {
1835                                let candidate = fallback_cursor.node();
1836                                #[allow(clippy::needless_question_mark)]
1837                                if (|| -> ::core::result::Result<
1838                                    _,
1839                                    ::treesitter_types::ParseError,
1840                                > {
1841                                    let child = candidate;
1842                                    Ok(
1843                                        <Expression as ::treesitter_types::FromNode>::from_node(
1844                                            child,
1845                                            src,
1846                                        )?,
1847                                    )
1848                                })()
1849                                    .is_ok()
1850                                {
1851                                    fallback_child = Some(candidate);
1852                                    break;
1853                                }
1854                            }
1855                            if !fallback_cursor.goto_next_sibling() {
1856                                break;
1857                            }
1858                        }
1859                    }
1860                    if fallback_child.is_none() {
1861                        let mut cursor2 = node.walk();
1862                        if cursor2.goto_first_child() {
1863                            loop {
1864                                if cursor2.node().is_named() && !cursor2.node().is_extra() {
1865                                    let candidate = cursor2.node();
1866                                    #[allow(clippy::needless_question_mark)]
1867                                    if (|| -> ::core::result::Result<
1868                                        _,
1869                                        ::treesitter_types::ParseError,
1870                                    > {
1871                                        let child = candidate;
1872                                        Ok(
1873                                            <Expression as ::treesitter_types::FromNode>::from_node(
1874                                                child,
1875                                                src,
1876                                            )?,
1877                                        )
1878                                    })()
1879                                        .is_ok()
1880                                    {
1881                                        fallback_child = Some(candidate);
1882                                        break;
1883                                    }
1884                                }
1885                                if !cursor2.goto_next_sibling() {
1886                                    break;
1887                                }
1888                            }
1889                        }
1890                    }
1891                    fallback_child.ok_or_else(|| {
1892                        ::treesitter_types::ParseError::missing_field("children", node)
1893                    })?
1894                };
1895                <Expression as ::treesitter_types::FromNode>::from_node(child, src)?
1896            },
1897        })
1898    }
1899}
1900impl ::treesitter_types::Spanned for AwaitExpression<'_> {
1901    fn span(&self) -> ::treesitter_types::Span {
1902        self.span
1903    }
1904}
1905#[derive(Debug, Clone, PartialEq, Eq)]
1906pub struct BinaryExpression<'tree> {
1907    pub span: ::treesitter_types::Span,
1908    pub left: BinaryExpressionLeft<'tree>,
1909    pub operator: BinaryExpressionOperator,
1910    pub right: Expression<'tree>,
1911}
1912impl<'tree> ::treesitter_types::FromNode<'tree> for BinaryExpression<'tree> {
1913    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
1914    fn from_node(
1915        node: ::tree_sitter::Node<'tree>,
1916        src: &'tree [u8],
1917    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
1918        debug_assert_eq!(node.kind(), "binary_expression");
1919        Ok(Self {
1920            span: ::treesitter_types::Span::from(node),
1921            left: {
1922                let child = node
1923                    .child_by_field_name("left")
1924                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("left", node))?;
1925                <BinaryExpressionLeft as ::treesitter_types::FromNode>::from_node(child, src)?
1926            },
1927            operator: {
1928                let child = node.child_by_field_name("operator").ok_or_else(|| {
1929                    ::treesitter_types::ParseError::missing_field("operator", node)
1930                })?;
1931                <BinaryExpressionOperator as ::treesitter_types::FromNode>::from_node(child, src)?
1932            },
1933            right: {
1934                let child = node
1935                    .child_by_field_name("right")
1936                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("right", node))?;
1937                <Expression as ::treesitter_types::FromNode>::from_node(child, src)?
1938            },
1939        })
1940    }
1941}
1942impl ::treesitter_types::Spanned for BinaryExpression<'_> {
1943    fn span(&self) -> ::treesitter_types::Span {
1944        self.span
1945    }
1946}
1947#[derive(Debug, Clone, PartialEq, Eq)]
1948pub struct BreakStatement<'tree> {
1949    pub span: ::treesitter_types::Span,
1950    pub label: ::core::option::Option<StatementIdentifier<'tree>>,
1951}
1952impl<'tree> ::treesitter_types::FromNode<'tree> for BreakStatement<'tree> {
1953    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
1954    fn from_node(
1955        node: ::tree_sitter::Node<'tree>,
1956        src: &'tree [u8],
1957    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
1958        debug_assert_eq!(node.kind(), "break_statement");
1959        Ok(Self {
1960            span: ::treesitter_types::Span::from(node),
1961            label: match node.child_by_field_name("label") {
1962                Some(child) => Some(
1963                    <StatementIdentifier as ::treesitter_types::FromNode>::from_node(child, src)?,
1964                ),
1965                None => None,
1966            },
1967        })
1968    }
1969}
1970impl ::treesitter_types::Spanned for BreakStatement<'_> {
1971    fn span(&self) -> ::treesitter_types::Span {
1972        self.span
1973    }
1974}
1975#[derive(Debug, Clone, PartialEq, Eq)]
1976pub struct CallExpression<'tree> {
1977    pub span: ::treesitter_types::Span,
1978    pub arguments: CallExpressionArguments<'tree>,
1979    pub function: CallExpressionFunction<'tree>,
1980    pub type_arguments: ::core::option::Option<TypeArguments<'tree>>,
1981}
1982impl<'tree> ::treesitter_types::FromNode<'tree> for CallExpression<'tree> {
1983    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
1984    fn from_node(
1985        node: ::tree_sitter::Node<'tree>,
1986        src: &'tree [u8],
1987    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
1988        debug_assert_eq!(node.kind(), "call_expression");
1989        Ok(Self {
1990            span: ::treesitter_types::Span::from(node),
1991            arguments: {
1992                let child = node.child_by_field_name("arguments").ok_or_else(|| {
1993                    ::treesitter_types::ParseError::missing_field("arguments", node)
1994                })?;
1995                <CallExpressionArguments as ::treesitter_types::FromNode>::from_node(child, src)?
1996            },
1997            function: {
1998                let child = node.child_by_field_name("function").ok_or_else(|| {
1999                    ::treesitter_types::ParseError::missing_field("function", node)
2000                })?;
2001                <CallExpressionFunction as ::treesitter_types::FromNode>::from_node(child, src)?
2002            },
2003            type_arguments: match node.child_by_field_name("type_arguments") {
2004                Some(child) => Some(<TypeArguments as ::treesitter_types::FromNode>::from_node(
2005                    child, src,
2006                )?),
2007                None => None,
2008            },
2009        })
2010    }
2011}
2012impl ::treesitter_types::Spanned for CallExpression<'_> {
2013    fn span(&self) -> ::treesitter_types::Span {
2014        self.span
2015    }
2016}
2017#[derive(Debug, Clone, PartialEq, Eq)]
2018pub struct CallSignature<'tree> {
2019    pub span: ::treesitter_types::Span,
2020    pub parameters: FormalParameters<'tree>,
2021    pub return_type: ::core::option::Option<CallSignatureReturnType<'tree>>,
2022    pub type_parameters: ::core::option::Option<TypeParameters<'tree>>,
2023}
2024impl<'tree> ::treesitter_types::FromNode<'tree> for CallSignature<'tree> {
2025    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
2026    fn from_node(
2027        node: ::tree_sitter::Node<'tree>,
2028        src: &'tree [u8],
2029    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
2030        debug_assert_eq!(node.kind(), "call_signature");
2031        Ok(Self {
2032            span: ::treesitter_types::Span::from(node),
2033            parameters: {
2034                let child = node.child_by_field_name("parameters").ok_or_else(|| {
2035                    ::treesitter_types::ParseError::missing_field("parameters", node)
2036                })?;
2037                <FormalParameters as ::treesitter_types::FromNode>::from_node(child, src)?
2038            },
2039            return_type: match node.child_by_field_name("return_type") {
2040                Some(child) => Some(
2041                    <CallSignatureReturnType as ::treesitter_types::FromNode>::from_node(
2042                        child, src,
2043                    )?,
2044                ),
2045                None => None,
2046            },
2047            type_parameters: match node.child_by_field_name("type_parameters") {
2048                Some(child) => Some(<TypeParameters as ::treesitter_types::FromNode>::from_node(
2049                    child, src,
2050                )?),
2051                None => None,
2052            },
2053        })
2054    }
2055}
2056impl ::treesitter_types::Spanned for CallSignature<'_> {
2057    fn span(&self) -> ::treesitter_types::Span {
2058        self.span
2059    }
2060}
2061#[derive(Debug, Clone, PartialEq, Eq)]
2062pub struct CatchClause<'tree> {
2063    pub span: ::treesitter_types::Span,
2064    pub body: StatementBlock<'tree>,
2065    pub parameter: ::core::option::Option<CatchClauseParameter<'tree>>,
2066    pub r#type: ::core::option::Option<TypeAnnotation<'tree>>,
2067}
2068impl<'tree> ::treesitter_types::FromNode<'tree> for CatchClause<'tree> {
2069    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
2070    fn from_node(
2071        node: ::tree_sitter::Node<'tree>,
2072        src: &'tree [u8],
2073    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
2074        debug_assert_eq!(node.kind(), "catch_clause");
2075        Ok(Self {
2076            span: ::treesitter_types::Span::from(node),
2077            body: {
2078                let child = node
2079                    .child_by_field_name("body")
2080                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("body", node))?;
2081                <StatementBlock as ::treesitter_types::FromNode>::from_node(child, src)?
2082            },
2083            parameter: match node.child_by_field_name("parameter") {
2084                Some(child) => Some(
2085                    <CatchClauseParameter as ::treesitter_types::FromNode>::from_node(child, src)?,
2086                ),
2087                None => None,
2088            },
2089            r#type: match node.child_by_field_name("type") {
2090                Some(child) => Some(<TypeAnnotation as ::treesitter_types::FromNode>::from_node(
2091                    child, src,
2092                )?),
2093                None => None,
2094            },
2095        })
2096    }
2097}
2098impl ::treesitter_types::Spanned for CatchClause<'_> {
2099    fn span(&self) -> ::treesitter_types::Span {
2100        self.span
2101    }
2102}
2103#[derive(Debug, Clone, PartialEq, Eq)]
2104pub struct Class<'tree> {
2105    pub span: ::treesitter_types::Span,
2106    pub body: ClassBody<'tree>,
2107    pub decorator: ::std::vec::Vec<Decorator<'tree>>,
2108    pub name: ::core::option::Option<TypeIdentifier<'tree>>,
2109    pub type_parameters: ::core::option::Option<TypeParameters<'tree>>,
2110    pub children: ::core::option::Option<ClassHeritage<'tree>>,
2111}
2112impl<'tree> ::treesitter_types::FromNode<'tree> for Class<'tree> {
2113    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
2114    fn from_node(
2115        node: ::tree_sitter::Node<'tree>,
2116        src: &'tree [u8],
2117    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
2118        debug_assert_eq!(node.kind(), "class");
2119        Ok(Self {
2120            span: ::treesitter_types::Span::from(node),
2121            body: {
2122                let child = node
2123                    .child_by_field_name("body")
2124                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("body", node))?;
2125                <ClassBody as ::treesitter_types::FromNode>::from_node(child, src)?
2126            },
2127            decorator: {
2128                let mut cursor = node.walk();
2129                let mut items = ::std::vec::Vec::new();
2130                for child in node.children_by_field_name("decorator", &mut cursor) {
2131                    items.push(<Decorator as ::treesitter_types::FromNode>::from_node(
2132                        child, src,
2133                    )?);
2134                }
2135                items
2136            },
2137            name: match node.child_by_field_name("name") {
2138                Some(child) => Some(<TypeIdentifier as ::treesitter_types::FromNode>::from_node(
2139                    child, src,
2140                )?),
2141                None => None,
2142            },
2143            type_parameters: match node.child_by_field_name("type_parameters") {
2144                Some(child) => Some(<TypeParameters as ::treesitter_types::FromNode>::from_node(
2145                    child, src,
2146                )?),
2147                None => None,
2148            },
2149            children: {
2150                #[allow(clippy::suspicious_else_formatting)]
2151                let non_field_children = {
2152                    let mut cursor = node.walk();
2153                    let mut result = ::std::vec::Vec::new();
2154                    if cursor.goto_first_child() {
2155                        loop {
2156                            if cursor.field_name().is_none()
2157                                && cursor.node().is_named()
2158                                && !cursor.node().is_extra()
2159                            {
2160                                result.push(cursor.node());
2161                            }
2162                            if !cursor.goto_next_sibling() {
2163                                break;
2164                            }
2165                        }
2166                    }
2167                    result
2168                };
2169                match non_field_children.first() {
2170                    Some(&child) => Some(
2171                        <ClassHeritage as ::treesitter_types::FromNode>::from_node(child, src)?,
2172                    ),
2173                    None => None,
2174                }
2175            },
2176        })
2177    }
2178}
2179impl ::treesitter_types::Spanned for Class<'_> {
2180    fn span(&self) -> ::treesitter_types::Span {
2181        self.span
2182    }
2183}
2184#[derive(Debug, Clone, PartialEq, Eq)]
2185pub struct ClassBody<'tree> {
2186    pub span: ::treesitter_types::Span,
2187    pub decorator: ::std::vec::Vec<Decorator<'tree>>,
2188    pub children: ::std::vec::Vec<ClassBodyChildren<'tree>>,
2189}
2190impl<'tree> ::treesitter_types::FromNode<'tree> for ClassBody<'tree> {
2191    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
2192    fn from_node(
2193        node: ::tree_sitter::Node<'tree>,
2194        src: &'tree [u8],
2195    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
2196        debug_assert_eq!(node.kind(), "class_body");
2197        Ok(Self {
2198            span: ::treesitter_types::Span::from(node),
2199            decorator: {
2200                let mut cursor = node.walk();
2201                let mut items = ::std::vec::Vec::new();
2202                for child in node.children_by_field_name("decorator", &mut cursor) {
2203                    items.push(<Decorator as ::treesitter_types::FromNode>::from_node(
2204                        child, src,
2205                    )?);
2206                }
2207                items
2208            },
2209            children: {
2210                #[allow(clippy::suspicious_else_formatting)]
2211                let non_field_children = {
2212                    let mut cursor = node.walk();
2213                    let mut result = ::std::vec::Vec::new();
2214                    if cursor.goto_first_child() {
2215                        loop {
2216                            if cursor.field_name().is_none()
2217                                && cursor.node().is_named()
2218                                && !cursor.node().is_extra()
2219                            {
2220                                result.push(cursor.node());
2221                            }
2222                            if !cursor.goto_next_sibling() {
2223                                break;
2224                            }
2225                        }
2226                    }
2227                    result
2228                };
2229                let mut items = ::std::vec::Vec::new();
2230                for child in non_field_children {
2231                    items.push(
2232                        <ClassBodyChildren as ::treesitter_types::FromNode>::from_node(child, src)?,
2233                    );
2234                }
2235                items
2236            },
2237        })
2238    }
2239}
2240impl ::treesitter_types::Spanned for ClassBody<'_> {
2241    fn span(&self) -> ::treesitter_types::Span {
2242        self.span
2243    }
2244}
2245#[derive(Debug, Clone, PartialEq, Eq)]
2246pub struct ClassDeclaration<'tree> {
2247    pub span: ::treesitter_types::Span,
2248    pub body: ClassBody<'tree>,
2249    pub decorator: ::std::vec::Vec<Decorator<'tree>>,
2250    pub name: TypeIdentifier<'tree>,
2251    pub type_parameters: ::core::option::Option<TypeParameters<'tree>>,
2252    pub children: ::core::option::Option<ClassHeritage<'tree>>,
2253}
2254impl<'tree> ::treesitter_types::FromNode<'tree> for ClassDeclaration<'tree> {
2255    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
2256    fn from_node(
2257        node: ::tree_sitter::Node<'tree>,
2258        src: &'tree [u8],
2259    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
2260        debug_assert_eq!(node.kind(), "class_declaration");
2261        Ok(Self {
2262            span: ::treesitter_types::Span::from(node),
2263            body: {
2264                let child = node
2265                    .child_by_field_name("body")
2266                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("body", node))?;
2267                <ClassBody as ::treesitter_types::FromNode>::from_node(child, src)?
2268            },
2269            decorator: {
2270                let mut cursor = node.walk();
2271                let mut items = ::std::vec::Vec::new();
2272                for child in node.children_by_field_name("decorator", &mut cursor) {
2273                    items.push(<Decorator as ::treesitter_types::FromNode>::from_node(
2274                        child, src,
2275                    )?);
2276                }
2277                items
2278            },
2279            name: {
2280                let child = node
2281                    .child_by_field_name("name")
2282                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("name", node))?;
2283                <TypeIdentifier as ::treesitter_types::FromNode>::from_node(child, src)?
2284            },
2285            type_parameters: match node.child_by_field_name("type_parameters") {
2286                Some(child) => Some(<TypeParameters as ::treesitter_types::FromNode>::from_node(
2287                    child, src,
2288                )?),
2289                None => None,
2290            },
2291            children: {
2292                #[allow(clippy::suspicious_else_formatting)]
2293                let non_field_children = {
2294                    let mut cursor = node.walk();
2295                    let mut result = ::std::vec::Vec::new();
2296                    if cursor.goto_first_child() {
2297                        loop {
2298                            if cursor.field_name().is_none()
2299                                && cursor.node().is_named()
2300                                && !cursor.node().is_extra()
2301                            {
2302                                result.push(cursor.node());
2303                            }
2304                            if !cursor.goto_next_sibling() {
2305                                break;
2306                            }
2307                        }
2308                    }
2309                    result
2310                };
2311                match non_field_children.first() {
2312                    Some(&child) => Some(
2313                        <ClassHeritage as ::treesitter_types::FromNode>::from_node(child, src)?,
2314                    ),
2315                    None => None,
2316                }
2317            },
2318        })
2319    }
2320}
2321impl ::treesitter_types::Spanned for ClassDeclaration<'_> {
2322    fn span(&self) -> ::treesitter_types::Span {
2323        self.span
2324    }
2325}
2326#[derive(Debug, Clone, PartialEq, Eq)]
2327pub struct ClassHeritage<'tree> {
2328    pub span: ::treesitter_types::Span,
2329    pub children: ::std::vec::Vec<ClassHeritageChildren<'tree>>,
2330}
2331impl<'tree> ::treesitter_types::FromNode<'tree> for ClassHeritage<'tree> {
2332    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
2333    fn from_node(
2334        node: ::tree_sitter::Node<'tree>,
2335        src: &'tree [u8],
2336    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
2337        debug_assert_eq!(node.kind(), "class_heritage");
2338        Ok(Self {
2339            span: ::treesitter_types::Span::from(node),
2340            children: {
2341                #[allow(clippy::suspicious_else_formatting)]
2342                let non_field_children = {
2343                    let mut cursor = node.walk();
2344                    let mut result = ::std::vec::Vec::new();
2345                    if cursor.goto_first_child() {
2346                        loop {
2347                            if cursor.field_name().is_none()
2348                                && cursor.node().is_named()
2349                                && !cursor.node().is_extra()
2350                            {
2351                                result.push(cursor.node());
2352                            }
2353                            if !cursor.goto_next_sibling() {
2354                                break;
2355                            }
2356                        }
2357                    }
2358                    result
2359                };
2360                let mut items = ::std::vec::Vec::new();
2361                for child in non_field_children {
2362                    items.push(
2363                        <ClassHeritageChildren as ::treesitter_types::FromNode>::from_node(
2364                            child, src,
2365                        )?,
2366                    );
2367                }
2368                items
2369            },
2370        })
2371    }
2372}
2373impl ::treesitter_types::Spanned for ClassHeritage<'_> {
2374    fn span(&self) -> ::treesitter_types::Span {
2375        self.span
2376    }
2377}
2378#[derive(Debug, Clone, PartialEq, Eq)]
2379pub struct ClassStaticBlock<'tree> {
2380    pub span: ::treesitter_types::Span,
2381    pub body: StatementBlock<'tree>,
2382}
2383impl<'tree> ::treesitter_types::FromNode<'tree> for ClassStaticBlock<'tree> {
2384    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
2385    fn from_node(
2386        node: ::tree_sitter::Node<'tree>,
2387        src: &'tree [u8],
2388    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
2389        debug_assert_eq!(node.kind(), "class_static_block");
2390        Ok(Self {
2391            span: ::treesitter_types::Span::from(node),
2392            body: {
2393                let child = node
2394                    .child_by_field_name("body")
2395                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("body", node))?;
2396                <StatementBlock as ::treesitter_types::FromNode>::from_node(child, src)?
2397            },
2398        })
2399    }
2400}
2401impl ::treesitter_types::Spanned for ClassStaticBlock<'_> {
2402    fn span(&self) -> ::treesitter_types::Span {
2403        self.span
2404    }
2405}
2406#[derive(Debug, Clone, PartialEq, Eq)]
2407pub struct ComputedPropertyName<'tree> {
2408    pub span: ::treesitter_types::Span,
2409    pub children: Expression<'tree>,
2410}
2411impl<'tree> ::treesitter_types::FromNode<'tree> for ComputedPropertyName<'tree> {
2412    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
2413    fn from_node(
2414        node: ::tree_sitter::Node<'tree>,
2415        src: &'tree [u8],
2416    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
2417        debug_assert_eq!(node.kind(), "computed_property_name");
2418        Ok(Self {
2419            span: ::treesitter_types::Span::from(node),
2420            children: {
2421                #[allow(clippy::suspicious_else_formatting)]
2422                let non_field_children = {
2423                    let mut cursor = node.walk();
2424                    let mut result = ::std::vec::Vec::new();
2425                    if cursor.goto_first_child() {
2426                        loop {
2427                            if cursor.field_name().is_none()
2428                                && cursor.node().is_named()
2429                                && !cursor.node().is_extra()
2430                            {
2431                                result.push(cursor.node());
2432                            }
2433                            if !cursor.goto_next_sibling() {
2434                                break;
2435                            }
2436                        }
2437                    }
2438                    result
2439                };
2440                let child = if let Some(&c) = non_field_children.first() {
2441                    c
2442                } else {
2443                    let mut fallback_cursor = node.walk();
2444                    let mut fallback_child = None;
2445                    if fallback_cursor.goto_first_child() {
2446                        loop {
2447                            if fallback_cursor.field_name().is_none()
2448                                && !fallback_cursor.node().is_extra()
2449                            {
2450                                let candidate = fallback_cursor.node();
2451                                #[allow(clippy::needless_question_mark)]
2452                                if (|| -> ::core::result::Result<
2453                                    _,
2454                                    ::treesitter_types::ParseError,
2455                                > {
2456                                    let child = candidate;
2457                                    Ok(
2458                                        <Expression as ::treesitter_types::FromNode>::from_node(
2459                                            child,
2460                                            src,
2461                                        )?,
2462                                    )
2463                                })()
2464                                    .is_ok()
2465                                {
2466                                    fallback_child = Some(candidate);
2467                                    break;
2468                                }
2469                            }
2470                            if !fallback_cursor.goto_next_sibling() {
2471                                break;
2472                            }
2473                        }
2474                    }
2475                    if fallback_child.is_none() {
2476                        let mut cursor2 = node.walk();
2477                        if cursor2.goto_first_child() {
2478                            loop {
2479                                if cursor2.node().is_named() && !cursor2.node().is_extra() {
2480                                    let candidate = cursor2.node();
2481                                    #[allow(clippy::needless_question_mark)]
2482                                    if (|| -> ::core::result::Result<
2483                                        _,
2484                                        ::treesitter_types::ParseError,
2485                                    > {
2486                                        let child = candidate;
2487                                        Ok(
2488                                            <Expression as ::treesitter_types::FromNode>::from_node(
2489                                                child,
2490                                                src,
2491                                            )?,
2492                                        )
2493                                    })()
2494                                        .is_ok()
2495                                    {
2496                                        fallback_child = Some(candidate);
2497                                        break;
2498                                    }
2499                                }
2500                                if !cursor2.goto_next_sibling() {
2501                                    break;
2502                                }
2503                            }
2504                        }
2505                    }
2506                    fallback_child.ok_or_else(|| {
2507                        ::treesitter_types::ParseError::missing_field("children", node)
2508                    })?
2509                };
2510                <Expression as ::treesitter_types::FromNode>::from_node(child, src)?
2511            },
2512        })
2513    }
2514}
2515impl ::treesitter_types::Spanned for ComputedPropertyName<'_> {
2516    fn span(&self) -> ::treesitter_types::Span {
2517        self.span
2518    }
2519}
2520#[derive(Debug, Clone, PartialEq, Eq)]
2521pub struct ConditionalType<'tree> {
2522    pub span: ::treesitter_types::Span,
2523    pub alternative: Type<'tree>,
2524    pub consequence: Type<'tree>,
2525    pub left: Type<'tree>,
2526    pub right: Type<'tree>,
2527}
2528impl<'tree> ::treesitter_types::FromNode<'tree> for ConditionalType<'tree> {
2529    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
2530    fn from_node(
2531        node: ::tree_sitter::Node<'tree>,
2532        src: &'tree [u8],
2533    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
2534        debug_assert_eq!(node.kind(), "conditional_type");
2535        Ok(Self {
2536            span: ::treesitter_types::Span::from(node),
2537            alternative: {
2538                let child = node.child_by_field_name("alternative").ok_or_else(|| {
2539                    ::treesitter_types::ParseError::missing_field("alternative", node)
2540                })?;
2541                <Type as ::treesitter_types::FromNode>::from_node(child, src)?
2542            },
2543            consequence: {
2544                let child = node.child_by_field_name("consequence").ok_or_else(|| {
2545                    ::treesitter_types::ParseError::missing_field("consequence", node)
2546                })?;
2547                <Type as ::treesitter_types::FromNode>::from_node(child, src)?
2548            },
2549            left: {
2550                let child = node
2551                    .child_by_field_name("left")
2552                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("left", node))?;
2553                <Type as ::treesitter_types::FromNode>::from_node(child, src)?
2554            },
2555            right: {
2556                let child = node
2557                    .child_by_field_name("right")
2558                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("right", node))?;
2559                <Type as ::treesitter_types::FromNode>::from_node(child, src)?
2560            },
2561        })
2562    }
2563}
2564impl ::treesitter_types::Spanned for ConditionalType<'_> {
2565    fn span(&self) -> ::treesitter_types::Span {
2566        self.span
2567    }
2568}
2569#[derive(Debug, Clone, PartialEq, Eq)]
2570pub struct Constraint<'tree> {
2571    pub span: ::treesitter_types::Span,
2572    pub children: Type<'tree>,
2573}
2574impl<'tree> ::treesitter_types::FromNode<'tree> for Constraint<'tree> {
2575    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
2576    fn from_node(
2577        node: ::tree_sitter::Node<'tree>,
2578        src: &'tree [u8],
2579    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
2580        debug_assert_eq!(node.kind(), "constraint");
2581        Ok(Self {
2582            span: ::treesitter_types::Span::from(node),
2583            children: {
2584                #[allow(clippy::suspicious_else_formatting)]
2585                let non_field_children = {
2586                    let mut cursor = node.walk();
2587                    let mut result = ::std::vec::Vec::new();
2588                    if cursor.goto_first_child() {
2589                        loop {
2590                            if cursor.field_name().is_none()
2591                                && cursor.node().is_named()
2592                                && !cursor.node().is_extra()
2593                            {
2594                                result.push(cursor.node());
2595                            }
2596                            if !cursor.goto_next_sibling() {
2597                                break;
2598                            }
2599                        }
2600                    }
2601                    result
2602                };
2603                let child = if let Some(&c) = non_field_children.first() {
2604                    c
2605                } else {
2606                    let mut fallback_cursor = node.walk();
2607                    let mut fallback_child = None;
2608                    if fallback_cursor.goto_first_child() {
2609                        loop {
2610                            if fallback_cursor.field_name().is_none()
2611                                && !fallback_cursor.node().is_extra()
2612                            {
2613                                let candidate = fallback_cursor.node();
2614                                #[allow(clippy::needless_question_mark)]
2615                                if (|| -> ::core::result::Result<
2616                                    _,
2617                                    ::treesitter_types::ParseError,
2618                                > {
2619                                    let child = candidate;
2620                                    Ok(
2621                                        <Type as ::treesitter_types::FromNode>::from_node(
2622                                            child,
2623                                            src,
2624                                        )?,
2625                                    )
2626                                })()
2627                                    .is_ok()
2628                                {
2629                                    fallback_child = Some(candidate);
2630                                    break;
2631                                }
2632                            }
2633                            if !fallback_cursor.goto_next_sibling() {
2634                                break;
2635                            }
2636                        }
2637                    }
2638                    if fallback_child.is_none() {
2639                        let mut cursor2 = node.walk();
2640                        if cursor2.goto_first_child() {
2641                            loop {
2642                                if cursor2.node().is_named() && !cursor2.node().is_extra() {
2643                                    let candidate = cursor2.node();
2644                                    #[allow(clippy::needless_question_mark)]
2645                                    if (|| -> ::core::result::Result<
2646                                        _,
2647                                        ::treesitter_types::ParseError,
2648                                    > {
2649                                        let child = candidate;
2650                                        Ok(
2651                                            <Type as ::treesitter_types::FromNode>::from_node(
2652                                                child,
2653                                                src,
2654                                            )?,
2655                                        )
2656                                    })()
2657                                        .is_ok()
2658                                    {
2659                                        fallback_child = Some(candidate);
2660                                        break;
2661                                    }
2662                                }
2663                                if !cursor2.goto_next_sibling() {
2664                                    break;
2665                                }
2666                            }
2667                        }
2668                    }
2669                    fallback_child.ok_or_else(|| {
2670                        ::treesitter_types::ParseError::missing_field("children", node)
2671                    })?
2672                };
2673                <Type as ::treesitter_types::FromNode>::from_node(child, src)?
2674            },
2675        })
2676    }
2677}
2678impl ::treesitter_types::Spanned for Constraint<'_> {
2679    fn span(&self) -> ::treesitter_types::Span {
2680        self.span
2681    }
2682}
2683#[derive(Debug, Clone, PartialEq, Eq)]
2684pub struct ConstructSignature<'tree> {
2685    pub span: ::treesitter_types::Span,
2686    pub parameters: FormalParameters<'tree>,
2687    pub r#type: ::core::option::Option<TypeAnnotation<'tree>>,
2688    pub type_parameters: ::core::option::Option<TypeParameters<'tree>>,
2689}
2690impl<'tree> ::treesitter_types::FromNode<'tree> for ConstructSignature<'tree> {
2691    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
2692    fn from_node(
2693        node: ::tree_sitter::Node<'tree>,
2694        src: &'tree [u8],
2695    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
2696        debug_assert_eq!(node.kind(), "construct_signature");
2697        Ok(Self {
2698            span: ::treesitter_types::Span::from(node),
2699            parameters: {
2700                let child = node.child_by_field_name("parameters").ok_or_else(|| {
2701                    ::treesitter_types::ParseError::missing_field("parameters", node)
2702                })?;
2703                <FormalParameters as ::treesitter_types::FromNode>::from_node(child, src)?
2704            },
2705            r#type: match node.child_by_field_name("type") {
2706                Some(child) => Some(<TypeAnnotation as ::treesitter_types::FromNode>::from_node(
2707                    child, src,
2708                )?),
2709                None => None,
2710            },
2711            type_parameters: match node.child_by_field_name("type_parameters") {
2712                Some(child) => Some(<TypeParameters as ::treesitter_types::FromNode>::from_node(
2713                    child, src,
2714                )?),
2715                None => None,
2716            },
2717        })
2718    }
2719}
2720impl ::treesitter_types::Spanned for ConstructSignature<'_> {
2721    fn span(&self) -> ::treesitter_types::Span {
2722        self.span
2723    }
2724}
2725#[derive(Debug, Clone, PartialEq, Eq)]
2726pub struct ConstructorType<'tree> {
2727    pub span: ::treesitter_types::Span,
2728    pub parameters: FormalParameters<'tree>,
2729    pub r#type: Type<'tree>,
2730    pub type_parameters: ::core::option::Option<TypeParameters<'tree>>,
2731}
2732impl<'tree> ::treesitter_types::FromNode<'tree> for ConstructorType<'tree> {
2733    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
2734    fn from_node(
2735        node: ::tree_sitter::Node<'tree>,
2736        src: &'tree [u8],
2737    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
2738        debug_assert_eq!(node.kind(), "constructor_type");
2739        Ok(Self {
2740            span: ::treesitter_types::Span::from(node),
2741            parameters: {
2742                let child = node.child_by_field_name("parameters").ok_or_else(|| {
2743                    ::treesitter_types::ParseError::missing_field("parameters", node)
2744                })?;
2745                <FormalParameters as ::treesitter_types::FromNode>::from_node(child, src)?
2746            },
2747            r#type: {
2748                let child = node
2749                    .child_by_field_name("type")
2750                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("type", node))?;
2751                <Type as ::treesitter_types::FromNode>::from_node(child, src)?
2752            },
2753            type_parameters: match node.child_by_field_name("type_parameters") {
2754                Some(child) => Some(<TypeParameters as ::treesitter_types::FromNode>::from_node(
2755                    child, src,
2756                )?),
2757                None => None,
2758            },
2759        })
2760    }
2761}
2762impl ::treesitter_types::Spanned for ConstructorType<'_> {
2763    fn span(&self) -> ::treesitter_types::Span {
2764        self.span
2765    }
2766}
2767#[derive(Debug, Clone, PartialEq, Eq)]
2768pub struct ContinueStatement<'tree> {
2769    pub span: ::treesitter_types::Span,
2770    pub label: ::core::option::Option<StatementIdentifier<'tree>>,
2771}
2772impl<'tree> ::treesitter_types::FromNode<'tree> for ContinueStatement<'tree> {
2773    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
2774    fn from_node(
2775        node: ::tree_sitter::Node<'tree>,
2776        src: &'tree [u8],
2777    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
2778        debug_assert_eq!(node.kind(), "continue_statement");
2779        Ok(Self {
2780            span: ::treesitter_types::Span::from(node),
2781            label: match node.child_by_field_name("label") {
2782                Some(child) => Some(
2783                    <StatementIdentifier as ::treesitter_types::FromNode>::from_node(child, src)?,
2784                ),
2785                None => None,
2786            },
2787        })
2788    }
2789}
2790impl ::treesitter_types::Spanned for ContinueStatement<'_> {
2791    fn span(&self) -> ::treesitter_types::Span {
2792        self.span
2793    }
2794}
2795#[derive(Debug, Clone, PartialEq, Eq)]
2796pub struct DebuggerStatement<'tree> {
2797    pub span: ::treesitter_types::Span,
2798    text: &'tree str,
2799}
2800impl<'tree> ::treesitter_types::FromNode<'tree> for DebuggerStatement<'tree> {
2801    fn from_node(
2802        node: ::tree_sitter::Node<'tree>,
2803        src: &'tree [u8],
2804    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
2805        debug_assert_eq!(node.kind(), "debugger_statement");
2806        Ok(Self {
2807            span: ::treesitter_types::Span::from(node),
2808            text: node.utf8_text(src)?,
2809        })
2810    }
2811}
2812impl<'tree> ::treesitter_types::LeafNode<'tree> for DebuggerStatement<'tree> {
2813    fn text(&self) -> &'tree str {
2814        self.text
2815    }
2816}
2817impl ::treesitter_types::Spanned for DebuggerStatement<'_> {
2818    fn span(&self) -> ::treesitter_types::Span {
2819        self.span
2820    }
2821}
2822#[derive(Debug, Clone, PartialEq, Eq)]
2823pub struct Decorator<'tree> {
2824    pub span: ::treesitter_types::Span,
2825    pub children: DecoratorChildren<'tree>,
2826}
2827impl<'tree> ::treesitter_types::FromNode<'tree> for Decorator<'tree> {
2828    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
2829    fn from_node(
2830        node: ::tree_sitter::Node<'tree>,
2831        src: &'tree [u8],
2832    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
2833        debug_assert_eq!(node.kind(), "decorator");
2834        Ok(Self {
2835            span: ::treesitter_types::Span::from(node),
2836            children: {
2837                #[allow(clippy::suspicious_else_formatting)]
2838                let non_field_children = {
2839                    let mut cursor = node.walk();
2840                    let mut result = ::std::vec::Vec::new();
2841                    if cursor.goto_first_child() {
2842                        loop {
2843                            if cursor.field_name().is_none()
2844                                && cursor.node().is_named()
2845                                && !cursor.node().is_extra()
2846                            {
2847                                result.push(cursor.node());
2848                            }
2849                            if !cursor.goto_next_sibling() {
2850                                break;
2851                            }
2852                        }
2853                    }
2854                    result
2855                };
2856                let child = if let Some(&c) = non_field_children.first() {
2857                    c
2858                } else {
2859                    let mut fallback_cursor = node.walk();
2860                    let mut fallback_child = None;
2861                    if fallback_cursor.goto_first_child() {
2862                        loop {
2863                            if fallback_cursor.field_name().is_none()
2864                                && !fallback_cursor.node().is_extra()
2865                            {
2866                                let candidate = fallback_cursor.node();
2867                                #[allow(clippy::needless_question_mark)]
2868                                if (|| -> ::core::result::Result<
2869                                    _,
2870                                    ::treesitter_types::ParseError,
2871                                > {
2872                                    let child = candidate;
2873                                    Ok(
2874                                        <DecoratorChildren as ::treesitter_types::FromNode>::from_node(
2875                                            child,
2876                                            src,
2877                                        )?,
2878                                    )
2879                                })()
2880                                    .is_ok()
2881                                {
2882                                    fallback_child = Some(candidate);
2883                                    break;
2884                                }
2885                            }
2886                            if !fallback_cursor.goto_next_sibling() {
2887                                break;
2888                            }
2889                        }
2890                    }
2891                    if fallback_child.is_none() {
2892                        let mut cursor2 = node.walk();
2893                        if cursor2.goto_first_child() {
2894                            loop {
2895                                if cursor2.node().is_named() && !cursor2.node().is_extra() {
2896                                    let candidate = cursor2.node();
2897                                    #[allow(clippy::needless_question_mark)]
2898                                    if (|| -> ::core::result::Result<
2899                                        _,
2900                                        ::treesitter_types::ParseError,
2901                                    > {
2902                                        let child = candidate;
2903                                        Ok(
2904                                            <DecoratorChildren as ::treesitter_types::FromNode>::from_node(
2905                                                child,
2906                                                src,
2907                                            )?,
2908                                        )
2909                                    })()
2910                                        .is_ok()
2911                                    {
2912                                        fallback_child = Some(candidate);
2913                                        break;
2914                                    }
2915                                }
2916                                if !cursor2.goto_next_sibling() {
2917                                    break;
2918                                }
2919                            }
2920                        }
2921                    }
2922                    fallback_child.ok_or_else(|| {
2923                        ::treesitter_types::ParseError::missing_field("children", node)
2924                    })?
2925                };
2926                <DecoratorChildren as ::treesitter_types::FromNode>::from_node(child, src)?
2927            },
2928        })
2929    }
2930}
2931impl ::treesitter_types::Spanned for Decorator<'_> {
2932    fn span(&self) -> ::treesitter_types::Span {
2933        self.span
2934    }
2935}
2936#[derive(Debug, Clone, PartialEq, Eq)]
2937pub struct DefaultType<'tree> {
2938    pub span: ::treesitter_types::Span,
2939    pub children: Type<'tree>,
2940}
2941impl<'tree> ::treesitter_types::FromNode<'tree> for DefaultType<'tree> {
2942    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
2943    fn from_node(
2944        node: ::tree_sitter::Node<'tree>,
2945        src: &'tree [u8],
2946    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
2947        debug_assert_eq!(node.kind(), "default_type");
2948        Ok(Self {
2949            span: ::treesitter_types::Span::from(node),
2950            children: {
2951                #[allow(clippy::suspicious_else_formatting)]
2952                let non_field_children = {
2953                    let mut cursor = node.walk();
2954                    let mut result = ::std::vec::Vec::new();
2955                    if cursor.goto_first_child() {
2956                        loop {
2957                            if cursor.field_name().is_none()
2958                                && cursor.node().is_named()
2959                                && !cursor.node().is_extra()
2960                            {
2961                                result.push(cursor.node());
2962                            }
2963                            if !cursor.goto_next_sibling() {
2964                                break;
2965                            }
2966                        }
2967                    }
2968                    result
2969                };
2970                let child = if let Some(&c) = non_field_children.first() {
2971                    c
2972                } else {
2973                    let mut fallback_cursor = node.walk();
2974                    let mut fallback_child = None;
2975                    if fallback_cursor.goto_first_child() {
2976                        loop {
2977                            if fallback_cursor.field_name().is_none()
2978                                && !fallback_cursor.node().is_extra()
2979                            {
2980                                let candidate = fallback_cursor.node();
2981                                #[allow(clippy::needless_question_mark)]
2982                                if (|| -> ::core::result::Result<
2983                                    _,
2984                                    ::treesitter_types::ParseError,
2985                                > {
2986                                    let child = candidate;
2987                                    Ok(
2988                                        <Type as ::treesitter_types::FromNode>::from_node(
2989                                            child,
2990                                            src,
2991                                        )?,
2992                                    )
2993                                })()
2994                                    .is_ok()
2995                                {
2996                                    fallback_child = Some(candidate);
2997                                    break;
2998                                }
2999                            }
3000                            if !fallback_cursor.goto_next_sibling() {
3001                                break;
3002                            }
3003                        }
3004                    }
3005                    if fallback_child.is_none() {
3006                        let mut cursor2 = node.walk();
3007                        if cursor2.goto_first_child() {
3008                            loop {
3009                                if cursor2.node().is_named() && !cursor2.node().is_extra() {
3010                                    let candidate = cursor2.node();
3011                                    #[allow(clippy::needless_question_mark)]
3012                                    if (|| -> ::core::result::Result<
3013                                        _,
3014                                        ::treesitter_types::ParseError,
3015                                    > {
3016                                        let child = candidate;
3017                                        Ok(
3018                                            <Type as ::treesitter_types::FromNode>::from_node(
3019                                                child,
3020                                                src,
3021                                            )?,
3022                                        )
3023                                    })()
3024                                        .is_ok()
3025                                    {
3026                                        fallback_child = Some(candidate);
3027                                        break;
3028                                    }
3029                                }
3030                                if !cursor2.goto_next_sibling() {
3031                                    break;
3032                                }
3033                            }
3034                        }
3035                    }
3036                    fallback_child.ok_or_else(|| {
3037                        ::treesitter_types::ParseError::missing_field("children", node)
3038                    })?
3039                };
3040                <Type as ::treesitter_types::FromNode>::from_node(child, src)?
3041            },
3042        })
3043    }
3044}
3045impl ::treesitter_types::Spanned for DefaultType<'_> {
3046    fn span(&self) -> ::treesitter_types::Span {
3047        self.span
3048    }
3049}
3050#[derive(Debug, Clone, PartialEq, Eq)]
3051pub struct DoStatement<'tree> {
3052    pub span: ::treesitter_types::Span,
3053    pub body: Statement<'tree>,
3054    pub condition: ParenthesizedExpression<'tree>,
3055}
3056impl<'tree> ::treesitter_types::FromNode<'tree> for DoStatement<'tree> {
3057    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
3058    fn from_node(
3059        node: ::tree_sitter::Node<'tree>,
3060        src: &'tree [u8],
3061    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
3062        debug_assert_eq!(node.kind(), "do_statement");
3063        Ok(Self {
3064            span: ::treesitter_types::Span::from(node),
3065            body: {
3066                let child = node
3067                    .child_by_field_name("body")
3068                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("body", node))?;
3069                <Statement as ::treesitter_types::FromNode>::from_node(child, src)?
3070            },
3071            condition: {
3072                let child = node.child_by_field_name("condition").ok_or_else(|| {
3073                    ::treesitter_types::ParseError::missing_field("condition", node)
3074                })?;
3075                <ParenthesizedExpression as ::treesitter_types::FromNode>::from_node(child, src)?
3076            },
3077        })
3078    }
3079}
3080impl ::treesitter_types::Spanned for DoStatement<'_> {
3081    fn span(&self) -> ::treesitter_types::Span {
3082        self.span
3083    }
3084}
3085#[derive(Debug, Clone, PartialEq, Eq)]
3086pub struct ElseClause<'tree> {
3087    pub span: ::treesitter_types::Span,
3088    pub children: Statement<'tree>,
3089}
3090impl<'tree> ::treesitter_types::FromNode<'tree> for ElseClause<'tree> {
3091    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
3092    fn from_node(
3093        node: ::tree_sitter::Node<'tree>,
3094        src: &'tree [u8],
3095    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
3096        debug_assert_eq!(node.kind(), "else_clause");
3097        Ok(Self {
3098            span: ::treesitter_types::Span::from(node),
3099            children: {
3100                #[allow(clippy::suspicious_else_formatting)]
3101                let non_field_children = {
3102                    let mut cursor = node.walk();
3103                    let mut result = ::std::vec::Vec::new();
3104                    if cursor.goto_first_child() {
3105                        loop {
3106                            if cursor.field_name().is_none()
3107                                && cursor.node().is_named()
3108                                && !cursor.node().is_extra()
3109                            {
3110                                result.push(cursor.node());
3111                            }
3112                            if !cursor.goto_next_sibling() {
3113                                break;
3114                            }
3115                        }
3116                    }
3117                    result
3118                };
3119                let child = if let Some(&c) = non_field_children.first() {
3120                    c
3121                } else {
3122                    let mut fallback_cursor = node.walk();
3123                    let mut fallback_child = None;
3124                    if fallback_cursor.goto_first_child() {
3125                        loop {
3126                            if fallback_cursor.field_name().is_none()
3127                                && !fallback_cursor.node().is_extra()
3128                            {
3129                                let candidate = fallback_cursor.node();
3130                                #[allow(clippy::needless_question_mark)]
3131                                if (|| -> ::core::result::Result<
3132                                    _,
3133                                    ::treesitter_types::ParseError,
3134                                > {
3135                                    let child = candidate;
3136                                    Ok(
3137                                        <Statement as ::treesitter_types::FromNode>::from_node(
3138                                            child,
3139                                            src,
3140                                        )?,
3141                                    )
3142                                })()
3143                                    .is_ok()
3144                                {
3145                                    fallback_child = Some(candidate);
3146                                    break;
3147                                }
3148                            }
3149                            if !fallback_cursor.goto_next_sibling() {
3150                                break;
3151                            }
3152                        }
3153                    }
3154                    if fallback_child.is_none() {
3155                        let mut cursor2 = node.walk();
3156                        if cursor2.goto_first_child() {
3157                            loop {
3158                                if cursor2.node().is_named() && !cursor2.node().is_extra() {
3159                                    let candidate = cursor2.node();
3160                                    #[allow(clippy::needless_question_mark)]
3161                                    if (|| -> ::core::result::Result<
3162                                        _,
3163                                        ::treesitter_types::ParseError,
3164                                    > {
3165                                        let child = candidate;
3166                                        Ok(
3167                                            <Statement as ::treesitter_types::FromNode>::from_node(
3168                                                child,
3169                                                src,
3170                                            )?,
3171                                        )
3172                                    })()
3173                                        .is_ok()
3174                                    {
3175                                        fallback_child = Some(candidate);
3176                                        break;
3177                                    }
3178                                }
3179                                if !cursor2.goto_next_sibling() {
3180                                    break;
3181                                }
3182                            }
3183                        }
3184                    }
3185                    fallback_child.ok_or_else(|| {
3186                        ::treesitter_types::ParseError::missing_field("children", node)
3187                    })?
3188                };
3189                <Statement as ::treesitter_types::FromNode>::from_node(child, src)?
3190            },
3191        })
3192    }
3193}
3194impl ::treesitter_types::Spanned for ElseClause<'_> {
3195    fn span(&self) -> ::treesitter_types::Span {
3196        self.span
3197    }
3198}
3199#[derive(Debug, Clone, PartialEq, Eq)]
3200pub struct EmptyStatement<'tree> {
3201    pub span: ::treesitter_types::Span,
3202    text: &'tree str,
3203}
3204impl<'tree> ::treesitter_types::FromNode<'tree> for EmptyStatement<'tree> {
3205    fn from_node(
3206        node: ::tree_sitter::Node<'tree>,
3207        src: &'tree [u8],
3208    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
3209        debug_assert_eq!(node.kind(), "empty_statement");
3210        Ok(Self {
3211            span: ::treesitter_types::Span::from(node),
3212            text: node.utf8_text(src)?,
3213        })
3214    }
3215}
3216impl<'tree> ::treesitter_types::LeafNode<'tree> for EmptyStatement<'tree> {
3217    fn text(&self) -> &'tree str {
3218        self.text
3219    }
3220}
3221impl ::treesitter_types::Spanned for EmptyStatement<'_> {
3222    fn span(&self) -> ::treesitter_types::Span {
3223        self.span
3224    }
3225}
3226#[derive(Debug, Clone, PartialEq, Eq)]
3227pub struct EnumAssignment<'tree> {
3228    pub span: ::treesitter_types::Span,
3229    pub name: EnumAssignmentName<'tree>,
3230    pub value: Expression<'tree>,
3231}
3232impl<'tree> ::treesitter_types::FromNode<'tree> for EnumAssignment<'tree> {
3233    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
3234    fn from_node(
3235        node: ::tree_sitter::Node<'tree>,
3236        src: &'tree [u8],
3237    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
3238        debug_assert_eq!(node.kind(), "enum_assignment");
3239        Ok(Self {
3240            span: ::treesitter_types::Span::from(node),
3241            name: {
3242                let child = node
3243                    .child_by_field_name("name")
3244                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("name", node))?;
3245                <EnumAssignmentName as ::treesitter_types::FromNode>::from_node(child, src)?
3246            },
3247            value: {
3248                let child = node
3249                    .child_by_field_name("value")
3250                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("value", node))?;
3251                <Expression as ::treesitter_types::FromNode>::from_node(child, src)?
3252            },
3253        })
3254    }
3255}
3256impl ::treesitter_types::Spanned for EnumAssignment<'_> {
3257    fn span(&self) -> ::treesitter_types::Span {
3258        self.span
3259    }
3260}
3261#[derive(Debug, Clone, PartialEq, Eq)]
3262pub struct EnumBody<'tree> {
3263    pub span: ::treesitter_types::Span,
3264    pub name: ::std::vec::Vec<EnumBodyName<'tree>>,
3265    pub children: ::std::vec::Vec<EnumAssignment<'tree>>,
3266}
3267impl<'tree> ::treesitter_types::FromNode<'tree> for EnumBody<'tree> {
3268    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
3269    fn from_node(
3270        node: ::tree_sitter::Node<'tree>,
3271        src: &'tree [u8],
3272    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
3273        debug_assert_eq!(node.kind(), "enum_body");
3274        Ok(Self {
3275            span: ::treesitter_types::Span::from(node),
3276            name: {
3277                let mut cursor = node.walk();
3278                let mut items = ::std::vec::Vec::new();
3279                for child in node.children_by_field_name("name", &mut cursor) {
3280                    items.push(<EnumBodyName as ::treesitter_types::FromNode>::from_node(
3281                        child, src,
3282                    )?);
3283                }
3284                items
3285            },
3286            children: {
3287                #[allow(clippy::suspicious_else_formatting)]
3288                let non_field_children = {
3289                    let mut cursor = node.walk();
3290                    let mut result = ::std::vec::Vec::new();
3291                    if cursor.goto_first_child() {
3292                        loop {
3293                            if cursor.field_name().is_none()
3294                                && cursor.node().is_named()
3295                                && !cursor.node().is_extra()
3296                            {
3297                                result.push(cursor.node());
3298                            }
3299                            if !cursor.goto_next_sibling() {
3300                                break;
3301                            }
3302                        }
3303                    }
3304                    result
3305                };
3306                let mut items = ::std::vec::Vec::new();
3307                for child in non_field_children {
3308                    items.push(<EnumAssignment as ::treesitter_types::FromNode>::from_node(
3309                        child, src,
3310                    )?);
3311                }
3312                items
3313            },
3314        })
3315    }
3316}
3317impl ::treesitter_types::Spanned for EnumBody<'_> {
3318    fn span(&self) -> ::treesitter_types::Span {
3319        self.span
3320    }
3321}
3322#[derive(Debug, Clone, PartialEq, Eq)]
3323pub struct EnumDeclaration<'tree> {
3324    pub span: ::treesitter_types::Span,
3325    pub body: EnumBody<'tree>,
3326    pub name: Identifier<'tree>,
3327}
3328impl<'tree> ::treesitter_types::FromNode<'tree> for EnumDeclaration<'tree> {
3329    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
3330    fn from_node(
3331        node: ::tree_sitter::Node<'tree>,
3332        src: &'tree [u8],
3333    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
3334        debug_assert_eq!(node.kind(), "enum_declaration");
3335        Ok(Self {
3336            span: ::treesitter_types::Span::from(node),
3337            body: {
3338                let child = node
3339                    .child_by_field_name("body")
3340                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("body", node))?;
3341                <EnumBody as ::treesitter_types::FromNode>::from_node(child, src)?
3342            },
3343            name: {
3344                let child = node
3345                    .child_by_field_name("name")
3346                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("name", node))?;
3347                <Identifier as ::treesitter_types::FromNode>::from_node(child, src)?
3348            },
3349        })
3350    }
3351}
3352impl ::treesitter_types::Spanned for EnumDeclaration<'_> {
3353    fn span(&self) -> ::treesitter_types::Span {
3354        self.span
3355    }
3356}
3357#[derive(Debug, Clone, PartialEq, Eq)]
3358pub struct ExistentialType<'tree> {
3359    pub span: ::treesitter_types::Span,
3360    text: &'tree str,
3361}
3362impl<'tree> ::treesitter_types::FromNode<'tree> for ExistentialType<'tree> {
3363    fn from_node(
3364        node: ::tree_sitter::Node<'tree>,
3365        src: &'tree [u8],
3366    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
3367        debug_assert_eq!(node.kind(), "existential_type");
3368        Ok(Self {
3369            span: ::treesitter_types::Span::from(node),
3370            text: node.utf8_text(src)?,
3371        })
3372    }
3373}
3374impl<'tree> ::treesitter_types::LeafNode<'tree> for ExistentialType<'tree> {
3375    fn text(&self) -> &'tree str {
3376        self.text
3377    }
3378}
3379impl ::treesitter_types::Spanned for ExistentialType<'_> {
3380    fn span(&self) -> ::treesitter_types::Span {
3381        self.span
3382    }
3383}
3384#[derive(Debug, Clone, PartialEq, Eq)]
3385pub struct ExportClause<'tree> {
3386    pub span: ::treesitter_types::Span,
3387    pub children: ::std::vec::Vec<ExportSpecifier<'tree>>,
3388}
3389impl<'tree> ::treesitter_types::FromNode<'tree> for ExportClause<'tree> {
3390    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
3391    fn from_node(
3392        node: ::tree_sitter::Node<'tree>,
3393        src: &'tree [u8],
3394    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
3395        debug_assert_eq!(node.kind(), "export_clause");
3396        Ok(Self {
3397            span: ::treesitter_types::Span::from(node),
3398            children: {
3399                #[allow(clippy::suspicious_else_formatting)]
3400                let non_field_children = {
3401                    let mut cursor = node.walk();
3402                    let mut result = ::std::vec::Vec::new();
3403                    if cursor.goto_first_child() {
3404                        loop {
3405                            if cursor.field_name().is_none()
3406                                && cursor.node().is_named()
3407                                && !cursor.node().is_extra()
3408                            {
3409                                result.push(cursor.node());
3410                            }
3411                            if !cursor.goto_next_sibling() {
3412                                break;
3413                            }
3414                        }
3415                    }
3416                    result
3417                };
3418                let mut items = ::std::vec::Vec::new();
3419                for child in non_field_children {
3420                    items.push(
3421                        <ExportSpecifier as ::treesitter_types::FromNode>::from_node(child, src)?,
3422                    );
3423                }
3424                items
3425            },
3426        })
3427    }
3428}
3429impl ::treesitter_types::Spanned for ExportClause<'_> {
3430    fn span(&self) -> ::treesitter_types::Span {
3431        self.span
3432    }
3433}
3434#[derive(Debug, Clone, PartialEq, Eq)]
3435pub struct ExportSpecifier<'tree> {
3436    pub span: ::treesitter_types::Span,
3437    pub alias: ::core::option::Option<ExportSpecifierAlias<'tree>>,
3438    pub name: ExportSpecifierName<'tree>,
3439}
3440impl<'tree> ::treesitter_types::FromNode<'tree> for ExportSpecifier<'tree> {
3441    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
3442    fn from_node(
3443        node: ::tree_sitter::Node<'tree>,
3444        src: &'tree [u8],
3445    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
3446        debug_assert_eq!(node.kind(), "export_specifier");
3447        Ok(Self {
3448            span: ::treesitter_types::Span::from(node),
3449            alias: match node.child_by_field_name("alias") {
3450                Some(child) => Some(
3451                    <ExportSpecifierAlias as ::treesitter_types::FromNode>::from_node(child, src)?,
3452                ),
3453                None => None,
3454            },
3455            name: {
3456                let child = node
3457                    .child_by_field_name("name")
3458                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("name", node))?;
3459                <ExportSpecifierName as ::treesitter_types::FromNode>::from_node(child, src)?
3460            },
3461        })
3462    }
3463}
3464impl ::treesitter_types::Spanned for ExportSpecifier<'_> {
3465    fn span(&self) -> ::treesitter_types::Span {
3466        self.span
3467    }
3468}
3469#[derive(Debug, Clone, PartialEq, Eq)]
3470pub struct ExportStatement<'tree> {
3471    pub span: ::treesitter_types::Span,
3472    pub declaration: ::core::option::Option<Declaration<'tree>>,
3473    pub decorator: ::std::vec::Vec<Decorator<'tree>>,
3474    pub source: ::core::option::Option<String<'tree>>,
3475    pub value: ::core::option::Option<Expression<'tree>>,
3476    pub children: ::core::option::Option<ExportStatementChildren<'tree>>,
3477}
3478impl<'tree> ::treesitter_types::FromNode<'tree> for ExportStatement<'tree> {
3479    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
3480    fn from_node(
3481        node: ::tree_sitter::Node<'tree>,
3482        src: &'tree [u8],
3483    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
3484        debug_assert_eq!(node.kind(), "export_statement");
3485        Ok(Self {
3486            span: ::treesitter_types::Span::from(node),
3487            declaration: match node.child_by_field_name("declaration") {
3488                Some(child) => Some(<Declaration as ::treesitter_types::FromNode>::from_node(
3489                    child, src,
3490                )?),
3491                None => None,
3492            },
3493            decorator: {
3494                let mut cursor = node.walk();
3495                let mut items = ::std::vec::Vec::new();
3496                for child in node.children_by_field_name("decorator", &mut cursor) {
3497                    items.push(<Decorator as ::treesitter_types::FromNode>::from_node(
3498                        child, src,
3499                    )?);
3500                }
3501                items
3502            },
3503            source: match node.child_by_field_name("source") {
3504                Some(child) => Some(<String as ::treesitter_types::FromNode>::from_node(
3505                    child, src,
3506                )?),
3507                None => None,
3508            },
3509            value: match node.child_by_field_name("value") {
3510                Some(child) => Some(<Expression as ::treesitter_types::FromNode>::from_node(
3511                    child, src,
3512                )?),
3513                None => None,
3514            },
3515            children: {
3516                #[allow(clippy::suspicious_else_formatting)]
3517                let non_field_children = {
3518                    let mut cursor = node.walk();
3519                    let mut result = ::std::vec::Vec::new();
3520                    if cursor.goto_first_child() {
3521                        loop {
3522                            if cursor.field_name().is_none()
3523                                && cursor.node().is_named()
3524                                && !cursor.node().is_extra()
3525                            {
3526                                result.push(cursor.node());
3527                            }
3528                            if !cursor.goto_next_sibling() {
3529                                break;
3530                            }
3531                        }
3532                    }
3533                    result
3534                };
3535                match non_field_children.first() {
3536                    Some(&child) => Some(
3537                        <ExportStatementChildren as ::treesitter_types::FromNode>::from_node(
3538                            child, src,
3539                        )?,
3540                    ),
3541                    None => None,
3542                }
3543            },
3544        })
3545    }
3546}
3547impl ::treesitter_types::Spanned for ExportStatement<'_> {
3548    fn span(&self) -> ::treesitter_types::Span {
3549        self.span
3550    }
3551}
3552#[derive(Debug, Clone, PartialEq, Eq)]
3553pub struct ExpressionStatement<'tree> {
3554    pub span: ::treesitter_types::Span,
3555    pub children: ExpressionStatementChildren<'tree>,
3556}
3557impl<'tree> ::treesitter_types::FromNode<'tree> for ExpressionStatement<'tree> {
3558    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
3559    fn from_node(
3560        node: ::tree_sitter::Node<'tree>,
3561        src: &'tree [u8],
3562    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
3563        debug_assert_eq!(node.kind(), "expression_statement");
3564        Ok(Self {
3565            span: ::treesitter_types::Span::from(node),
3566            children: {
3567                #[allow(clippy::suspicious_else_formatting)]
3568                let non_field_children = {
3569                    let mut cursor = node.walk();
3570                    let mut result = ::std::vec::Vec::new();
3571                    if cursor.goto_first_child() {
3572                        loop {
3573                            if cursor.field_name().is_none()
3574                                && cursor.node().is_named()
3575                                && !cursor.node().is_extra()
3576                            {
3577                                result.push(cursor.node());
3578                            }
3579                            if !cursor.goto_next_sibling() {
3580                                break;
3581                            }
3582                        }
3583                    }
3584                    result
3585                };
3586                let child = if let Some(&c) = non_field_children.first() {
3587                    c
3588                } else {
3589                    let mut fallback_cursor = node.walk();
3590                    let mut fallback_child = None;
3591                    if fallback_cursor.goto_first_child() {
3592                        loop {
3593                            if fallback_cursor.field_name().is_none()
3594                                && !fallback_cursor.node().is_extra()
3595                            {
3596                                let candidate = fallback_cursor.node();
3597                                #[allow(clippy::needless_question_mark)]
3598                                if (|| -> ::core::result::Result<
3599                                    _,
3600                                    ::treesitter_types::ParseError,
3601                                > {
3602                                    let child = candidate;
3603                                    Ok(
3604                                        <ExpressionStatementChildren as ::treesitter_types::FromNode>::from_node(
3605                                            child,
3606                                            src,
3607                                        )?,
3608                                    )
3609                                })()
3610                                    .is_ok()
3611                                {
3612                                    fallback_child = Some(candidate);
3613                                    break;
3614                                }
3615                            }
3616                            if !fallback_cursor.goto_next_sibling() {
3617                                break;
3618                            }
3619                        }
3620                    }
3621                    if fallback_child.is_none() {
3622                        let mut cursor2 = node.walk();
3623                        if cursor2.goto_first_child() {
3624                            loop {
3625                                if cursor2.node().is_named() && !cursor2.node().is_extra() {
3626                                    let candidate = cursor2.node();
3627                                    #[allow(clippy::needless_question_mark)]
3628                                    if (|| -> ::core::result::Result<
3629                                        _,
3630                                        ::treesitter_types::ParseError,
3631                                    > {
3632                                        let child = candidate;
3633                                        Ok(
3634                                            <ExpressionStatementChildren as ::treesitter_types::FromNode>::from_node(
3635                                                child,
3636                                                src,
3637                                            )?,
3638                                        )
3639                                    })()
3640                                        .is_ok()
3641                                    {
3642                                        fallback_child = Some(candidate);
3643                                        break;
3644                                    }
3645                                }
3646                                if !cursor2.goto_next_sibling() {
3647                                    break;
3648                                }
3649                            }
3650                        }
3651                    }
3652                    fallback_child.ok_or_else(|| {
3653                        ::treesitter_types::ParseError::missing_field("children", node)
3654                    })?
3655                };
3656                <ExpressionStatementChildren as ::treesitter_types::FromNode>::from_node(
3657                    child, src,
3658                )?
3659            },
3660        })
3661    }
3662}
3663impl ::treesitter_types::Spanned for ExpressionStatement<'_> {
3664    fn span(&self) -> ::treesitter_types::Span {
3665        self.span
3666    }
3667}
3668#[derive(Debug, Clone, PartialEq, Eq)]
3669pub struct ExtendsClause<'tree> {
3670    pub span: ::treesitter_types::Span,
3671    pub type_arguments: ::std::vec::Vec<TypeArguments<'tree>>,
3672    pub value: ::std::vec::Vec<Expression<'tree>>,
3673}
3674impl<'tree> ::treesitter_types::FromNode<'tree> for ExtendsClause<'tree> {
3675    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
3676    fn from_node(
3677        node: ::tree_sitter::Node<'tree>,
3678        src: &'tree [u8],
3679    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
3680        debug_assert_eq!(node.kind(), "extends_clause");
3681        Ok(Self {
3682            span: ::treesitter_types::Span::from(node),
3683            type_arguments: {
3684                let mut cursor = node.walk();
3685                let mut items = ::std::vec::Vec::new();
3686                for child in node.children_by_field_name("type_arguments", &mut cursor) {
3687                    items.push(<TypeArguments as ::treesitter_types::FromNode>::from_node(
3688                        child, src,
3689                    )?);
3690                }
3691                items
3692            },
3693            value: {
3694                let mut cursor = node.walk();
3695                let mut items = ::std::vec::Vec::new();
3696                for child in node.children_by_field_name("value", &mut cursor) {
3697                    items.push(<Expression as ::treesitter_types::FromNode>::from_node(
3698                        child, src,
3699                    )?);
3700                }
3701                items
3702            },
3703        })
3704    }
3705}
3706impl ::treesitter_types::Spanned for ExtendsClause<'_> {
3707    fn span(&self) -> ::treesitter_types::Span {
3708        self.span
3709    }
3710}
3711#[derive(Debug, Clone, PartialEq, Eq)]
3712pub struct ExtendsTypeClause<'tree> {
3713    pub span: ::treesitter_types::Span,
3714    pub r#type: ::std::vec::Vec<ExtendsTypeClauseType<'tree>>,
3715}
3716impl<'tree> ::treesitter_types::FromNode<'tree> for ExtendsTypeClause<'tree> {
3717    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
3718    fn from_node(
3719        node: ::tree_sitter::Node<'tree>,
3720        src: &'tree [u8],
3721    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
3722        debug_assert_eq!(node.kind(), "extends_type_clause");
3723        Ok(Self {
3724            span: ::treesitter_types::Span::from(node),
3725            r#type: {
3726                let mut cursor = node.walk();
3727                let mut items = ::std::vec::Vec::new();
3728                for child in node.children_by_field_name("type", &mut cursor) {
3729                    items.push(
3730                        <ExtendsTypeClauseType as ::treesitter_types::FromNode>::from_node(
3731                            child, src,
3732                        )?,
3733                    );
3734                }
3735                items
3736            },
3737        })
3738    }
3739}
3740impl ::treesitter_types::Spanned for ExtendsTypeClause<'_> {
3741    fn span(&self) -> ::treesitter_types::Span {
3742        self.span
3743    }
3744}
3745#[derive(Debug, Clone, PartialEq, Eq)]
3746pub struct FinallyClause<'tree> {
3747    pub span: ::treesitter_types::Span,
3748    pub body: StatementBlock<'tree>,
3749}
3750impl<'tree> ::treesitter_types::FromNode<'tree> for FinallyClause<'tree> {
3751    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
3752    fn from_node(
3753        node: ::tree_sitter::Node<'tree>,
3754        src: &'tree [u8],
3755    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
3756        debug_assert_eq!(node.kind(), "finally_clause");
3757        Ok(Self {
3758            span: ::treesitter_types::Span::from(node),
3759            body: {
3760                let child = node
3761                    .child_by_field_name("body")
3762                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("body", node))?;
3763                <StatementBlock as ::treesitter_types::FromNode>::from_node(child, src)?
3764            },
3765        })
3766    }
3767}
3768impl ::treesitter_types::Spanned for FinallyClause<'_> {
3769    fn span(&self) -> ::treesitter_types::Span {
3770        self.span
3771    }
3772}
3773#[derive(Debug, Clone, PartialEq, Eq)]
3774pub struct FlowMaybeType<'tree> {
3775    pub span: ::treesitter_types::Span,
3776    pub children: PrimaryType<'tree>,
3777}
3778impl<'tree> ::treesitter_types::FromNode<'tree> for FlowMaybeType<'tree> {
3779    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
3780    fn from_node(
3781        node: ::tree_sitter::Node<'tree>,
3782        src: &'tree [u8],
3783    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
3784        debug_assert_eq!(node.kind(), "flow_maybe_type");
3785        Ok(Self {
3786            span: ::treesitter_types::Span::from(node),
3787            children: {
3788                #[allow(clippy::suspicious_else_formatting)]
3789                let non_field_children = {
3790                    let mut cursor = node.walk();
3791                    let mut result = ::std::vec::Vec::new();
3792                    if cursor.goto_first_child() {
3793                        loop {
3794                            if cursor.field_name().is_none()
3795                                && cursor.node().is_named()
3796                                && !cursor.node().is_extra()
3797                            {
3798                                result.push(cursor.node());
3799                            }
3800                            if !cursor.goto_next_sibling() {
3801                                break;
3802                            }
3803                        }
3804                    }
3805                    result
3806                };
3807                let child = if let Some(&c) = non_field_children.first() {
3808                    c
3809                } else {
3810                    let mut fallback_cursor = node.walk();
3811                    let mut fallback_child = None;
3812                    if fallback_cursor.goto_first_child() {
3813                        loop {
3814                            if fallback_cursor.field_name().is_none()
3815                                && !fallback_cursor.node().is_extra()
3816                            {
3817                                let candidate = fallback_cursor.node();
3818                                #[allow(clippy::needless_question_mark)]
3819                                if (|| -> ::core::result::Result<
3820                                    _,
3821                                    ::treesitter_types::ParseError,
3822                                > {
3823                                    let child = candidate;
3824                                    Ok(
3825                                        <PrimaryType as ::treesitter_types::FromNode>::from_node(
3826                                            child,
3827                                            src,
3828                                        )?,
3829                                    )
3830                                })()
3831                                    .is_ok()
3832                                {
3833                                    fallback_child = Some(candidate);
3834                                    break;
3835                                }
3836                            }
3837                            if !fallback_cursor.goto_next_sibling() {
3838                                break;
3839                            }
3840                        }
3841                    }
3842                    if fallback_child.is_none() {
3843                        let mut cursor2 = node.walk();
3844                        if cursor2.goto_first_child() {
3845                            loop {
3846                                if cursor2.node().is_named() && !cursor2.node().is_extra() {
3847                                    let candidate = cursor2.node();
3848                                    #[allow(clippy::needless_question_mark)]
3849                                    if (|| -> ::core::result::Result<
3850                                        _,
3851                                        ::treesitter_types::ParseError,
3852                                    > {
3853                                        let child = candidate;
3854                                        Ok(
3855                                            <PrimaryType as ::treesitter_types::FromNode>::from_node(
3856                                                child,
3857                                                src,
3858                                            )?,
3859                                        )
3860                                    })()
3861                                        .is_ok()
3862                                    {
3863                                        fallback_child = Some(candidate);
3864                                        break;
3865                                    }
3866                                }
3867                                if !cursor2.goto_next_sibling() {
3868                                    break;
3869                                }
3870                            }
3871                        }
3872                    }
3873                    fallback_child.ok_or_else(|| {
3874                        ::treesitter_types::ParseError::missing_field("children", node)
3875                    })?
3876                };
3877                <PrimaryType as ::treesitter_types::FromNode>::from_node(child, src)?
3878            },
3879        })
3880    }
3881}
3882impl ::treesitter_types::Spanned for FlowMaybeType<'_> {
3883    fn span(&self) -> ::treesitter_types::Span {
3884        self.span
3885    }
3886}
3887#[derive(Debug, Clone, PartialEq, Eq)]
3888pub struct ForInStatement<'tree> {
3889    pub span: ::treesitter_types::Span,
3890    pub body: Statement<'tree>,
3891    pub kind: ::core::option::Option<ForInStatementKind>,
3892    pub left: ForInStatementLeft<'tree>,
3893    pub operator: ForInStatementOperator,
3894    pub right: ForInStatementRight<'tree>,
3895    pub value: ::core::option::Option<Expression<'tree>>,
3896}
3897impl<'tree> ::treesitter_types::FromNode<'tree> for ForInStatement<'tree> {
3898    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
3899    fn from_node(
3900        node: ::tree_sitter::Node<'tree>,
3901        src: &'tree [u8],
3902    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
3903        debug_assert_eq!(node.kind(), "for_in_statement");
3904        Ok(Self {
3905            span: ::treesitter_types::Span::from(node),
3906            body: {
3907                let child = node
3908                    .child_by_field_name("body")
3909                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("body", node))?;
3910                <Statement as ::treesitter_types::FromNode>::from_node(child, src)?
3911            },
3912            kind: match node.child_by_field_name("kind") {
3913                Some(child) => Some(
3914                    <ForInStatementKind as ::treesitter_types::FromNode>::from_node(child, src)?,
3915                ),
3916                None => None,
3917            },
3918            left: {
3919                let child = node
3920                    .child_by_field_name("left")
3921                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("left", node))?;
3922                <ForInStatementLeft as ::treesitter_types::FromNode>::from_node(child, src)?
3923            },
3924            operator: {
3925                let child = node.child_by_field_name("operator").ok_or_else(|| {
3926                    ::treesitter_types::ParseError::missing_field("operator", node)
3927                })?;
3928                <ForInStatementOperator as ::treesitter_types::FromNode>::from_node(child, src)?
3929            },
3930            right: {
3931                let child = node
3932                    .child_by_field_name("right")
3933                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("right", node))?;
3934                <ForInStatementRight as ::treesitter_types::FromNode>::from_node(child, src)?
3935            },
3936            value: match node.child_by_field_name("value") {
3937                Some(child) => Some(<Expression as ::treesitter_types::FromNode>::from_node(
3938                    child, src,
3939                )?),
3940                None => None,
3941            },
3942        })
3943    }
3944}
3945impl ::treesitter_types::Spanned for ForInStatement<'_> {
3946    fn span(&self) -> ::treesitter_types::Span {
3947        self.span
3948    }
3949}
3950#[derive(Debug, Clone, PartialEq, Eq)]
3951pub struct ForStatement<'tree> {
3952    pub span: ::treesitter_types::Span,
3953    pub body: Statement<'tree>,
3954    pub condition: ::std::vec::Vec<ForStatementCondition<'tree>>,
3955    pub increment: ::core::option::Option<ForStatementIncrement<'tree>>,
3956    pub initializer: ForStatementInitializer<'tree>,
3957}
3958impl<'tree> ::treesitter_types::FromNode<'tree> for ForStatement<'tree> {
3959    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
3960    fn from_node(
3961        node: ::tree_sitter::Node<'tree>,
3962        src: &'tree [u8],
3963    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
3964        debug_assert_eq!(node.kind(), "for_statement");
3965        Ok(Self {
3966            span: ::treesitter_types::Span::from(node),
3967            body: {
3968                let child = node
3969                    .child_by_field_name("body")
3970                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("body", node))?;
3971                <Statement as ::treesitter_types::FromNode>::from_node(child, src)?
3972            },
3973            condition: {
3974                let mut cursor = node.walk();
3975                let mut items = ::std::vec::Vec::new();
3976                for child in node.children_by_field_name("condition", &mut cursor) {
3977                    items.push(
3978                        <ForStatementCondition as ::treesitter_types::FromNode>::from_node(
3979                            child, src,
3980                        )?,
3981                    );
3982                }
3983                items
3984            },
3985            increment: match node.child_by_field_name("increment") {
3986                Some(child) => Some(
3987                    <ForStatementIncrement as ::treesitter_types::FromNode>::from_node(child, src)?,
3988                ),
3989                None => None,
3990            },
3991            initializer: {
3992                let child = node.child_by_field_name("initializer").ok_or_else(|| {
3993                    ::treesitter_types::ParseError::missing_field("initializer", node)
3994                })?;
3995                <ForStatementInitializer as ::treesitter_types::FromNode>::from_node(child, src)?
3996            },
3997        })
3998    }
3999}
4000impl ::treesitter_types::Spanned for ForStatement<'_> {
4001    fn span(&self) -> ::treesitter_types::Span {
4002        self.span
4003    }
4004}
4005#[derive(Debug, Clone, PartialEq, Eq)]
4006pub struct FormalParameters<'tree> {
4007    pub span: ::treesitter_types::Span,
4008    pub children: ::std::vec::Vec<FormalParametersChildren<'tree>>,
4009}
4010impl<'tree> ::treesitter_types::FromNode<'tree> for FormalParameters<'tree> {
4011    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
4012    fn from_node(
4013        node: ::tree_sitter::Node<'tree>,
4014        src: &'tree [u8],
4015    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
4016        debug_assert_eq!(node.kind(), "formal_parameters");
4017        Ok(Self {
4018            span: ::treesitter_types::Span::from(node),
4019            children: {
4020                #[allow(clippy::suspicious_else_formatting)]
4021                let non_field_children = {
4022                    let mut cursor = node.walk();
4023                    let mut result = ::std::vec::Vec::new();
4024                    if cursor.goto_first_child() {
4025                        loop {
4026                            if cursor.field_name().is_none()
4027                                && cursor.node().is_named()
4028                                && !cursor.node().is_extra()
4029                            {
4030                                result.push(cursor.node());
4031                            }
4032                            if !cursor.goto_next_sibling() {
4033                                break;
4034                            }
4035                        }
4036                    }
4037                    result
4038                };
4039                let mut items = ::std::vec::Vec::new();
4040                for child in non_field_children {
4041                    items.push(
4042                        <FormalParametersChildren as ::treesitter_types::FromNode>::from_node(
4043                            child, src,
4044                        )?,
4045                    );
4046                }
4047                items
4048            },
4049        })
4050    }
4051}
4052impl ::treesitter_types::Spanned for FormalParameters<'_> {
4053    fn span(&self) -> ::treesitter_types::Span {
4054        self.span
4055    }
4056}
4057#[derive(Debug, Clone, PartialEq, Eq)]
4058pub struct FunctionDeclaration<'tree> {
4059    pub span: ::treesitter_types::Span,
4060    pub body: StatementBlock<'tree>,
4061    pub name: Identifier<'tree>,
4062    pub parameters: FormalParameters<'tree>,
4063    pub return_type: ::core::option::Option<FunctionDeclarationReturnType<'tree>>,
4064    pub type_parameters: ::core::option::Option<TypeParameters<'tree>>,
4065}
4066impl<'tree> ::treesitter_types::FromNode<'tree> for FunctionDeclaration<'tree> {
4067    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
4068    fn from_node(
4069        node: ::tree_sitter::Node<'tree>,
4070        src: &'tree [u8],
4071    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
4072        debug_assert_eq!(node.kind(), "function_declaration");
4073        Ok(Self {
4074            span: ::treesitter_types::Span::from(node),
4075            body: {
4076                let child = node
4077                    .child_by_field_name("body")
4078                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("body", node))?;
4079                <StatementBlock as ::treesitter_types::FromNode>::from_node(child, src)?
4080            },
4081            name: {
4082                let child = node
4083                    .child_by_field_name("name")
4084                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("name", node))?;
4085                <Identifier as ::treesitter_types::FromNode>::from_node(child, src)?
4086            },
4087            parameters: {
4088                let child = node.child_by_field_name("parameters").ok_or_else(|| {
4089                    ::treesitter_types::ParseError::missing_field("parameters", node)
4090                })?;
4091                <FormalParameters as ::treesitter_types::FromNode>::from_node(child, src)?
4092            },
4093            return_type: match node.child_by_field_name("return_type") {
4094                Some(child) => Some(
4095                    <FunctionDeclarationReturnType as ::treesitter_types::FromNode>::from_node(
4096                        child, src,
4097                    )?,
4098                ),
4099                None => None,
4100            },
4101            type_parameters: match node.child_by_field_name("type_parameters") {
4102                Some(child) => Some(<TypeParameters as ::treesitter_types::FromNode>::from_node(
4103                    child, src,
4104                )?),
4105                None => None,
4106            },
4107        })
4108    }
4109}
4110impl ::treesitter_types::Spanned for FunctionDeclaration<'_> {
4111    fn span(&self) -> ::treesitter_types::Span {
4112        self.span
4113    }
4114}
4115#[derive(Debug, Clone, PartialEq, Eq)]
4116pub struct FunctionExpression<'tree> {
4117    pub span: ::treesitter_types::Span,
4118    pub body: StatementBlock<'tree>,
4119    pub name: ::core::option::Option<Identifier<'tree>>,
4120    pub parameters: FormalParameters<'tree>,
4121    pub return_type: ::core::option::Option<FunctionExpressionReturnType<'tree>>,
4122    pub type_parameters: ::core::option::Option<TypeParameters<'tree>>,
4123}
4124impl<'tree> ::treesitter_types::FromNode<'tree> for FunctionExpression<'tree> {
4125    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
4126    fn from_node(
4127        node: ::tree_sitter::Node<'tree>,
4128        src: &'tree [u8],
4129    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
4130        debug_assert_eq!(node.kind(), "function_expression");
4131        Ok(Self {
4132            span: ::treesitter_types::Span::from(node),
4133            body: {
4134                let child = node
4135                    .child_by_field_name("body")
4136                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("body", node))?;
4137                <StatementBlock as ::treesitter_types::FromNode>::from_node(child, src)?
4138            },
4139            name: match node.child_by_field_name("name") {
4140                Some(child) => Some(<Identifier as ::treesitter_types::FromNode>::from_node(
4141                    child, src,
4142                )?),
4143                None => None,
4144            },
4145            parameters: {
4146                let child = node.child_by_field_name("parameters").ok_or_else(|| {
4147                    ::treesitter_types::ParseError::missing_field("parameters", node)
4148                })?;
4149                <FormalParameters as ::treesitter_types::FromNode>::from_node(child, src)?
4150            },
4151            return_type: match node.child_by_field_name("return_type") {
4152                Some(child) => Some(
4153                    <FunctionExpressionReturnType as ::treesitter_types::FromNode>::from_node(
4154                        child, src,
4155                    )?,
4156                ),
4157                None => None,
4158            },
4159            type_parameters: match node.child_by_field_name("type_parameters") {
4160                Some(child) => Some(<TypeParameters as ::treesitter_types::FromNode>::from_node(
4161                    child, src,
4162                )?),
4163                None => None,
4164            },
4165        })
4166    }
4167}
4168impl ::treesitter_types::Spanned for FunctionExpression<'_> {
4169    fn span(&self) -> ::treesitter_types::Span {
4170        self.span
4171    }
4172}
4173#[derive(Debug, Clone, PartialEq, Eq)]
4174pub struct FunctionSignature<'tree> {
4175    pub span: ::treesitter_types::Span,
4176    pub name: Identifier<'tree>,
4177    pub parameters: FormalParameters<'tree>,
4178    pub return_type: ::core::option::Option<FunctionSignatureReturnType<'tree>>,
4179    pub type_parameters: ::core::option::Option<TypeParameters<'tree>>,
4180}
4181impl<'tree> ::treesitter_types::FromNode<'tree> for FunctionSignature<'tree> {
4182    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
4183    fn from_node(
4184        node: ::tree_sitter::Node<'tree>,
4185        src: &'tree [u8],
4186    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
4187        debug_assert_eq!(node.kind(), "function_signature");
4188        Ok(Self {
4189            span: ::treesitter_types::Span::from(node),
4190            name: {
4191                let child = node
4192                    .child_by_field_name("name")
4193                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("name", node))?;
4194                <Identifier as ::treesitter_types::FromNode>::from_node(child, src)?
4195            },
4196            parameters: {
4197                let child = node.child_by_field_name("parameters").ok_or_else(|| {
4198                    ::treesitter_types::ParseError::missing_field("parameters", node)
4199                })?;
4200                <FormalParameters as ::treesitter_types::FromNode>::from_node(child, src)?
4201            },
4202            return_type: match node.child_by_field_name("return_type") {
4203                Some(child) => Some(
4204                    <FunctionSignatureReturnType as ::treesitter_types::FromNode>::from_node(
4205                        child, src,
4206                    )?,
4207                ),
4208                None => None,
4209            },
4210            type_parameters: match node.child_by_field_name("type_parameters") {
4211                Some(child) => Some(<TypeParameters as ::treesitter_types::FromNode>::from_node(
4212                    child, src,
4213                )?),
4214                None => None,
4215            },
4216        })
4217    }
4218}
4219impl ::treesitter_types::Spanned for FunctionSignature<'_> {
4220    fn span(&self) -> ::treesitter_types::Span {
4221        self.span
4222    }
4223}
4224#[derive(Debug, Clone, PartialEq, Eq)]
4225pub struct FunctionType<'tree> {
4226    pub span: ::treesitter_types::Span,
4227    pub parameters: FormalParameters<'tree>,
4228    pub return_type: FunctionTypeReturnType<'tree>,
4229    pub type_parameters: ::core::option::Option<TypeParameters<'tree>>,
4230}
4231impl<'tree> ::treesitter_types::FromNode<'tree> for FunctionType<'tree> {
4232    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
4233    fn from_node(
4234        node: ::tree_sitter::Node<'tree>,
4235        src: &'tree [u8],
4236    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
4237        debug_assert_eq!(node.kind(), "function_type");
4238        Ok(Self {
4239            span: ::treesitter_types::Span::from(node),
4240            parameters: {
4241                let child = node.child_by_field_name("parameters").ok_or_else(|| {
4242                    ::treesitter_types::ParseError::missing_field("parameters", node)
4243                })?;
4244                <FormalParameters as ::treesitter_types::FromNode>::from_node(child, src)?
4245            },
4246            return_type: {
4247                let child = node.child_by_field_name("return_type").ok_or_else(|| {
4248                    ::treesitter_types::ParseError::missing_field("return_type", node)
4249                })?;
4250                <FunctionTypeReturnType as ::treesitter_types::FromNode>::from_node(child, src)?
4251            },
4252            type_parameters: match node.child_by_field_name("type_parameters") {
4253                Some(child) => Some(<TypeParameters as ::treesitter_types::FromNode>::from_node(
4254                    child, src,
4255                )?),
4256                None => None,
4257            },
4258        })
4259    }
4260}
4261impl ::treesitter_types::Spanned for FunctionType<'_> {
4262    fn span(&self) -> ::treesitter_types::Span {
4263        self.span
4264    }
4265}
4266#[derive(Debug, Clone, PartialEq, Eq)]
4267pub struct GeneratorFunction<'tree> {
4268    pub span: ::treesitter_types::Span,
4269    pub body: StatementBlock<'tree>,
4270    pub name: ::core::option::Option<Identifier<'tree>>,
4271    pub parameters: FormalParameters<'tree>,
4272    pub return_type: ::core::option::Option<GeneratorFunctionReturnType<'tree>>,
4273    pub type_parameters: ::core::option::Option<TypeParameters<'tree>>,
4274}
4275impl<'tree> ::treesitter_types::FromNode<'tree> for GeneratorFunction<'tree> {
4276    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
4277    fn from_node(
4278        node: ::tree_sitter::Node<'tree>,
4279        src: &'tree [u8],
4280    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
4281        debug_assert_eq!(node.kind(), "generator_function");
4282        Ok(Self {
4283            span: ::treesitter_types::Span::from(node),
4284            body: {
4285                let child = node
4286                    .child_by_field_name("body")
4287                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("body", node))?;
4288                <StatementBlock as ::treesitter_types::FromNode>::from_node(child, src)?
4289            },
4290            name: match node.child_by_field_name("name") {
4291                Some(child) => Some(<Identifier as ::treesitter_types::FromNode>::from_node(
4292                    child, src,
4293                )?),
4294                None => None,
4295            },
4296            parameters: {
4297                let child = node.child_by_field_name("parameters").ok_or_else(|| {
4298                    ::treesitter_types::ParseError::missing_field("parameters", node)
4299                })?;
4300                <FormalParameters as ::treesitter_types::FromNode>::from_node(child, src)?
4301            },
4302            return_type: match node.child_by_field_name("return_type") {
4303                Some(child) => Some(
4304                    <GeneratorFunctionReturnType as ::treesitter_types::FromNode>::from_node(
4305                        child, src,
4306                    )?,
4307                ),
4308                None => None,
4309            },
4310            type_parameters: match node.child_by_field_name("type_parameters") {
4311                Some(child) => Some(<TypeParameters as ::treesitter_types::FromNode>::from_node(
4312                    child, src,
4313                )?),
4314                None => None,
4315            },
4316        })
4317    }
4318}
4319impl ::treesitter_types::Spanned for GeneratorFunction<'_> {
4320    fn span(&self) -> ::treesitter_types::Span {
4321        self.span
4322    }
4323}
4324#[derive(Debug, Clone, PartialEq, Eq)]
4325pub struct GeneratorFunctionDeclaration<'tree> {
4326    pub span: ::treesitter_types::Span,
4327    pub body: StatementBlock<'tree>,
4328    pub name: Identifier<'tree>,
4329    pub parameters: FormalParameters<'tree>,
4330    pub return_type: ::core::option::Option<GeneratorFunctionDeclarationReturnType<'tree>>,
4331    pub type_parameters: ::core::option::Option<TypeParameters<'tree>>,
4332}
4333impl<'tree> ::treesitter_types::FromNode<'tree> for GeneratorFunctionDeclaration<'tree> {
4334    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
4335    fn from_node(
4336        node: ::tree_sitter::Node<'tree>,
4337        src: &'tree [u8],
4338    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
4339        debug_assert_eq!(node.kind(), "generator_function_declaration");
4340        Ok(Self {
4341            span: ::treesitter_types::Span::from(node),
4342            body: {
4343                let child = node
4344                    .child_by_field_name("body")
4345                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field(
4346                        "body",
4347                        node,
4348                    ))?;
4349                <StatementBlock as ::treesitter_types::FromNode>::from_node(child, src)?
4350            },
4351            name: {
4352                let child = node
4353                    .child_by_field_name("name")
4354                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field(
4355                        "name",
4356                        node,
4357                    ))?;
4358                <Identifier as ::treesitter_types::FromNode>::from_node(child, src)?
4359            },
4360            parameters: {
4361                let child = node
4362                    .child_by_field_name("parameters")
4363                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field(
4364                        "parameters",
4365                        node,
4366                    ))?;
4367                <FormalParameters as ::treesitter_types::FromNode>::from_node(
4368                    child,
4369                    src,
4370                )?
4371            },
4372            return_type: match node.child_by_field_name("return_type") {
4373                Some(child) => {
4374                    Some(
4375                        <GeneratorFunctionDeclarationReturnType as ::treesitter_types::FromNode>::from_node(
4376                            child,
4377                            src,
4378                        )?,
4379                    )
4380                }
4381                None => None,
4382            },
4383            type_parameters: match node.child_by_field_name("type_parameters") {
4384                Some(child) => {
4385                    Some(
4386                        <TypeParameters as ::treesitter_types::FromNode>::from_node(
4387                            child,
4388                            src,
4389                        )?,
4390                    )
4391                }
4392                None => None,
4393            },
4394        })
4395    }
4396}
4397impl ::treesitter_types::Spanned for GeneratorFunctionDeclaration<'_> {
4398    fn span(&self) -> ::treesitter_types::Span {
4399        self.span
4400    }
4401}
4402#[derive(Debug, Clone, PartialEq, Eq)]
4403pub struct GenericType<'tree> {
4404    pub span: ::treesitter_types::Span,
4405    pub name: GenericTypeName<'tree>,
4406    pub type_arguments: TypeArguments<'tree>,
4407}
4408impl<'tree> ::treesitter_types::FromNode<'tree> for GenericType<'tree> {
4409    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
4410    fn from_node(
4411        node: ::tree_sitter::Node<'tree>,
4412        src: &'tree [u8],
4413    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
4414        debug_assert_eq!(node.kind(), "generic_type");
4415        Ok(Self {
4416            span: ::treesitter_types::Span::from(node),
4417            name: {
4418                let child = node
4419                    .child_by_field_name("name")
4420                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("name", node))?;
4421                <GenericTypeName as ::treesitter_types::FromNode>::from_node(child, src)?
4422            },
4423            type_arguments: {
4424                let child = node.child_by_field_name("type_arguments").ok_or_else(|| {
4425                    ::treesitter_types::ParseError::missing_field("type_arguments", node)
4426                })?;
4427                <TypeArguments as ::treesitter_types::FromNode>::from_node(child, src)?
4428            },
4429        })
4430    }
4431}
4432impl ::treesitter_types::Spanned for GenericType<'_> {
4433    fn span(&self) -> ::treesitter_types::Span {
4434        self.span
4435    }
4436}
4437#[derive(Debug, Clone, PartialEq, Eq)]
4438pub struct Identifier<'tree> {
4439    pub span: ::treesitter_types::Span,
4440    text: &'tree str,
4441}
4442impl<'tree> ::treesitter_types::FromNode<'tree> for Identifier<'tree> {
4443    fn from_node(
4444        node: ::tree_sitter::Node<'tree>,
4445        src: &'tree [u8],
4446    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
4447        debug_assert_eq!(node.kind(), "identifier");
4448        Ok(Self {
4449            span: ::treesitter_types::Span::from(node),
4450            text: node.utf8_text(src)?,
4451        })
4452    }
4453}
4454impl<'tree> ::treesitter_types::LeafNode<'tree> for Identifier<'tree> {
4455    fn text(&self) -> &'tree str {
4456        self.text
4457    }
4458}
4459impl ::treesitter_types::Spanned for Identifier<'_> {
4460    fn span(&self) -> ::treesitter_types::Span {
4461        self.span
4462    }
4463}
4464#[derive(Debug, Clone, PartialEq, Eq)]
4465pub struct IfStatement<'tree> {
4466    pub span: ::treesitter_types::Span,
4467    pub alternative: ::core::option::Option<ElseClause<'tree>>,
4468    pub condition: ParenthesizedExpression<'tree>,
4469    pub consequence: Statement<'tree>,
4470}
4471impl<'tree> ::treesitter_types::FromNode<'tree> for IfStatement<'tree> {
4472    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
4473    fn from_node(
4474        node: ::tree_sitter::Node<'tree>,
4475        src: &'tree [u8],
4476    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
4477        debug_assert_eq!(node.kind(), "if_statement");
4478        Ok(Self {
4479            span: ::treesitter_types::Span::from(node),
4480            alternative: match node.child_by_field_name("alternative") {
4481                Some(child) => Some(<ElseClause as ::treesitter_types::FromNode>::from_node(
4482                    child, src,
4483                )?),
4484                None => None,
4485            },
4486            condition: {
4487                let child = node.child_by_field_name("condition").ok_or_else(|| {
4488                    ::treesitter_types::ParseError::missing_field("condition", node)
4489                })?;
4490                <ParenthesizedExpression as ::treesitter_types::FromNode>::from_node(child, src)?
4491            },
4492            consequence: {
4493                let child = node.child_by_field_name("consequence").ok_or_else(|| {
4494                    ::treesitter_types::ParseError::missing_field("consequence", node)
4495                })?;
4496                <Statement as ::treesitter_types::FromNode>::from_node(child, src)?
4497            },
4498        })
4499    }
4500}
4501impl ::treesitter_types::Spanned for IfStatement<'_> {
4502    fn span(&self) -> ::treesitter_types::Span {
4503        self.span
4504    }
4505}
4506#[derive(Debug, Clone, PartialEq, Eq)]
4507pub struct ImplementsClause<'tree> {
4508    pub span: ::treesitter_types::Span,
4509    pub children: ::std::vec::Vec<Type<'tree>>,
4510}
4511impl<'tree> ::treesitter_types::FromNode<'tree> for ImplementsClause<'tree> {
4512    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
4513    fn from_node(
4514        node: ::tree_sitter::Node<'tree>,
4515        src: &'tree [u8],
4516    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
4517        debug_assert_eq!(node.kind(), "implements_clause");
4518        Ok(Self {
4519            span: ::treesitter_types::Span::from(node),
4520            children: {
4521                #[allow(clippy::suspicious_else_formatting)]
4522                let non_field_children = {
4523                    let mut cursor = node.walk();
4524                    let mut result = ::std::vec::Vec::new();
4525                    if cursor.goto_first_child() {
4526                        loop {
4527                            if cursor.field_name().is_none()
4528                                && cursor.node().is_named()
4529                                && !cursor.node().is_extra()
4530                            {
4531                                result.push(cursor.node());
4532                            }
4533                            if !cursor.goto_next_sibling() {
4534                                break;
4535                            }
4536                        }
4537                    }
4538                    result
4539                };
4540                let mut items = ::std::vec::Vec::new();
4541                for child in non_field_children {
4542                    items.push(<Type as ::treesitter_types::FromNode>::from_node(
4543                        child, src,
4544                    )?);
4545                }
4546                items
4547            },
4548        })
4549    }
4550}
4551impl ::treesitter_types::Spanned for ImplementsClause<'_> {
4552    fn span(&self) -> ::treesitter_types::Span {
4553        self.span
4554    }
4555}
4556#[derive(Debug, Clone, PartialEq, Eq)]
4557pub struct Import<'tree> {
4558    pub span: ::treesitter_types::Span,
4559    text: &'tree str,
4560}
4561impl<'tree> ::treesitter_types::FromNode<'tree> for Import<'tree> {
4562    fn from_node(
4563        node: ::tree_sitter::Node<'tree>,
4564        src: &'tree [u8],
4565    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
4566        debug_assert_eq!(node.kind(), "import");
4567        Ok(Self {
4568            span: ::treesitter_types::Span::from(node),
4569            text: node.utf8_text(src)?,
4570        })
4571    }
4572}
4573impl<'tree> ::treesitter_types::LeafNode<'tree> for Import<'tree> {
4574    fn text(&self) -> &'tree str {
4575        self.text
4576    }
4577}
4578impl ::treesitter_types::Spanned for Import<'_> {
4579    fn span(&self) -> ::treesitter_types::Span {
4580        self.span
4581    }
4582}
4583#[derive(Debug, Clone, PartialEq, Eq)]
4584pub struct ImportAlias<'tree> {
4585    pub span: ::treesitter_types::Span,
4586    pub children: ::std::vec::Vec<ImportAliasChildren<'tree>>,
4587}
4588impl<'tree> ::treesitter_types::FromNode<'tree> for ImportAlias<'tree> {
4589    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
4590    fn from_node(
4591        node: ::tree_sitter::Node<'tree>,
4592        src: &'tree [u8],
4593    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
4594        debug_assert_eq!(node.kind(), "import_alias");
4595        Ok(Self {
4596            span: ::treesitter_types::Span::from(node),
4597            children: {
4598                #[allow(clippy::suspicious_else_formatting)]
4599                let non_field_children = {
4600                    let mut cursor = node.walk();
4601                    let mut result = ::std::vec::Vec::new();
4602                    if cursor.goto_first_child() {
4603                        loop {
4604                            if cursor.field_name().is_none()
4605                                && cursor.node().is_named()
4606                                && !cursor.node().is_extra()
4607                            {
4608                                result.push(cursor.node());
4609                            }
4610                            if !cursor.goto_next_sibling() {
4611                                break;
4612                            }
4613                        }
4614                    }
4615                    result
4616                };
4617                let mut items = ::std::vec::Vec::new();
4618                for child in non_field_children {
4619                    items.push(
4620                        <ImportAliasChildren as ::treesitter_types::FromNode>::from_node(
4621                            child, src,
4622                        )?,
4623                    );
4624                }
4625                items
4626            },
4627        })
4628    }
4629}
4630impl ::treesitter_types::Spanned for ImportAlias<'_> {
4631    fn span(&self) -> ::treesitter_types::Span {
4632        self.span
4633    }
4634}
4635#[derive(Debug, Clone, PartialEq, Eq)]
4636pub struct ImportAttribute<'tree> {
4637    pub span: ::treesitter_types::Span,
4638    pub children: Object<'tree>,
4639}
4640impl<'tree> ::treesitter_types::FromNode<'tree> for ImportAttribute<'tree> {
4641    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
4642    fn from_node(
4643        node: ::tree_sitter::Node<'tree>,
4644        src: &'tree [u8],
4645    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
4646        debug_assert_eq!(node.kind(), "import_attribute");
4647        Ok(Self {
4648            span: ::treesitter_types::Span::from(node),
4649            children: {
4650                #[allow(clippy::suspicious_else_formatting)]
4651                let non_field_children = {
4652                    let mut cursor = node.walk();
4653                    let mut result = ::std::vec::Vec::new();
4654                    if cursor.goto_first_child() {
4655                        loop {
4656                            if cursor.field_name().is_none()
4657                                && cursor.node().is_named()
4658                                && !cursor.node().is_extra()
4659                            {
4660                                result.push(cursor.node());
4661                            }
4662                            if !cursor.goto_next_sibling() {
4663                                break;
4664                            }
4665                        }
4666                    }
4667                    result
4668                };
4669                let child = if let Some(&c) = non_field_children.first() {
4670                    c
4671                } else {
4672                    let mut fallback_cursor = node.walk();
4673                    let mut fallback_child = None;
4674                    if fallback_cursor.goto_first_child() {
4675                        loop {
4676                            if fallback_cursor.field_name().is_none()
4677                                && !fallback_cursor.node().is_extra()
4678                            {
4679                                let candidate = fallback_cursor.node();
4680                                #[allow(clippy::needless_question_mark)]
4681                                if (|| -> ::core::result::Result<
4682                                    _,
4683                                    ::treesitter_types::ParseError,
4684                                > {
4685                                    let child = candidate;
4686                                    Ok(
4687                                        <Object as ::treesitter_types::FromNode>::from_node(
4688                                            child,
4689                                            src,
4690                                        )?,
4691                                    )
4692                                })()
4693                                    .is_ok()
4694                                {
4695                                    fallback_child = Some(candidate);
4696                                    break;
4697                                }
4698                            }
4699                            if !fallback_cursor.goto_next_sibling() {
4700                                break;
4701                            }
4702                        }
4703                    }
4704                    if fallback_child.is_none() {
4705                        let mut cursor2 = node.walk();
4706                        if cursor2.goto_first_child() {
4707                            loop {
4708                                if cursor2.node().is_named() && !cursor2.node().is_extra() {
4709                                    let candidate = cursor2.node();
4710                                    #[allow(clippy::needless_question_mark)]
4711                                    if (|| -> ::core::result::Result<
4712                                        _,
4713                                        ::treesitter_types::ParseError,
4714                                    > {
4715                                        let child = candidate;
4716                                        Ok(
4717                                            <Object as ::treesitter_types::FromNode>::from_node(
4718                                                child,
4719                                                src,
4720                                            )?,
4721                                        )
4722                                    })()
4723                                        .is_ok()
4724                                    {
4725                                        fallback_child = Some(candidate);
4726                                        break;
4727                                    }
4728                                }
4729                                if !cursor2.goto_next_sibling() {
4730                                    break;
4731                                }
4732                            }
4733                        }
4734                    }
4735                    fallback_child.ok_or_else(|| {
4736                        ::treesitter_types::ParseError::missing_field("children", node)
4737                    })?
4738                };
4739                <Object as ::treesitter_types::FromNode>::from_node(child, src)?
4740            },
4741        })
4742    }
4743}
4744impl ::treesitter_types::Spanned for ImportAttribute<'_> {
4745    fn span(&self) -> ::treesitter_types::Span {
4746        self.span
4747    }
4748}
4749#[derive(Debug, Clone, PartialEq, Eq)]
4750pub struct ImportClause<'tree> {
4751    pub span: ::treesitter_types::Span,
4752    pub children: ::std::vec::Vec<ImportClauseChildren<'tree>>,
4753}
4754impl<'tree> ::treesitter_types::FromNode<'tree> for ImportClause<'tree> {
4755    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
4756    fn from_node(
4757        node: ::tree_sitter::Node<'tree>,
4758        src: &'tree [u8],
4759    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
4760        debug_assert_eq!(node.kind(), "import_clause");
4761        Ok(Self {
4762            span: ::treesitter_types::Span::from(node),
4763            children: {
4764                #[allow(clippy::suspicious_else_formatting)]
4765                let non_field_children = {
4766                    let mut cursor = node.walk();
4767                    let mut result = ::std::vec::Vec::new();
4768                    if cursor.goto_first_child() {
4769                        loop {
4770                            if cursor.field_name().is_none()
4771                                && cursor.node().is_named()
4772                                && !cursor.node().is_extra()
4773                            {
4774                                result.push(cursor.node());
4775                            }
4776                            if !cursor.goto_next_sibling() {
4777                                break;
4778                            }
4779                        }
4780                    }
4781                    result
4782                };
4783                let mut items = ::std::vec::Vec::new();
4784                for child in non_field_children {
4785                    items.push(
4786                        <ImportClauseChildren as ::treesitter_types::FromNode>::from_node(
4787                            child, src,
4788                        )?,
4789                    );
4790                }
4791                items
4792            },
4793        })
4794    }
4795}
4796impl ::treesitter_types::Spanned for ImportClause<'_> {
4797    fn span(&self) -> ::treesitter_types::Span {
4798        self.span
4799    }
4800}
4801#[derive(Debug, Clone, PartialEq, Eq)]
4802pub struct ImportRequireClause<'tree> {
4803    pub span: ::treesitter_types::Span,
4804    pub source: String<'tree>,
4805    pub children: Identifier<'tree>,
4806}
4807impl<'tree> ::treesitter_types::FromNode<'tree> for ImportRequireClause<'tree> {
4808    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
4809    fn from_node(
4810        node: ::tree_sitter::Node<'tree>,
4811        src: &'tree [u8],
4812    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
4813        debug_assert_eq!(node.kind(), "import_require_clause");
4814        Ok(Self {
4815            span: ::treesitter_types::Span::from(node),
4816            source: {
4817                let child = node
4818                    .child_by_field_name("source")
4819                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("source", node))?;
4820                <String as ::treesitter_types::FromNode>::from_node(child, src)?
4821            },
4822            children: {
4823                #[allow(clippy::suspicious_else_formatting)]
4824                let non_field_children = {
4825                    let mut cursor = node.walk();
4826                    let mut result = ::std::vec::Vec::new();
4827                    if cursor.goto_first_child() {
4828                        loop {
4829                            if cursor.field_name().is_none()
4830                                && cursor.node().is_named()
4831                                && !cursor.node().is_extra()
4832                            {
4833                                result.push(cursor.node());
4834                            }
4835                            if !cursor.goto_next_sibling() {
4836                                break;
4837                            }
4838                        }
4839                    }
4840                    result
4841                };
4842                let child = if let Some(&c) = non_field_children.first() {
4843                    c
4844                } else {
4845                    let mut fallback_cursor = node.walk();
4846                    let mut fallback_child = None;
4847                    if fallback_cursor.goto_first_child() {
4848                        loop {
4849                            if fallback_cursor.field_name().is_none()
4850                                && !fallback_cursor.node().is_extra()
4851                            {
4852                                let candidate = fallback_cursor.node();
4853                                #[allow(clippy::needless_question_mark)]
4854                                if (|| -> ::core::result::Result<
4855                                    _,
4856                                    ::treesitter_types::ParseError,
4857                                > {
4858                                    let child = candidate;
4859                                    Ok(
4860                                        <Identifier as ::treesitter_types::FromNode>::from_node(
4861                                            child,
4862                                            src,
4863                                        )?,
4864                                    )
4865                                })()
4866                                    .is_ok()
4867                                {
4868                                    fallback_child = Some(candidate);
4869                                    break;
4870                                }
4871                            }
4872                            if !fallback_cursor.goto_next_sibling() {
4873                                break;
4874                            }
4875                        }
4876                    }
4877                    if fallback_child.is_none() {
4878                        let mut cursor2 = node.walk();
4879                        if cursor2.goto_first_child() {
4880                            loop {
4881                                if cursor2.node().is_named() && !cursor2.node().is_extra() {
4882                                    let candidate = cursor2.node();
4883                                    #[allow(clippy::needless_question_mark)]
4884                                    if (|| -> ::core::result::Result<
4885                                        _,
4886                                        ::treesitter_types::ParseError,
4887                                    > {
4888                                        let child = candidate;
4889                                        Ok(
4890                                            <Identifier as ::treesitter_types::FromNode>::from_node(
4891                                                child,
4892                                                src,
4893                                            )?,
4894                                        )
4895                                    })()
4896                                        .is_ok()
4897                                    {
4898                                        fallback_child = Some(candidate);
4899                                        break;
4900                                    }
4901                                }
4902                                if !cursor2.goto_next_sibling() {
4903                                    break;
4904                                }
4905                            }
4906                        }
4907                    }
4908                    fallback_child.ok_or_else(|| {
4909                        ::treesitter_types::ParseError::missing_field("children", node)
4910                    })?
4911                };
4912                <Identifier as ::treesitter_types::FromNode>::from_node(child, src)?
4913            },
4914        })
4915    }
4916}
4917impl ::treesitter_types::Spanned for ImportRequireClause<'_> {
4918    fn span(&self) -> ::treesitter_types::Span {
4919        self.span
4920    }
4921}
4922#[derive(Debug, Clone, PartialEq, Eq)]
4923pub struct ImportSpecifier<'tree> {
4924    pub span: ::treesitter_types::Span,
4925    pub alias: ::core::option::Option<Identifier<'tree>>,
4926    pub name: ImportSpecifierName<'tree>,
4927}
4928impl<'tree> ::treesitter_types::FromNode<'tree> for ImportSpecifier<'tree> {
4929    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
4930    fn from_node(
4931        node: ::tree_sitter::Node<'tree>,
4932        src: &'tree [u8],
4933    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
4934        debug_assert_eq!(node.kind(), "import_specifier");
4935        Ok(Self {
4936            span: ::treesitter_types::Span::from(node),
4937            alias: match node.child_by_field_name("alias") {
4938                Some(child) => Some(<Identifier as ::treesitter_types::FromNode>::from_node(
4939                    child, src,
4940                )?),
4941                None => None,
4942            },
4943            name: {
4944                let child = node
4945                    .child_by_field_name("name")
4946                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("name", node))?;
4947                <ImportSpecifierName as ::treesitter_types::FromNode>::from_node(child, src)?
4948            },
4949        })
4950    }
4951}
4952impl ::treesitter_types::Spanned for ImportSpecifier<'_> {
4953    fn span(&self) -> ::treesitter_types::Span {
4954        self.span
4955    }
4956}
4957#[derive(Debug, Clone, PartialEq, Eq)]
4958pub struct ImportStatement<'tree> {
4959    pub span: ::treesitter_types::Span,
4960    pub source: ::core::option::Option<String<'tree>>,
4961    pub children: ::std::vec::Vec<ImportStatementChildren<'tree>>,
4962}
4963impl<'tree> ::treesitter_types::FromNode<'tree> for ImportStatement<'tree> {
4964    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
4965    fn from_node(
4966        node: ::tree_sitter::Node<'tree>,
4967        src: &'tree [u8],
4968    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
4969        debug_assert_eq!(node.kind(), "import_statement");
4970        Ok(Self {
4971            span: ::treesitter_types::Span::from(node),
4972            source: match node.child_by_field_name("source") {
4973                Some(child) => Some(<String as ::treesitter_types::FromNode>::from_node(
4974                    child, src,
4975                )?),
4976                None => None,
4977            },
4978            children: {
4979                #[allow(clippy::suspicious_else_formatting)]
4980                let non_field_children = {
4981                    let mut cursor = node.walk();
4982                    let mut result = ::std::vec::Vec::new();
4983                    if cursor.goto_first_child() {
4984                        loop {
4985                            if cursor.field_name().is_none()
4986                                && cursor.node().is_named()
4987                                && !cursor.node().is_extra()
4988                            {
4989                                result.push(cursor.node());
4990                            }
4991                            if !cursor.goto_next_sibling() {
4992                                break;
4993                            }
4994                        }
4995                    }
4996                    result
4997                };
4998                let mut items = ::std::vec::Vec::new();
4999                for child in non_field_children {
5000                    items.push(
5001                        <ImportStatementChildren as ::treesitter_types::FromNode>::from_node(
5002                            child, src,
5003                        )?,
5004                    );
5005                }
5006                items
5007            },
5008        })
5009    }
5010}
5011impl ::treesitter_types::Spanned for ImportStatement<'_> {
5012    fn span(&self) -> ::treesitter_types::Span {
5013        self.span
5014    }
5015}
5016#[derive(Debug, Clone, PartialEq, Eq)]
5017pub struct IndexSignature<'tree> {
5018    pub span: ::treesitter_types::Span,
5019    pub index_type: ::core::option::Option<Type<'tree>>,
5020    pub name: ::core::option::Option<Identifier<'tree>>,
5021    pub sign: ::core::option::Option<IndexSignatureSign>,
5022    pub r#type: IndexSignatureType<'tree>,
5023    pub children: ::core::option::Option<MappedTypeClause<'tree>>,
5024}
5025impl<'tree> ::treesitter_types::FromNode<'tree> for IndexSignature<'tree> {
5026    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
5027    fn from_node(
5028        node: ::tree_sitter::Node<'tree>,
5029        src: &'tree [u8],
5030    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
5031        debug_assert_eq!(node.kind(), "index_signature");
5032        Ok(Self {
5033            span: ::treesitter_types::Span::from(node),
5034            index_type: match node.child_by_field_name("index_type") {
5035                Some(child) => Some(<Type as ::treesitter_types::FromNode>::from_node(
5036                    child, src,
5037                )?),
5038                None => None,
5039            },
5040            name: match node.child_by_field_name("name") {
5041                Some(child) => Some(<Identifier as ::treesitter_types::FromNode>::from_node(
5042                    child, src,
5043                )?),
5044                None => None,
5045            },
5046            sign: match node.child_by_field_name("sign") {
5047                Some(child) => Some(
5048                    <IndexSignatureSign as ::treesitter_types::FromNode>::from_node(child, src)?,
5049                ),
5050                None => None,
5051            },
5052            r#type: {
5053                let child = node
5054                    .child_by_field_name("type")
5055                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("type", node))?;
5056                <IndexSignatureType as ::treesitter_types::FromNode>::from_node(child, src)?
5057            },
5058            children: {
5059                #[allow(clippy::suspicious_else_formatting)]
5060                let non_field_children = {
5061                    let mut cursor = node.walk();
5062                    let mut result = ::std::vec::Vec::new();
5063                    if cursor.goto_first_child() {
5064                        loop {
5065                            if cursor.field_name().is_none()
5066                                && cursor.node().is_named()
5067                                && !cursor.node().is_extra()
5068                            {
5069                                result.push(cursor.node());
5070                            }
5071                            if !cursor.goto_next_sibling() {
5072                                break;
5073                            }
5074                        }
5075                    }
5076                    result
5077                };
5078                match non_field_children.first() {
5079                    Some(&child) => Some(
5080                        <MappedTypeClause as ::treesitter_types::FromNode>::from_node(child, src)?,
5081                    ),
5082                    None => None,
5083                }
5084            },
5085        })
5086    }
5087}
5088impl ::treesitter_types::Spanned for IndexSignature<'_> {
5089    fn span(&self) -> ::treesitter_types::Span {
5090        self.span
5091    }
5092}
5093#[derive(Debug, Clone, PartialEq, Eq)]
5094pub struct IndexTypeQuery<'tree> {
5095    pub span: ::treesitter_types::Span,
5096    pub children: PrimaryType<'tree>,
5097}
5098impl<'tree> ::treesitter_types::FromNode<'tree> for IndexTypeQuery<'tree> {
5099    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
5100    fn from_node(
5101        node: ::tree_sitter::Node<'tree>,
5102        src: &'tree [u8],
5103    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
5104        debug_assert_eq!(node.kind(), "index_type_query");
5105        Ok(Self {
5106            span: ::treesitter_types::Span::from(node),
5107            children: {
5108                #[allow(clippy::suspicious_else_formatting)]
5109                let non_field_children = {
5110                    let mut cursor = node.walk();
5111                    let mut result = ::std::vec::Vec::new();
5112                    if cursor.goto_first_child() {
5113                        loop {
5114                            if cursor.field_name().is_none()
5115                                && cursor.node().is_named()
5116                                && !cursor.node().is_extra()
5117                            {
5118                                result.push(cursor.node());
5119                            }
5120                            if !cursor.goto_next_sibling() {
5121                                break;
5122                            }
5123                        }
5124                    }
5125                    result
5126                };
5127                let child = if let Some(&c) = non_field_children.first() {
5128                    c
5129                } else {
5130                    let mut fallback_cursor = node.walk();
5131                    let mut fallback_child = None;
5132                    if fallback_cursor.goto_first_child() {
5133                        loop {
5134                            if fallback_cursor.field_name().is_none()
5135                                && !fallback_cursor.node().is_extra()
5136                            {
5137                                let candidate = fallback_cursor.node();
5138                                #[allow(clippy::needless_question_mark)]
5139                                if (|| -> ::core::result::Result<
5140                                    _,
5141                                    ::treesitter_types::ParseError,
5142                                > {
5143                                    let child = candidate;
5144                                    Ok(
5145                                        <PrimaryType as ::treesitter_types::FromNode>::from_node(
5146                                            child,
5147                                            src,
5148                                        )?,
5149                                    )
5150                                })()
5151                                    .is_ok()
5152                                {
5153                                    fallback_child = Some(candidate);
5154                                    break;
5155                                }
5156                            }
5157                            if !fallback_cursor.goto_next_sibling() {
5158                                break;
5159                            }
5160                        }
5161                    }
5162                    if fallback_child.is_none() {
5163                        let mut cursor2 = node.walk();
5164                        if cursor2.goto_first_child() {
5165                            loop {
5166                                if cursor2.node().is_named() && !cursor2.node().is_extra() {
5167                                    let candidate = cursor2.node();
5168                                    #[allow(clippy::needless_question_mark)]
5169                                    if (|| -> ::core::result::Result<
5170                                        _,
5171                                        ::treesitter_types::ParseError,
5172                                    > {
5173                                        let child = candidate;
5174                                        Ok(
5175                                            <PrimaryType as ::treesitter_types::FromNode>::from_node(
5176                                                child,
5177                                                src,
5178                                            )?,
5179                                        )
5180                                    })()
5181                                        .is_ok()
5182                                    {
5183                                        fallback_child = Some(candidate);
5184                                        break;
5185                                    }
5186                                }
5187                                if !cursor2.goto_next_sibling() {
5188                                    break;
5189                                }
5190                            }
5191                        }
5192                    }
5193                    fallback_child.ok_or_else(|| {
5194                        ::treesitter_types::ParseError::missing_field("children", node)
5195                    })?
5196                };
5197                <PrimaryType as ::treesitter_types::FromNode>::from_node(child, src)?
5198            },
5199        })
5200    }
5201}
5202impl ::treesitter_types::Spanned for IndexTypeQuery<'_> {
5203    fn span(&self) -> ::treesitter_types::Span {
5204        self.span
5205    }
5206}
5207#[derive(Debug, Clone, PartialEq, Eq)]
5208pub struct InferType<'tree> {
5209    pub span: ::treesitter_types::Span,
5210    pub children: ::std::vec::Vec<InferTypeChildren<'tree>>,
5211}
5212impl<'tree> ::treesitter_types::FromNode<'tree> for InferType<'tree> {
5213    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
5214    fn from_node(
5215        node: ::tree_sitter::Node<'tree>,
5216        src: &'tree [u8],
5217    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
5218        debug_assert_eq!(node.kind(), "infer_type");
5219        Ok(Self {
5220            span: ::treesitter_types::Span::from(node),
5221            children: {
5222                #[allow(clippy::suspicious_else_formatting)]
5223                let non_field_children = {
5224                    let mut cursor = node.walk();
5225                    let mut result = ::std::vec::Vec::new();
5226                    if cursor.goto_first_child() {
5227                        loop {
5228                            if cursor.field_name().is_none()
5229                                && cursor.node().is_named()
5230                                && !cursor.node().is_extra()
5231                            {
5232                                result.push(cursor.node());
5233                            }
5234                            if !cursor.goto_next_sibling() {
5235                                break;
5236                            }
5237                        }
5238                    }
5239                    result
5240                };
5241                let mut items = ::std::vec::Vec::new();
5242                for child in non_field_children {
5243                    items.push(
5244                        <InferTypeChildren as ::treesitter_types::FromNode>::from_node(child, src)?,
5245                    );
5246                }
5247                items
5248            },
5249        })
5250    }
5251}
5252impl ::treesitter_types::Spanned for InferType<'_> {
5253    fn span(&self) -> ::treesitter_types::Span {
5254        self.span
5255    }
5256}
5257#[derive(Debug, Clone, PartialEq, Eq)]
5258pub struct InstantiationExpression<'tree> {
5259    pub span: ::treesitter_types::Span,
5260    pub function: ::core::option::Option<InstantiationExpressionFunction<'tree>>,
5261    pub type_arguments: TypeArguments<'tree>,
5262    pub children: ::core::option::Option<Expression<'tree>>,
5263}
5264impl<'tree> ::treesitter_types::FromNode<'tree> for InstantiationExpression<'tree> {
5265    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
5266    fn from_node(
5267        node: ::tree_sitter::Node<'tree>,
5268        src: &'tree [u8],
5269    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
5270        debug_assert_eq!(node.kind(), "instantiation_expression");
5271        Ok(Self {
5272            span: ::treesitter_types::Span::from(node),
5273            function: match node.child_by_field_name("function") {
5274                Some(child) => Some(
5275                    <InstantiationExpressionFunction as ::treesitter_types::FromNode>::from_node(
5276                        child, src,
5277                    )?,
5278                ),
5279                None => None,
5280            },
5281            type_arguments: {
5282                let child = node.child_by_field_name("type_arguments").ok_or_else(|| {
5283                    ::treesitter_types::ParseError::missing_field("type_arguments", node)
5284                })?;
5285                <TypeArguments as ::treesitter_types::FromNode>::from_node(child, src)?
5286            },
5287            children: {
5288                #[allow(clippy::suspicious_else_formatting)]
5289                let non_field_children = {
5290                    let mut cursor = node.walk();
5291                    let mut result = ::std::vec::Vec::new();
5292                    if cursor.goto_first_child() {
5293                        loop {
5294                            if cursor.field_name().is_none()
5295                                && cursor.node().is_named()
5296                                && !cursor.node().is_extra()
5297                            {
5298                                result.push(cursor.node());
5299                            }
5300                            if !cursor.goto_next_sibling() {
5301                                break;
5302                            }
5303                        }
5304                    }
5305                    result
5306                };
5307                match non_field_children.first() {
5308                    Some(&child) => Some(<Expression as ::treesitter_types::FromNode>::from_node(
5309                        child, src,
5310                    )?),
5311                    None => None,
5312                }
5313            },
5314        })
5315    }
5316}
5317impl ::treesitter_types::Spanned for InstantiationExpression<'_> {
5318    fn span(&self) -> ::treesitter_types::Span {
5319        self.span
5320    }
5321}
5322#[derive(Debug, Clone, PartialEq, Eq)]
5323pub struct InterfaceBody<'tree> {
5324    pub span: ::treesitter_types::Span,
5325    pub children: ::std::vec::Vec<InterfaceBodyChildren<'tree>>,
5326}
5327impl<'tree> ::treesitter_types::FromNode<'tree> for InterfaceBody<'tree> {
5328    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
5329    fn from_node(
5330        node: ::tree_sitter::Node<'tree>,
5331        src: &'tree [u8],
5332    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
5333        debug_assert_eq!(node.kind(), "interface_body");
5334        Ok(Self {
5335            span: ::treesitter_types::Span::from(node),
5336            children: {
5337                #[allow(clippy::suspicious_else_formatting)]
5338                let non_field_children = {
5339                    let mut cursor = node.walk();
5340                    let mut result = ::std::vec::Vec::new();
5341                    if cursor.goto_first_child() {
5342                        loop {
5343                            if cursor.field_name().is_none()
5344                                && cursor.node().is_named()
5345                                && !cursor.node().is_extra()
5346                            {
5347                                result.push(cursor.node());
5348                            }
5349                            if !cursor.goto_next_sibling() {
5350                                break;
5351                            }
5352                        }
5353                    }
5354                    result
5355                };
5356                let mut items = ::std::vec::Vec::new();
5357                for child in non_field_children {
5358                    items.push(
5359                        <InterfaceBodyChildren as ::treesitter_types::FromNode>::from_node(
5360                            child, src,
5361                        )?,
5362                    );
5363                }
5364                items
5365            },
5366        })
5367    }
5368}
5369impl ::treesitter_types::Spanned for InterfaceBody<'_> {
5370    fn span(&self) -> ::treesitter_types::Span {
5371        self.span
5372    }
5373}
5374#[derive(Debug, Clone, PartialEq, Eq)]
5375pub struct InterfaceDeclaration<'tree> {
5376    pub span: ::treesitter_types::Span,
5377    pub body: InterfaceBody<'tree>,
5378    pub name: TypeIdentifier<'tree>,
5379    pub type_parameters: ::core::option::Option<TypeParameters<'tree>>,
5380    pub children: ::core::option::Option<ExtendsTypeClause<'tree>>,
5381}
5382impl<'tree> ::treesitter_types::FromNode<'tree> for InterfaceDeclaration<'tree> {
5383    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
5384    fn from_node(
5385        node: ::tree_sitter::Node<'tree>,
5386        src: &'tree [u8],
5387    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
5388        debug_assert_eq!(node.kind(), "interface_declaration");
5389        Ok(Self {
5390            span: ::treesitter_types::Span::from(node),
5391            body: {
5392                let child = node
5393                    .child_by_field_name("body")
5394                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("body", node))?;
5395                <InterfaceBody as ::treesitter_types::FromNode>::from_node(child, src)?
5396            },
5397            name: {
5398                let child = node
5399                    .child_by_field_name("name")
5400                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("name", node))?;
5401                <TypeIdentifier as ::treesitter_types::FromNode>::from_node(child, src)?
5402            },
5403            type_parameters: match node.child_by_field_name("type_parameters") {
5404                Some(child) => Some(<TypeParameters as ::treesitter_types::FromNode>::from_node(
5405                    child, src,
5406                )?),
5407                None => None,
5408            },
5409            children: {
5410                #[allow(clippy::suspicious_else_formatting)]
5411                let non_field_children = {
5412                    let mut cursor = node.walk();
5413                    let mut result = ::std::vec::Vec::new();
5414                    if cursor.goto_first_child() {
5415                        loop {
5416                            if cursor.field_name().is_none()
5417                                && cursor.node().is_named()
5418                                && !cursor.node().is_extra()
5419                            {
5420                                result.push(cursor.node());
5421                            }
5422                            if !cursor.goto_next_sibling() {
5423                                break;
5424                            }
5425                        }
5426                    }
5427                    result
5428                };
5429                match non_field_children.first() {
5430                    Some(&child) => Some(
5431                        <ExtendsTypeClause as ::treesitter_types::FromNode>::from_node(child, src)?,
5432                    ),
5433                    None => None,
5434                }
5435            },
5436        })
5437    }
5438}
5439impl ::treesitter_types::Spanned for InterfaceDeclaration<'_> {
5440    fn span(&self) -> ::treesitter_types::Span {
5441        self.span
5442    }
5443}
5444#[derive(Debug, Clone, PartialEq, Eq)]
5445pub struct InternalModule<'tree> {
5446    pub span: ::treesitter_types::Span,
5447    pub body: ::core::option::Option<StatementBlock<'tree>>,
5448    pub name: InternalModuleName<'tree>,
5449}
5450impl<'tree> ::treesitter_types::FromNode<'tree> for InternalModule<'tree> {
5451    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
5452    fn from_node(
5453        node: ::tree_sitter::Node<'tree>,
5454        src: &'tree [u8],
5455    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
5456        debug_assert_eq!(node.kind(), "internal_module");
5457        Ok(Self {
5458            span: ::treesitter_types::Span::from(node),
5459            body: match node.child_by_field_name("body") {
5460                Some(child) => Some(<StatementBlock as ::treesitter_types::FromNode>::from_node(
5461                    child, src,
5462                )?),
5463                None => None,
5464            },
5465            name: {
5466                let child = node
5467                    .child_by_field_name("name")
5468                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("name", node))?;
5469                <InternalModuleName as ::treesitter_types::FromNode>::from_node(child, src)?
5470            },
5471        })
5472    }
5473}
5474impl ::treesitter_types::Spanned for InternalModule<'_> {
5475    fn span(&self) -> ::treesitter_types::Span {
5476        self.span
5477    }
5478}
5479#[derive(Debug, Clone, PartialEq, Eq)]
5480pub struct IntersectionType<'tree> {
5481    pub span: ::treesitter_types::Span,
5482    pub children: ::std::vec::Vec<Type<'tree>>,
5483}
5484impl<'tree> ::treesitter_types::FromNode<'tree> for IntersectionType<'tree> {
5485    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
5486    fn from_node(
5487        node: ::tree_sitter::Node<'tree>,
5488        src: &'tree [u8],
5489    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
5490        debug_assert_eq!(node.kind(), "intersection_type");
5491        Ok(Self {
5492            span: ::treesitter_types::Span::from(node),
5493            children: {
5494                #[allow(clippy::suspicious_else_formatting)]
5495                let non_field_children = {
5496                    let mut cursor = node.walk();
5497                    let mut result = ::std::vec::Vec::new();
5498                    if cursor.goto_first_child() {
5499                        loop {
5500                            if cursor.field_name().is_none()
5501                                && cursor.node().is_named()
5502                                && !cursor.node().is_extra()
5503                            {
5504                                result.push(cursor.node());
5505                            }
5506                            if !cursor.goto_next_sibling() {
5507                                break;
5508                            }
5509                        }
5510                    }
5511                    result
5512                };
5513                let mut items = ::std::vec::Vec::new();
5514                for child in non_field_children {
5515                    items.push(<Type as ::treesitter_types::FromNode>::from_node(
5516                        child, src,
5517                    )?);
5518                }
5519                items
5520            },
5521        })
5522    }
5523}
5524impl ::treesitter_types::Spanned for IntersectionType<'_> {
5525    fn span(&self) -> ::treesitter_types::Span {
5526        self.span
5527    }
5528}
5529#[derive(Debug, Clone, PartialEq, Eq)]
5530pub struct LabeledStatement<'tree> {
5531    pub span: ::treesitter_types::Span,
5532    pub body: Statement<'tree>,
5533    pub label: StatementIdentifier<'tree>,
5534}
5535impl<'tree> ::treesitter_types::FromNode<'tree> for LabeledStatement<'tree> {
5536    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
5537    fn from_node(
5538        node: ::tree_sitter::Node<'tree>,
5539        src: &'tree [u8],
5540    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
5541        debug_assert_eq!(node.kind(), "labeled_statement");
5542        Ok(Self {
5543            span: ::treesitter_types::Span::from(node),
5544            body: {
5545                let child = node
5546                    .child_by_field_name("body")
5547                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("body", node))?;
5548                <Statement as ::treesitter_types::FromNode>::from_node(child, src)?
5549            },
5550            label: {
5551                let child = node
5552                    .child_by_field_name("label")
5553                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("label", node))?;
5554                <StatementIdentifier as ::treesitter_types::FromNode>::from_node(child, src)?
5555            },
5556        })
5557    }
5558}
5559impl ::treesitter_types::Spanned for LabeledStatement<'_> {
5560    fn span(&self) -> ::treesitter_types::Span {
5561        self.span
5562    }
5563}
5564#[derive(Debug, Clone, PartialEq, Eq)]
5565pub struct LexicalDeclaration<'tree> {
5566    pub span: ::treesitter_types::Span,
5567    pub kind: LexicalDeclarationKind,
5568    pub children: ::std::vec::Vec<VariableDeclarator<'tree>>,
5569}
5570impl<'tree> ::treesitter_types::FromNode<'tree> for LexicalDeclaration<'tree> {
5571    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
5572    fn from_node(
5573        node: ::tree_sitter::Node<'tree>,
5574        src: &'tree [u8],
5575    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
5576        debug_assert_eq!(node.kind(), "lexical_declaration");
5577        Ok(Self {
5578            span: ::treesitter_types::Span::from(node),
5579            kind: {
5580                let child = node
5581                    .child_by_field_name("kind")
5582                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("kind", node))?;
5583                <LexicalDeclarationKind as ::treesitter_types::FromNode>::from_node(child, src)?
5584            },
5585            children: {
5586                #[allow(clippy::suspicious_else_formatting)]
5587                let non_field_children = {
5588                    let mut cursor = node.walk();
5589                    let mut result = ::std::vec::Vec::new();
5590                    if cursor.goto_first_child() {
5591                        loop {
5592                            if cursor.field_name().is_none()
5593                                && cursor.node().is_named()
5594                                && !cursor.node().is_extra()
5595                            {
5596                                result.push(cursor.node());
5597                            }
5598                            if !cursor.goto_next_sibling() {
5599                                break;
5600                            }
5601                        }
5602                    }
5603                    result
5604                };
5605                let mut items = ::std::vec::Vec::new();
5606                for child in non_field_children {
5607                    items.push(
5608                        <VariableDeclarator as ::treesitter_types::FromNode>::from_node(
5609                            child, src,
5610                        )?,
5611                    );
5612                }
5613                items
5614            },
5615        })
5616    }
5617}
5618impl ::treesitter_types::Spanned for LexicalDeclaration<'_> {
5619    fn span(&self) -> ::treesitter_types::Span {
5620        self.span
5621    }
5622}
5623#[derive(Debug, Clone, PartialEq, Eq)]
5624pub struct LiteralType<'tree> {
5625    pub span: ::treesitter_types::Span,
5626    pub children: LiteralTypeChildren<'tree>,
5627}
5628impl<'tree> ::treesitter_types::FromNode<'tree> for LiteralType<'tree> {
5629    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
5630    fn from_node(
5631        node: ::tree_sitter::Node<'tree>,
5632        src: &'tree [u8],
5633    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
5634        debug_assert_eq!(node.kind(), "literal_type");
5635        Ok(Self {
5636            span: ::treesitter_types::Span::from(node),
5637            children: {
5638                #[allow(clippy::suspicious_else_formatting)]
5639                let non_field_children = {
5640                    let mut cursor = node.walk();
5641                    let mut result = ::std::vec::Vec::new();
5642                    if cursor.goto_first_child() {
5643                        loop {
5644                            if cursor.field_name().is_none()
5645                                && cursor.node().is_named()
5646                                && !cursor.node().is_extra()
5647                            {
5648                                result.push(cursor.node());
5649                            }
5650                            if !cursor.goto_next_sibling() {
5651                                break;
5652                            }
5653                        }
5654                    }
5655                    result
5656                };
5657                let child = if let Some(&c) = non_field_children.first() {
5658                    c
5659                } else {
5660                    let mut fallback_cursor = node.walk();
5661                    let mut fallback_child = None;
5662                    if fallback_cursor.goto_first_child() {
5663                        loop {
5664                            if fallback_cursor.field_name().is_none()
5665                                && !fallback_cursor.node().is_extra()
5666                            {
5667                                let candidate = fallback_cursor.node();
5668                                #[allow(clippy::needless_question_mark)]
5669                                if (|| -> ::core::result::Result<
5670                                    _,
5671                                    ::treesitter_types::ParseError,
5672                                > {
5673                                    let child = candidate;
5674                                    Ok(
5675                                        <LiteralTypeChildren as ::treesitter_types::FromNode>::from_node(
5676                                            child,
5677                                            src,
5678                                        )?,
5679                                    )
5680                                })()
5681                                    .is_ok()
5682                                {
5683                                    fallback_child = Some(candidate);
5684                                    break;
5685                                }
5686                            }
5687                            if !fallback_cursor.goto_next_sibling() {
5688                                break;
5689                            }
5690                        }
5691                    }
5692                    if fallback_child.is_none() {
5693                        let mut cursor2 = node.walk();
5694                        if cursor2.goto_first_child() {
5695                            loop {
5696                                if cursor2.node().is_named() && !cursor2.node().is_extra() {
5697                                    let candidate = cursor2.node();
5698                                    #[allow(clippy::needless_question_mark)]
5699                                    if (|| -> ::core::result::Result<
5700                                        _,
5701                                        ::treesitter_types::ParseError,
5702                                    > {
5703                                        let child = candidate;
5704                                        Ok(
5705                                            <LiteralTypeChildren as ::treesitter_types::FromNode>::from_node(
5706                                                child,
5707                                                src,
5708                                            )?,
5709                                        )
5710                                    })()
5711                                        .is_ok()
5712                                    {
5713                                        fallback_child = Some(candidate);
5714                                        break;
5715                                    }
5716                                }
5717                                if !cursor2.goto_next_sibling() {
5718                                    break;
5719                                }
5720                            }
5721                        }
5722                    }
5723                    fallback_child.ok_or_else(|| {
5724                        ::treesitter_types::ParseError::missing_field("children", node)
5725                    })?
5726                };
5727                <LiteralTypeChildren as ::treesitter_types::FromNode>::from_node(child, src)?
5728            },
5729        })
5730    }
5731}
5732impl ::treesitter_types::Spanned for LiteralType<'_> {
5733    fn span(&self) -> ::treesitter_types::Span {
5734        self.span
5735    }
5736}
5737#[derive(Debug, Clone, PartialEq, Eq)]
5738pub struct LookupType<'tree> {
5739    pub span: ::treesitter_types::Span,
5740    pub children: ::std::vec::Vec<Type<'tree>>,
5741}
5742impl<'tree> ::treesitter_types::FromNode<'tree> for LookupType<'tree> {
5743    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
5744    fn from_node(
5745        node: ::tree_sitter::Node<'tree>,
5746        src: &'tree [u8],
5747    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
5748        debug_assert_eq!(node.kind(), "lookup_type");
5749        Ok(Self {
5750            span: ::treesitter_types::Span::from(node),
5751            children: {
5752                #[allow(clippy::suspicious_else_formatting)]
5753                let non_field_children = {
5754                    let mut cursor = node.walk();
5755                    let mut result = ::std::vec::Vec::new();
5756                    if cursor.goto_first_child() {
5757                        loop {
5758                            if cursor.field_name().is_none()
5759                                && cursor.node().is_named()
5760                                && !cursor.node().is_extra()
5761                            {
5762                                result.push(cursor.node());
5763                            }
5764                            if !cursor.goto_next_sibling() {
5765                                break;
5766                            }
5767                        }
5768                    }
5769                    result
5770                };
5771                let mut items = ::std::vec::Vec::new();
5772                for child in non_field_children {
5773                    items.push(<Type as ::treesitter_types::FromNode>::from_node(
5774                        child, src,
5775                    )?);
5776                }
5777                items
5778            },
5779        })
5780    }
5781}
5782impl ::treesitter_types::Spanned for LookupType<'_> {
5783    fn span(&self) -> ::treesitter_types::Span {
5784        self.span
5785    }
5786}
5787#[derive(Debug, Clone, PartialEq, Eq)]
5788pub struct MappedTypeClause<'tree> {
5789    pub span: ::treesitter_types::Span,
5790    pub alias: ::core::option::Option<Type<'tree>>,
5791    pub name: TypeIdentifier<'tree>,
5792    pub r#type: Type<'tree>,
5793}
5794impl<'tree> ::treesitter_types::FromNode<'tree> for MappedTypeClause<'tree> {
5795    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
5796    fn from_node(
5797        node: ::tree_sitter::Node<'tree>,
5798        src: &'tree [u8],
5799    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
5800        debug_assert_eq!(node.kind(), "mapped_type_clause");
5801        Ok(Self {
5802            span: ::treesitter_types::Span::from(node),
5803            alias: match node.child_by_field_name("alias") {
5804                Some(child) => Some(<Type as ::treesitter_types::FromNode>::from_node(
5805                    child, src,
5806                )?),
5807                None => None,
5808            },
5809            name: {
5810                let child = node
5811                    .child_by_field_name("name")
5812                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("name", node))?;
5813                <TypeIdentifier as ::treesitter_types::FromNode>::from_node(child, src)?
5814            },
5815            r#type: {
5816                let child = node
5817                    .child_by_field_name("type")
5818                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("type", node))?;
5819                <Type as ::treesitter_types::FromNode>::from_node(child, src)?
5820            },
5821        })
5822    }
5823}
5824impl ::treesitter_types::Spanned for MappedTypeClause<'_> {
5825    fn span(&self) -> ::treesitter_types::Span {
5826        self.span
5827    }
5828}
5829#[derive(Debug, Clone, PartialEq, Eq)]
5830pub struct MemberExpression<'tree> {
5831    pub span: ::treesitter_types::Span,
5832    pub object: MemberExpressionObject<'tree>,
5833    pub optional_chain: ::core::option::Option<OptionalChain<'tree>>,
5834    pub property: MemberExpressionProperty<'tree>,
5835}
5836impl<'tree> ::treesitter_types::FromNode<'tree> for MemberExpression<'tree> {
5837    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
5838    fn from_node(
5839        node: ::tree_sitter::Node<'tree>,
5840        src: &'tree [u8],
5841    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
5842        debug_assert_eq!(node.kind(), "member_expression");
5843        Ok(Self {
5844            span: ::treesitter_types::Span::from(node),
5845            object: {
5846                let child = node
5847                    .child_by_field_name("object")
5848                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("object", node))?;
5849                <MemberExpressionObject as ::treesitter_types::FromNode>::from_node(child, src)?
5850            },
5851            optional_chain: match node.child_by_field_name("optional_chain") {
5852                Some(child) => Some(<OptionalChain as ::treesitter_types::FromNode>::from_node(
5853                    child, src,
5854                )?),
5855                None => None,
5856            },
5857            property: {
5858                let child = node.child_by_field_name("property").ok_or_else(|| {
5859                    ::treesitter_types::ParseError::missing_field("property", node)
5860                })?;
5861                <MemberExpressionProperty as ::treesitter_types::FromNode>::from_node(child, src)?
5862            },
5863        })
5864    }
5865}
5866impl ::treesitter_types::Spanned for MemberExpression<'_> {
5867    fn span(&self) -> ::treesitter_types::Span {
5868        self.span
5869    }
5870}
5871#[derive(Debug, Clone, PartialEq, Eq)]
5872pub struct MetaProperty<'tree> {
5873    pub span: ::treesitter_types::Span,
5874    text: &'tree str,
5875}
5876impl<'tree> ::treesitter_types::FromNode<'tree> for MetaProperty<'tree> {
5877    fn from_node(
5878        node: ::tree_sitter::Node<'tree>,
5879        src: &'tree [u8],
5880    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
5881        debug_assert_eq!(node.kind(), "meta_property");
5882        Ok(Self {
5883            span: ::treesitter_types::Span::from(node),
5884            text: node.utf8_text(src)?,
5885        })
5886    }
5887}
5888impl<'tree> ::treesitter_types::LeafNode<'tree> for MetaProperty<'tree> {
5889    fn text(&self) -> &'tree str {
5890        self.text
5891    }
5892}
5893impl ::treesitter_types::Spanned for MetaProperty<'_> {
5894    fn span(&self) -> ::treesitter_types::Span {
5895        self.span
5896    }
5897}
5898#[derive(Debug, Clone, PartialEq, Eq)]
5899pub struct MethodDefinition<'tree> {
5900    pub span: ::treesitter_types::Span,
5901    pub body: StatementBlock<'tree>,
5902    pub name: MethodDefinitionName<'tree>,
5903    pub parameters: FormalParameters<'tree>,
5904    pub return_type: ::core::option::Option<MethodDefinitionReturnType<'tree>>,
5905    pub type_parameters: ::core::option::Option<TypeParameters<'tree>>,
5906    pub children: ::std::vec::Vec<MethodDefinitionChildren<'tree>>,
5907}
5908impl<'tree> ::treesitter_types::FromNode<'tree> for MethodDefinition<'tree> {
5909    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
5910    fn from_node(
5911        node: ::tree_sitter::Node<'tree>,
5912        src: &'tree [u8],
5913    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
5914        debug_assert_eq!(node.kind(), "method_definition");
5915        Ok(Self {
5916            span: ::treesitter_types::Span::from(node),
5917            body: {
5918                let child = node
5919                    .child_by_field_name("body")
5920                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("body", node))?;
5921                <StatementBlock as ::treesitter_types::FromNode>::from_node(child, src)?
5922            },
5923            name: {
5924                let child = node
5925                    .child_by_field_name("name")
5926                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("name", node))?;
5927                <MethodDefinitionName as ::treesitter_types::FromNode>::from_node(child, src)?
5928            },
5929            parameters: {
5930                let child = node.child_by_field_name("parameters").ok_or_else(|| {
5931                    ::treesitter_types::ParseError::missing_field("parameters", node)
5932                })?;
5933                <FormalParameters as ::treesitter_types::FromNode>::from_node(child, src)?
5934            },
5935            return_type: match node.child_by_field_name("return_type") {
5936                Some(child) => Some(
5937                    <MethodDefinitionReturnType as ::treesitter_types::FromNode>::from_node(
5938                        child, src,
5939                    )?,
5940                ),
5941                None => None,
5942            },
5943            type_parameters: match node.child_by_field_name("type_parameters") {
5944                Some(child) => Some(<TypeParameters as ::treesitter_types::FromNode>::from_node(
5945                    child, src,
5946                )?),
5947                None => None,
5948            },
5949            children: {
5950                #[allow(clippy::suspicious_else_formatting)]
5951                let non_field_children = {
5952                    let mut cursor = node.walk();
5953                    let mut result = ::std::vec::Vec::new();
5954                    if cursor.goto_first_child() {
5955                        loop {
5956                            if cursor.field_name().is_none()
5957                                && cursor.node().is_named()
5958                                && !cursor.node().is_extra()
5959                            {
5960                                result.push(cursor.node());
5961                            }
5962                            if !cursor.goto_next_sibling() {
5963                                break;
5964                            }
5965                        }
5966                    }
5967                    result
5968                };
5969                let mut items = ::std::vec::Vec::new();
5970                for child in non_field_children {
5971                    items.push(
5972                        <MethodDefinitionChildren as ::treesitter_types::FromNode>::from_node(
5973                            child, src,
5974                        )?,
5975                    );
5976                }
5977                items
5978            },
5979        })
5980    }
5981}
5982impl ::treesitter_types::Spanned for MethodDefinition<'_> {
5983    fn span(&self) -> ::treesitter_types::Span {
5984        self.span
5985    }
5986}
5987#[derive(Debug, Clone, PartialEq, Eq)]
5988pub struct MethodSignature<'tree> {
5989    pub span: ::treesitter_types::Span,
5990    pub name: MethodSignatureName<'tree>,
5991    pub parameters: FormalParameters<'tree>,
5992    pub return_type: ::core::option::Option<MethodSignatureReturnType<'tree>>,
5993    pub type_parameters: ::core::option::Option<TypeParameters<'tree>>,
5994    pub children: ::std::vec::Vec<MethodSignatureChildren<'tree>>,
5995}
5996impl<'tree> ::treesitter_types::FromNode<'tree> for MethodSignature<'tree> {
5997    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
5998    fn from_node(
5999        node: ::tree_sitter::Node<'tree>,
6000        src: &'tree [u8],
6001    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
6002        debug_assert_eq!(node.kind(), "method_signature");
6003        Ok(Self {
6004            span: ::treesitter_types::Span::from(node),
6005            name: {
6006                let child = node
6007                    .child_by_field_name("name")
6008                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("name", node))?;
6009                <MethodSignatureName as ::treesitter_types::FromNode>::from_node(child, src)?
6010            },
6011            parameters: {
6012                let child = node.child_by_field_name("parameters").ok_or_else(|| {
6013                    ::treesitter_types::ParseError::missing_field("parameters", node)
6014                })?;
6015                <FormalParameters as ::treesitter_types::FromNode>::from_node(child, src)?
6016            },
6017            return_type: match node.child_by_field_name("return_type") {
6018                Some(child) => Some(
6019                    <MethodSignatureReturnType as ::treesitter_types::FromNode>::from_node(
6020                        child, src,
6021                    )?,
6022                ),
6023                None => None,
6024            },
6025            type_parameters: match node.child_by_field_name("type_parameters") {
6026                Some(child) => Some(<TypeParameters as ::treesitter_types::FromNode>::from_node(
6027                    child, src,
6028                )?),
6029                None => None,
6030            },
6031            children: {
6032                #[allow(clippy::suspicious_else_formatting)]
6033                let non_field_children = {
6034                    let mut cursor = node.walk();
6035                    let mut result = ::std::vec::Vec::new();
6036                    if cursor.goto_first_child() {
6037                        loop {
6038                            if cursor.field_name().is_none()
6039                                && cursor.node().is_named()
6040                                && !cursor.node().is_extra()
6041                            {
6042                                result.push(cursor.node());
6043                            }
6044                            if !cursor.goto_next_sibling() {
6045                                break;
6046                            }
6047                        }
6048                    }
6049                    result
6050                };
6051                let mut items = ::std::vec::Vec::new();
6052                for child in non_field_children {
6053                    items.push(
6054                        <MethodSignatureChildren as ::treesitter_types::FromNode>::from_node(
6055                            child, src,
6056                        )?,
6057                    );
6058                }
6059                items
6060            },
6061        })
6062    }
6063}
6064impl ::treesitter_types::Spanned for MethodSignature<'_> {
6065    fn span(&self) -> ::treesitter_types::Span {
6066        self.span
6067    }
6068}
6069#[derive(Debug, Clone, PartialEq, Eq)]
6070pub struct Module<'tree> {
6071    pub span: ::treesitter_types::Span,
6072    pub body: ::core::option::Option<StatementBlock<'tree>>,
6073    pub name: ModuleName<'tree>,
6074}
6075impl<'tree> ::treesitter_types::FromNode<'tree> for Module<'tree> {
6076    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
6077    fn from_node(
6078        node: ::tree_sitter::Node<'tree>,
6079        src: &'tree [u8],
6080    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
6081        debug_assert_eq!(node.kind(), "module");
6082        Ok(Self {
6083            span: ::treesitter_types::Span::from(node),
6084            body: match node.child_by_field_name("body") {
6085                Some(child) => Some(<StatementBlock as ::treesitter_types::FromNode>::from_node(
6086                    child, src,
6087                )?),
6088                None => None,
6089            },
6090            name: {
6091                let child = node
6092                    .child_by_field_name("name")
6093                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("name", node))?;
6094                <ModuleName as ::treesitter_types::FromNode>::from_node(child, src)?
6095            },
6096        })
6097    }
6098}
6099impl ::treesitter_types::Spanned for Module<'_> {
6100    fn span(&self) -> ::treesitter_types::Span {
6101        self.span
6102    }
6103}
6104#[derive(Debug, Clone, PartialEq, Eq)]
6105pub struct NamedImports<'tree> {
6106    pub span: ::treesitter_types::Span,
6107    pub children: ::std::vec::Vec<ImportSpecifier<'tree>>,
6108}
6109impl<'tree> ::treesitter_types::FromNode<'tree> for NamedImports<'tree> {
6110    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
6111    fn from_node(
6112        node: ::tree_sitter::Node<'tree>,
6113        src: &'tree [u8],
6114    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
6115        debug_assert_eq!(node.kind(), "named_imports");
6116        Ok(Self {
6117            span: ::treesitter_types::Span::from(node),
6118            children: {
6119                #[allow(clippy::suspicious_else_formatting)]
6120                let non_field_children = {
6121                    let mut cursor = node.walk();
6122                    let mut result = ::std::vec::Vec::new();
6123                    if cursor.goto_first_child() {
6124                        loop {
6125                            if cursor.field_name().is_none()
6126                                && cursor.node().is_named()
6127                                && !cursor.node().is_extra()
6128                            {
6129                                result.push(cursor.node());
6130                            }
6131                            if !cursor.goto_next_sibling() {
6132                                break;
6133                            }
6134                        }
6135                    }
6136                    result
6137                };
6138                let mut items = ::std::vec::Vec::new();
6139                for child in non_field_children {
6140                    items.push(
6141                        <ImportSpecifier as ::treesitter_types::FromNode>::from_node(child, src)?,
6142                    );
6143                }
6144                items
6145            },
6146        })
6147    }
6148}
6149impl ::treesitter_types::Spanned for NamedImports<'_> {
6150    fn span(&self) -> ::treesitter_types::Span {
6151        self.span
6152    }
6153}
6154#[derive(Debug, Clone, PartialEq, Eq)]
6155pub struct NamespaceExport<'tree> {
6156    pub span: ::treesitter_types::Span,
6157    pub children: NamespaceExportChildren<'tree>,
6158}
6159impl<'tree> ::treesitter_types::FromNode<'tree> for NamespaceExport<'tree> {
6160    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
6161    fn from_node(
6162        node: ::tree_sitter::Node<'tree>,
6163        src: &'tree [u8],
6164    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
6165        debug_assert_eq!(node.kind(), "namespace_export");
6166        Ok(Self {
6167            span: ::treesitter_types::Span::from(node),
6168            children: {
6169                #[allow(clippy::suspicious_else_formatting)]
6170                let non_field_children = {
6171                    let mut cursor = node.walk();
6172                    let mut result = ::std::vec::Vec::new();
6173                    if cursor.goto_first_child() {
6174                        loop {
6175                            if cursor.field_name().is_none()
6176                                && cursor.node().is_named()
6177                                && !cursor.node().is_extra()
6178                            {
6179                                result.push(cursor.node());
6180                            }
6181                            if !cursor.goto_next_sibling() {
6182                                break;
6183                            }
6184                        }
6185                    }
6186                    result
6187                };
6188                let child = if let Some(&c) = non_field_children.first() {
6189                    c
6190                } else {
6191                    let mut fallback_cursor = node.walk();
6192                    let mut fallback_child = None;
6193                    if fallback_cursor.goto_first_child() {
6194                        loop {
6195                            if fallback_cursor.field_name().is_none()
6196                                && !fallback_cursor.node().is_extra()
6197                            {
6198                                let candidate = fallback_cursor.node();
6199                                #[allow(clippy::needless_question_mark)]
6200                                if (|| -> ::core::result::Result<
6201                                    _,
6202                                    ::treesitter_types::ParseError,
6203                                > {
6204                                    let child = candidate;
6205                                    Ok(
6206                                        <NamespaceExportChildren as ::treesitter_types::FromNode>::from_node(
6207                                            child,
6208                                            src,
6209                                        )?,
6210                                    )
6211                                })()
6212                                    .is_ok()
6213                                {
6214                                    fallback_child = Some(candidate);
6215                                    break;
6216                                }
6217                            }
6218                            if !fallback_cursor.goto_next_sibling() {
6219                                break;
6220                            }
6221                        }
6222                    }
6223                    if fallback_child.is_none() {
6224                        let mut cursor2 = node.walk();
6225                        if cursor2.goto_first_child() {
6226                            loop {
6227                                if cursor2.node().is_named() && !cursor2.node().is_extra() {
6228                                    let candidate = cursor2.node();
6229                                    #[allow(clippy::needless_question_mark)]
6230                                    if (|| -> ::core::result::Result<
6231                                        _,
6232                                        ::treesitter_types::ParseError,
6233                                    > {
6234                                        let child = candidate;
6235                                        Ok(
6236                                            <NamespaceExportChildren as ::treesitter_types::FromNode>::from_node(
6237                                                child,
6238                                                src,
6239                                            )?,
6240                                        )
6241                                    })()
6242                                        .is_ok()
6243                                    {
6244                                        fallback_child = Some(candidate);
6245                                        break;
6246                                    }
6247                                }
6248                                if !cursor2.goto_next_sibling() {
6249                                    break;
6250                                }
6251                            }
6252                        }
6253                    }
6254                    fallback_child.ok_or_else(|| {
6255                        ::treesitter_types::ParseError::missing_field("children", node)
6256                    })?
6257                };
6258                <NamespaceExportChildren as ::treesitter_types::FromNode>::from_node(child, src)?
6259            },
6260        })
6261    }
6262}
6263impl ::treesitter_types::Spanned for NamespaceExport<'_> {
6264    fn span(&self) -> ::treesitter_types::Span {
6265        self.span
6266    }
6267}
6268#[derive(Debug, Clone, PartialEq, Eq)]
6269pub struct NamespaceImport<'tree> {
6270    pub span: ::treesitter_types::Span,
6271    pub children: Identifier<'tree>,
6272}
6273impl<'tree> ::treesitter_types::FromNode<'tree> for NamespaceImport<'tree> {
6274    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
6275    fn from_node(
6276        node: ::tree_sitter::Node<'tree>,
6277        src: &'tree [u8],
6278    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
6279        debug_assert_eq!(node.kind(), "namespace_import");
6280        Ok(Self {
6281            span: ::treesitter_types::Span::from(node),
6282            children: {
6283                #[allow(clippy::suspicious_else_formatting)]
6284                let non_field_children = {
6285                    let mut cursor = node.walk();
6286                    let mut result = ::std::vec::Vec::new();
6287                    if cursor.goto_first_child() {
6288                        loop {
6289                            if cursor.field_name().is_none()
6290                                && cursor.node().is_named()
6291                                && !cursor.node().is_extra()
6292                            {
6293                                result.push(cursor.node());
6294                            }
6295                            if !cursor.goto_next_sibling() {
6296                                break;
6297                            }
6298                        }
6299                    }
6300                    result
6301                };
6302                let child = if let Some(&c) = non_field_children.first() {
6303                    c
6304                } else {
6305                    let mut fallback_cursor = node.walk();
6306                    let mut fallback_child = None;
6307                    if fallback_cursor.goto_first_child() {
6308                        loop {
6309                            if fallback_cursor.field_name().is_none()
6310                                && !fallback_cursor.node().is_extra()
6311                            {
6312                                let candidate = fallback_cursor.node();
6313                                #[allow(clippy::needless_question_mark)]
6314                                if (|| -> ::core::result::Result<
6315                                    _,
6316                                    ::treesitter_types::ParseError,
6317                                > {
6318                                    let child = candidate;
6319                                    Ok(
6320                                        <Identifier as ::treesitter_types::FromNode>::from_node(
6321                                            child,
6322                                            src,
6323                                        )?,
6324                                    )
6325                                })()
6326                                    .is_ok()
6327                                {
6328                                    fallback_child = Some(candidate);
6329                                    break;
6330                                }
6331                            }
6332                            if !fallback_cursor.goto_next_sibling() {
6333                                break;
6334                            }
6335                        }
6336                    }
6337                    if fallback_child.is_none() {
6338                        let mut cursor2 = node.walk();
6339                        if cursor2.goto_first_child() {
6340                            loop {
6341                                if cursor2.node().is_named() && !cursor2.node().is_extra() {
6342                                    let candidate = cursor2.node();
6343                                    #[allow(clippy::needless_question_mark)]
6344                                    if (|| -> ::core::result::Result<
6345                                        _,
6346                                        ::treesitter_types::ParseError,
6347                                    > {
6348                                        let child = candidate;
6349                                        Ok(
6350                                            <Identifier as ::treesitter_types::FromNode>::from_node(
6351                                                child,
6352                                                src,
6353                                            )?,
6354                                        )
6355                                    })()
6356                                        .is_ok()
6357                                    {
6358                                        fallback_child = Some(candidate);
6359                                        break;
6360                                    }
6361                                }
6362                                if !cursor2.goto_next_sibling() {
6363                                    break;
6364                                }
6365                            }
6366                        }
6367                    }
6368                    fallback_child.ok_or_else(|| {
6369                        ::treesitter_types::ParseError::missing_field("children", node)
6370                    })?
6371                };
6372                <Identifier as ::treesitter_types::FromNode>::from_node(child, src)?
6373            },
6374        })
6375    }
6376}
6377impl ::treesitter_types::Spanned for NamespaceImport<'_> {
6378    fn span(&self) -> ::treesitter_types::Span {
6379        self.span
6380    }
6381}
6382#[derive(Debug, Clone, PartialEq, Eq)]
6383pub struct NestedIdentifier<'tree> {
6384    pub span: ::treesitter_types::Span,
6385    pub object: NestedIdentifierObject<'tree>,
6386    pub property: PropertyIdentifier<'tree>,
6387}
6388impl<'tree> ::treesitter_types::FromNode<'tree> for NestedIdentifier<'tree> {
6389    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
6390    fn from_node(
6391        node: ::tree_sitter::Node<'tree>,
6392        src: &'tree [u8],
6393    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
6394        debug_assert_eq!(node.kind(), "nested_identifier");
6395        Ok(Self {
6396            span: ::treesitter_types::Span::from(node),
6397            object: {
6398                let child = node
6399                    .child_by_field_name("object")
6400                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("object", node))?;
6401                <NestedIdentifierObject as ::treesitter_types::FromNode>::from_node(child, src)?
6402            },
6403            property: {
6404                let child = node.child_by_field_name("property").ok_or_else(|| {
6405                    ::treesitter_types::ParseError::missing_field("property", node)
6406                })?;
6407                <PropertyIdentifier as ::treesitter_types::FromNode>::from_node(child, src)?
6408            },
6409        })
6410    }
6411}
6412impl ::treesitter_types::Spanned for NestedIdentifier<'_> {
6413    fn span(&self) -> ::treesitter_types::Span {
6414        self.span
6415    }
6416}
6417#[derive(Debug, Clone, PartialEq, Eq)]
6418pub struct NestedTypeIdentifier<'tree> {
6419    pub span: ::treesitter_types::Span,
6420    pub module: NestedTypeIdentifierModule<'tree>,
6421    pub name: TypeIdentifier<'tree>,
6422}
6423impl<'tree> ::treesitter_types::FromNode<'tree> for NestedTypeIdentifier<'tree> {
6424    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
6425    fn from_node(
6426        node: ::tree_sitter::Node<'tree>,
6427        src: &'tree [u8],
6428    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
6429        debug_assert_eq!(node.kind(), "nested_type_identifier");
6430        Ok(Self {
6431            span: ::treesitter_types::Span::from(node),
6432            module: {
6433                let child = node
6434                    .child_by_field_name("module")
6435                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("module", node))?;
6436                <NestedTypeIdentifierModule as ::treesitter_types::FromNode>::from_node(child, src)?
6437            },
6438            name: {
6439                let child = node
6440                    .child_by_field_name("name")
6441                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("name", node))?;
6442                <TypeIdentifier as ::treesitter_types::FromNode>::from_node(child, src)?
6443            },
6444        })
6445    }
6446}
6447impl ::treesitter_types::Spanned for NestedTypeIdentifier<'_> {
6448    fn span(&self) -> ::treesitter_types::Span {
6449        self.span
6450    }
6451}
6452#[derive(Debug, Clone, PartialEq, Eq)]
6453pub struct NewExpression<'tree> {
6454    pub span: ::treesitter_types::Span,
6455    pub arguments: ::core::option::Option<Arguments<'tree>>,
6456    pub constructor: PrimaryExpression<'tree>,
6457    pub type_arguments: ::core::option::Option<TypeArguments<'tree>>,
6458}
6459impl<'tree> ::treesitter_types::FromNode<'tree> for NewExpression<'tree> {
6460    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
6461    fn from_node(
6462        node: ::tree_sitter::Node<'tree>,
6463        src: &'tree [u8],
6464    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
6465        debug_assert_eq!(node.kind(), "new_expression");
6466        Ok(Self {
6467            span: ::treesitter_types::Span::from(node),
6468            arguments: match node.child_by_field_name("arguments") {
6469                Some(child) => Some(<Arguments as ::treesitter_types::FromNode>::from_node(
6470                    child, src,
6471                )?),
6472                None => None,
6473            },
6474            constructor: {
6475                let child = node.child_by_field_name("constructor").ok_or_else(|| {
6476                    ::treesitter_types::ParseError::missing_field("constructor", node)
6477                })?;
6478                <PrimaryExpression as ::treesitter_types::FromNode>::from_node(child, src)?
6479            },
6480            type_arguments: match node.child_by_field_name("type_arguments") {
6481                Some(child) => Some(<TypeArguments as ::treesitter_types::FromNode>::from_node(
6482                    child, src,
6483                )?),
6484                None => None,
6485            },
6486        })
6487    }
6488}
6489impl ::treesitter_types::Spanned for NewExpression<'_> {
6490    fn span(&self) -> ::treesitter_types::Span {
6491        self.span
6492    }
6493}
6494#[derive(Debug, Clone, PartialEq, Eq)]
6495pub struct NonNullExpression<'tree> {
6496    pub span: ::treesitter_types::Span,
6497    pub children: Expression<'tree>,
6498}
6499impl<'tree> ::treesitter_types::FromNode<'tree> for NonNullExpression<'tree> {
6500    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
6501    fn from_node(
6502        node: ::tree_sitter::Node<'tree>,
6503        src: &'tree [u8],
6504    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
6505        debug_assert_eq!(node.kind(), "non_null_expression");
6506        Ok(Self {
6507            span: ::treesitter_types::Span::from(node),
6508            children: {
6509                #[allow(clippy::suspicious_else_formatting)]
6510                let non_field_children = {
6511                    let mut cursor = node.walk();
6512                    let mut result = ::std::vec::Vec::new();
6513                    if cursor.goto_first_child() {
6514                        loop {
6515                            if cursor.field_name().is_none()
6516                                && cursor.node().is_named()
6517                                && !cursor.node().is_extra()
6518                            {
6519                                result.push(cursor.node());
6520                            }
6521                            if !cursor.goto_next_sibling() {
6522                                break;
6523                            }
6524                        }
6525                    }
6526                    result
6527                };
6528                let child = if let Some(&c) = non_field_children.first() {
6529                    c
6530                } else {
6531                    let mut fallback_cursor = node.walk();
6532                    let mut fallback_child = None;
6533                    if fallback_cursor.goto_first_child() {
6534                        loop {
6535                            if fallback_cursor.field_name().is_none()
6536                                && !fallback_cursor.node().is_extra()
6537                            {
6538                                let candidate = fallback_cursor.node();
6539                                #[allow(clippy::needless_question_mark)]
6540                                if (|| -> ::core::result::Result<
6541                                    _,
6542                                    ::treesitter_types::ParseError,
6543                                > {
6544                                    let child = candidate;
6545                                    Ok(
6546                                        <Expression as ::treesitter_types::FromNode>::from_node(
6547                                            child,
6548                                            src,
6549                                        )?,
6550                                    )
6551                                })()
6552                                    .is_ok()
6553                                {
6554                                    fallback_child = Some(candidate);
6555                                    break;
6556                                }
6557                            }
6558                            if !fallback_cursor.goto_next_sibling() {
6559                                break;
6560                            }
6561                        }
6562                    }
6563                    if fallback_child.is_none() {
6564                        let mut cursor2 = node.walk();
6565                        if cursor2.goto_first_child() {
6566                            loop {
6567                                if cursor2.node().is_named() && !cursor2.node().is_extra() {
6568                                    let candidate = cursor2.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                                            <Expression 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 !cursor2.goto_next_sibling() {
6589                                    break;
6590                                }
6591                            }
6592                        }
6593                    }
6594                    fallback_child.ok_or_else(|| {
6595                        ::treesitter_types::ParseError::missing_field("children", node)
6596                    })?
6597                };
6598                <Expression as ::treesitter_types::FromNode>::from_node(child, src)?
6599            },
6600        })
6601    }
6602}
6603impl ::treesitter_types::Spanned for NonNullExpression<'_> {
6604    fn span(&self) -> ::treesitter_types::Span {
6605        self.span
6606    }
6607}
6608#[derive(Debug, Clone, PartialEq, Eq)]
6609pub struct Object<'tree> {
6610    pub span: ::treesitter_types::Span,
6611    pub children: ::std::vec::Vec<ObjectChildren<'tree>>,
6612}
6613impl<'tree> ::treesitter_types::FromNode<'tree> for Object<'tree> {
6614    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
6615    fn from_node(
6616        node: ::tree_sitter::Node<'tree>,
6617        src: &'tree [u8],
6618    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
6619        debug_assert_eq!(node.kind(), "object");
6620        Ok(Self {
6621            span: ::treesitter_types::Span::from(node),
6622            children: {
6623                #[allow(clippy::suspicious_else_formatting)]
6624                let non_field_children = {
6625                    let mut cursor = node.walk();
6626                    let mut result = ::std::vec::Vec::new();
6627                    if cursor.goto_first_child() {
6628                        loop {
6629                            if cursor.field_name().is_none()
6630                                && cursor.node().is_named()
6631                                && !cursor.node().is_extra()
6632                            {
6633                                result.push(cursor.node());
6634                            }
6635                            if !cursor.goto_next_sibling() {
6636                                break;
6637                            }
6638                        }
6639                    }
6640                    result
6641                };
6642                let mut items = ::std::vec::Vec::new();
6643                for child in non_field_children {
6644                    items.push(<ObjectChildren as ::treesitter_types::FromNode>::from_node(
6645                        child, src,
6646                    )?);
6647                }
6648                items
6649            },
6650        })
6651    }
6652}
6653impl ::treesitter_types::Spanned for Object<'_> {
6654    fn span(&self) -> ::treesitter_types::Span {
6655        self.span
6656    }
6657}
6658#[derive(Debug, Clone, PartialEq, Eq)]
6659pub struct ObjectAssignmentPattern<'tree> {
6660    pub span: ::treesitter_types::Span,
6661    pub left: ObjectAssignmentPatternLeft<'tree>,
6662    pub right: Expression<'tree>,
6663}
6664impl<'tree> ::treesitter_types::FromNode<'tree> for ObjectAssignmentPattern<'tree> {
6665    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
6666    fn from_node(
6667        node: ::tree_sitter::Node<'tree>,
6668        src: &'tree [u8],
6669    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
6670        debug_assert_eq!(node.kind(), "object_assignment_pattern");
6671        Ok(Self {
6672            span: ::treesitter_types::Span::from(node),
6673            left: {
6674                let child = node
6675                    .child_by_field_name("left")
6676                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("left", node))?;
6677                <ObjectAssignmentPatternLeft as ::treesitter_types::FromNode>::from_node(
6678                    child, src,
6679                )?
6680            },
6681            right: {
6682                let child = node
6683                    .child_by_field_name("right")
6684                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("right", node))?;
6685                <Expression as ::treesitter_types::FromNode>::from_node(child, src)?
6686            },
6687        })
6688    }
6689}
6690impl ::treesitter_types::Spanned for ObjectAssignmentPattern<'_> {
6691    fn span(&self) -> ::treesitter_types::Span {
6692        self.span
6693    }
6694}
6695#[derive(Debug, Clone, PartialEq, Eq)]
6696pub struct ObjectPattern<'tree> {
6697    pub span: ::treesitter_types::Span,
6698    pub children: ::std::vec::Vec<ObjectPatternChildren<'tree>>,
6699}
6700impl<'tree> ::treesitter_types::FromNode<'tree> for ObjectPattern<'tree> {
6701    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
6702    fn from_node(
6703        node: ::tree_sitter::Node<'tree>,
6704        src: &'tree [u8],
6705    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
6706        debug_assert_eq!(node.kind(), "object_pattern");
6707        Ok(Self {
6708            span: ::treesitter_types::Span::from(node),
6709            children: {
6710                #[allow(clippy::suspicious_else_formatting)]
6711                let non_field_children = {
6712                    let mut cursor = node.walk();
6713                    let mut result = ::std::vec::Vec::new();
6714                    if cursor.goto_first_child() {
6715                        loop {
6716                            if cursor.field_name().is_none()
6717                                && cursor.node().is_named()
6718                                && !cursor.node().is_extra()
6719                            {
6720                                result.push(cursor.node());
6721                            }
6722                            if !cursor.goto_next_sibling() {
6723                                break;
6724                            }
6725                        }
6726                    }
6727                    result
6728                };
6729                let mut items = ::std::vec::Vec::new();
6730                for child in non_field_children {
6731                    items.push(
6732                        <ObjectPatternChildren as ::treesitter_types::FromNode>::from_node(
6733                            child, src,
6734                        )?,
6735                    );
6736                }
6737                items
6738            },
6739        })
6740    }
6741}
6742impl ::treesitter_types::Spanned for ObjectPattern<'_> {
6743    fn span(&self) -> ::treesitter_types::Span {
6744        self.span
6745    }
6746}
6747#[derive(Debug, Clone, PartialEq, Eq)]
6748pub struct ObjectType<'tree> {
6749    pub span: ::treesitter_types::Span,
6750    pub children: ::std::vec::Vec<ObjectTypeChildren<'tree>>,
6751}
6752impl<'tree> ::treesitter_types::FromNode<'tree> for ObjectType<'tree> {
6753    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
6754    fn from_node(
6755        node: ::tree_sitter::Node<'tree>,
6756        src: &'tree [u8],
6757    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
6758        debug_assert_eq!(node.kind(), "object_type");
6759        Ok(Self {
6760            span: ::treesitter_types::Span::from(node),
6761            children: {
6762                #[allow(clippy::suspicious_else_formatting)]
6763                let non_field_children = {
6764                    let mut cursor = node.walk();
6765                    let mut result = ::std::vec::Vec::new();
6766                    if cursor.goto_first_child() {
6767                        loop {
6768                            if cursor.field_name().is_none()
6769                                && cursor.node().is_named()
6770                                && !cursor.node().is_extra()
6771                            {
6772                                result.push(cursor.node());
6773                            }
6774                            if !cursor.goto_next_sibling() {
6775                                break;
6776                            }
6777                        }
6778                    }
6779                    result
6780                };
6781                let mut items = ::std::vec::Vec::new();
6782                for child in non_field_children {
6783                    items.push(
6784                        <ObjectTypeChildren as ::treesitter_types::FromNode>::from_node(
6785                            child, src,
6786                        )?,
6787                    );
6788                }
6789                items
6790            },
6791        })
6792    }
6793}
6794impl ::treesitter_types::Spanned for ObjectType<'_> {
6795    fn span(&self) -> ::treesitter_types::Span {
6796        self.span
6797    }
6798}
6799#[derive(Debug, Clone, PartialEq, Eq)]
6800pub struct OmittingTypeAnnotation<'tree> {
6801    pub span: ::treesitter_types::Span,
6802    pub children: Type<'tree>,
6803}
6804impl<'tree> ::treesitter_types::FromNode<'tree> for OmittingTypeAnnotation<'tree> {
6805    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
6806    fn from_node(
6807        node: ::tree_sitter::Node<'tree>,
6808        src: &'tree [u8],
6809    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
6810        debug_assert_eq!(node.kind(), "omitting_type_annotation");
6811        Ok(Self {
6812            span: ::treesitter_types::Span::from(node),
6813            children: {
6814                #[allow(clippy::suspicious_else_formatting)]
6815                let non_field_children = {
6816                    let mut cursor = node.walk();
6817                    let mut result = ::std::vec::Vec::new();
6818                    if cursor.goto_first_child() {
6819                        loop {
6820                            if cursor.field_name().is_none()
6821                                && cursor.node().is_named()
6822                                && !cursor.node().is_extra()
6823                            {
6824                                result.push(cursor.node());
6825                            }
6826                            if !cursor.goto_next_sibling() {
6827                                break;
6828                            }
6829                        }
6830                    }
6831                    result
6832                };
6833                let child = if let Some(&c) = non_field_children.first() {
6834                    c
6835                } else {
6836                    let mut fallback_cursor = node.walk();
6837                    let mut fallback_child = None;
6838                    if fallback_cursor.goto_first_child() {
6839                        loop {
6840                            if fallback_cursor.field_name().is_none()
6841                                && !fallback_cursor.node().is_extra()
6842                            {
6843                                let candidate = fallback_cursor.node();
6844                                #[allow(clippy::needless_question_mark)]
6845                                if (|| -> ::core::result::Result<
6846                                    _,
6847                                    ::treesitter_types::ParseError,
6848                                > {
6849                                    let child = candidate;
6850                                    Ok(
6851                                        <Type as ::treesitter_types::FromNode>::from_node(
6852                                            child,
6853                                            src,
6854                                        )?,
6855                                    )
6856                                })()
6857                                    .is_ok()
6858                                {
6859                                    fallback_child = Some(candidate);
6860                                    break;
6861                                }
6862                            }
6863                            if !fallback_cursor.goto_next_sibling() {
6864                                break;
6865                            }
6866                        }
6867                    }
6868                    if fallback_child.is_none() {
6869                        let mut cursor2 = node.walk();
6870                        if cursor2.goto_first_child() {
6871                            loop {
6872                                if cursor2.node().is_named() && !cursor2.node().is_extra() {
6873                                    let candidate = cursor2.node();
6874                                    #[allow(clippy::needless_question_mark)]
6875                                    if (|| -> ::core::result::Result<
6876                                        _,
6877                                        ::treesitter_types::ParseError,
6878                                    > {
6879                                        let child = candidate;
6880                                        Ok(
6881                                            <Type as ::treesitter_types::FromNode>::from_node(
6882                                                child,
6883                                                src,
6884                                            )?,
6885                                        )
6886                                    })()
6887                                        .is_ok()
6888                                    {
6889                                        fallback_child = Some(candidate);
6890                                        break;
6891                                    }
6892                                }
6893                                if !cursor2.goto_next_sibling() {
6894                                    break;
6895                                }
6896                            }
6897                        }
6898                    }
6899                    fallback_child.ok_or_else(|| {
6900                        ::treesitter_types::ParseError::missing_field("children", node)
6901                    })?
6902                };
6903                <Type as ::treesitter_types::FromNode>::from_node(child, src)?
6904            },
6905        })
6906    }
6907}
6908impl ::treesitter_types::Spanned for OmittingTypeAnnotation<'_> {
6909    fn span(&self) -> ::treesitter_types::Span {
6910        self.span
6911    }
6912}
6913#[derive(Debug, Clone, PartialEq, Eq)]
6914pub struct OptingTypeAnnotation<'tree> {
6915    pub span: ::treesitter_types::Span,
6916    pub children: Type<'tree>,
6917}
6918impl<'tree> ::treesitter_types::FromNode<'tree> for OptingTypeAnnotation<'tree> {
6919    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
6920    fn from_node(
6921        node: ::tree_sitter::Node<'tree>,
6922        src: &'tree [u8],
6923    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
6924        debug_assert_eq!(node.kind(), "opting_type_annotation");
6925        Ok(Self {
6926            span: ::treesitter_types::Span::from(node),
6927            children: {
6928                #[allow(clippy::suspicious_else_formatting)]
6929                let non_field_children = {
6930                    let mut cursor = node.walk();
6931                    let mut result = ::std::vec::Vec::new();
6932                    if cursor.goto_first_child() {
6933                        loop {
6934                            if cursor.field_name().is_none()
6935                                && cursor.node().is_named()
6936                                && !cursor.node().is_extra()
6937                            {
6938                                result.push(cursor.node());
6939                            }
6940                            if !cursor.goto_next_sibling() {
6941                                break;
6942                            }
6943                        }
6944                    }
6945                    result
6946                };
6947                let child = if let Some(&c) = non_field_children.first() {
6948                    c
6949                } else {
6950                    let mut fallback_cursor = node.walk();
6951                    let mut fallback_child = None;
6952                    if fallback_cursor.goto_first_child() {
6953                        loop {
6954                            if fallback_cursor.field_name().is_none()
6955                                && !fallback_cursor.node().is_extra()
6956                            {
6957                                let candidate = fallback_cursor.node();
6958                                #[allow(clippy::needless_question_mark)]
6959                                if (|| -> ::core::result::Result<
6960                                    _,
6961                                    ::treesitter_types::ParseError,
6962                                > {
6963                                    let child = candidate;
6964                                    Ok(
6965                                        <Type as ::treesitter_types::FromNode>::from_node(
6966                                            child,
6967                                            src,
6968                                        )?,
6969                                    )
6970                                })()
6971                                    .is_ok()
6972                                {
6973                                    fallback_child = Some(candidate);
6974                                    break;
6975                                }
6976                            }
6977                            if !fallback_cursor.goto_next_sibling() {
6978                                break;
6979                            }
6980                        }
6981                    }
6982                    if fallback_child.is_none() {
6983                        let mut cursor2 = node.walk();
6984                        if cursor2.goto_first_child() {
6985                            loop {
6986                                if cursor2.node().is_named() && !cursor2.node().is_extra() {
6987                                    let candidate = cursor2.node();
6988                                    #[allow(clippy::needless_question_mark)]
6989                                    if (|| -> ::core::result::Result<
6990                                        _,
6991                                        ::treesitter_types::ParseError,
6992                                    > {
6993                                        let child = candidate;
6994                                        Ok(
6995                                            <Type as ::treesitter_types::FromNode>::from_node(
6996                                                child,
6997                                                src,
6998                                            )?,
6999                                        )
7000                                    })()
7001                                        .is_ok()
7002                                    {
7003                                        fallback_child = Some(candidate);
7004                                        break;
7005                                    }
7006                                }
7007                                if !cursor2.goto_next_sibling() {
7008                                    break;
7009                                }
7010                            }
7011                        }
7012                    }
7013                    fallback_child.ok_or_else(|| {
7014                        ::treesitter_types::ParseError::missing_field("children", node)
7015                    })?
7016                };
7017                <Type as ::treesitter_types::FromNode>::from_node(child, src)?
7018            },
7019        })
7020    }
7021}
7022impl ::treesitter_types::Spanned for OptingTypeAnnotation<'_> {
7023    fn span(&self) -> ::treesitter_types::Span {
7024        self.span
7025    }
7026}
7027#[derive(Debug, Clone, PartialEq, Eq)]
7028pub struct OptionalChain<'tree> {
7029    pub span: ::treesitter_types::Span,
7030    text: &'tree str,
7031}
7032impl<'tree> ::treesitter_types::FromNode<'tree> for OptionalChain<'tree> {
7033    fn from_node(
7034        node: ::tree_sitter::Node<'tree>,
7035        src: &'tree [u8],
7036    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
7037        debug_assert_eq!(node.kind(), "optional_chain");
7038        Ok(Self {
7039            span: ::treesitter_types::Span::from(node),
7040            text: node.utf8_text(src)?,
7041        })
7042    }
7043}
7044impl<'tree> ::treesitter_types::LeafNode<'tree> for OptionalChain<'tree> {
7045    fn text(&self) -> &'tree str {
7046        self.text
7047    }
7048}
7049impl ::treesitter_types::Spanned for OptionalChain<'_> {
7050    fn span(&self) -> ::treesitter_types::Span {
7051        self.span
7052    }
7053}
7054#[derive(Debug, Clone, PartialEq, Eq)]
7055pub struct OptionalParameter<'tree> {
7056    pub span: ::treesitter_types::Span,
7057    pub decorator: ::std::vec::Vec<Decorator<'tree>>,
7058    pub name: ::core::option::Option<Identifier<'tree>>,
7059    pub pattern: ::core::option::Option<OptionalParameterPattern<'tree>>,
7060    pub r#type: ::core::option::Option<TypeAnnotation<'tree>>,
7061    pub value: ::core::option::Option<Expression<'tree>>,
7062    pub children: ::std::vec::Vec<OptionalParameterChildren<'tree>>,
7063}
7064impl<'tree> ::treesitter_types::FromNode<'tree> for OptionalParameter<'tree> {
7065    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
7066    fn from_node(
7067        node: ::tree_sitter::Node<'tree>,
7068        src: &'tree [u8],
7069    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
7070        debug_assert_eq!(node.kind(), "optional_parameter");
7071        Ok(Self {
7072            span: ::treesitter_types::Span::from(node),
7073            decorator: {
7074                let mut cursor = node.walk();
7075                let mut items = ::std::vec::Vec::new();
7076                for child in node.children_by_field_name("decorator", &mut cursor) {
7077                    items.push(<Decorator as ::treesitter_types::FromNode>::from_node(
7078                        child, src,
7079                    )?);
7080                }
7081                items
7082            },
7083            name: match node.child_by_field_name("name") {
7084                Some(child) => Some(<Identifier as ::treesitter_types::FromNode>::from_node(
7085                    child, src,
7086                )?),
7087                None => None,
7088            },
7089            pattern: match node.child_by_field_name("pattern") {
7090                Some(child) => Some(
7091                    <OptionalParameterPattern as ::treesitter_types::FromNode>::from_node(
7092                        child, src,
7093                    )?,
7094                ),
7095                None => None,
7096            },
7097            r#type: match node.child_by_field_name("type") {
7098                Some(child) => Some(<TypeAnnotation as ::treesitter_types::FromNode>::from_node(
7099                    child, src,
7100                )?),
7101                None => None,
7102            },
7103            value: match node.child_by_field_name("value") {
7104                Some(child) => Some(<Expression as ::treesitter_types::FromNode>::from_node(
7105                    child, src,
7106                )?),
7107                None => None,
7108            },
7109            children: {
7110                #[allow(clippy::suspicious_else_formatting)]
7111                let non_field_children = {
7112                    let mut cursor = node.walk();
7113                    let mut result = ::std::vec::Vec::new();
7114                    if cursor.goto_first_child() {
7115                        loop {
7116                            if cursor.field_name().is_none()
7117                                && cursor.node().is_named()
7118                                && !cursor.node().is_extra()
7119                            {
7120                                result.push(cursor.node());
7121                            }
7122                            if !cursor.goto_next_sibling() {
7123                                break;
7124                            }
7125                        }
7126                    }
7127                    result
7128                };
7129                let mut items = ::std::vec::Vec::new();
7130                for child in non_field_children {
7131                    items.push(
7132                        <OptionalParameterChildren as ::treesitter_types::FromNode>::from_node(
7133                            child, src,
7134                        )?,
7135                    );
7136                }
7137                items
7138            },
7139        })
7140    }
7141}
7142impl ::treesitter_types::Spanned for OptionalParameter<'_> {
7143    fn span(&self) -> ::treesitter_types::Span {
7144        self.span
7145    }
7146}
7147#[derive(Debug, Clone, PartialEq, Eq)]
7148pub struct OptionalType<'tree> {
7149    pub span: ::treesitter_types::Span,
7150    pub children: Type<'tree>,
7151}
7152impl<'tree> ::treesitter_types::FromNode<'tree> for OptionalType<'tree> {
7153    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
7154    fn from_node(
7155        node: ::tree_sitter::Node<'tree>,
7156        src: &'tree [u8],
7157    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
7158        debug_assert_eq!(node.kind(), "optional_type");
7159        Ok(Self {
7160            span: ::treesitter_types::Span::from(node),
7161            children: {
7162                #[allow(clippy::suspicious_else_formatting)]
7163                let non_field_children = {
7164                    let mut cursor = node.walk();
7165                    let mut result = ::std::vec::Vec::new();
7166                    if cursor.goto_first_child() {
7167                        loop {
7168                            if cursor.field_name().is_none()
7169                                && cursor.node().is_named()
7170                                && !cursor.node().is_extra()
7171                            {
7172                                result.push(cursor.node());
7173                            }
7174                            if !cursor.goto_next_sibling() {
7175                                break;
7176                            }
7177                        }
7178                    }
7179                    result
7180                };
7181                let child = if let Some(&c) = non_field_children.first() {
7182                    c
7183                } else {
7184                    let mut fallback_cursor = node.walk();
7185                    let mut fallback_child = None;
7186                    if fallback_cursor.goto_first_child() {
7187                        loop {
7188                            if fallback_cursor.field_name().is_none()
7189                                && !fallback_cursor.node().is_extra()
7190                            {
7191                                let candidate = fallback_cursor.node();
7192                                #[allow(clippy::needless_question_mark)]
7193                                if (|| -> ::core::result::Result<
7194                                    _,
7195                                    ::treesitter_types::ParseError,
7196                                > {
7197                                    let child = candidate;
7198                                    Ok(
7199                                        <Type as ::treesitter_types::FromNode>::from_node(
7200                                            child,
7201                                            src,
7202                                        )?,
7203                                    )
7204                                })()
7205                                    .is_ok()
7206                                {
7207                                    fallback_child = Some(candidate);
7208                                    break;
7209                                }
7210                            }
7211                            if !fallback_cursor.goto_next_sibling() {
7212                                break;
7213                            }
7214                        }
7215                    }
7216                    if fallback_child.is_none() {
7217                        let mut cursor2 = node.walk();
7218                        if cursor2.goto_first_child() {
7219                            loop {
7220                                if cursor2.node().is_named() && !cursor2.node().is_extra() {
7221                                    let candidate = cursor2.node();
7222                                    #[allow(clippy::needless_question_mark)]
7223                                    if (|| -> ::core::result::Result<
7224                                        _,
7225                                        ::treesitter_types::ParseError,
7226                                    > {
7227                                        let child = candidate;
7228                                        Ok(
7229                                            <Type as ::treesitter_types::FromNode>::from_node(
7230                                                child,
7231                                                src,
7232                                            )?,
7233                                        )
7234                                    })()
7235                                        .is_ok()
7236                                    {
7237                                        fallback_child = Some(candidate);
7238                                        break;
7239                                    }
7240                                }
7241                                if !cursor2.goto_next_sibling() {
7242                                    break;
7243                                }
7244                            }
7245                        }
7246                    }
7247                    fallback_child.ok_or_else(|| {
7248                        ::treesitter_types::ParseError::missing_field("children", node)
7249                    })?
7250                };
7251                <Type as ::treesitter_types::FromNode>::from_node(child, src)?
7252            },
7253        })
7254    }
7255}
7256impl ::treesitter_types::Spanned for OptionalType<'_> {
7257    fn span(&self) -> ::treesitter_types::Span {
7258        self.span
7259    }
7260}
7261#[derive(Debug, Clone, PartialEq, Eq)]
7262pub struct OverrideModifier<'tree> {
7263    pub span: ::treesitter_types::Span,
7264    text: &'tree str,
7265}
7266impl<'tree> ::treesitter_types::FromNode<'tree> for OverrideModifier<'tree> {
7267    fn from_node(
7268        node: ::tree_sitter::Node<'tree>,
7269        src: &'tree [u8],
7270    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
7271        debug_assert_eq!(node.kind(), "override_modifier");
7272        Ok(Self {
7273            span: ::treesitter_types::Span::from(node),
7274            text: node.utf8_text(src)?,
7275        })
7276    }
7277}
7278impl<'tree> ::treesitter_types::LeafNode<'tree> for OverrideModifier<'tree> {
7279    fn text(&self) -> &'tree str {
7280        self.text
7281    }
7282}
7283impl ::treesitter_types::Spanned for OverrideModifier<'_> {
7284    fn span(&self) -> ::treesitter_types::Span {
7285        self.span
7286    }
7287}
7288#[derive(Debug, Clone, PartialEq, Eq)]
7289pub struct Pair<'tree> {
7290    pub span: ::treesitter_types::Span,
7291    pub key: PairKey<'tree>,
7292    pub value: Expression<'tree>,
7293}
7294impl<'tree> ::treesitter_types::FromNode<'tree> for Pair<'tree> {
7295    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
7296    fn from_node(
7297        node: ::tree_sitter::Node<'tree>,
7298        src: &'tree [u8],
7299    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
7300        debug_assert_eq!(node.kind(), "pair");
7301        Ok(Self {
7302            span: ::treesitter_types::Span::from(node),
7303            key: {
7304                let child = node
7305                    .child_by_field_name("key")
7306                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("key", node))?;
7307                <PairKey as ::treesitter_types::FromNode>::from_node(child, src)?
7308            },
7309            value: {
7310                let child = node
7311                    .child_by_field_name("value")
7312                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("value", node))?;
7313                <Expression as ::treesitter_types::FromNode>::from_node(child, src)?
7314            },
7315        })
7316    }
7317}
7318impl ::treesitter_types::Spanned for Pair<'_> {
7319    fn span(&self) -> ::treesitter_types::Span {
7320        self.span
7321    }
7322}
7323#[derive(Debug, Clone, PartialEq, Eq)]
7324pub struct PairPattern<'tree> {
7325    pub span: ::treesitter_types::Span,
7326    pub key: PairPatternKey<'tree>,
7327    pub value: PairPatternValue<'tree>,
7328}
7329impl<'tree> ::treesitter_types::FromNode<'tree> for PairPattern<'tree> {
7330    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
7331    fn from_node(
7332        node: ::tree_sitter::Node<'tree>,
7333        src: &'tree [u8],
7334    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
7335        debug_assert_eq!(node.kind(), "pair_pattern");
7336        Ok(Self {
7337            span: ::treesitter_types::Span::from(node),
7338            key: {
7339                let child = node
7340                    .child_by_field_name("key")
7341                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("key", node))?;
7342                <PairPatternKey as ::treesitter_types::FromNode>::from_node(child, src)?
7343            },
7344            value: {
7345                let child = node
7346                    .child_by_field_name("value")
7347                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("value", node))?;
7348                <PairPatternValue as ::treesitter_types::FromNode>::from_node(child, src)?
7349            },
7350        })
7351    }
7352}
7353impl ::treesitter_types::Spanned for PairPattern<'_> {
7354    fn span(&self) -> ::treesitter_types::Span {
7355        self.span
7356    }
7357}
7358#[derive(Debug, Clone, PartialEq, Eq)]
7359pub struct ParenthesizedExpression<'tree> {
7360    pub span: ::treesitter_types::Span,
7361    pub r#type: ::core::option::Option<TypeAnnotation<'tree>>,
7362    pub children: ParenthesizedExpressionChildren<'tree>,
7363}
7364impl<'tree> ::treesitter_types::FromNode<'tree> for ParenthesizedExpression<'tree> {
7365    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
7366    fn from_node(
7367        node: ::tree_sitter::Node<'tree>,
7368        src: &'tree [u8],
7369    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
7370        debug_assert_eq!(node.kind(), "parenthesized_expression");
7371        Ok(Self {
7372            span: ::treesitter_types::Span::from(node),
7373            r#type: match node.child_by_field_name("type") {
7374                Some(child) => Some(<TypeAnnotation as ::treesitter_types::FromNode>::from_node(
7375                    child, src,
7376                )?),
7377                None => None,
7378            },
7379            children: {
7380                #[allow(clippy::suspicious_else_formatting)]
7381                let non_field_children = {
7382                    let mut cursor = node.walk();
7383                    let mut result = ::std::vec::Vec::new();
7384                    if cursor.goto_first_child() {
7385                        loop {
7386                            if cursor.field_name().is_none()
7387                                && cursor.node().is_named()
7388                                && !cursor.node().is_extra()
7389                            {
7390                                result.push(cursor.node());
7391                            }
7392                            if !cursor.goto_next_sibling() {
7393                                break;
7394                            }
7395                        }
7396                    }
7397                    result
7398                };
7399                let child = if let Some(&c) = non_field_children.first() {
7400                    c
7401                } else {
7402                    let mut fallback_cursor = node.walk();
7403                    let mut fallback_child = None;
7404                    if fallback_cursor.goto_first_child() {
7405                        loop {
7406                            if fallback_cursor.field_name().is_none()
7407                                && !fallback_cursor.node().is_extra()
7408                            {
7409                                let candidate = fallback_cursor.node();
7410                                #[allow(clippy::needless_question_mark)]
7411                                if (|| -> ::core::result::Result<
7412                                    _,
7413                                    ::treesitter_types::ParseError,
7414                                > {
7415                                    let child = candidate;
7416                                    Ok(
7417                                        <ParenthesizedExpressionChildren as ::treesitter_types::FromNode>::from_node(
7418                                            child,
7419                                            src,
7420                                        )?,
7421                                    )
7422                                })()
7423                                    .is_ok()
7424                                {
7425                                    fallback_child = Some(candidate);
7426                                    break;
7427                                }
7428                            }
7429                            if !fallback_cursor.goto_next_sibling() {
7430                                break;
7431                            }
7432                        }
7433                    }
7434                    if fallback_child.is_none() {
7435                        let mut cursor2 = node.walk();
7436                        if cursor2.goto_first_child() {
7437                            loop {
7438                                if cursor2.node().is_named() && !cursor2.node().is_extra() {
7439                                    let candidate = cursor2.node();
7440                                    #[allow(clippy::needless_question_mark)]
7441                                    if (|| -> ::core::result::Result<
7442                                        _,
7443                                        ::treesitter_types::ParseError,
7444                                    > {
7445                                        let child = candidate;
7446                                        Ok(
7447                                            <ParenthesizedExpressionChildren as ::treesitter_types::FromNode>::from_node(
7448                                                child,
7449                                                src,
7450                                            )?,
7451                                        )
7452                                    })()
7453                                        .is_ok()
7454                                    {
7455                                        fallback_child = Some(candidate);
7456                                        break;
7457                                    }
7458                                }
7459                                if !cursor2.goto_next_sibling() {
7460                                    break;
7461                                }
7462                            }
7463                        }
7464                    }
7465                    fallback_child.ok_or_else(|| {
7466                        ::treesitter_types::ParseError::missing_field("children", node)
7467                    })?
7468                };
7469                <ParenthesizedExpressionChildren as ::treesitter_types::FromNode>::from_node(
7470                    child, src,
7471                )?
7472            },
7473        })
7474    }
7475}
7476impl ::treesitter_types::Spanned for ParenthesizedExpression<'_> {
7477    fn span(&self) -> ::treesitter_types::Span {
7478        self.span
7479    }
7480}
7481#[derive(Debug, Clone, PartialEq, Eq)]
7482pub struct ParenthesizedType<'tree> {
7483    pub span: ::treesitter_types::Span,
7484    pub children: Type<'tree>,
7485}
7486impl<'tree> ::treesitter_types::FromNode<'tree> for ParenthesizedType<'tree> {
7487    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
7488    fn from_node(
7489        node: ::tree_sitter::Node<'tree>,
7490        src: &'tree [u8],
7491    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
7492        debug_assert_eq!(node.kind(), "parenthesized_type");
7493        Ok(Self {
7494            span: ::treesitter_types::Span::from(node),
7495            children: {
7496                #[allow(clippy::suspicious_else_formatting)]
7497                let non_field_children = {
7498                    let mut cursor = node.walk();
7499                    let mut result = ::std::vec::Vec::new();
7500                    if cursor.goto_first_child() {
7501                        loop {
7502                            if cursor.field_name().is_none()
7503                                && cursor.node().is_named()
7504                                && !cursor.node().is_extra()
7505                            {
7506                                result.push(cursor.node());
7507                            }
7508                            if !cursor.goto_next_sibling() {
7509                                break;
7510                            }
7511                        }
7512                    }
7513                    result
7514                };
7515                let child = if let Some(&c) = non_field_children.first() {
7516                    c
7517                } else {
7518                    let mut fallback_cursor = node.walk();
7519                    let mut fallback_child = None;
7520                    if fallback_cursor.goto_first_child() {
7521                        loop {
7522                            if fallback_cursor.field_name().is_none()
7523                                && !fallback_cursor.node().is_extra()
7524                            {
7525                                let candidate = fallback_cursor.node();
7526                                #[allow(clippy::needless_question_mark)]
7527                                if (|| -> ::core::result::Result<
7528                                    _,
7529                                    ::treesitter_types::ParseError,
7530                                > {
7531                                    let child = candidate;
7532                                    Ok(
7533                                        <Type as ::treesitter_types::FromNode>::from_node(
7534                                            child,
7535                                            src,
7536                                        )?,
7537                                    )
7538                                })()
7539                                    .is_ok()
7540                                {
7541                                    fallback_child = Some(candidate);
7542                                    break;
7543                                }
7544                            }
7545                            if !fallback_cursor.goto_next_sibling() {
7546                                break;
7547                            }
7548                        }
7549                    }
7550                    if fallback_child.is_none() {
7551                        let mut cursor2 = node.walk();
7552                        if cursor2.goto_first_child() {
7553                            loop {
7554                                if cursor2.node().is_named() && !cursor2.node().is_extra() {
7555                                    let candidate = cursor2.node();
7556                                    #[allow(clippy::needless_question_mark)]
7557                                    if (|| -> ::core::result::Result<
7558                                        _,
7559                                        ::treesitter_types::ParseError,
7560                                    > {
7561                                        let child = candidate;
7562                                        Ok(
7563                                            <Type as ::treesitter_types::FromNode>::from_node(
7564                                                child,
7565                                                src,
7566                                            )?,
7567                                        )
7568                                    })()
7569                                        .is_ok()
7570                                    {
7571                                        fallback_child = Some(candidate);
7572                                        break;
7573                                    }
7574                                }
7575                                if !cursor2.goto_next_sibling() {
7576                                    break;
7577                                }
7578                            }
7579                        }
7580                    }
7581                    fallback_child.ok_or_else(|| {
7582                        ::treesitter_types::ParseError::missing_field("children", node)
7583                    })?
7584                };
7585                <Type as ::treesitter_types::FromNode>::from_node(child, src)?
7586            },
7587        })
7588    }
7589}
7590impl ::treesitter_types::Spanned for ParenthesizedType<'_> {
7591    fn span(&self) -> ::treesitter_types::Span {
7592        self.span
7593    }
7594}
7595#[derive(Debug, Clone, PartialEq, Eq)]
7596pub struct PredefinedType<'tree> {
7597    pub span: ::treesitter_types::Span,
7598    text: &'tree str,
7599}
7600impl<'tree> ::treesitter_types::FromNode<'tree> for PredefinedType<'tree> {
7601    fn from_node(
7602        node: ::tree_sitter::Node<'tree>,
7603        src: &'tree [u8],
7604    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
7605        debug_assert_eq!(node.kind(), "predefined_type");
7606        Ok(Self {
7607            span: ::treesitter_types::Span::from(node),
7608            text: node.utf8_text(src)?,
7609        })
7610    }
7611}
7612impl<'tree> ::treesitter_types::LeafNode<'tree> for PredefinedType<'tree> {
7613    fn text(&self) -> &'tree str {
7614        self.text
7615    }
7616}
7617impl ::treesitter_types::Spanned for PredefinedType<'_> {
7618    fn span(&self) -> ::treesitter_types::Span {
7619        self.span
7620    }
7621}
7622#[derive(Debug, Clone, PartialEq, Eq)]
7623pub struct Program<'tree> {
7624    pub span: ::treesitter_types::Span,
7625    pub children: ::std::vec::Vec<ProgramChildren<'tree>>,
7626}
7627impl<'tree> ::treesitter_types::FromNode<'tree> for Program<'tree> {
7628    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
7629    fn from_node(
7630        node: ::tree_sitter::Node<'tree>,
7631        src: &'tree [u8],
7632    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
7633        debug_assert_eq!(node.kind(), "program");
7634        Ok(Self {
7635            span: ::treesitter_types::Span::from(node),
7636            children: {
7637                #[allow(clippy::suspicious_else_formatting)]
7638                let non_field_children = {
7639                    let mut cursor = node.walk();
7640                    let mut result = ::std::vec::Vec::new();
7641                    if cursor.goto_first_child() {
7642                        loop {
7643                            if cursor.field_name().is_none()
7644                                && cursor.node().is_named()
7645                                && !cursor.node().is_extra()
7646                            {
7647                                result.push(cursor.node());
7648                            }
7649                            if !cursor.goto_next_sibling() {
7650                                break;
7651                            }
7652                        }
7653                    }
7654                    result
7655                };
7656                let mut items = ::std::vec::Vec::new();
7657                for child in non_field_children {
7658                    items.push(
7659                        <ProgramChildren as ::treesitter_types::FromNode>::from_node(child, src)?,
7660                    );
7661                }
7662                items
7663            },
7664        })
7665    }
7666}
7667impl ::treesitter_types::Spanned for Program<'_> {
7668    fn span(&self) -> ::treesitter_types::Span {
7669        self.span
7670    }
7671}
7672#[derive(Debug, Clone, PartialEq, Eq)]
7673pub struct PropertySignature<'tree> {
7674    pub span: ::treesitter_types::Span,
7675    pub name: PropertySignatureName<'tree>,
7676    pub r#type: ::core::option::Option<TypeAnnotation<'tree>>,
7677    pub children: ::std::vec::Vec<PropertySignatureChildren<'tree>>,
7678}
7679impl<'tree> ::treesitter_types::FromNode<'tree> for PropertySignature<'tree> {
7680    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
7681    fn from_node(
7682        node: ::tree_sitter::Node<'tree>,
7683        src: &'tree [u8],
7684    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
7685        debug_assert_eq!(node.kind(), "property_signature");
7686        Ok(Self {
7687            span: ::treesitter_types::Span::from(node),
7688            name: {
7689                let child = node
7690                    .child_by_field_name("name")
7691                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("name", node))?;
7692                <PropertySignatureName as ::treesitter_types::FromNode>::from_node(child, src)?
7693            },
7694            r#type: match node.child_by_field_name("type") {
7695                Some(child) => Some(<TypeAnnotation as ::treesitter_types::FromNode>::from_node(
7696                    child, src,
7697                )?),
7698                None => None,
7699            },
7700            children: {
7701                #[allow(clippy::suspicious_else_formatting)]
7702                let non_field_children = {
7703                    let mut cursor = node.walk();
7704                    let mut result = ::std::vec::Vec::new();
7705                    if cursor.goto_first_child() {
7706                        loop {
7707                            if cursor.field_name().is_none()
7708                                && cursor.node().is_named()
7709                                && !cursor.node().is_extra()
7710                            {
7711                                result.push(cursor.node());
7712                            }
7713                            if !cursor.goto_next_sibling() {
7714                                break;
7715                            }
7716                        }
7717                    }
7718                    result
7719                };
7720                let mut items = ::std::vec::Vec::new();
7721                for child in non_field_children {
7722                    items.push(
7723                        <PropertySignatureChildren as ::treesitter_types::FromNode>::from_node(
7724                            child, src,
7725                        )?,
7726                    );
7727                }
7728                items
7729            },
7730        })
7731    }
7732}
7733impl ::treesitter_types::Spanned for PropertySignature<'_> {
7734    fn span(&self) -> ::treesitter_types::Span {
7735        self.span
7736    }
7737}
7738#[derive(Debug, Clone, PartialEq, Eq)]
7739pub struct PublicFieldDefinition<'tree> {
7740    pub span: ::treesitter_types::Span,
7741    pub decorator: ::std::vec::Vec<Decorator<'tree>>,
7742    pub name: PublicFieldDefinitionName<'tree>,
7743    pub r#type: ::core::option::Option<TypeAnnotation<'tree>>,
7744    pub value: ::core::option::Option<Expression<'tree>>,
7745    pub children: ::std::vec::Vec<PublicFieldDefinitionChildren<'tree>>,
7746}
7747impl<'tree> ::treesitter_types::FromNode<'tree> for PublicFieldDefinition<'tree> {
7748    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
7749    fn from_node(
7750        node: ::tree_sitter::Node<'tree>,
7751        src: &'tree [u8],
7752    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
7753        debug_assert_eq!(node.kind(), "public_field_definition");
7754        Ok(Self {
7755            span: ::treesitter_types::Span::from(node),
7756            decorator: {
7757                let mut cursor = node.walk();
7758                let mut items = ::std::vec::Vec::new();
7759                for child in node.children_by_field_name("decorator", &mut cursor) {
7760                    items.push(<Decorator as ::treesitter_types::FromNode>::from_node(
7761                        child, src,
7762                    )?);
7763                }
7764                items
7765            },
7766            name: {
7767                let child = node
7768                    .child_by_field_name("name")
7769                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("name", node))?;
7770                <PublicFieldDefinitionName as ::treesitter_types::FromNode>::from_node(child, src)?
7771            },
7772            r#type: match node.child_by_field_name("type") {
7773                Some(child) => Some(<TypeAnnotation as ::treesitter_types::FromNode>::from_node(
7774                    child, src,
7775                )?),
7776                None => None,
7777            },
7778            value: match node.child_by_field_name("value") {
7779                Some(child) => Some(<Expression as ::treesitter_types::FromNode>::from_node(
7780                    child, src,
7781                )?),
7782                None => None,
7783            },
7784            children: {
7785                #[allow(clippy::suspicious_else_formatting)]
7786                let non_field_children = {
7787                    let mut cursor = node.walk();
7788                    let mut result = ::std::vec::Vec::new();
7789                    if cursor.goto_first_child() {
7790                        loop {
7791                            if cursor.field_name().is_none()
7792                                && cursor.node().is_named()
7793                                && !cursor.node().is_extra()
7794                            {
7795                                result.push(cursor.node());
7796                            }
7797                            if !cursor.goto_next_sibling() {
7798                                break;
7799                            }
7800                        }
7801                    }
7802                    result
7803                };
7804                let mut items = ::std::vec::Vec::new();
7805                for child in non_field_children {
7806                    items.push(
7807                        <PublicFieldDefinitionChildren as ::treesitter_types::FromNode>::from_node(
7808                            child, src,
7809                        )?,
7810                    );
7811                }
7812                items
7813            },
7814        })
7815    }
7816}
7817impl ::treesitter_types::Spanned for PublicFieldDefinition<'_> {
7818    fn span(&self) -> ::treesitter_types::Span {
7819        self.span
7820    }
7821}
7822#[derive(Debug, Clone, PartialEq, Eq)]
7823pub struct ReadonlyType<'tree> {
7824    pub span: ::treesitter_types::Span,
7825    pub children: Type<'tree>,
7826}
7827impl<'tree> ::treesitter_types::FromNode<'tree> for ReadonlyType<'tree> {
7828    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
7829    fn from_node(
7830        node: ::tree_sitter::Node<'tree>,
7831        src: &'tree [u8],
7832    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
7833        debug_assert_eq!(node.kind(), "readonly_type");
7834        Ok(Self {
7835            span: ::treesitter_types::Span::from(node),
7836            children: {
7837                #[allow(clippy::suspicious_else_formatting)]
7838                let non_field_children = {
7839                    let mut cursor = node.walk();
7840                    let mut result = ::std::vec::Vec::new();
7841                    if cursor.goto_first_child() {
7842                        loop {
7843                            if cursor.field_name().is_none()
7844                                && cursor.node().is_named()
7845                                && !cursor.node().is_extra()
7846                            {
7847                                result.push(cursor.node());
7848                            }
7849                            if !cursor.goto_next_sibling() {
7850                                break;
7851                            }
7852                        }
7853                    }
7854                    result
7855                };
7856                let child = if let Some(&c) = non_field_children.first() {
7857                    c
7858                } else {
7859                    let mut fallback_cursor = node.walk();
7860                    let mut fallback_child = None;
7861                    if fallback_cursor.goto_first_child() {
7862                        loop {
7863                            if fallback_cursor.field_name().is_none()
7864                                && !fallback_cursor.node().is_extra()
7865                            {
7866                                let candidate = fallback_cursor.node();
7867                                #[allow(clippy::needless_question_mark)]
7868                                if (|| -> ::core::result::Result<
7869                                    _,
7870                                    ::treesitter_types::ParseError,
7871                                > {
7872                                    let child = candidate;
7873                                    Ok(
7874                                        <Type as ::treesitter_types::FromNode>::from_node(
7875                                            child,
7876                                            src,
7877                                        )?,
7878                                    )
7879                                })()
7880                                    .is_ok()
7881                                {
7882                                    fallback_child = Some(candidate);
7883                                    break;
7884                                }
7885                            }
7886                            if !fallback_cursor.goto_next_sibling() {
7887                                break;
7888                            }
7889                        }
7890                    }
7891                    if fallback_child.is_none() {
7892                        let mut cursor2 = node.walk();
7893                        if cursor2.goto_first_child() {
7894                            loop {
7895                                if cursor2.node().is_named() && !cursor2.node().is_extra() {
7896                                    let candidate = cursor2.node();
7897                                    #[allow(clippy::needless_question_mark)]
7898                                    if (|| -> ::core::result::Result<
7899                                        _,
7900                                        ::treesitter_types::ParseError,
7901                                    > {
7902                                        let child = candidate;
7903                                        Ok(
7904                                            <Type as ::treesitter_types::FromNode>::from_node(
7905                                                child,
7906                                                src,
7907                                            )?,
7908                                        )
7909                                    })()
7910                                        .is_ok()
7911                                    {
7912                                        fallback_child = Some(candidate);
7913                                        break;
7914                                    }
7915                                }
7916                                if !cursor2.goto_next_sibling() {
7917                                    break;
7918                                }
7919                            }
7920                        }
7921                    }
7922                    fallback_child.ok_or_else(|| {
7923                        ::treesitter_types::ParseError::missing_field("children", node)
7924                    })?
7925                };
7926                <Type as ::treesitter_types::FromNode>::from_node(child, src)?
7927            },
7928        })
7929    }
7930}
7931impl ::treesitter_types::Spanned for ReadonlyType<'_> {
7932    fn span(&self) -> ::treesitter_types::Span {
7933        self.span
7934    }
7935}
7936#[derive(Debug, Clone, PartialEq, Eq)]
7937pub struct Regex<'tree> {
7938    pub span: ::treesitter_types::Span,
7939    pub flags: ::core::option::Option<RegexFlags<'tree>>,
7940    pub pattern: RegexPattern<'tree>,
7941}
7942impl<'tree> ::treesitter_types::FromNode<'tree> for Regex<'tree> {
7943    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
7944    fn from_node(
7945        node: ::tree_sitter::Node<'tree>,
7946        src: &'tree [u8],
7947    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
7948        debug_assert_eq!(node.kind(), "regex");
7949        Ok(Self {
7950            span: ::treesitter_types::Span::from(node),
7951            flags: match node.child_by_field_name("flags") {
7952                Some(child) => Some(<RegexFlags as ::treesitter_types::FromNode>::from_node(
7953                    child, src,
7954                )?),
7955                None => None,
7956            },
7957            pattern: {
7958                let child = node.child_by_field_name("pattern").ok_or_else(|| {
7959                    ::treesitter_types::ParseError::missing_field("pattern", node)
7960                })?;
7961                <RegexPattern as ::treesitter_types::FromNode>::from_node(child, src)?
7962            },
7963        })
7964    }
7965}
7966impl ::treesitter_types::Spanned for Regex<'_> {
7967    fn span(&self) -> ::treesitter_types::Span {
7968        self.span
7969    }
7970}
7971#[derive(Debug, Clone, PartialEq, Eq)]
7972pub struct RequiredParameter<'tree> {
7973    pub span: ::treesitter_types::Span,
7974    pub decorator: ::std::vec::Vec<Decorator<'tree>>,
7975    pub name: ::core::option::Option<RequiredParameterName<'tree>>,
7976    pub pattern: ::core::option::Option<RequiredParameterPattern<'tree>>,
7977    pub r#type: ::core::option::Option<TypeAnnotation<'tree>>,
7978    pub value: ::core::option::Option<Expression<'tree>>,
7979    pub children: ::std::vec::Vec<RequiredParameterChildren<'tree>>,
7980}
7981impl<'tree> ::treesitter_types::FromNode<'tree> for RequiredParameter<'tree> {
7982    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
7983    fn from_node(
7984        node: ::tree_sitter::Node<'tree>,
7985        src: &'tree [u8],
7986    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
7987        debug_assert_eq!(node.kind(), "required_parameter");
7988        Ok(Self {
7989            span: ::treesitter_types::Span::from(node),
7990            decorator: {
7991                let mut cursor = node.walk();
7992                let mut items = ::std::vec::Vec::new();
7993                for child in node.children_by_field_name("decorator", &mut cursor) {
7994                    items.push(<Decorator as ::treesitter_types::FromNode>::from_node(
7995                        child, src,
7996                    )?);
7997                }
7998                items
7999            },
8000            name: match node.child_by_field_name("name") {
8001                Some(child) => Some(
8002                    <RequiredParameterName as ::treesitter_types::FromNode>::from_node(child, src)?,
8003                ),
8004                None => None,
8005            },
8006            pattern: match node.child_by_field_name("pattern") {
8007                Some(child) => Some(
8008                    <RequiredParameterPattern as ::treesitter_types::FromNode>::from_node(
8009                        child, src,
8010                    )?,
8011                ),
8012                None => None,
8013            },
8014            r#type: match node.child_by_field_name("type") {
8015                Some(child) => Some(<TypeAnnotation as ::treesitter_types::FromNode>::from_node(
8016                    child, src,
8017                )?),
8018                None => None,
8019            },
8020            value: match node.child_by_field_name("value") {
8021                Some(child) => Some(<Expression as ::treesitter_types::FromNode>::from_node(
8022                    child, src,
8023                )?),
8024                None => None,
8025            },
8026            children: {
8027                #[allow(clippy::suspicious_else_formatting)]
8028                let non_field_children = {
8029                    let mut cursor = node.walk();
8030                    let mut result = ::std::vec::Vec::new();
8031                    if cursor.goto_first_child() {
8032                        loop {
8033                            if cursor.field_name().is_none()
8034                                && cursor.node().is_named()
8035                                && !cursor.node().is_extra()
8036                            {
8037                                result.push(cursor.node());
8038                            }
8039                            if !cursor.goto_next_sibling() {
8040                                break;
8041                            }
8042                        }
8043                    }
8044                    result
8045                };
8046                let mut items = ::std::vec::Vec::new();
8047                for child in non_field_children {
8048                    items.push(
8049                        <RequiredParameterChildren as ::treesitter_types::FromNode>::from_node(
8050                            child, src,
8051                        )?,
8052                    );
8053                }
8054                items
8055            },
8056        })
8057    }
8058}
8059impl ::treesitter_types::Spanned for RequiredParameter<'_> {
8060    fn span(&self) -> ::treesitter_types::Span {
8061        self.span
8062    }
8063}
8064#[derive(Debug, Clone, PartialEq, Eq)]
8065pub struct RestPattern<'tree> {
8066    pub span: ::treesitter_types::Span,
8067    pub children: RestPatternChildren<'tree>,
8068}
8069impl<'tree> ::treesitter_types::FromNode<'tree> for RestPattern<'tree> {
8070    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
8071    fn from_node(
8072        node: ::tree_sitter::Node<'tree>,
8073        src: &'tree [u8],
8074    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
8075        debug_assert_eq!(node.kind(), "rest_pattern");
8076        Ok(Self {
8077            span: ::treesitter_types::Span::from(node),
8078            children: {
8079                #[allow(clippy::suspicious_else_formatting)]
8080                let non_field_children = {
8081                    let mut cursor = node.walk();
8082                    let mut result = ::std::vec::Vec::new();
8083                    if cursor.goto_first_child() {
8084                        loop {
8085                            if cursor.field_name().is_none()
8086                                && cursor.node().is_named()
8087                                && !cursor.node().is_extra()
8088                            {
8089                                result.push(cursor.node());
8090                            }
8091                            if !cursor.goto_next_sibling() {
8092                                break;
8093                            }
8094                        }
8095                    }
8096                    result
8097                };
8098                let child = if let Some(&c) = non_field_children.first() {
8099                    c
8100                } else {
8101                    let mut fallback_cursor = node.walk();
8102                    let mut fallback_child = None;
8103                    if fallback_cursor.goto_first_child() {
8104                        loop {
8105                            if fallback_cursor.field_name().is_none()
8106                                && !fallback_cursor.node().is_extra()
8107                            {
8108                                let candidate = fallback_cursor.node();
8109                                #[allow(clippy::needless_question_mark)]
8110                                if (|| -> ::core::result::Result<
8111                                    _,
8112                                    ::treesitter_types::ParseError,
8113                                > {
8114                                    let child = candidate;
8115                                    Ok(
8116                                        <RestPatternChildren as ::treesitter_types::FromNode>::from_node(
8117                                            child,
8118                                            src,
8119                                        )?,
8120                                    )
8121                                })()
8122                                    .is_ok()
8123                                {
8124                                    fallback_child = Some(candidate);
8125                                    break;
8126                                }
8127                            }
8128                            if !fallback_cursor.goto_next_sibling() {
8129                                break;
8130                            }
8131                        }
8132                    }
8133                    if fallback_child.is_none() {
8134                        let mut cursor2 = node.walk();
8135                        if cursor2.goto_first_child() {
8136                            loop {
8137                                if cursor2.node().is_named() && !cursor2.node().is_extra() {
8138                                    let candidate = cursor2.node();
8139                                    #[allow(clippy::needless_question_mark)]
8140                                    if (|| -> ::core::result::Result<
8141                                        _,
8142                                        ::treesitter_types::ParseError,
8143                                    > {
8144                                        let child = candidate;
8145                                        Ok(
8146                                            <RestPatternChildren as ::treesitter_types::FromNode>::from_node(
8147                                                child,
8148                                                src,
8149                                            )?,
8150                                        )
8151                                    })()
8152                                        .is_ok()
8153                                    {
8154                                        fallback_child = Some(candidate);
8155                                        break;
8156                                    }
8157                                }
8158                                if !cursor2.goto_next_sibling() {
8159                                    break;
8160                                }
8161                            }
8162                        }
8163                    }
8164                    fallback_child.ok_or_else(|| {
8165                        ::treesitter_types::ParseError::missing_field("children", node)
8166                    })?
8167                };
8168                <RestPatternChildren as ::treesitter_types::FromNode>::from_node(child, src)?
8169            },
8170        })
8171    }
8172}
8173impl ::treesitter_types::Spanned for RestPattern<'_> {
8174    fn span(&self) -> ::treesitter_types::Span {
8175        self.span
8176    }
8177}
8178#[derive(Debug, Clone, PartialEq, Eq)]
8179pub struct RestType<'tree> {
8180    pub span: ::treesitter_types::Span,
8181    pub children: Type<'tree>,
8182}
8183impl<'tree> ::treesitter_types::FromNode<'tree> for RestType<'tree> {
8184    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
8185    fn from_node(
8186        node: ::tree_sitter::Node<'tree>,
8187        src: &'tree [u8],
8188    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
8189        debug_assert_eq!(node.kind(), "rest_type");
8190        Ok(Self {
8191            span: ::treesitter_types::Span::from(node),
8192            children: {
8193                #[allow(clippy::suspicious_else_formatting)]
8194                let non_field_children = {
8195                    let mut cursor = node.walk();
8196                    let mut result = ::std::vec::Vec::new();
8197                    if cursor.goto_first_child() {
8198                        loop {
8199                            if cursor.field_name().is_none()
8200                                && cursor.node().is_named()
8201                                && !cursor.node().is_extra()
8202                            {
8203                                result.push(cursor.node());
8204                            }
8205                            if !cursor.goto_next_sibling() {
8206                                break;
8207                            }
8208                        }
8209                    }
8210                    result
8211                };
8212                let child = if let Some(&c) = non_field_children.first() {
8213                    c
8214                } else {
8215                    let mut fallback_cursor = node.walk();
8216                    let mut fallback_child = None;
8217                    if fallback_cursor.goto_first_child() {
8218                        loop {
8219                            if fallback_cursor.field_name().is_none()
8220                                && !fallback_cursor.node().is_extra()
8221                            {
8222                                let candidate = fallback_cursor.node();
8223                                #[allow(clippy::needless_question_mark)]
8224                                if (|| -> ::core::result::Result<
8225                                    _,
8226                                    ::treesitter_types::ParseError,
8227                                > {
8228                                    let child = candidate;
8229                                    Ok(
8230                                        <Type as ::treesitter_types::FromNode>::from_node(
8231                                            child,
8232                                            src,
8233                                        )?,
8234                                    )
8235                                })()
8236                                    .is_ok()
8237                                {
8238                                    fallback_child = Some(candidate);
8239                                    break;
8240                                }
8241                            }
8242                            if !fallback_cursor.goto_next_sibling() {
8243                                break;
8244                            }
8245                        }
8246                    }
8247                    if fallback_child.is_none() {
8248                        let mut cursor2 = node.walk();
8249                        if cursor2.goto_first_child() {
8250                            loop {
8251                                if cursor2.node().is_named() && !cursor2.node().is_extra() {
8252                                    let candidate = cursor2.node();
8253                                    #[allow(clippy::needless_question_mark)]
8254                                    if (|| -> ::core::result::Result<
8255                                        _,
8256                                        ::treesitter_types::ParseError,
8257                                    > {
8258                                        let child = candidate;
8259                                        Ok(
8260                                            <Type as ::treesitter_types::FromNode>::from_node(
8261                                                child,
8262                                                src,
8263                                            )?,
8264                                        )
8265                                    })()
8266                                        .is_ok()
8267                                    {
8268                                        fallback_child = Some(candidate);
8269                                        break;
8270                                    }
8271                                }
8272                                if !cursor2.goto_next_sibling() {
8273                                    break;
8274                                }
8275                            }
8276                        }
8277                    }
8278                    fallback_child.ok_or_else(|| {
8279                        ::treesitter_types::ParseError::missing_field("children", node)
8280                    })?
8281                };
8282                <Type as ::treesitter_types::FromNode>::from_node(child, src)?
8283            },
8284        })
8285    }
8286}
8287impl ::treesitter_types::Spanned for RestType<'_> {
8288    fn span(&self) -> ::treesitter_types::Span {
8289        self.span
8290    }
8291}
8292#[derive(Debug, Clone, PartialEq, Eq)]
8293pub struct ReturnStatement<'tree> {
8294    pub span: ::treesitter_types::Span,
8295    pub children: ::core::option::Option<ReturnStatementChildren<'tree>>,
8296}
8297impl<'tree> ::treesitter_types::FromNode<'tree> for ReturnStatement<'tree> {
8298    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
8299    fn from_node(
8300        node: ::tree_sitter::Node<'tree>,
8301        src: &'tree [u8],
8302    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
8303        debug_assert_eq!(node.kind(), "return_statement");
8304        Ok(Self {
8305            span: ::treesitter_types::Span::from(node),
8306            children: {
8307                #[allow(clippy::suspicious_else_formatting)]
8308                let non_field_children = {
8309                    let mut cursor = node.walk();
8310                    let mut result = ::std::vec::Vec::new();
8311                    if cursor.goto_first_child() {
8312                        loop {
8313                            if cursor.field_name().is_none()
8314                                && cursor.node().is_named()
8315                                && !cursor.node().is_extra()
8316                            {
8317                                result.push(cursor.node());
8318                            }
8319                            if !cursor.goto_next_sibling() {
8320                                break;
8321                            }
8322                        }
8323                    }
8324                    result
8325                };
8326                match non_field_children.first() {
8327                    Some(&child) => Some(
8328                        <ReturnStatementChildren as ::treesitter_types::FromNode>::from_node(
8329                            child, src,
8330                        )?,
8331                    ),
8332                    None => None,
8333                }
8334            },
8335        })
8336    }
8337}
8338impl ::treesitter_types::Spanned for ReturnStatement<'_> {
8339    fn span(&self) -> ::treesitter_types::Span {
8340        self.span
8341    }
8342}
8343#[derive(Debug, Clone, PartialEq, Eq)]
8344pub struct SatisfiesExpression<'tree> {
8345    pub span: ::treesitter_types::Span,
8346    pub children: ::std::vec::Vec<SatisfiesExpressionChildren<'tree>>,
8347}
8348impl<'tree> ::treesitter_types::FromNode<'tree> for SatisfiesExpression<'tree> {
8349    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
8350    fn from_node(
8351        node: ::tree_sitter::Node<'tree>,
8352        src: &'tree [u8],
8353    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
8354        debug_assert_eq!(node.kind(), "satisfies_expression");
8355        Ok(Self {
8356            span: ::treesitter_types::Span::from(node),
8357            children: {
8358                #[allow(clippy::suspicious_else_formatting)]
8359                let non_field_children = {
8360                    let mut cursor = node.walk();
8361                    let mut result = ::std::vec::Vec::new();
8362                    if cursor.goto_first_child() {
8363                        loop {
8364                            if cursor.field_name().is_none()
8365                                && cursor.node().is_named()
8366                                && !cursor.node().is_extra()
8367                            {
8368                                result.push(cursor.node());
8369                            }
8370                            if !cursor.goto_next_sibling() {
8371                                break;
8372                            }
8373                        }
8374                    }
8375                    result
8376                };
8377                let mut items = ::std::vec::Vec::new();
8378                for child in non_field_children {
8379                    items.push(
8380                        <SatisfiesExpressionChildren as ::treesitter_types::FromNode>::from_node(
8381                            child, src,
8382                        )?,
8383                    );
8384                }
8385                items
8386            },
8387        })
8388    }
8389}
8390impl ::treesitter_types::Spanned for SatisfiesExpression<'_> {
8391    fn span(&self) -> ::treesitter_types::Span {
8392        self.span
8393    }
8394}
8395#[derive(Debug, Clone, PartialEq, Eq)]
8396pub struct SequenceExpression<'tree> {
8397    pub span: ::treesitter_types::Span,
8398    pub children: ::std::vec::Vec<Expression<'tree>>,
8399}
8400impl<'tree> ::treesitter_types::FromNode<'tree> for SequenceExpression<'tree> {
8401    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
8402    fn from_node(
8403        node: ::tree_sitter::Node<'tree>,
8404        src: &'tree [u8],
8405    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
8406        debug_assert_eq!(node.kind(), "sequence_expression");
8407        Ok(Self {
8408            span: ::treesitter_types::Span::from(node),
8409            children: {
8410                #[allow(clippy::suspicious_else_formatting)]
8411                let non_field_children = {
8412                    let mut cursor = node.walk();
8413                    let mut result = ::std::vec::Vec::new();
8414                    if cursor.goto_first_child() {
8415                        loop {
8416                            if cursor.field_name().is_none()
8417                                && cursor.node().is_named()
8418                                && !cursor.node().is_extra()
8419                            {
8420                                result.push(cursor.node());
8421                            }
8422                            if !cursor.goto_next_sibling() {
8423                                break;
8424                            }
8425                        }
8426                    }
8427                    result
8428                };
8429                let mut items = ::std::vec::Vec::new();
8430                for child in non_field_children {
8431                    items.push(<Expression as ::treesitter_types::FromNode>::from_node(
8432                        child, src,
8433                    )?);
8434                }
8435                items
8436            },
8437        })
8438    }
8439}
8440impl ::treesitter_types::Spanned for SequenceExpression<'_> {
8441    fn span(&self) -> ::treesitter_types::Span {
8442        self.span
8443    }
8444}
8445#[derive(Debug, Clone, PartialEq, Eq)]
8446pub struct SpreadElement<'tree> {
8447    pub span: ::treesitter_types::Span,
8448    pub children: Expression<'tree>,
8449}
8450impl<'tree> ::treesitter_types::FromNode<'tree> for SpreadElement<'tree> {
8451    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
8452    fn from_node(
8453        node: ::tree_sitter::Node<'tree>,
8454        src: &'tree [u8],
8455    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
8456        debug_assert_eq!(node.kind(), "spread_element");
8457        Ok(Self {
8458            span: ::treesitter_types::Span::from(node),
8459            children: {
8460                #[allow(clippy::suspicious_else_formatting)]
8461                let non_field_children = {
8462                    let mut cursor = node.walk();
8463                    let mut result = ::std::vec::Vec::new();
8464                    if cursor.goto_first_child() {
8465                        loop {
8466                            if cursor.field_name().is_none()
8467                                && cursor.node().is_named()
8468                                && !cursor.node().is_extra()
8469                            {
8470                                result.push(cursor.node());
8471                            }
8472                            if !cursor.goto_next_sibling() {
8473                                break;
8474                            }
8475                        }
8476                    }
8477                    result
8478                };
8479                let child = if let Some(&c) = non_field_children.first() {
8480                    c
8481                } else {
8482                    let mut fallback_cursor = node.walk();
8483                    let mut fallback_child = None;
8484                    if fallback_cursor.goto_first_child() {
8485                        loop {
8486                            if fallback_cursor.field_name().is_none()
8487                                && !fallback_cursor.node().is_extra()
8488                            {
8489                                let candidate = fallback_cursor.node();
8490                                #[allow(clippy::needless_question_mark)]
8491                                if (|| -> ::core::result::Result<
8492                                    _,
8493                                    ::treesitter_types::ParseError,
8494                                > {
8495                                    let child = candidate;
8496                                    Ok(
8497                                        <Expression as ::treesitter_types::FromNode>::from_node(
8498                                            child,
8499                                            src,
8500                                        )?,
8501                                    )
8502                                })()
8503                                    .is_ok()
8504                                {
8505                                    fallback_child = Some(candidate);
8506                                    break;
8507                                }
8508                            }
8509                            if !fallback_cursor.goto_next_sibling() {
8510                                break;
8511                            }
8512                        }
8513                    }
8514                    if fallback_child.is_none() {
8515                        let mut cursor2 = node.walk();
8516                        if cursor2.goto_first_child() {
8517                            loop {
8518                                if cursor2.node().is_named() && !cursor2.node().is_extra() {
8519                                    let candidate = cursor2.node();
8520                                    #[allow(clippy::needless_question_mark)]
8521                                    if (|| -> ::core::result::Result<
8522                                        _,
8523                                        ::treesitter_types::ParseError,
8524                                    > {
8525                                        let child = candidate;
8526                                        Ok(
8527                                            <Expression as ::treesitter_types::FromNode>::from_node(
8528                                                child,
8529                                                src,
8530                                            )?,
8531                                        )
8532                                    })()
8533                                        .is_ok()
8534                                    {
8535                                        fallback_child = Some(candidate);
8536                                        break;
8537                                    }
8538                                }
8539                                if !cursor2.goto_next_sibling() {
8540                                    break;
8541                                }
8542                            }
8543                        }
8544                    }
8545                    fallback_child.ok_or_else(|| {
8546                        ::treesitter_types::ParseError::missing_field("children", node)
8547                    })?
8548                };
8549                <Expression as ::treesitter_types::FromNode>::from_node(child, src)?
8550            },
8551        })
8552    }
8553}
8554impl ::treesitter_types::Spanned for SpreadElement<'_> {
8555    fn span(&self) -> ::treesitter_types::Span {
8556        self.span
8557    }
8558}
8559#[derive(Debug, Clone, PartialEq, Eq)]
8560pub struct StatementBlock<'tree> {
8561    pub span: ::treesitter_types::Span,
8562    pub children: ::std::vec::Vec<Statement<'tree>>,
8563}
8564impl<'tree> ::treesitter_types::FromNode<'tree> for StatementBlock<'tree> {
8565    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
8566    fn from_node(
8567        node: ::tree_sitter::Node<'tree>,
8568        src: &'tree [u8],
8569    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
8570        debug_assert_eq!(node.kind(), "statement_block");
8571        Ok(Self {
8572            span: ::treesitter_types::Span::from(node),
8573            children: {
8574                #[allow(clippy::suspicious_else_formatting)]
8575                let non_field_children = {
8576                    let mut cursor = node.walk();
8577                    let mut result = ::std::vec::Vec::new();
8578                    if cursor.goto_first_child() {
8579                        loop {
8580                            if cursor.field_name().is_none()
8581                                && cursor.node().is_named()
8582                                && !cursor.node().is_extra()
8583                            {
8584                                result.push(cursor.node());
8585                            }
8586                            if !cursor.goto_next_sibling() {
8587                                break;
8588                            }
8589                        }
8590                    }
8591                    result
8592                };
8593                let mut items = ::std::vec::Vec::new();
8594                for child in non_field_children {
8595                    items.push(<Statement as ::treesitter_types::FromNode>::from_node(
8596                        child, src,
8597                    )?);
8598                }
8599                items
8600            },
8601        })
8602    }
8603}
8604impl ::treesitter_types::Spanned for StatementBlock<'_> {
8605    fn span(&self) -> ::treesitter_types::Span {
8606        self.span
8607    }
8608}
8609#[derive(Debug, Clone, PartialEq, Eq)]
8610pub struct String<'tree> {
8611    pub span: ::treesitter_types::Span,
8612    pub children: ::std::vec::Vec<StringChildren<'tree>>,
8613}
8614impl<'tree> ::treesitter_types::FromNode<'tree> for String<'tree> {
8615    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
8616    fn from_node(
8617        node: ::tree_sitter::Node<'tree>,
8618        src: &'tree [u8],
8619    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
8620        debug_assert_eq!(node.kind(), "string");
8621        Ok(Self {
8622            span: ::treesitter_types::Span::from(node),
8623            children: {
8624                #[allow(clippy::suspicious_else_formatting)]
8625                let non_field_children = {
8626                    let mut cursor = node.walk();
8627                    let mut result = ::std::vec::Vec::new();
8628                    if cursor.goto_first_child() {
8629                        loop {
8630                            if cursor.field_name().is_none()
8631                                && cursor.node().is_named()
8632                                && !cursor.node().is_extra()
8633                            {
8634                                result.push(cursor.node());
8635                            }
8636                            if !cursor.goto_next_sibling() {
8637                                break;
8638                            }
8639                        }
8640                    }
8641                    result
8642                };
8643                let mut items = ::std::vec::Vec::new();
8644                for child in non_field_children {
8645                    items.push(<StringChildren as ::treesitter_types::FromNode>::from_node(
8646                        child, src,
8647                    )?);
8648                }
8649                items
8650            },
8651        })
8652    }
8653}
8654impl ::treesitter_types::Spanned for String<'_> {
8655    fn span(&self) -> ::treesitter_types::Span {
8656        self.span
8657    }
8658}
8659#[derive(Debug, Clone, PartialEq, Eq)]
8660pub struct SubscriptExpression<'tree> {
8661    pub span: ::treesitter_types::Span,
8662    pub index: SubscriptExpressionIndex<'tree>,
8663    pub object: Expression<'tree>,
8664    pub optional_chain: ::core::option::Option<OptionalChain<'tree>>,
8665}
8666impl<'tree> ::treesitter_types::FromNode<'tree> for SubscriptExpression<'tree> {
8667    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
8668    fn from_node(
8669        node: ::tree_sitter::Node<'tree>,
8670        src: &'tree [u8],
8671    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
8672        debug_assert_eq!(node.kind(), "subscript_expression");
8673        Ok(Self {
8674            span: ::treesitter_types::Span::from(node),
8675            index: {
8676                let child = node
8677                    .child_by_field_name("index")
8678                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("index", node))?;
8679                <SubscriptExpressionIndex as ::treesitter_types::FromNode>::from_node(child, src)?
8680            },
8681            object: {
8682                let child = node
8683                    .child_by_field_name("object")
8684                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("object", node))?;
8685                <Expression as ::treesitter_types::FromNode>::from_node(child, src)?
8686            },
8687            optional_chain: match node.child_by_field_name("optional_chain") {
8688                Some(child) => Some(<OptionalChain as ::treesitter_types::FromNode>::from_node(
8689                    child, src,
8690                )?),
8691                None => None,
8692            },
8693        })
8694    }
8695}
8696impl ::treesitter_types::Spanned for SubscriptExpression<'_> {
8697    fn span(&self) -> ::treesitter_types::Span {
8698        self.span
8699    }
8700}
8701#[derive(Debug, Clone, PartialEq, Eq)]
8702pub struct SwitchBody<'tree> {
8703    pub span: ::treesitter_types::Span,
8704    pub children: ::std::vec::Vec<SwitchBodyChildren<'tree>>,
8705}
8706impl<'tree> ::treesitter_types::FromNode<'tree> for SwitchBody<'tree> {
8707    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
8708    fn from_node(
8709        node: ::tree_sitter::Node<'tree>,
8710        src: &'tree [u8],
8711    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
8712        debug_assert_eq!(node.kind(), "switch_body");
8713        Ok(Self {
8714            span: ::treesitter_types::Span::from(node),
8715            children: {
8716                #[allow(clippy::suspicious_else_formatting)]
8717                let non_field_children = {
8718                    let mut cursor = node.walk();
8719                    let mut result = ::std::vec::Vec::new();
8720                    if cursor.goto_first_child() {
8721                        loop {
8722                            if cursor.field_name().is_none()
8723                                && cursor.node().is_named()
8724                                && !cursor.node().is_extra()
8725                            {
8726                                result.push(cursor.node());
8727                            }
8728                            if !cursor.goto_next_sibling() {
8729                                break;
8730                            }
8731                        }
8732                    }
8733                    result
8734                };
8735                let mut items = ::std::vec::Vec::new();
8736                for child in non_field_children {
8737                    items.push(
8738                        <SwitchBodyChildren as ::treesitter_types::FromNode>::from_node(
8739                            child, src,
8740                        )?,
8741                    );
8742                }
8743                items
8744            },
8745        })
8746    }
8747}
8748impl ::treesitter_types::Spanned for SwitchBody<'_> {
8749    fn span(&self) -> ::treesitter_types::Span {
8750        self.span
8751    }
8752}
8753#[derive(Debug, Clone, PartialEq, Eq)]
8754pub struct SwitchCase<'tree> {
8755    pub span: ::treesitter_types::Span,
8756    pub body: ::std::vec::Vec<Statement<'tree>>,
8757    pub value: SwitchCaseValue<'tree>,
8758}
8759impl<'tree> ::treesitter_types::FromNode<'tree> for SwitchCase<'tree> {
8760    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
8761    fn from_node(
8762        node: ::tree_sitter::Node<'tree>,
8763        src: &'tree [u8],
8764    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
8765        debug_assert_eq!(node.kind(), "switch_case");
8766        Ok(Self {
8767            span: ::treesitter_types::Span::from(node),
8768            body: {
8769                let mut cursor = node.walk();
8770                let mut items = ::std::vec::Vec::new();
8771                for child in node.children_by_field_name("body", &mut cursor) {
8772                    items.push(<Statement as ::treesitter_types::FromNode>::from_node(
8773                        child, src,
8774                    )?);
8775                }
8776                items
8777            },
8778            value: {
8779                let child = node
8780                    .child_by_field_name("value")
8781                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("value", node))?;
8782                <SwitchCaseValue as ::treesitter_types::FromNode>::from_node(child, src)?
8783            },
8784        })
8785    }
8786}
8787impl ::treesitter_types::Spanned for SwitchCase<'_> {
8788    fn span(&self) -> ::treesitter_types::Span {
8789        self.span
8790    }
8791}
8792#[derive(Debug, Clone, PartialEq, Eq)]
8793pub struct SwitchDefault<'tree> {
8794    pub span: ::treesitter_types::Span,
8795    pub body: ::std::vec::Vec<Statement<'tree>>,
8796}
8797impl<'tree> ::treesitter_types::FromNode<'tree> for SwitchDefault<'tree> {
8798    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
8799    fn from_node(
8800        node: ::tree_sitter::Node<'tree>,
8801        src: &'tree [u8],
8802    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
8803        debug_assert_eq!(node.kind(), "switch_default");
8804        Ok(Self {
8805            span: ::treesitter_types::Span::from(node),
8806            body: {
8807                let mut cursor = node.walk();
8808                let mut items = ::std::vec::Vec::new();
8809                for child in node.children_by_field_name("body", &mut cursor) {
8810                    items.push(<Statement as ::treesitter_types::FromNode>::from_node(
8811                        child, src,
8812                    )?);
8813                }
8814                items
8815            },
8816        })
8817    }
8818}
8819impl ::treesitter_types::Spanned for SwitchDefault<'_> {
8820    fn span(&self) -> ::treesitter_types::Span {
8821        self.span
8822    }
8823}
8824#[derive(Debug, Clone, PartialEq, Eq)]
8825pub struct SwitchStatement<'tree> {
8826    pub span: ::treesitter_types::Span,
8827    pub body: SwitchBody<'tree>,
8828    pub value: ParenthesizedExpression<'tree>,
8829}
8830impl<'tree> ::treesitter_types::FromNode<'tree> for SwitchStatement<'tree> {
8831    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
8832    fn from_node(
8833        node: ::tree_sitter::Node<'tree>,
8834        src: &'tree [u8],
8835    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
8836        debug_assert_eq!(node.kind(), "switch_statement");
8837        Ok(Self {
8838            span: ::treesitter_types::Span::from(node),
8839            body: {
8840                let child = node
8841                    .child_by_field_name("body")
8842                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("body", node))?;
8843                <SwitchBody as ::treesitter_types::FromNode>::from_node(child, src)?
8844            },
8845            value: {
8846                let child = node
8847                    .child_by_field_name("value")
8848                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("value", node))?;
8849                <ParenthesizedExpression as ::treesitter_types::FromNode>::from_node(child, src)?
8850            },
8851        })
8852    }
8853}
8854impl ::treesitter_types::Spanned for SwitchStatement<'_> {
8855    fn span(&self) -> ::treesitter_types::Span {
8856        self.span
8857    }
8858}
8859#[derive(Debug, Clone, PartialEq, Eq)]
8860pub struct TemplateLiteralType<'tree> {
8861    pub span: ::treesitter_types::Span,
8862    pub children: ::std::vec::Vec<TemplateLiteralTypeChildren<'tree>>,
8863}
8864impl<'tree> ::treesitter_types::FromNode<'tree> for TemplateLiteralType<'tree> {
8865    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
8866    fn from_node(
8867        node: ::tree_sitter::Node<'tree>,
8868        src: &'tree [u8],
8869    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
8870        debug_assert_eq!(node.kind(), "template_literal_type");
8871        Ok(Self {
8872            span: ::treesitter_types::Span::from(node),
8873            children: {
8874                #[allow(clippy::suspicious_else_formatting)]
8875                let non_field_children = {
8876                    let mut cursor = node.walk();
8877                    let mut result = ::std::vec::Vec::new();
8878                    if cursor.goto_first_child() {
8879                        loop {
8880                            if cursor.field_name().is_none()
8881                                && cursor.node().is_named()
8882                                && !cursor.node().is_extra()
8883                            {
8884                                result.push(cursor.node());
8885                            }
8886                            if !cursor.goto_next_sibling() {
8887                                break;
8888                            }
8889                        }
8890                    }
8891                    result
8892                };
8893                let mut items = ::std::vec::Vec::new();
8894                for child in non_field_children {
8895                    items.push(
8896                        <TemplateLiteralTypeChildren as ::treesitter_types::FromNode>::from_node(
8897                            child, src,
8898                        )?,
8899                    );
8900                }
8901                items
8902            },
8903        })
8904    }
8905}
8906impl ::treesitter_types::Spanned for TemplateLiteralType<'_> {
8907    fn span(&self) -> ::treesitter_types::Span {
8908        self.span
8909    }
8910}
8911#[derive(Debug, Clone, PartialEq, Eq)]
8912pub struct TemplateString<'tree> {
8913    pub span: ::treesitter_types::Span,
8914    pub children: ::std::vec::Vec<TemplateStringChildren<'tree>>,
8915}
8916impl<'tree> ::treesitter_types::FromNode<'tree> for TemplateString<'tree> {
8917    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
8918    fn from_node(
8919        node: ::tree_sitter::Node<'tree>,
8920        src: &'tree [u8],
8921    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
8922        debug_assert_eq!(node.kind(), "template_string");
8923        Ok(Self {
8924            span: ::treesitter_types::Span::from(node),
8925            children: {
8926                #[allow(clippy::suspicious_else_formatting)]
8927                let non_field_children = {
8928                    let mut cursor = node.walk();
8929                    let mut result = ::std::vec::Vec::new();
8930                    if cursor.goto_first_child() {
8931                        loop {
8932                            if cursor.field_name().is_none()
8933                                && cursor.node().is_named()
8934                                && !cursor.node().is_extra()
8935                            {
8936                                result.push(cursor.node());
8937                            }
8938                            if !cursor.goto_next_sibling() {
8939                                break;
8940                            }
8941                        }
8942                    }
8943                    result
8944                };
8945                let mut items = ::std::vec::Vec::new();
8946                for child in non_field_children {
8947                    items.push(
8948                        <TemplateStringChildren as ::treesitter_types::FromNode>::from_node(
8949                            child, src,
8950                        )?,
8951                    );
8952                }
8953                items
8954            },
8955        })
8956    }
8957}
8958impl ::treesitter_types::Spanned for TemplateString<'_> {
8959    fn span(&self) -> ::treesitter_types::Span {
8960        self.span
8961    }
8962}
8963#[derive(Debug, Clone, PartialEq, Eq)]
8964pub struct TemplateSubstitution<'tree> {
8965    pub span: ::treesitter_types::Span,
8966    pub children: TemplateSubstitutionChildren<'tree>,
8967}
8968impl<'tree> ::treesitter_types::FromNode<'tree> for TemplateSubstitution<'tree> {
8969    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
8970    fn from_node(
8971        node: ::tree_sitter::Node<'tree>,
8972        src: &'tree [u8],
8973    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
8974        debug_assert_eq!(node.kind(), "template_substitution");
8975        Ok(Self {
8976            span: ::treesitter_types::Span::from(node),
8977            children: {
8978                #[allow(clippy::suspicious_else_formatting)]
8979                let non_field_children = {
8980                    let mut cursor = node.walk();
8981                    let mut result = ::std::vec::Vec::new();
8982                    if cursor.goto_first_child() {
8983                        loop {
8984                            if cursor.field_name().is_none()
8985                                && cursor.node().is_named()
8986                                && !cursor.node().is_extra()
8987                            {
8988                                result.push(cursor.node());
8989                            }
8990                            if !cursor.goto_next_sibling() {
8991                                break;
8992                            }
8993                        }
8994                    }
8995                    result
8996                };
8997                let child = if let Some(&c) = non_field_children.first() {
8998                    c
8999                } else {
9000                    let mut fallback_cursor = node.walk();
9001                    let mut fallback_child = None;
9002                    if fallback_cursor.goto_first_child() {
9003                        loop {
9004                            if fallback_cursor.field_name().is_none()
9005                                && !fallback_cursor.node().is_extra()
9006                            {
9007                                let candidate = fallback_cursor.node();
9008                                #[allow(clippy::needless_question_mark)]
9009                                if (|| -> ::core::result::Result<
9010                                    _,
9011                                    ::treesitter_types::ParseError,
9012                                > {
9013                                    let child = candidate;
9014                                    Ok(
9015                                        <TemplateSubstitutionChildren as ::treesitter_types::FromNode>::from_node(
9016                                            child,
9017                                            src,
9018                                        )?,
9019                                    )
9020                                })()
9021                                    .is_ok()
9022                                {
9023                                    fallback_child = Some(candidate);
9024                                    break;
9025                                }
9026                            }
9027                            if !fallback_cursor.goto_next_sibling() {
9028                                break;
9029                            }
9030                        }
9031                    }
9032                    if fallback_child.is_none() {
9033                        let mut cursor2 = node.walk();
9034                        if cursor2.goto_first_child() {
9035                            loop {
9036                                if cursor2.node().is_named() && !cursor2.node().is_extra() {
9037                                    let candidate = cursor2.node();
9038                                    #[allow(clippy::needless_question_mark)]
9039                                    if (|| -> ::core::result::Result<
9040                                        _,
9041                                        ::treesitter_types::ParseError,
9042                                    > {
9043                                        let child = candidate;
9044                                        Ok(
9045                                            <TemplateSubstitutionChildren as ::treesitter_types::FromNode>::from_node(
9046                                                child,
9047                                                src,
9048                                            )?,
9049                                        )
9050                                    })()
9051                                        .is_ok()
9052                                    {
9053                                        fallback_child = Some(candidate);
9054                                        break;
9055                                    }
9056                                }
9057                                if !cursor2.goto_next_sibling() {
9058                                    break;
9059                                }
9060                            }
9061                        }
9062                    }
9063                    fallback_child.ok_or_else(|| {
9064                        ::treesitter_types::ParseError::missing_field("children", node)
9065                    })?
9066                };
9067                <TemplateSubstitutionChildren as ::treesitter_types::FromNode>::from_node(
9068                    child, src,
9069                )?
9070            },
9071        })
9072    }
9073}
9074impl ::treesitter_types::Spanned for TemplateSubstitution<'_> {
9075    fn span(&self) -> ::treesitter_types::Span {
9076        self.span
9077    }
9078}
9079#[derive(Debug, Clone, PartialEq, Eq)]
9080pub struct TemplateType<'tree> {
9081    pub span: ::treesitter_types::Span,
9082    pub children: TemplateTypeChildren<'tree>,
9083}
9084impl<'tree> ::treesitter_types::FromNode<'tree> for TemplateType<'tree> {
9085    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
9086    fn from_node(
9087        node: ::tree_sitter::Node<'tree>,
9088        src: &'tree [u8],
9089    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
9090        debug_assert_eq!(node.kind(), "template_type");
9091        Ok(Self {
9092            span: ::treesitter_types::Span::from(node),
9093            children: {
9094                #[allow(clippy::suspicious_else_formatting)]
9095                let non_field_children = {
9096                    let mut cursor = node.walk();
9097                    let mut result = ::std::vec::Vec::new();
9098                    if cursor.goto_first_child() {
9099                        loop {
9100                            if cursor.field_name().is_none()
9101                                && cursor.node().is_named()
9102                                && !cursor.node().is_extra()
9103                            {
9104                                result.push(cursor.node());
9105                            }
9106                            if !cursor.goto_next_sibling() {
9107                                break;
9108                            }
9109                        }
9110                    }
9111                    result
9112                };
9113                let child = if let Some(&c) = non_field_children.first() {
9114                    c
9115                } else {
9116                    let mut fallback_cursor = node.walk();
9117                    let mut fallback_child = None;
9118                    if fallback_cursor.goto_first_child() {
9119                        loop {
9120                            if fallback_cursor.field_name().is_none()
9121                                && !fallback_cursor.node().is_extra()
9122                            {
9123                                let candidate = fallback_cursor.node();
9124                                #[allow(clippy::needless_question_mark)]
9125                                if (|| -> ::core::result::Result<
9126                                    _,
9127                                    ::treesitter_types::ParseError,
9128                                > {
9129                                    let child = candidate;
9130                                    Ok(
9131                                        <TemplateTypeChildren as ::treesitter_types::FromNode>::from_node(
9132                                            child,
9133                                            src,
9134                                        )?,
9135                                    )
9136                                })()
9137                                    .is_ok()
9138                                {
9139                                    fallback_child = Some(candidate);
9140                                    break;
9141                                }
9142                            }
9143                            if !fallback_cursor.goto_next_sibling() {
9144                                break;
9145                            }
9146                        }
9147                    }
9148                    if fallback_child.is_none() {
9149                        let mut cursor2 = node.walk();
9150                        if cursor2.goto_first_child() {
9151                            loop {
9152                                if cursor2.node().is_named() && !cursor2.node().is_extra() {
9153                                    let candidate = cursor2.node();
9154                                    #[allow(clippy::needless_question_mark)]
9155                                    if (|| -> ::core::result::Result<
9156                                        _,
9157                                        ::treesitter_types::ParseError,
9158                                    > {
9159                                        let child = candidate;
9160                                        Ok(
9161                                            <TemplateTypeChildren as ::treesitter_types::FromNode>::from_node(
9162                                                child,
9163                                                src,
9164                                            )?,
9165                                        )
9166                                    })()
9167                                        .is_ok()
9168                                    {
9169                                        fallback_child = Some(candidate);
9170                                        break;
9171                                    }
9172                                }
9173                                if !cursor2.goto_next_sibling() {
9174                                    break;
9175                                }
9176                            }
9177                        }
9178                    }
9179                    fallback_child.ok_or_else(|| {
9180                        ::treesitter_types::ParseError::missing_field("children", node)
9181                    })?
9182                };
9183                <TemplateTypeChildren as ::treesitter_types::FromNode>::from_node(child, src)?
9184            },
9185        })
9186    }
9187}
9188impl ::treesitter_types::Spanned for TemplateType<'_> {
9189    fn span(&self) -> ::treesitter_types::Span {
9190        self.span
9191    }
9192}
9193#[derive(Debug, Clone, PartialEq, Eq)]
9194pub struct TernaryExpression<'tree> {
9195    pub span: ::treesitter_types::Span,
9196    pub alternative: Expression<'tree>,
9197    pub condition: Expression<'tree>,
9198    pub consequence: Expression<'tree>,
9199}
9200impl<'tree> ::treesitter_types::FromNode<'tree> for TernaryExpression<'tree> {
9201    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
9202    fn from_node(
9203        node: ::tree_sitter::Node<'tree>,
9204        src: &'tree [u8],
9205    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
9206        debug_assert_eq!(node.kind(), "ternary_expression");
9207        Ok(Self {
9208            span: ::treesitter_types::Span::from(node),
9209            alternative: {
9210                let child = node.child_by_field_name("alternative").ok_or_else(|| {
9211                    ::treesitter_types::ParseError::missing_field("alternative", node)
9212                })?;
9213                <Expression as ::treesitter_types::FromNode>::from_node(child, src)?
9214            },
9215            condition: {
9216                let child = node.child_by_field_name("condition").ok_or_else(|| {
9217                    ::treesitter_types::ParseError::missing_field("condition", node)
9218                })?;
9219                <Expression as ::treesitter_types::FromNode>::from_node(child, src)?
9220            },
9221            consequence: {
9222                let child = node.child_by_field_name("consequence").ok_or_else(|| {
9223                    ::treesitter_types::ParseError::missing_field("consequence", node)
9224                })?;
9225                <Expression as ::treesitter_types::FromNode>::from_node(child, src)?
9226            },
9227        })
9228    }
9229}
9230impl ::treesitter_types::Spanned for TernaryExpression<'_> {
9231    fn span(&self) -> ::treesitter_types::Span {
9232        self.span
9233    }
9234}
9235#[derive(Debug, Clone, PartialEq, Eq)]
9236pub struct ThrowStatement<'tree> {
9237    pub span: ::treesitter_types::Span,
9238    pub children: ThrowStatementChildren<'tree>,
9239}
9240impl<'tree> ::treesitter_types::FromNode<'tree> for ThrowStatement<'tree> {
9241    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
9242    fn from_node(
9243        node: ::tree_sitter::Node<'tree>,
9244        src: &'tree [u8],
9245    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
9246        debug_assert_eq!(node.kind(), "throw_statement");
9247        Ok(Self {
9248            span: ::treesitter_types::Span::from(node),
9249            children: {
9250                #[allow(clippy::suspicious_else_formatting)]
9251                let non_field_children = {
9252                    let mut cursor = node.walk();
9253                    let mut result = ::std::vec::Vec::new();
9254                    if cursor.goto_first_child() {
9255                        loop {
9256                            if cursor.field_name().is_none()
9257                                && cursor.node().is_named()
9258                                && !cursor.node().is_extra()
9259                            {
9260                                result.push(cursor.node());
9261                            }
9262                            if !cursor.goto_next_sibling() {
9263                                break;
9264                            }
9265                        }
9266                    }
9267                    result
9268                };
9269                let child = if let Some(&c) = non_field_children.first() {
9270                    c
9271                } else {
9272                    let mut fallback_cursor = node.walk();
9273                    let mut fallback_child = None;
9274                    if fallback_cursor.goto_first_child() {
9275                        loop {
9276                            if fallback_cursor.field_name().is_none()
9277                                && !fallback_cursor.node().is_extra()
9278                            {
9279                                let candidate = fallback_cursor.node();
9280                                #[allow(clippy::needless_question_mark)]
9281                                if (|| -> ::core::result::Result<
9282                                    _,
9283                                    ::treesitter_types::ParseError,
9284                                > {
9285                                    let child = candidate;
9286                                    Ok(
9287                                        <ThrowStatementChildren as ::treesitter_types::FromNode>::from_node(
9288                                            child,
9289                                            src,
9290                                        )?,
9291                                    )
9292                                })()
9293                                    .is_ok()
9294                                {
9295                                    fallback_child = Some(candidate);
9296                                    break;
9297                                }
9298                            }
9299                            if !fallback_cursor.goto_next_sibling() {
9300                                break;
9301                            }
9302                        }
9303                    }
9304                    if fallback_child.is_none() {
9305                        let mut cursor2 = node.walk();
9306                        if cursor2.goto_first_child() {
9307                            loop {
9308                                if cursor2.node().is_named() && !cursor2.node().is_extra() {
9309                                    let candidate = cursor2.node();
9310                                    #[allow(clippy::needless_question_mark)]
9311                                    if (|| -> ::core::result::Result<
9312                                        _,
9313                                        ::treesitter_types::ParseError,
9314                                    > {
9315                                        let child = candidate;
9316                                        Ok(
9317                                            <ThrowStatementChildren as ::treesitter_types::FromNode>::from_node(
9318                                                child,
9319                                                src,
9320                                            )?,
9321                                        )
9322                                    })()
9323                                        .is_ok()
9324                                    {
9325                                        fallback_child = Some(candidate);
9326                                        break;
9327                                    }
9328                                }
9329                                if !cursor2.goto_next_sibling() {
9330                                    break;
9331                                }
9332                            }
9333                        }
9334                    }
9335                    fallback_child.ok_or_else(|| {
9336                        ::treesitter_types::ParseError::missing_field("children", node)
9337                    })?
9338                };
9339                <ThrowStatementChildren as ::treesitter_types::FromNode>::from_node(child, src)?
9340            },
9341        })
9342    }
9343}
9344impl ::treesitter_types::Spanned for ThrowStatement<'_> {
9345    fn span(&self) -> ::treesitter_types::Span {
9346        self.span
9347    }
9348}
9349#[derive(Debug, Clone, PartialEq, Eq)]
9350pub struct TryStatement<'tree> {
9351    pub span: ::treesitter_types::Span,
9352    pub body: StatementBlock<'tree>,
9353    pub finalizer: ::core::option::Option<FinallyClause<'tree>>,
9354    pub handler: ::core::option::Option<CatchClause<'tree>>,
9355}
9356impl<'tree> ::treesitter_types::FromNode<'tree> for TryStatement<'tree> {
9357    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
9358    fn from_node(
9359        node: ::tree_sitter::Node<'tree>,
9360        src: &'tree [u8],
9361    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
9362        debug_assert_eq!(node.kind(), "try_statement");
9363        Ok(Self {
9364            span: ::treesitter_types::Span::from(node),
9365            body: {
9366                let child = node
9367                    .child_by_field_name("body")
9368                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("body", node))?;
9369                <StatementBlock as ::treesitter_types::FromNode>::from_node(child, src)?
9370            },
9371            finalizer: match node.child_by_field_name("finalizer") {
9372                Some(child) => Some(<FinallyClause as ::treesitter_types::FromNode>::from_node(
9373                    child, src,
9374                )?),
9375                None => None,
9376            },
9377            handler: match node.child_by_field_name("handler") {
9378                Some(child) => Some(<CatchClause as ::treesitter_types::FromNode>::from_node(
9379                    child, src,
9380                )?),
9381                None => None,
9382            },
9383        })
9384    }
9385}
9386impl ::treesitter_types::Spanned for TryStatement<'_> {
9387    fn span(&self) -> ::treesitter_types::Span {
9388        self.span
9389    }
9390}
9391#[derive(Debug, Clone, PartialEq, Eq)]
9392pub struct TupleType<'tree> {
9393    pub span: ::treesitter_types::Span,
9394    pub children: ::std::vec::Vec<TupleTypeChildren<'tree>>,
9395}
9396impl<'tree> ::treesitter_types::FromNode<'tree> for TupleType<'tree> {
9397    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
9398    fn from_node(
9399        node: ::tree_sitter::Node<'tree>,
9400        src: &'tree [u8],
9401    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
9402        debug_assert_eq!(node.kind(), "tuple_type");
9403        Ok(Self {
9404            span: ::treesitter_types::Span::from(node),
9405            children: {
9406                #[allow(clippy::suspicious_else_formatting)]
9407                let non_field_children = {
9408                    let mut cursor = node.walk();
9409                    let mut result = ::std::vec::Vec::new();
9410                    if cursor.goto_first_child() {
9411                        loop {
9412                            if cursor.field_name().is_none()
9413                                && cursor.node().is_named()
9414                                && !cursor.node().is_extra()
9415                            {
9416                                result.push(cursor.node());
9417                            }
9418                            if !cursor.goto_next_sibling() {
9419                                break;
9420                            }
9421                        }
9422                    }
9423                    result
9424                };
9425                let mut items = ::std::vec::Vec::new();
9426                for child in non_field_children {
9427                    items.push(
9428                        <TupleTypeChildren as ::treesitter_types::FromNode>::from_node(child, src)?,
9429                    );
9430                }
9431                items
9432            },
9433        })
9434    }
9435}
9436impl ::treesitter_types::Spanned for TupleType<'_> {
9437    fn span(&self) -> ::treesitter_types::Span {
9438        self.span
9439    }
9440}
9441#[derive(Debug, Clone, PartialEq, Eq)]
9442pub struct TypeAliasDeclaration<'tree> {
9443    pub span: ::treesitter_types::Span,
9444    pub name: TypeIdentifier<'tree>,
9445    pub type_parameters: ::core::option::Option<TypeParameters<'tree>>,
9446    pub value: Type<'tree>,
9447}
9448impl<'tree> ::treesitter_types::FromNode<'tree> for TypeAliasDeclaration<'tree> {
9449    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
9450    fn from_node(
9451        node: ::tree_sitter::Node<'tree>,
9452        src: &'tree [u8],
9453    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
9454        debug_assert_eq!(node.kind(), "type_alias_declaration");
9455        Ok(Self {
9456            span: ::treesitter_types::Span::from(node),
9457            name: {
9458                let child = node
9459                    .child_by_field_name("name")
9460                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("name", node))?;
9461                <TypeIdentifier as ::treesitter_types::FromNode>::from_node(child, src)?
9462            },
9463            type_parameters: match node.child_by_field_name("type_parameters") {
9464                Some(child) => Some(<TypeParameters as ::treesitter_types::FromNode>::from_node(
9465                    child, src,
9466                )?),
9467                None => None,
9468            },
9469            value: {
9470                let child = node
9471                    .child_by_field_name("value")
9472                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("value", node))?;
9473                <Type as ::treesitter_types::FromNode>::from_node(child, src)?
9474            },
9475        })
9476    }
9477}
9478impl ::treesitter_types::Spanned for TypeAliasDeclaration<'_> {
9479    fn span(&self) -> ::treesitter_types::Span {
9480        self.span
9481    }
9482}
9483#[derive(Debug, Clone, PartialEq, Eq)]
9484pub struct TypeAnnotation<'tree> {
9485    pub span: ::treesitter_types::Span,
9486    pub children: Type<'tree>,
9487}
9488impl<'tree> ::treesitter_types::FromNode<'tree> for TypeAnnotation<'tree> {
9489    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
9490    fn from_node(
9491        node: ::tree_sitter::Node<'tree>,
9492        src: &'tree [u8],
9493    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
9494        debug_assert_eq!(node.kind(), "type_annotation");
9495        Ok(Self {
9496            span: ::treesitter_types::Span::from(node),
9497            children: {
9498                #[allow(clippy::suspicious_else_formatting)]
9499                let non_field_children = {
9500                    let mut cursor = node.walk();
9501                    let mut result = ::std::vec::Vec::new();
9502                    if cursor.goto_first_child() {
9503                        loop {
9504                            if cursor.field_name().is_none()
9505                                && cursor.node().is_named()
9506                                && !cursor.node().is_extra()
9507                            {
9508                                result.push(cursor.node());
9509                            }
9510                            if !cursor.goto_next_sibling() {
9511                                break;
9512                            }
9513                        }
9514                    }
9515                    result
9516                };
9517                let child = if let Some(&c) = non_field_children.first() {
9518                    c
9519                } else {
9520                    let mut fallback_cursor = node.walk();
9521                    let mut fallback_child = None;
9522                    if fallback_cursor.goto_first_child() {
9523                        loop {
9524                            if fallback_cursor.field_name().is_none()
9525                                && !fallback_cursor.node().is_extra()
9526                            {
9527                                let candidate = fallback_cursor.node();
9528                                #[allow(clippy::needless_question_mark)]
9529                                if (|| -> ::core::result::Result<
9530                                    _,
9531                                    ::treesitter_types::ParseError,
9532                                > {
9533                                    let child = candidate;
9534                                    Ok(
9535                                        <Type as ::treesitter_types::FromNode>::from_node(
9536                                            child,
9537                                            src,
9538                                        )?,
9539                                    )
9540                                })()
9541                                    .is_ok()
9542                                {
9543                                    fallback_child = Some(candidate);
9544                                    break;
9545                                }
9546                            }
9547                            if !fallback_cursor.goto_next_sibling() {
9548                                break;
9549                            }
9550                        }
9551                    }
9552                    if fallback_child.is_none() {
9553                        let mut cursor2 = node.walk();
9554                        if cursor2.goto_first_child() {
9555                            loop {
9556                                if cursor2.node().is_named() && !cursor2.node().is_extra() {
9557                                    let candidate = cursor2.node();
9558                                    #[allow(clippy::needless_question_mark)]
9559                                    if (|| -> ::core::result::Result<
9560                                        _,
9561                                        ::treesitter_types::ParseError,
9562                                    > {
9563                                        let child = candidate;
9564                                        Ok(
9565                                            <Type as ::treesitter_types::FromNode>::from_node(
9566                                                child,
9567                                                src,
9568                                            )?,
9569                                        )
9570                                    })()
9571                                        .is_ok()
9572                                    {
9573                                        fallback_child = Some(candidate);
9574                                        break;
9575                                    }
9576                                }
9577                                if !cursor2.goto_next_sibling() {
9578                                    break;
9579                                }
9580                            }
9581                        }
9582                    }
9583                    fallback_child.ok_or_else(|| {
9584                        ::treesitter_types::ParseError::missing_field("children", node)
9585                    })?
9586                };
9587                <Type as ::treesitter_types::FromNode>::from_node(child, src)?
9588            },
9589        })
9590    }
9591}
9592impl ::treesitter_types::Spanned for TypeAnnotation<'_> {
9593    fn span(&self) -> ::treesitter_types::Span {
9594        self.span
9595    }
9596}
9597#[derive(Debug, Clone, PartialEq, Eq)]
9598pub struct TypeArguments<'tree> {
9599    pub span: ::treesitter_types::Span,
9600    pub children: ::std::vec::Vec<Type<'tree>>,
9601}
9602impl<'tree> ::treesitter_types::FromNode<'tree> for TypeArguments<'tree> {
9603    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
9604    fn from_node(
9605        node: ::tree_sitter::Node<'tree>,
9606        src: &'tree [u8],
9607    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
9608        debug_assert_eq!(node.kind(), "type_arguments");
9609        Ok(Self {
9610            span: ::treesitter_types::Span::from(node),
9611            children: {
9612                #[allow(clippy::suspicious_else_formatting)]
9613                let non_field_children = {
9614                    let mut cursor = node.walk();
9615                    let mut result = ::std::vec::Vec::new();
9616                    if cursor.goto_first_child() {
9617                        loop {
9618                            if cursor.field_name().is_none()
9619                                && cursor.node().is_named()
9620                                && !cursor.node().is_extra()
9621                            {
9622                                result.push(cursor.node());
9623                            }
9624                            if !cursor.goto_next_sibling() {
9625                                break;
9626                            }
9627                        }
9628                    }
9629                    result
9630                };
9631                let mut items = ::std::vec::Vec::new();
9632                for child in non_field_children {
9633                    items.push(<Type as ::treesitter_types::FromNode>::from_node(
9634                        child, src,
9635                    )?);
9636                }
9637                items
9638            },
9639        })
9640    }
9641}
9642impl ::treesitter_types::Spanned for TypeArguments<'_> {
9643    fn span(&self) -> ::treesitter_types::Span {
9644        self.span
9645    }
9646}
9647#[derive(Debug, Clone, PartialEq, Eq)]
9648pub struct TypeAssertion<'tree> {
9649    pub span: ::treesitter_types::Span,
9650    pub children: ::std::vec::Vec<TypeAssertionChildren<'tree>>,
9651}
9652impl<'tree> ::treesitter_types::FromNode<'tree> for TypeAssertion<'tree> {
9653    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
9654    fn from_node(
9655        node: ::tree_sitter::Node<'tree>,
9656        src: &'tree [u8],
9657    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
9658        debug_assert_eq!(node.kind(), "type_assertion");
9659        Ok(Self {
9660            span: ::treesitter_types::Span::from(node),
9661            children: {
9662                #[allow(clippy::suspicious_else_formatting)]
9663                let non_field_children = {
9664                    let mut cursor = node.walk();
9665                    let mut result = ::std::vec::Vec::new();
9666                    if cursor.goto_first_child() {
9667                        loop {
9668                            if cursor.field_name().is_none()
9669                                && cursor.node().is_named()
9670                                && !cursor.node().is_extra()
9671                            {
9672                                result.push(cursor.node());
9673                            }
9674                            if !cursor.goto_next_sibling() {
9675                                break;
9676                            }
9677                        }
9678                    }
9679                    result
9680                };
9681                let mut items = ::std::vec::Vec::new();
9682                for child in non_field_children {
9683                    items.push(
9684                        <TypeAssertionChildren as ::treesitter_types::FromNode>::from_node(
9685                            child, src,
9686                        )?,
9687                    );
9688                }
9689                items
9690            },
9691        })
9692    }
9693}
9694impl ::treesitter_types::Spanned for TypeAssertion<'_> {
9695    fn span(&self) -> ::treesitter_types::Span {
9696        self.span
9697    }
9698}
9699#[derive(Debug, Clone, PartialEq, Eq)]
9700pub struct TypeParameter<'tree> {
9701    pub span: ::treesitter_types::Span,
9702    pub constraint: ::core::option::Option<Constraint<'tree>>,
9703    pub name: TypeIdentifier<'tree>,
9704    pub value: ::core::option::Option<DefaultType<'tree>>,
9705}
9706impl<'tree> ::treesitter_types::FromNode<'tree> for TypeParameter<'tree> {
9707    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
9708    fn from_node(
9709        node: ::tree_sitter::Node<'tree>,
9710        src: &'tree [u8],
9711    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
9712        debug_assert_eq!(node.kind(), "type_parameter");
9713        Ok(Self {
9714            span: ::treesitter_types::Span::from(node),
9715            constraint: match node.child_by_field_name("constraint") {
9716                Some(child) => Some(<Constraint as ::treesitter_types::FromNode>::from_node(
9717                    child, src,
9718                )?),
9719                None => None,
9720            },
9721            name: {
9722                let child = node
9723                    .child_by_field_name("name")
9724                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("name", node))?;
9725                <TypeIdentifier as ::treesitter_types::FromNode>::from_node(child, src)?
9726            },
9727            value: match node.child_by_field_name("value") {
9728                Some(child) => Some(<DefaultType as ::treesitter_types::FromNode>::from_node(
9729                    child, src,
9730                )?),
9731                None => None,
9732            },
9733        })
9734    }
9735}
9736impl ::treesitter_types::Spanned for TypeParameter<'_> {
9737    fn span(&self) -> ::treesitter_types::Span {
9738        self.span
9739    }
9740}
9741#[derive(Debug, Clone, PartialEq, Eq)]
9742pub struct TypeParameters<'tree> {
9743    pub span: ::treesitter_types::Span,
9744    pub children: ::std::vec::Vec<TypeParameter<'tree>>,
9745}
9746impl<'tree> ::treesitter_types::FromNode<'tree> for TypeParameters<'tree> {
9747    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
9748    fn from_node(
9749        node: ::tree_sitter::Node<'tree>,
9750        src: &'tree [u8],
9751    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
9752        debug_assert_eq!(node.kind(), "type_parameters");
9753        Ok(Self {
9754            span: ::treesitter_types::Span::from(node),
9755            children: {
9756                #[allow(clippy::suspicious_else_formatting)]
9757                let non_field_children = {
9758                    let mut cursor = node.walk();
9759                    let mut result = ::std::vec::Vec::new();
9760                    if cursor.goto_first_child() {
9761                        loop {
9762                            if cursor.field_name().is_none()
9763                                && cursor.node().is_named()
9764                                && !cursor.node().is_extra()
9765                            {
9766                                result.push(cursor.node());
9767                            }
9768                            if !cursor.goto_next_sibling() {
9769                                break;
9770                            }
9771                        }
9772                    }
9773                    result
9774                };
9775                let mut items = ::std::vec::Vec::new();
9776                for child in non_field_children {
9777                    items.push(<TypeParameter as ::treesitter_types::FromNode>::from_node(
9778                        child, src,
9779                    )?);
9780                }
9781                items
9782            },
9783        })
9784    }
9785}
9786impl ::treesitter_types::Spanned for TypeParameters<'_> {
9787    fn span(&self) -> ::treesitter_types::Span {
9788        self.span
9789    }
9790}
9791#[derive(Debug, Clone, PartialEq, Eq)]
9792pub struct TypePredicate<'tree> {
9793    pub span: ::treesitter_types::Span,
9794    pub name: TypePredicateName<'tree>,
9795    pub r#type: Type<'tree>,
9796}
9797impl<'tree> ::treesitter_types::FromNode<'tree> for TypePredicate<'tree> {
9798    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
9799    fn from_node(
9800        node: ::tree_sitter::Node<'tree>,
9801        src: &'tree [u8],
9802    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
9803        debug_assert_eq!(node.kind(), "type_predicate");
9804        Ok(Self {
9805            span: ::treesitter_types::Span::from(node),
9806            name: {
9807                let child = node
9808                    .child_by_field_name("name")
9809                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("name", node))?;
9810                <TypePredicateName as ::treesitter_types::FromNode>::from_node(child, src)?
9811            },
9812            r#type: {
9813                let child = node
9814                    .child_by_field_name("type")
9815                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("type", node))?;
9816                <Type as ::treesitter_types::FromNode>::from_node(child, src)?
9817            },
9818        })
9819    }
9820}
9821impl ::treesitter_types::Spanned for TypePredicate<'_> {
9822    fn span(&self) -> ::treesitter_types::Span {
9823        self.span
9824    }
9825}
9826#[derive(Debug, Clone, PartialEq, Eq)]
9827pub struct TypePredicateAnnotation<'tree> {
9828    pub span: ::treesitter_types::Span,
9829    pub children: TypePredicate<'tree>,
9830}
9831impl<'tree> ::treesitter_types::FromNode<'tree> for TypePredicateAnnotation<'tree> {
9832    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
9833    fn from_node(
9834        node: ::tree_sitter::Node<'tree>,
9835        src: &'tree [u8],
9836    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
9837        debug_assert_eq!(node.kind(), "type_predicate_annotation");
9838        Ok(Self {
9839            span: ::treesitter_types::Span::from(node),
9840            children: {
9841                #[allow(clippy::suspicious_else_formatting)]
9842                let non_field_children = {
9843                    let mut cursor = node.walk();
9844                    let mut result = ::std::vec::Vec::new();
9845                    if cursor.goto_first_child() {
9846                        loop {
9847                            if cursor.field_name().is_none()
9848                                && cursor.node().is_named()
9849                                && !cursor.node().is_extra()
9850                            {
9851                                result.push(cursor.node());
9852                            }
9853                            if !cursor.goto_next_sibling() {
9854                                break;
9855                            }
9856                        }
9857                    }
9858                    result
9859                };
9860                let child = if let Some(&c) = non_field_children.first() {
9861                    c
9862                } else {
9863                    let mut fallback_cursor = node.walk();
9864                    let mut fallback_child = None;
9865                    if fallback_cursor.goto_first_child() {
9866                        loop {
9867                            if fallback_cursor.field_name().is_none()
9868                                && !fallback_cursor.node().is_extra()
9869                            {
9870                                let candidate = fallback_cursor.node();
9871                                #[allow(clippy::needless_question_mark)]
9872                                if (|| -> ::core::result::Result<
9873                                    _,
9874                                    ::treesitter_types::ParseError,
9875                                > {
9876                                    let child = candidate;
9877                                    Ok(
9878                                        <TypePredicate as ::treesitter_types::FromNode>::from_node(
9879                                            child,
9880                                            src,
9881                                        )?,
9882                                    )
9883                                })()
9884                                    .is_ok()
9885                                {
9886                                    fallback_child = Some(candidate);
9887                                    break;
9888                                }
9889                            }
9890                            if !fallback_cursor.goto_next_sibling() {
9891                                break;
9892                            }
9893                        }
9894                    }
9895                    if fallback_child.is_none() {
9896                        let mut cursor2 = node.walk();
9897                        if cursor2.goto_first_child() {
9898                            loop {
9899                                if cursor2.node().is_named() && !cursor2.node().is_extra() {
9900                                    let candidate = cursor2.node();
9901                                    #[allow(clippy::needless_question_mark)]
9902                                    if (|| -> ::core::result::Result<
9903                                        _,
9904                                        ::treesitter_types::ParseError,
9905                                    > {
9906                                        let child = candidate;
9907                                        Ok(
9908                                            <TypePredicate as ::treesitter_types::FromNode>::from_node(
9909                                                child,
9910                                                src,
9911                                            )?,
9912                                        )
9913                                    })()
9914                                        .is_ok()
9915                                    {
9916                                        fallback_child = Some(candidate);
9917                                        break;
9918                                    }
9919                                }
9920                                if !cursor2.goto_next_sibling() {
9921                                    break;
9922                                }
9923                            }
9924                        }
9925                    }
9926                    fallback_child.ok_or_else(|| {
9927                        ::treesitter_types::ParseError::missing_field("children", node)
9928                    })?
9929                };
9930                <TypePredicate as ::treesitter_types::FromNode>::from_node(child, src)?
9931            },
9932        })
9933    }
9934}
9935impl ::treesitter_types::Spanned for TypePredicateAnnotation<'_> {
9936    fn span(&self) -> ::treesitter_types::Span {
9937        self.span
9938    }
9939}
9940#[derive(Debug, Clone, PartialEq, Eq)]
9941pub struct TypeQuery<'tree> {
9942    pub span: ::treesitter_types::Span,
9943    pub children: TypeQueryChildren<'tree>,
9944}
9945impl<'tree> ::treesitter_types::FromNode<'tree> for TypeQuery<'tree> {
9946    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
9947    fn from_node(
9948        node: ::tree_sitter::Node<'tree>,
9949        src: &'tree [u8],
9950    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
9951        debug_assert_eq!(node.kind(), "type_query");
9952        Ok(Self {
9953            span: ::treesitter_types::Span::from(node),
9954            children: {
9955                #[allow(clippy::suspicious_else_formatting)]
9956                let non_field_children = {
9957                    let mut cursor = node.walk();
9958                    let mut result = ::std::vec::Vec::new();
9959                    if cursor.goto_first_child() {
9960                        loop {
9961                            if cursor.field_name().is_none()
9962                                && cursor.node().is_named()
9963                                && !cursor.node().is_extra()
9964                            {
9965                                result.push(cursor.node());
9966                            }
9967                            if !cursor.goto_next_sibling() {
9968                                break;
9969                            }
9970                        }
9971                    }
9972                    result
9973                };
9974                let child = if let Some(&c) = non_field_children.first() {
9975                    c
9976                } else {
9977                    let mut fallback_cursor = node.walk();
9978                    let mut fallback_child = None;
9979                    if fallback_cursor.goto_first_child() {
9980                        loop {
9981                            if fallback_cursor.field_name().is_none()
9982                                && !fallback_cursor.node().is_extra()
9983                            {
9984                                let candidate = fallback_cursor.node();
9985                                #[allow(clippy::needless_question_mark)]
9986                                if (|| -> ::core::result::Result<
9987                                    _,
9988                                    ::treesitter_types::ParseError,
9989                                > {
9990                                    let child = candidate;
9991                                    Ok(
9992                                        <TypeQueryChildren as ::treesitter_types::FromNode>::from_node(
9993                                            child,
9994                                            src,
9995                                        )?,
9996                                    )
9997                                })()
9998                                    .is_ok()
9999                                {
10000                                    fallback_child = Some(candidate);
10001                                    break;
10002                                }
10003                            }
10004                            if !fallback_cursor.goto_next_sibling() {
10005                                break;
10006                            }
10007                        }
10008                    }
10009                    if fallback_child.is_none() {
10010                        let mut cursor2 = node.walk();
10011                        if cursor2.goto_first_child() {
10012                            loop {
10013                                if cursor2.node().is_named() && !cursor2.node().is_extra() {
10014                                    let candidate = cursor2.node();
10015                                    #[allow(clippy::needless_question_mark)]
10016                                    if (|| -> ::core::result::Result<
10017                                        _,
10018                                        ::treesitter_types::ParseError,
10019                                    > {
10020                                        let child = candidate;
10021                                        Ok(
10022                                            <TypeQueryChildren as ::treesitter_types::FromNode>::from_node(
10023                                                child,
10024                                                src,
10025                                            )?,
10026                                        )
10027                                    })()
10028                                        .is_ok()
10029                                    {
10030                                        fallback_child = Some(candidate);
10031                                        break;
10032                                    }
10033                                }
10034                                if !cursor2.goto_next_sibling() {
10035                                    break;
10036                                }
10037                            }
10038                        }
10039                    }
10040                    fallback_child.ok_or_else(|| {
10041                        ::treesitter_types::ParseError::missing_field("children", node)
10042                    })?
10043                };
10044                <TypeQueryChildren as ::treesitter_types::FromNode>::from_node(child, src)?
10045            },
10046        })
10047    }
10048}
10049impl ::treesitter_types::Spanned for TypeQuery<'_> {
10050    fn span(&self) -> ::treesitter_types::Span {
10051        self.span
10052    }
10053}
10054#[derive(Debug, Clone, PartialEq, Eq)]
10055pub struct UnaryExpression<'tree> {
10056    pub span: ::treesitter_types::Span,
10057    pub argument: UnaryExpressionArgument<'tree>,
10058    pub operator: UnaryExpressionOperator,
10059}
10060impl<'tree> ::treesitter_types::FromNode<'tree> for UnaryExpression<'tree> {
10061    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
10062    fn from_node(
10063        node: ::tree_sitter::Node<'tree>,
10064        src: &'tree [u8],
10065    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
10066        debug_assert_eq!(node.kind(), "unary_expression");
10067        Ok(Self {
10068            span: ::treesitter_types::Span::from(node),
10069            argument: {
10070                let child = node.child_by_field_name("argument").ok_or_else(|| {
10071                    ::treesitter_types::ParseError::missing_field("argument", node)
10072                })?;
10073                <UnaryExpressionArgument as ::treesitter_types::FromNode>::from_node(child, src)?
10074            },
10075            operator: {
10076                let child = node.child_by_field_name("operator").ok_or_else(|| {
10077                    ::treesitter_types::ParseError::missing_field("operator", node)
10078                })?;
10079                <UnaryExpressionOperator as ::treesitter_types::FromNode>::from_node(child, src)?
10080            },
10081        })
10082    }
10083}
10084impl ::treesitter_types::Spanned for UnaryExpression<'_> {
10085    fn span(&self) -> ::treesitter_types::Span {
10086        self.span
10087    }
10088}
10089#[derive(Debug, Clone, PartialEq, Eq)]
10090pub struct UnionType<'tree> {
10091    pub span: ::treesitter_types::Span,
10092    pub children: ::std::vec::Vec<Type<'tree>>,
10093}
10094impl<'tree> ::treesitter_types::FromNode<'tree> for UnionType<'tree> {
10095    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
10096    fn from_node(
10097        node: ::tree_sitter::Node<'tree>,
10098        src: &'tree [u8],
10099    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
10100        debug_assert_eq!(node.kind(), "union_type");
10101        Ok(Self {
10102            span: ::treesitter_types::Span::from(node),
10103            children: {
10104                #[allow(clippy::suspicious_else_formatting)]
10105                let non_field_children = {
10106                    let mut cursor = node.walk();
10107                    let mut result = ::std::vec::Vec::new();
10108                    if cursor.goto_first_child() {
10109                        loop {
10110                            if cursor.field_name().is_none()
10111                                && cursor.node().is_named()
10112                                && !cursor.node().is_extra()
10113                            {
10114                                result.push(cursor.node());
10115                            }
10116                            if !cursor.goto_next_sibling() {
10117                                break;
10118                            }
10119                        }
10120                    }
10121                    result
10122                };
10123                let mut items = ::std::vec::Vec::new();
10124                for child in non_field_children {
10125                    items.push(<Type as ::treesitter_types::FromNode>::from_node(
10126                        child, src,
10127                    )?);
10128                }
10129                items
10130            },
10131        })
10132    }
10133}
10134impl ::treesitter_types::Spanned for UnionType<'_> {
10135    fn span(&self) -> ::treesitter_types::Span {
10136        self.span
10137    }
10138}
10139#[derive(Debug, Clone, PartialEq, Eq)]
10140pub struct UpdateExpression<'tree> {
10141    pub span: ::treesitter_types::Span,
10142    pub argument: Expression<'tree>,
10143    pub operator: UpdateExpressionOperator,
10144}
10145impl<'tree> ::treesitter_types::FromNode<'tree> for UpdateExpression<'tree> {
10146    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
10147    fn from_node(
10148        node: ::tree_sitter::Node<'tree>,
10149        src: &'tree [u8],
10150    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
10151        debug_assert_eq!(node.kind(), "update_expression");
10152        Ok(Self {
10153            span: ::treesitter_types::Span::from(node),
10154            argument: {
10155                let child = node.child_by_field_name("argument").ok_or_else(|| {
10156                    ::treesitter_types::ParseError::missing_field("argument", node)
10157                })?;
10158                <Expression as ::treesitter_types::FromNode>::from_node(child, src)?
10159            },
10160            operator: {
10161                let child = node.child_by_field_name("operator").ok_or_else(|| {
10162                    ::treesitter_types::ParseError::missing_field("operator", node)
10163                })?;
10164                <UpdateExpressionOperator as ::treesitter_types::FromNode>::from_node(child, src)?
10165            },
10166        })
10167    }
10168}
10169impl ::treesitter_types::Spanned for UpdateExpression<'_> {
10170    fn span(&self) -> ::treesitter_types::Span {
10171        self.span
10172    }
10173}
10174#[derive(Debug, Clone, PartialEq, Eq)]
10175pub struct VariableDeclaration<'tree> {
10176    pub span: ::treesitter_types::Span,
10177    pub children: ::std::vec::Vec<VariableDeclarator<'tree>>,
10178}
10179impl<'tree> ::treesitter_types::FromNode<'tree> for VariableDeclaration<'tree> {
10180    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
10181    fn from_node(
10182        node: ::tree_sitter::Node<'tree>,
10183        src: &'tree [u8],
10184    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
10185        debug_assert_eq!(node.kind(), "variable_declaration");
10186        Ok(Self {
10187            span: ::treesitter_types::Span::from(node),
10188            children: {
10189                #[allow(clippy::suspicious_else_formatting)]
10190                let non_field_children = {
10191                    let mut cursor = node.walk();
10192                    let mut result = ::std::vec::Vec::new();
10193                    if cursor.goto_first_child() {
10194                        loop {
10195                            if cursor.field_name().is_none()
10196                                && cursor.node().is_named()
10197                                && !cursor.node().is_extra()
10198                            {
10199                                result.push(cursor.node());
10200                            }
10201                            if !cursor.goto_next_sibling() {
10202                                break;
10203                            }
10204                        }
10205                    }
10206                    result
10207                };
10208                let mut items = ::std::vec::Vec::new();
10209                for child in non_field_children {
10210                    items.push(
10211                        <VariableDeclarator as ::treesitter_types::FromNode>::from_node(
10212                            child, src,
10213                        )?,
10214                    );
10215                }
10216                items
10217            },
10218        })
10219    }
10220}
10221impl ::treesitter_types::Spanned for VariableDeclaration<'_> {
10222    fn span(&self) -> ::treesitter_types::Span {
10223        self.span
10224    }
10225}
10226#[derive(Debug, Clone, PartialEq, Eq)]
10227pub struct VariableDeclarator<'tree> {
10228    pub span: ::treesitter_types::Span,
10229    pub name: VariableDeclaratorName<'tree>,
10230    pub r#type: ::core::option::Option<TypeAnnotation<'tree>>,
10231    pub value: ::core::option::Option<Expression<'tree>>,
10232}
10233impl<'tree> ::treesitter_types::FromNode<'tree> for VariableDeclarator<'tree> {
10234    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
10235    fn from_node(
10236        node: ::tree_sitter::Node<'tree>,
10237        src: &'tree [u8],
10238    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
10239        debug_assert_eq!(node.kind(), "variable_declarator");
10240        Ok(Self {
10241            span: ::treesitter_types::Span::from(node),
10242            name: {
10243                let child = node
10244                    .child_by_field_name("name")
10245                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("name", node))?;
10246                <VariableDeclaratorName as ::treesitter_types::FromNode>::from_node(child, src)?
10247            },
10248            r#type: match node.child_by_field_name("type") {
10249                Some(child) => Some(<TypeAnnotation as ::treesitter_types::FromNode>::from_node(
10250                    child, src,
10251                )?),
10252                None => None,
10253            },
10254            value: match node.child_by_field_name("value") {
10255                Some(child) => Some(<Expression as ::treesitter_types::FromNode>::from_node(
10256                    child, src,
10257                )?),
10258                None => None,
10259            },
10260        })
10261    }
10262}
10263impl ::treesitter_types::Spanned for VariableDeclarator<'_> {
10264    fn span(&self) -> ::treesitter_types::Span {
10265        self.span
10266    }
10267}
10268#[derive(Debug, Clone, PartialEq, Eq)]
10269pub struct WhileStatement<'tree> {
10270    pub span: ::treesitter_types::Span,
10271    pub body: Statement<'tree>,
10272    pub condition: ParenthesizedExpression<'tree>,
10273}
10274impl<'tree> ::treesitter_types::FromNode<'tree> for WhileStatement<'tree> {
10275    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
10276    fn from_node(
10277        node: ::tree_sitter::Node<'tree>,
10278        src: &'tree [u8],
10279    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
10280        debug_assert_eq!(node.kind(), "while_statement");
10281        Ok(Self {
10282            span: ::treesitter_types::Span::from(node),
10283            body: {
10284                let child = node
10285                    .child_by_field_name("body")
10286                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("body", node))?;
10287                <Statement as ::treesitter_types::FromNode>::from_node(child, src)?
10288            },
10289            condition: {
10290                let child = node.child_by_field_name("condition").ok_or_else(|| {
10291                    ::treesitter_types::ParseError::missing_field("condition", node)
10292                })?;
10293                <ParenthesizedExpression as ::treesitter_types::FromNode>::from_node(child, src)?
10294            },
10295        })
10296    }
10297}
10298impl ::treesitter_types::Spanned for WhileStatement<'_> {
10299    fn span(&self) -> ::treesitter_types::Span {
10300        self.span
10301    }
10302}
10303#[derive(Debug, Clone, PartialEq, Eq)]
10304pub struct WithStatement<'tree> {
10305    pub span: ::treesitter_types::Span,
10306    pub body: Statement<'tree>,
10307    pub object: ParenthesizedExpression<'tree>,
10308}
10309impl<'tree> ::treesitter_types::FromNode<'tree> for WithStatement<'tree> {
10310    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
10311    fn from_node(
10312        node: ::tree_sitter::Node<'tree>,
10313        src: &'tree [u8],
10314    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
10315        debug_assert_eq!(node.kind(), "with_statement");
10316        Ok(Self {
10317            span: ::treesitter_types::Span::from(node),
10318            body: {
10319                let child = node
10320                    .child_by_field_name("body")
10321                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("body", node))?;
10322                <Statement as ::treesitter_types::FromNode>::from_node(child, src)?
10323            },
10324            object: {
10325                let child = node
10326                    .child_by_field_name("object")
10327                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("object", node))?;
10328                <ParenthesizedExpression as ::treesitter_types::FromNode>::from_node(child, src)?
10329            },
10330        })
10331    }
10332}
10333impl ::treesitter_types::Spanned for WithStatement<'_> {
10334    fn span(&self) -> ::treesitter_types::Span {
10335        self.span
10336    }
10337}
10338#[derive(Debug, Clone, PartialEq, Eq)]
10339pub struct YieldExpression<'tree> {
10340    pub span: ::treesitter_types::Span,
10341    pub children: ::core::option::Option<Expression<'tree>>,
10342}
10343impl<'tree> ::treesitter_types::FromNode<'tree> for YieldExpression<'tree> {
10344    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
10345    fn from_node(
10346        node: ::tree_sitter::Node<'tree>,
10347        src: &'tree [u8],
10348    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
10349        debug_assert_eq!(node.kind(), "yield_expression");
10350        Ok(Self {
10351            span: ::treesitter_types::Span::from(node),
10352            children: {
10353                #[allow(clippy::suspicious_else_formatting)]
10354                let non_field_children = {
10355                    let mut cursor = node.walk();
10356                    let mut result = ::std::vec::Vec::new();
10357                    if cursor.goto_first_child() {
10358                        loop {
10359                            if cursor.field_name().is_none()
10360                                && cursor.node().is_named()
10361                                && !cursor.node().is_extra()
10362                            {
10363                                result.push(cursor.node());
10364                            }
10365                            if !cursor.goto_next_sibling() {
10366                                break;
10367                            }
10368                        }
10369                    }
10370                    result
10371                };
10372                match non_field_children.first() {
10373                    Some(&child) => Some(<Expression as ::treesitter_types::FromNode>::from_node(
10374                        child, src,
10375                    )?),
10376                    None => None,
10377                }
10378            },
10379        })
10380    }
10381}
10382impl ::treesitter_types::Spanned for YieldExpression<'_> {
10383    fn span(&self) -> ::treesitter_types::Span {
10384        self.span
10385    }
10386}
10387#[derive(Debug, Clone, PartialEq, Eq)]
10388pub struct Comment<'tree> {
10389    pub span: ::treesitter_types::Span,
10390    text: &'tree str,
10391}
10392impl<'tree> ::treesitter_types::FromNode<'tree> for Comment<'tree> {
10393    fn from_node(
10394        node: ::tree_sitter::Node<'tree>,
10395        src: &'tree [u8],
10396    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
10397        debug_assert_eq!(node.kind(), "comment");
10398        Ok(Self {
10399            span: ::treesitter_types::Span::from(node),
10400            text: node.utf8_text(src)?,
10401        })
10402    }
10403}
10404impl<'tree> ::treesitter_types::LeafNode<'tree> for Comment<'tree> {
10405    fn text(&self) -> &'tree str {
10406        self.text
10407    }
10408}
10409impl ::treesitter_types::Spanned for Comment<'_> {
10410    fn span(&self) -> ::treesitter_types::Span {
10411        self.span
10412    }
10413}
10414#[derive(Debug, Clone, PartialEq, Eq)]
10415pub struct EscapeSequence<'tree> {
10416    pub span: ::treesitter_types::Span,
10417    text: &'tree str,
10418}
10419impl<'tree> ::treesitter_types::FromNode<'tree> for EscapeSequence<'tree> {
10420    fn from_node(
10421        node: ::tree_sitter::Node<'tree>,
10422        src: &'tree [u8],
10423    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
10424        debug_assert_eq!(node.kind(), "escape_sequence");
10425        Ok(Self {
10426            span: ::treesitter_types::Span::from(node),
10427            text: node.utf8_text(src)?,
10428        })
10429    }
10430}
10431impl<'tree> ::treesitter_types::LeafNode<'tree> for EscapeSequence<'tree> {
10432    fn text(&self) -> &'tree str {
10433        self.text
10434    }
10435}
10436impl ::treesitter_types::Spanned for EscapeSequence<'_> {
10437    fn span(&self) -> ::treesitter_types::Span {
10438        self.span
10439    }
10440}
10441#[derive(Debug, Clone, PartialEq, Eq)]
10442pub struct False<'tree> {
10443    pub span: ::treesitter_types::Span,
10444    text: &'tree str,
10445}
10446impl<'tree> ::treesitter_types::FromNode<'tree> for False<'tree> {
10447    fn from_node(
10448        node: ::tree_sitter::Node<'tree>,
10449        src: &'tree [u8],
10450    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
10451        debug_assert_eq!(node.kind(), "false");
10452        Ok(Self {
10453            span: ::treesitter_types::Span::from(node),
10454            text: node.utf8_text(src)?,
10455        })
10456    }
10457}
10458impl<'tree> ::treesitter_types::LeafNode<'tree> for False<'tree> {
10459    fn text(&self) -> &'tree str {
10460        self.text
10461    }
10462}
10463impl ::treesitter_types::Spanned for False<'_> {
10464    fn span(&self) -> ::treesitter_types::Span {
10465        self.span
10466    }
10467}
10468#[derive(Debug, Clone, PartialEq, Eq)]
10469pub struct HashBangLine<'tree> {
10470    pub span: ::treesitter_types::Span,
10471    text: &'tree str,
10472}
10473impl<'tree> ::treesitter_types::FromNode<'tree> for HashBangLine<'tree> {
10474    fn from_node(
10475        node: ::tree_sitter::Node<'tree>,
10476        src: &'tree [u8],
10477    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
10478        debug_assert_eq!(node.kind(), "hash_bang_line");
10479        Ok(Self {
10480            span: ::treesitter_types::Span::from(node),
10481            text: node.utf8_text(src)?,
10482        })
10483    }
10484}
10485impl<'tree> ::treesitter_types::LeafNode<'tree> for HashBangLine<'tree> {
10486    fn text(&self) -> &'tree str {
10487        self.text
10488    }
10489}
10490impl ::treesitter_types::Spanned for HashBangLine<'_> {
10491    fn span(&self) -> ::treesitter_types::Span {
10492        self.span
10493    }
10494}
10495#[derive(Debug, Clone, PartialEq, Eq)]
10496pub struct HtmlComment<'tree> {
10497    pub span: ::treesitter_types::Span,
10498    text: &'tree str,
10499}
10500impl<'tree> ::treesitter_types::FromNode<'tree> for HtmlComment<'tree> {
10501    fn from_node(
10502        node: ::tree_sitter::Node<'tree>,
10503        src: &'tree [u8],
10504    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
10505        debug_assert_eq!(node.kind(), "html_comment");
10506        Ok(Self {
10507            span: ::treesitter_types::Span::from(node),
10508            text: node.utf8_text(src)?,
10509        })
10510    }
10511}
10512impl<'tree> ::treesitter_types::LeafNode<'tree> for HtmlComment<'tree> {
10513    fn text(&self) -> &'tree str {
10514        self.text
10515    }
10516}
10517impl ::treesitter_types::Spanned for HtmlComment<'_> {
10518    fn span(&self) -> ::treesitter_types::Span {
10519        self.span
10520    }
10521}
10522#[derive(Debug, Clone, PartialEq, Eq)]
10523pub struct Null<'tree> {
10524    pub span: ::treesitter_types::Span,
10525    text: &'tree str,
10526}
10527impl<'tree> ::treesitter_types::FromNode<'tree> for Null<'tree> {
10528    fn from_node(
10529        node: ::tree_sitter::Node<'tree>,
10530        src: &'tree [u8],
10531    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
10532        debug_assert_eq!(node.kind(), "null");
10533        Ok(Self {
10534            span: ::treesitter_types::Span::from(node),
10535            text: node.utf8_text(src)?,
10536        })
10537    }
10538}
10539impl<'tree> ::treesitter_types::LeafNode<'tree> for Null<'tree> {
10540    fn text(&self) -> &'tree str {
10541        self.text
10542    }
10543}
10544impl ::treesitter_types::Spanned for Null<'_> {
10545    fn span(&self) -> ::treesitter_types::Span {
10546        self.span
10547    }
10548}
10549#[derive(Debug, Clone, PartialEq, Eq)]
10550pub struct Number<'tree> {
10551    pub span: ::treesitter_types::Span,
10552    text: &'tree str,
10553}
10554impl<'tree> ::treesitter_types::FromNode<'tree> for Number<'tree> {
10555    fn from_node(
10556        node: ::tree_sitter::Node<'tree>,
10557        src: &'tree [u8],
10558    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
10559        debug_assert_eq!(node.kind(), "number");
10560        Ok(Self {
10561            span: ::treesitter_types::Span::from(node),
10562            text: node.utf8_text(src)?,
10563        })
10564    }
10565}
10566impl<'tree> ::treesitter_types::LeafNode<'tree> for Number<'tree> {
10567    fn text(&self) -> &'tree str {
10568        self.text
10569    }
10570}
10571impl ::treesitter_types::Spanned for Number<'_> {
10572    fn span(&self) -> ::treesitter_types::Span {
10573        self.span
10574    }
10575}
10576#[derive(Debug, Clone, PartialEq, Eq)]
10577pub struct PrivatePropertyIdentifier<'tree> {
10578    pub span: ::treesitter_types::Span,
10579    text: &'tree str,
10580}
10581impl<'tree> ::treesitter_types::FromNode<'tree> for PrivatePropertyIdentifier<'tree> {
10582    fn from_node(
10583        node: ::tree_sitter::Node<'tree>,
10584        src: &'tree [u8],
10585    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
10586        debug_assert_eq!(node.kind(), "private_property_identifier");
10587        Ok(Self {
10588            span: ::treesitter_types::Span::from(node),
10589            text: node.utf8_text(src)?,
10590        })
10591    }
10592}
10593impl<'tree> ::treesitter_types::LeafNode<'tree> for PrivatePropertyIdentifier<'tree> {
10594    fn text(&self) -> &'tree str {
10595        self.text
10596    }
10597}
10598impl ::treesitter_types::Spanned for PrivatePropertyIdentifier<'_> {
10599    fn span(&self) -> ::treesitter_types::Span {
10600        self.span
10601    }
10602}
10603#[derive(Debug, Clone, PartialEq, Eq)]
10604pub struct PropertyIdentifier<'tree> {
10605    pub span: ::treesitter_types::Span,
10606    text: &'tree str,
10607}
10608impl<'tree> ::treesitter_types::FromNode<'tree> for PropertyIdentifier<'tree> {
10609    fn from_node(
10610        node: ::tree_sitter::Node<'tree>,
10611        src: &'tree [u8],
10612    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
10613        debug_assert_eq!(node.kind(), "property_identifier");
10614        Ok(Self {
10615            span: ::treesitter_types::Span::from(node),
10616            text: node.utf8_text(src)?,
10617        })
10618    }
10619}
10620impl<'tree> ::treesitter_types::LeafNode<'tree> for PropertyIdentifier<'tree> {
10621    fn text(&self) -> &'tree str {
10622        self.text
10623    }
10624}
10625impl ::treesitter_types::Spanned for PropertyIdentifier<'_> {
10626    fn span(&self) -> ::treesitter_types::Span {
10627        self.span
10628    }
10629}
10630#[derive(Debug, Clone, PartialEq, Eq)]
10631pub struct RegexFlags<'tree> {
10632    pub span: ::treesitter_types::Span,
10633    text: &'tree str,
10634}
10635impl<'tree> ::treesitter_types::FromNode<'tree> for RegexFlags<'tree> {
10636    fn from_node(
10637        node: ::tree_sitter::Node<'tree>,
10638        src: &'tree [u8],
10639    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
10640        debug_assert_eq!(node.kind(), "regex_flags");
10641        Ok(Self {
10642            span: ::treesitter_types::Span::from(node),
10643            text: node.utf8_text(src)?,
10644        })
10645    }
10646}
10647impl<'tree> ::treesitter_types::LeafNode<'tree> for RegexFlags<'tree> {
10648    fn text(&self) -> &'tree str {
10649        self.text
10650    }
10651}
10652impl ::treesitter_types::Spanned for RegexFlags<'_> {
10653    fn span(&self) -> ::treesitter_types::Span {
10654        self.span
10655    }
10656}
10657#[derive(Debug, Clone, PartialEq, Eq)]
10658pub struct RegexPattern<'tree> {
10659    pub span: ::treesitter_types::Span,
10660    text: &'tree str,
10661}
10662impl<'tree> ::treesitter_types::FromNode<'tree> for RegexPattern<'tree> {
10663    fn from_node(
10664        node: ::tree_sitter::Node<'tree>,
10665        src: &'tree [u8],
10666    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
10667        debug_assert_eq!(node.kind(), "regex_pattern");
10668        Ok(Self {
10669            span: ::treesitter_types::Span::from(node),
10670            text: node.utf8_text(src)?,
10671        })
10672    }
10673}
10674impl<'tree> ::treesitter_types::LeafNode<'tree> for RegexPattern<'tree> {
10675    fn text(&self) -> &'tree str {
10676        self.text
10677    }
10678}
10679impl ::treesitter_types::Spanned for RegexPattern<'_> {
10680    fn span(&self) -> ::treesitter_types::Span {
10681        self.span
10682    }
10683}
10684#[derive(Debug, Clone, PartialEq, Eq)]
10685pub struct ShorthandPropertyIdentifier<'tree> {
10686    pub span: ::treesitter_types::Span,
10687    text: &'tree str,
10688}
10689impl<'tree> ::treesitter_types::FromNode<'tree> for ShorthandPropertyIdentifier<'tree> {
10690    fn from_node(
10691        node: ::tree_sitter::Node<'tree>,
10692        src: &'tree [u8],
10693    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
10694        debug_assert_eq!(node.kind(), "shorthand_property_identifier");
10695        Ok(Self {
10696            span: ::treesitter_types::Span::from(node),
10697            text: node.utf8_text(src)?,
10698        })
10699    }
10700}
10701impl<'tree> ::treesitter_types::LeafNode<'tree> for ShorthandPropertyIdentifier<'tree> {
10702    fn text(&self) -> &'tree str {
10703        self.text
10704    }
10705}
10706impl ::treesitter_types::Spanned for ShorthandPropertyIdentifier<'_> {
10707    fn span(&self) -> ::treesitter_types::Span {
10708        self.span
10709    }
10710}
10711#[derive(Debug, Clone, PartialEq, Eq)]
10712pub struct ShorthandPropertyIdentifierPattern<'tree> {
10713    pub span: ::treesitter_types::Span,
10714    text: &'tree str,
10715}
10716impl<'tree> ::treesitter_types::FromNode<'tree> for ShorthandPropertyIdentifierPattern<'tree> {
10717    fn from_node(
10718        node: ::tree_sitter::Node<'tree>,
10719        src: &'tree [u8],
10720    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
10721        debug_assert_eq!(node.kind(), "shorthand_property_identifier_pattern");
10722        Ok(Self {
10723            span: ::treesitter_types::Span::from(node),
10724            text: node.utf8_text(src)?,
10725        })
10726    }
10727}
10728impl<'tree> ::treesitter_types::LeafNode<'tree> for ShorthandPropertyIdentifierPattern<'tree> {
10729    fn text(&self) -> &'tree str {
10730        self.text
10731    }
10732}
10733impl ::treesitter_types::Spanned for ShorthandPropertyIdentifierPattern<'_> {
10734    fn span(&self) -> ::treesitter_types::Span {
10735        self.span
10736    }
10737}
10738#[derive(Debug, Clone, PartialEq, Eq)]
10739pub struct StatementIdentifier<'tree> {
10740    pub span: ::treesitter_types::Span,
10741    text: &'tree str,
10742}
10743impl<'tree> ::treesitter_types::FromNode<'tree> for StatementIdentifier<'tree> {
10744    fn from_node(
10745        node: ::tree_sitter::Node<'tree>,
10746        src: &'tree [u8],
10747    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
10748        debug_assert_eq!(node.kind(), "statement_identifier");
10749        Ok(Self {
10750            span: ::treesitter_types::Span::from(node),
10751            text: node.utf8_text(src)?,
10752        })
10753    }
10754}
10755impl<'tree> ::treesitter_types::LeafNode<'tree> for StatementIdentifier<'tree> {
10756    fn text(&self) -> &'tree str {
10757        self.text
10758    }
10759}
10760impl ::treesitter_types::Spanned for StatementIdentifier<'_> {
10761    fn span(&self) -> ::treesitter_types::Span {
10762        self.span
10763    }
10764}
10765#[derive(Debug, Clone, PartialEq, Eq)]
10766pub struct StringFragment<'tree> {
10767    pub span: ::treesitter_types::Span,
10768    text: &'tree str,
10769}
10770impl<'tree> ::treesitter_types::FromNode<'tree> for StringFragment<'tree> {
10771    fn from_node(
10772        node: ::tree_sitter::Node<'tree>,
10773        src: &'tree [u8],
10774    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
10775        debug_assert_eq!(node.kind(), "string_fragment");
10776        Ok(Self {
10777            span: ::treesitter_types::Span::from(node),
10778            text: node.utf8_text(src)?,
10779        })
10780    }
10781}
10782impl<'tree> ::treesitter_types::LeafNode<'tree> for StringFragment<'tree> {
10783    fn text(&self) -> &'tree str {
10784        self.text
10785    }
10786}
10787impl ::treesitter_types::Spanned for StringFragment<'_> {
10788    fn span(&self) -> ::treesitter_types::Span {
10789        self.span
10790    }
10791}
10792#[derive(Debug, Clone, PartialEq, Eq)]
10793pub struct Super<'tree> {
10794    pub span: ::treesitter_types::Span,
10795    text: &'tree str,
10796}
10797impl<'tree> ::treesitter_types::FromNode<'tree> for Super<'tree> {
10798    fn from_node(
10799        node: ::tree_sitter::Node<'tree>,
10800        src: &'tree [u8],
10801    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
10802        debug_assert_eq!(node.kind(), "super");
10803        Ok(Self {
10804            span: ::treesitter_types::Span::from(node),
10805            text: node.utf8_text(src)?,
10806        })
10807    }
10808}
10809impl<'tree> ::treesitter_types::LeafNode<'tree> for Super<'tree> {
10810    fn text(&self) -> &'tree str {
10811        self.text
10812    }
10813}
10814impl ::treesitter_types::Spanned for Super<'_> {
10815    fn span(&self) -> ::treesitter_types::Span {
10816        self.span
10817    }
10818}
10819#[derive(Debug, Clone, PartialEq, Eq)]
10820pub struct This<'tree> {
10821    pub span: ::treesitter_types::Span,
10822    text: &'tree str,
10823}
10824impl<'tree> ::treesitter_types::FromNode<'tree> for This<'tree> {
10825    fn from_node(
10826        node: ::tree_sitter::Node<'tree>,
10827        src: &'tree [u8],
10828    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
10829        debug_assert_eq!(node.kind(), "this");
10830        Ok(Self {
10831            span: ::treesitter_types::Span::from(node),
10832            text: node.utf8_text(src)?,
10833        })
10834    }
10835}
10836impl<'tree> ::treesitter_types::LeafNode<'tree> for This<'tree> {
10837    fn text(&self) -> &'tree str {
10838        self.text
10839    }
10840}
10841impl ::treesitter_types::Spanned for This<'_> {
10842    fn span(&self) -> ::treesitter_types::Span {
10843        self.span
10844    }
10845}
10846#[derive(Debug, Clone, PartialEq, Eq)]
10847pub struct ThisType<'tree> {
10848    pub span: ::treesitter_types::Span,
10849    text: &'tree str,
10850}
10851impl<'tree> ::treesitter_types::FromNode<'tree> for ThisType<'tree> {
10852    fn from_node(
10853        node: ::tree_sitter::Node<'tree>,
10854        src: &'tree [u8],
10855    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
10856        debug_assert_eq!(node.kind(), "this_type");
10857        Ok(Self {
10858            span: ::treesitter_types::Span::from(node),
10859            text: node.utf8_text(src)?,
10860        })
10861    }
10862}
10863impl<'tree> ::treesitter_types::LeafNode<'tree> for ThisType<'tree> {
10864    fn text(&self) -> &'tree str {
10865        self.text
10866    }
10867}
10868impl ::treesitter_types::Spanned for ThisType<'_> {
10869    fn span(&self) -> ::treesitter_types::Span {
10870        self.span
10871    }
10872}
10873#[derive(Debug, Clone, PartialEq, Eq)]
10874pub struct True<'tree> {
10875    pub span: ::treesitter_types::Span,
10876    text: &'tree str,
10877}
10878impl<'tree> ::treesitter_types::FromNode<'tree> for True<'tree> {
10879    fn from_node(
10880        node: ::tree_sitter::Node<'tree>,
10881        src: &'tree [u8],
10882    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
10883        debug_assert_eq!(node.kind(), "true");
10884        Ok(Self {
10885            span: ::treesitter_types::Span::from(node),
10886            text: node.utf8_text(src)?,
10887        })
10888    }
10889}
10890impl<'tree> ::treesitter_types::LeafNode<'tree> for True<'tree> {
10891    fn text(&self) -> &'tree str {
10892        self.text
10893    }
10894}
10895impl ::treesitter_types::Spanned for True<'_> {
10896    fn span(&self) -> ::treesitter_types::Span {
10897        self.span
10898    }
10899}
10900#[derive(Debug, Clone, PartialEq, Eq)]
10901pub struct TypeIdentifier<'tree> {
10902    pub span: ::treesitter_types::Span,
10903    text: &'tree str,
10904}
10905impl<'tree> ::treesitter_types::FromNode<'tree> for TypeIdentifier<'tree> {
10906    fn from_node(
10907        node: ::tree_sitter::Node<'tree>,
10908        src: &'tree [u8],
10909    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
10910        debug_assert_eq!(node.kind(), "type_identifier");
10911        Ok(Self {
10912            span: ::treesitter_types::Span::from(node),
10913            text: node.utf8_text(src)?,
10914        })
10915    }
10916}
10917impl<'tree> ::treesitter_types::LeafNode<'tree> for TypeIdentifier<'tree> {
10918    fn text(&self) -> &'tree str {
10919        self.text
10920    }
10921}
10922impl ::treesitter_types::Spanned for TypeIdentifier<'_> {
10923    fn span(&self) -> ::treesitter_types::Span {
10924        self.span
10925    }
10926}
10927#[derive(Debug, Clone, PartialEq, Eq)]
10928pub struct Undefined<'tree> {
10929    pub span: ::treesitter_types::Span,
10930    text: &'tree str,
10931}
10932impl<'tree> ::treesitter_types::FromNode<'tree> for Undefined<'tree> {
10933    fn from_node(
10934        node: ::tree_sitter::Node<'tree>,
10935        src: &'tree [u8],
10936    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
10937        debug_assert_eq!(node.kind(), "undefined");
10938        Ok(Self {
10939            span: ::treesitter_types::Span::from(node),
10940            text: node.utf8_text(src)?,
10941        })
10942    }
10943}
10944impl<'tree> ::treesitter_types::LeafNode<'tree> for Undefined<'tree> {
10945    fn text(&self) -> &'tree str {
10946        self.text
10947    }
10948}
10949impl ::treesitter_types::Spanned for Undefined<'_> {
10950    fn span(&self) -> ::treesitter_types::Span {
10951        self.span
10952    }
10953}
10954#[derive(Debug, Clone, PartialEq, Eq)]
10955pub enum AbstractMethodSignatureName<'tree> {
10956    ComputedPropertyName(::std::boxed::Box<ComputedPropertyName<'tree>>),
10957    Number(::std::boxed::Box<Number<'tree>>),
10958    PrivatePropertyIdentifier(::std::boxed::Box<PrivatePropertyIdentifier<'tree>>),
10959    PropertyIdentifier(::std::boxed::Box<PropertyIdentifier<'tree>>),
10960    String(::std::boxed::Box<String<'tree>>),
10961}
10962impl<'tree> ::treesitter_types::FromNode<'tree> for AbstractMethodSignatureName<'tree> {
10963    #[allow(clippy::collapsible_else_if)]
10964    fn from_node(
10965        node: ::tree_sitter::Node<'tree>,
10966        src: &'tree [u8],
10967    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
10968        match node.kind() {
10969            "computed_property_name" => Ok(Self::ComputedPropertyName(::std::boxed::Box::new(
10970                <ComputedPropertyName as ::treesitter_types::FromNode>::from_node(node, src)?,
10971            ))),
10972            "number" => Ok(Self::Number(::std::boxed::Box::new(
10973                <Number as ::treesitter_types::FromNode>::from_node(node, src)?,
10974            ))),
10975            "private_property_identifier" => {
10976                Ok(Self::PrivatePropertyIdentifier(::std::boxed::Box::new(
10977                    <PrivatePropertyIdentifier as ::treesitter_types::FromNode>::from_node(
10978                        node, src,
10979                    )?,
10980                )))
10981            }
10982            "property_identifier" => Ok(Self::PropertyIdentifier(::std::boxed::Box::new(
10983                <PropertyIdentifier as ::treesitter_types::FromNode>::from_node(node, src)?,
10984            ))),
10985            "string" => Ok(Self::String(::std::boxed::Box::new(
10986                <String as ::treesitter_types::FromNode>::from_node(node, src)?,
10987            ))),
10988            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
10989        }
10990    }
10991}
10992impl ::treesitter_types::Spanned for AbstractMethodSignatureName<'_> {
10993    fn span(&self) -> ::treesitter_types::Span {
10994        match self {
10995            Self::ComputedPropertyName(inner) => inner.span(),
10996            Self::Number(inner) => inner.span(),
10997            Self::PrivatePropertyIdentifier(inner) => inner.span(),
10998            Self::PropertyIdentifier(inner) => inner.span(),
10999            Self::String(inner) => inner.span(),
11000        }
11001    }
11002}
11003#[derive(Debug, Clone, PartialEq, Eq)]
11004pub enum AbstractMethodSignatureReturnType<'tree> {
11005    AssertsAnnotation(::std::boxed::Box<AssertsAnnotation<'tree>>),
11006    TypeAnnotation(::std::boxed::Box<TypeAnnotation<'tree>>),
11007    TypePredicateAnnotation(::std::boxed::Box<TypePredicateAnnotation<'tree>>),
11008}
11009impl<'tree> ::treesitter_types::FromNode<'tree> for AbstractMethodSignatureReturnType<'tree> {
11010    #[allow(clippy::collapsible_else_if)]
11011    fn from_node(
11012        node: ::tree_sitter::Node<'tree>,
11013        src: &'tree [u8],
11014    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
11015        match node.kind() {
11016            "asserts_annotation" => Ok(Self::AssertsAnnotation(::std::boxed::Box::new(
11017                <AssertsAnnotation as ::treesitter_types::FromNode>::from_node(node, src)?,
11018            ))),
11019            "type_annotation" => Ok(Self::TypeAnnotation(::std::boxed::Box::new(
11020                <TypeAnnotation as ::treesitter_types::FromNode>::from_node(node, src)?,
11021            ))),
11022            "type_predicate_annotation" => {
11023                Ok(Self::TypePredicateAnnotation(::std::boxed::Box::new(
11024                    <TypePredicateAnnotation as ::treesitter_types::FromNode>::from_node(
11025                        node, src,
11026                    )?,
11027                )))
11028            }
11029            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
11030        }
11031    }
11032}
11033impl ::treesitter_types::Spanned for AbstractMethodSignatureReturnType<'_> {
11034    fn span(&self) -> ::treesitter_types::Span {
11035        match self {
11036            Self::AssertsAnnotation(inner) => inner.span(),
11037            Self::TypeAnnotation(inner) => inner.span(),
11038            Self::TypePredicateAnnotation(inner) => inner.span(),
11039        }
11040    }
11041}
11042#[derive(Debug, Clone, PartialEq, Eq)]
11043pub enum AbstractMethodSignatureChildren<'tree> {
11044    AccessibilityModifier(::std::boxed::Box<AccessibilityModifier<'tree>>),
11045    OverrideModifier(::std::boxed::Box<OverrideModifier<'tree>>),
11046}
11047impl<'tree> ::treesitter_types::FromNode<'tree> for AbstractMethodSignatureChildren<'tree> {
11048    #[allow(clippy::collapsible_else_if)]
11049    fn from_node(
11050        node: ::tree_sitter::Node<'tree>,
11051        src: &'tree [u8],
11052    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
11053        match node.kind() {
11054            "accessibility_modifier" => Ok(Self::AccessibilityModifier(::std::boxed::Box::new(
11055                <AccessibilityModifier as ::treesitter_types::FromNode>::from_node(node, src)?,
11056            ))),
11057            "override_modifier" => Ok(Self::OverrideModifier(::std::boxed::Box::new(
11058                <OverrideModifier as ::treesitter_types::FromNode>::from_node(node, src)?,
11059            ))),
11060            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
11061        }
11062    }
11063}
11064impl ::treesitter_types::Spanned for AbstractMethodSignatureChildren<'_> {
11065    fn span(&self) -> ::treesitter_types::Span {
11066        match self {
11067            Self::AccessibilityModifier(inner) => inner.span(),
11068            Self::OverrideModifier(inner) => inner.span(),
11069        }
11070    }
11071}
11072#[derive(Debug, Clone, PartialEq, Eq)]
11073pub enum AmbientDeclarationChildren<'tree> {
11074    Declaration(::std::boxed::Box<Declaration<'tree>>),
11075    PropertyIdentifier(::std::boxed::Box<PropertyIdentifier<'tree>>),
11076    StatementBlock(::std::boxed::Box<StatementBlock<'tree>>),
11077    Type(::std::boxed::Box<Type<'tree>>),
11078}
11079impl<'tree> ::treesitter_types::FromNode<'tree> for AmbientDeclarationChildren<'tree> {
11080    #[allow(clippy::collapsible_else_if)]
11081    fn from_node(
11082        node: ::tree_sitter::Node<'tree>,
11083        src: &'tree [u8],
11084    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
11085        match node.kind() {
11086            "property_identifier" => Ok(Self::PropertyIdentifier(::std::boxed::Box::new(
11087                <PropertyIdentifier as ::treesitter_types::FromNode>::from_node(node, src)?,
11088            ))),
11089            "statement_block" => Ok(Self::StatementBlock(::std::boxed::Box::new(
11090                <StatementBlock as ::treesitter_types::FromNode>::from_node(node, src)?,
11091            ))),
11092            _other => {
11093                if let Ok(v) = <Declaration as ::treesitter_types::FromNode>::from_node(node, src) {
11094                    Ok(Self::Declaration(::std::boxed::Box::new(v)))
11095                } else {
11096                    if let Ok(v) = <Type as ::treesitter_types::FromNode>::from_node(node, src) {
11097                        Ok(Self::Type(::std::boxed::Box::new(v)))
11098                    } else {
11099                        Err(::treesitter_types::ParseError::unexpected_kind(
11100                            _other, node,
11101                        ))
11102                    }
11103                }
11104            }
11105        }
11106    }
11107}
11108impl ::treesitter_types::Spanned for AmbientDeclarationChildren<'_> {
11109    fn span(&self) -> ::treesitter_types::Span {
11110        match self {
11111            Self::Declaration(inner) => inner.span(),
11112            Self::PropertyIdentifier(inner) => inner.span(),
11113            Self::StatementBlock(inner) => inner.span(),
11114            Self::Type(inner) => inner.span(),
11115        }
11116    }
11117}
11118#[derive(Debug, Clone, PartialEq, Eq)]
11119pub enum ArgumentsChildren<'tree> {
11120    Expression(::std::boxed::Box<Expression<'tree>>),
11121    SpreadElement(::std::boxed::Box<SpreadElement<'tree>>),
11122}
11123impl<'tree> ::treesitter_types::FromNode<'tree> for ArgumentsChildren<'tree> {
11124    #[allow(clippy::collapsible_else_if)]
11125    fn from_node(
11126        node: ::tree_sitter::Node<'tree>,
11127        src: &'tree [u8],
11128    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
11129        match node.kind() {
11130            "spread_element" => Ok(Self::SpreadElement(::std::boxed::Box::new(
11131                <SpreadElement as ::treesitter_types::FromNode>::from_node(node, src)?,
11132            ))),
11133            _other => {
11134                if let Ok(v) = <Expression as ::treesitter_types::FromNode>::from_node(node, src) {
11135                    Ok(Self::Expression(::std::boxed::Box::new(v)))
11136                } else {
11137                    Err(::treesitter_types::ParseError::unexpected_kind(
11138                        _other, node,
11139                    ))
11140                }
11141            }
11142        }
11143    }
11144}
11145impl ::treesitter_types::Spanned for ArgumentsChildren<'_> {
11146    fn span(&self) -> ::treesitter_types::Span {
11147        match self {
11148            Self::Expression(inner) => inner.span(),
11149            Self::SpreadElement(inner) => inner.span(),
11150        }
11151    }
11152}
11153#[derive(Debug, Clone, PartialEq, Eq)]
11154pub enum ArrayChildren<'tree> {
11155    Expression(::std::boxed::Box<Expression<'tree>>),
11156    SpreadElement(::std::boxed::Box<SpreadElement<'tree>>),
11157}
11158impl<'tree> ::treesitter_types::FromNode<'tree> for ArrayChildren<'tree> {
11159    #[allow(clippy::collapsible_else_if)]
11160    fn from_node(
11161        node: ::tree_sitter::Node<'tree>,
11162        src: &'tree [u8],
11163    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
11164        match node.kind() {
11165            "spread_element" => Ok(Self::SpreadElement(::std::boxed::Box::new(
11166                <SpreadElement as ::treesitter_types::FromNode>::from_node(node, src)?,
11167            ))),
11168            _other => {
11169                if let Ok(v) = <Expression as ::treesitter_types::FromNode>::from_node(node, src) {
11170                    Ok(Self::Expression(::std::boxed::Box::new(v)))
11171                } else {
11172                    Err(::treesitter_types::ParseError::unexpected_kind(
11173                        _other, node,
11174                    ))
11175                }
11176            }
11177        }
11178    }
11179}
11180impl ::treesitter_types::Spanned for ArrayChildren<'_> {
11181    fn span(&self) -> ::treesitter_types::Span {
11182        match self {
11183            Self::Expression(inner) => inner.span(),
11184            Self::SpreadElement(inner) => inner.span(),
11185        }
11186    }
11187}
11188#[derive(Debug, Clone, PartialEq, Eq)]
11189pub enum ArrayPatternChildren<'tree> {
11190    AssignmentPattern(::std::boxed::Box<AssignmentPattern<'tree>>),
11191    Pattern(::std::boxed::Box<Pattern<'tree>>),
11192}
11193impl<'tree> ::treesitter_types::FromNode<'tree> for ArrayPatternChildren<'tree> {
11194    #[allow(clippy::collapsible_else_if)]
11195    fn from_node(
11196        node: ::tree_sitter::Node<'tree>,
11197        src: &'tree [u8],
11198    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
11199        match node.kind() {
11200            "assignment_pattern" => Ok(Self::AssignmentPattern(::std::boxed::Box::new(
11201                <AssignmentPattern as ::treesitter_types::FromNode>::from_node(node, src)?,
11202            ))),
11203            _other => {
11204                if let Ok(v) = <Pattern as ::treesitter_types::FromNode>::from_node(node, src) {
11205                    Ok(Self::Pattern(::std::boxed::Box::new(v)))
11206                } else {
11207                    Err(::treesitter_types::ParseError::unexpected_kind(
11208                        _other, node,
11209                    ))
11210                }
11211            }
11212        }
11213    }
11214}
11215impl ::treesitter_types::Spanned for ArrayPatternChildren<'_> {
11216    fn span(&self) -> ::treesitter_types::Span {
11217        match self {
11218            Self::AssignmentPattern(inner) => inner.span(),
11219            Self::Pattern(inner) => inner.span(),
11220        }
11221    }
11222}
11223#[derive(Debug, Clone, PartialEq, Eq)]
11224pub enum ArrowFunctionBody<'tree> {
11225    Expression(::std::boxed::Box<Expression<'tree>>),
11226    StatementBlock(::std::boxed::Box<StatementBlock<'tree>>),
11227}
11228impl<'tree> ::treesitter_types::FromNode<'tree> for ArrowFunctionBody<'tree> {
11229    #[allow(clippy::collapsible_else_if)]
11230    fn from_node(
11231        node: ::tree_sitter::Node<'tree>,
11232        src: &'tree [u8],
11233    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
11234        match node.kind() {
11235            "statement_block" => Ok(Self::StatementBlock(::std::boxed::Box::new(
11236                <StatementBlock as ::treesitter_types::FromNode>::from_node(node, src)?,
11237            ))),
11238            _other => {
11239                if let Ok(v) = <Expression as ::treesitter_types::FromNode>::from_node(node, src) {
11240                    Ok(Self::Expression(::std::boxed::Box::new(v)))
11241                } else {
11242                    Err(::treesitter_types::ParseError::unexpected_kind(
11243                        _other, node,
11244                    ))
11245                }
11246            }
11247        }
11248    }
11249}
11250impl ::treesitter_types::Spanned for ArrowFunctionBody<'_> {
11251    fn span(&self) -> ::treesitter_types::Span {
11252        match self {
11253            Self::Expression(inner) => inner.span(),
11254            Self::StatementBlock(inner) => inner.span(),
11255        }
11256    }
11257}
11258#[derive(Debug, Clone, PartialEq, Eq)]
11259pub enum ArrowFunctionReturnType<'tree> {
11260    AssertsAnnotation(::std::boxed::Box<AssertsAnnotation<'tree>>),
11261    TypeAnnotation(::std::boxed::Box<TypeAnnotation<'tree>>),
11262    TypePredicateAnnotation(::std::boxed::Box<TypePredicateAnnotation<'tree>>),
11263}
11264impl<'tree> ::treesitter_types::FromNode<'tree> for ArrowFunctionReturnType<'tree> {
11265    #[allow(clippy::collapsible_else_if)]
11266    fn from_node(
11267        node: ::tree_sitter::Node<'tree>,
11268        src: &'tree [u8],
11269    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
11270        match node.kind() {
11271            "asserts_annotation" => Ok(Self::AssertsAnnotation(::std::boxed::Box::new(
11272                <AssertsAnnotation as ::treesitter_types::FromNode>::from_node(node, src)?,
11273            ))),
11274            "type_annotation" => Ok(Self::TypeAnnotation(::std::boxed::Box::new(
11275                <TypeAnnotation as ::treesitter_types::FromNode>::from_node(node, src)?,
11276            ))),
11277            "type_predicate_annotation" => {
11278                Ok(Self::TypePredicateAnnotation(::std::boxed::Box::new(
11279                    <TypePredicateAnnotation as ::treesitter_types::FromNode>::from_node(
11280                        node, src,
11281                    )?,
11282                )))
11283            }
11284            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
11285        }
11286    }
11287}
11288impl ::treesitter_types::Spanned for ArrowFunctionReturnType<'_> {
11289    fn span(&self) -> ::treesitter_types::Span {
11290        match self {
11291            Self::AssertsAnnotation(inner) => inner.span(),
11292            Self::TypeAnnotation(inner) => inner.span(),
11293            Self::TypePredicateAnnotation(inner) => inner.span(),
11294        }
11295    }
11296}
11297#[derive(Debug, Clone, PartialEq, Eq)]
11298pub enum AsExpressionChildren<'tree> {
11299    Expression(::std::boxed::Box<Expression<'tree>>),
11300    Type(::std::boxed::Box<Type<'tree>>),
11301}
11302impl<'tree> ::treesitter_types::FromNode<'tree> for AsExpressionChildren<'tree> {
11303    #[allow(clippy::collapsible_else_if)]
11304    fn from_node(
11305        node: ::tree_sitter::Node<'tree>,
11306        src: &'tree [u8],
11307    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
11308        if let Ok(v) = <Expression as ::treesitter_types::FromNode>::from_node(node, src) {
11309            Ok(Self::Expression(::std::boxed::Box::new(v)))
11310        } else {
11311            if let Ok(v) = <Type as ::treesitter_types::FromNode>::from_node(node, src) {
11312                Ok(Self::Type(::std::boxed::Box::new(v)))
11313            } else {
11314                Err(::treesitter_types::ParseError::unexpected_kind(
11315                    node.kind(),
11316                    node,
11317                ))
11318            }
11319        }
11320    }
11321}
11322impl ::treesitter_types::Spanned for AsExpressionChildren<'_> {
11323    fn span(&self) -> ::treesitter_types::Span {
11324        match self {
11325            Self::Expression(inner) => inner.span(),
11326            Self::Type(inner) => inner.span(),
11327        }
11328    }
11329}
11330#[derive(Debug, Clone, PartialEq, Eq)]
11331pub enum AssertsChildren<'tree> {
11332    Identifier(::std::boxed::Box<Identifier<'tree>>),
11333    This(::std::boxed::Box<This<'tree>>),
11334    TypePredicate(::std::boxed::Box<TypePredicate<'tree>>),
11335}
11336impl<'tree> ::treesitter_types::FromNode<'tree> for AssertsChildren<'tree> {
11337    #[allow(clippy::collapsible_else_if)]
11338    fn from_node(
11339        node: ::tree_sitter::Node<'tree>,
11340        src: &'tree [u8],
11341    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
11342        match node.kind() {
11343            "identifier" => Ok(Self::Identifier(::std::boxed::Box::new(
11344                <Identifier as ::treesitter_types::FromNode>::from_node(node, src)?,
11345            ))),
11346            "this" => Ok(Self::This(::std::boxed::Box::new(
11347                <This as ::treesitter_types::FromNode>::from_node(node, src)?,
11348            ))),
11349            "type_predicate" => Ok(Self::TypePredicate(::std::boxed::Box::new(
11350                <TypePredicate as ::treesitter_types::FromNode>::from_node(node, src)?,
11351            ))),
11352            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
11353        }
11354    }
11355}
11356impl ::treesitter_types::Spanned for AssertsChildren<'_> {
11357    fn span(&self) -> ::treesitter_types::Span {
11358        match self {
11359            Self::Identifier(inner) => inner.span(),
11360            Self::This(inner) => inner.span(),
11361            Self::TypePredicate(inner) => inner.span(),
11362        }
11363    }
11364}
11365#[derive(Debug, Clone, PartialEq, Eq)]
11366pub enum AssignmentExpressionLeft<'tree> {
11367    ArrayPattern(::std::boxed::Box<ArrayPattern<'tree>>),
11368    Identifier(::std::boxed::Box<Identifier<'tree>>),
11369    MemberExpression(::std::boxed::Box<MemberExpression<'tree>>),
11370    NonNullExpression(::std::boxed::Box<NonNullExpression<'tree>>),
11371    ObjectPattern(::std::boxed::Box<ObjectPattern<'tree>>),
11372    ParenthesizedExpression(::std::boxed::Box<ParenthesizedExpression<'tree>>),
11373    SubscriptExpression(::std::boxed::Box<SubscriptExpression<'tree>>),
11374    Undefined(::std::boxed::Box<Undefined<'tree>>),
11375}
11376impl<'tree> ::treesitter_types::FromNode<'tree> for AssignmentExpressionLeft<'tree> {
11377    #[allow(clippy::collapsible_else_if)]
11378    fn from_node(
11379        node: ::tree_sitter::Node<'tree>,
11380        src: &'tree [u8],
11381    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
11382        match node.kind() {
11383            "array_pattern" => Ok(Self::ArrayPattern(::std::boxed::Box::new(
11384                <ArrayPattern as ::treesitter_types::FromNode>::from_node(node, src)?,
11385            ))),
11386            "identifier" => Ok(Self::Identifier(::std::boxed::Box::new(
11387                <Identifier as ::treesitter_types::FromNode>::from_node(node, src)?,
11388            ))),
11389            "member_expression" => Ok(Self::MemberExpression(::std::boxed::Box::new(
11390                <MemberExpression as ::treesitter_types::FromNode>::from_node(node, src)?,
11391            ))),
11392            "non_null_expression" => Ok(Self::NonNullExpression(::std::boxed::Box::new(
11393                <NonNullExpression as ::treesitter_types::FromNode>::from_node(node, src)?,
11394            ))),
11395            "object_pattern" => Ok(Self::ObjectPattern(::std::boxed::Box::new(
11396                <ObjectPattern as ::treesitter_types::FromNode>::from_node(node, src)?,
11397            ))),
11398            "parenthesized_expression" => {
11399                Ok(Self::ParenthesizedExpression(::std::boxed::Box::new(
11400                    <ParenthesizedExpression as ::treesitter_types::FromNode>::from_node(
11401                        node, src,
11402                    )?,
11403                )))
11404            }
11405            "subscript_expression" => Ok(Self::SubscriptExpression(::std::boxed::Box::new(
11406                <SubscriptExpression as ::treesitter_types::FromNode>::from_node(node, src)?,
11407            ))),
11408            "undefined" => Ok(Self::Undefined(::std::boxed::Box::new(
11409                <Undefined as ::treesitter_types::FromNode>::from_node(node, src)?,
11410            ))),
11411            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
11412        }
11413    }
11414}
11415impl ::treesitter_types::Spanned for AssignmentExpressionLeft<'_> {
11416    fn span(&self) -> ::treesitter_types::Span {
11417        match self {
11418            Self::ArrayPattern(inner) => inner.span(),
11419            Self::Identifier(inner) => inner.span(),
11420            Self::MemberExpression(inner) => inner.span(),
11421            Self::NonNullExpression(inner) => inner.span(),
11422            Self::ObjectPattern(inner) => inner.span(),
11423            Self::ParenthesizedExpression(inner) => inner.span(),
11424            Self::SubscriptExpression(inner) => inner.span(),
11425            Self::Undefined(inner) => inner.span(),
11426        }
11427    }
11428}
11429#[derive(Debug, Clone, PartialEq, Eq)]
11430pub enum AugmentedAssignmentExpressionLeft<'tree> {
11431    Identifier(::std::boxed::Box<Identifier<'tree>>),
11432    MemberExpression(::std::boxed::Box<MemberExpression<'tree>>),
11433    NonNullExpression(::std::boxed::Box<NonNullExpression<'tree>>),
11434    ParenthesizedExpression(::std::boxed::Box<ParenthesizedExpression<'tree>>),
11435    SubscriptExpression(::std::boxed::Box<SubscriptExpression<'tree>>),
11436}
11437impl<'tree> ::treesitter_types::FromNode<'tree> for AugmentedAssignmentExpressionLeft<'tree> {
11438    #[allow(clippy::collapsible_else_if)]
11439    fn from_node(
11440        node: ::tree_sitter::Node<'tree>,
11441        src: &'tree [u8],
11442    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
11443        match node.kind() {
11444            "identifier" => Ok(Self::Identifier(::std::boxed::Box::new(
11445                <Identifier as ::treesitter_types::FromNode>::from_node(node, src)?,
11446            ))),
11447            "member_expression" => Ok(Self::MemberExpression(::std::boxed::Box::new(
11448                <MemberExpression as ::treesitter_types::FromNode>::from_node(node, src)?,
11449            ))),
11450            "non_null_expression" => Ok(Self::NonNullExpression(::std::boxed::Box::new(
11451                <NonNullExpression as ::treesitter_types::FromNode>::from_node(node, src)?,
11452            ))),
11453            "parenthesized_expression" => {
11454                Ok(Self::ParenthesizedExpression(::std::boxed::Box::new(
11455                    <ParenthesizedExpression as ::treesitter_types::FromNode>::from_node(
11456                        node, src,
11457                    )?,
11458                )))
11459            }
11460            "subscript_expression" => Ok(Self::SubscriptExpression(::std::boxed::Box::new(
11461                <SubscriptExpression as ::treesitter_types::FromNode>::from_node(node, src)?,
11462            ))),
11463            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
11464        }
11465    }
11466}
11467impl ::treesitter_types::Spanned for AugmentedAssignmentExpressionLeft<'_> {
11468    fn span(&self) -> ::treesitter_types::Span {
11469        match self {
11470            Self::Identifier(inner) => inner.span(),
11471            Self::MemberExpression(inner) => inner.span(),
11472            Self::NonNullExpression(inner) => inner.span(),
11473            Self::ParenthesizedExpression(inner) => inner.span(),
11474            Self::SubscriptExpression(inner) => inner.span(),
11475        }
11476    }
11477}
11478#[derive(Debug, Clone, PartialEq, Eq)]
11479pub enum AugmentedAssignmentExpressionOperator {
11480    PercentEq(::treesitter_types::Span),
11481    AmpAmpEq(::treesitter_types::Span),
11482    AmpEq(::treesitter_types::Span),
11483    StarStarEq(::treesitter_types::Span),
11484    StarEq(::treesitter_types::Span),
11485    PlusEq(::treesitter_types::Span),
11486    MinusEq(::treesitter_types::Span),
11487    SlashEq(::treesitter_types::Span),
11488    ShlEq(::treesitter_types::Span),
11489    ShrEq(::treesitter_types::Span),
11490    GtGtGtEq(::treesitter_types::Span),
11491    QuestionQuestionEq(::treesitter_types::Span),
11492    CaretEq(::treesitter_types::Span),
11493    PipeEq(::treesitter_types::Span),
11494    PipePipeEq(::treesitter_types::Span),
11495}
11496impl<'tree> ::treesitter_types::FromNode<'tree> for AugmentedAssignmentExpressionOperator {
11497    #[allow(clippy::collapsible_else_if)]
11498    fn from_node(
11499        node: ::tree_sitter::Node<'tree>,
11500        _src: &'tree [u8],
11501    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
11502        match node.kind() {
11503            "%=" => Ok(Self::PercentEq(::treesitter_types::Span::from(node))),
11504            "&&=" => Ok(Self::AmpAmpEq(::treesitter_types::Span::from(node))),
11505            "&=" => Ok(Self::AmpEq(::treesitter_types::Span::from(node))),
11506            "**=" => Ok(Self::StarStarEq(::treesitter_types::Span::from(node))),
11507            "*=" => Ok(Self::StarEq(::treesitter_types::Span::from(node))),
11508            "+=" => Ok(Self::PlusEq(::treesitter_types::Span::from(node))),
11509            "-=" => Ok(Self::MinusEq(::treesitter_types::Span::from(node))),
11510            "/=" => Ok(Self::SlashEq(::treesitter_types::Span::from(node))),
11511            "<<=" => Ok(Self::ShlEq(::treesitter_types::Span::from(node))),
11512            ">>=" => Ok(Self::ShrEq(::treesitter_types::Span::from(node))),
11513            ">>>=" => Ok(Self::GtGtGtEq(::treesitter_types::Span::from(node))),
11514            "??=" => Ok(Self::QuestionQuestionEq(::treesitter_types::Span::from(
11515                node,
11516            ))),
11517            "^=" => Ok(Self::CaretEq(::treesitter_types::Span::from(node))),
11518            "|=" => Ok(Self::PipeEq(::treesitter_types::Span::from(node))),
11519            "||=" => Ok(Self::PipePipeEq(::treesitter_types::Span::from(node))),
11520            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
11521        }
11522    }
11523}
11524impl ::treesitter_types::Spanned for AugmentedAssignmentExpressionOperator {
11525    fn span(&self) -> ::treesitter_types::Span {
11526        match self {
11527            Self::PercentEq(span) => *span,
11528            Self::AmpAmpEq(span) => *span,
11529            Self::AmpEq(span) => *span,
11530            Self::StarStarEq(span) => *span,
11531            Self::StarEq(span) => *span,
11532            Self::PlusEq(span) => *span,
11533            Self::MinusEq(span) => *span,
11534            Self::SlashEq(span) => *span,
11535            Self::ShlEq(span) => *span,
11536            Self::ShrEq(span) => *span,
11537            Self::GtGtGtEq(span) => *span,
11538            Self::QuestionQuestionEq(span) => *span,
11539            Self::CaretEq(span) => *span,
11540            Self::PipeEq(span) => *span,
11541            Self::PipePipeEq(span) => *span,
11542        }
11543    }
11544}
11545#[derive(Debug, Clone, PartialEq, Eq)]
11546pub enum BinaryExpressionLeft<'tree> {
11547    Expression(::std::boxed::Box<Expression<'tree>>),
11548    PrivatePropertyIdentifier(::std::boxed::Box<PrivatePropertyIdentifier<'tree>>),
11549}
11550impl<'tree> ::treesitter_types::FromNode<'tree> for BinaryExpressionLeft<'tree> {
11551    #[allow(clippy::collapsible_else_if)]
11552    fn from_node(
11553        node: ::tree_sitter::Node<'tree>,
11554        src: &'tree [u8],
11555    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
11556        match node.kind() {
11557            "private_property_identifier" => {
11558                Ok(Self::PrivatePropertyIdentifier(::std::boxed::Box::new(
11559                    <PrivatePropertyIdentifier as ::treesitter_types::FromNode>::from_node(
11560                        node, src,
11561                    )?,
11562                )))
11563            }
11564            _other => {
11565                if let Ok(v) = <Expression as ::treesitter_types::FromNode>::from_node(node, src) {
11566                    Ok(Self::Expression(::std::boxed::Box::new(v)))
11567                } else {
11568                    Err(::treesitter_types::ParseError::unexpected_kind(
11569                        _other, node,
11570                    ))
11571                }
11572            }
11573        }
11574    }
11575}
11576impl ::treesitter_types::Spanned for BinaryExpressionLeft<'_> {
11577    fn span(&self) -> ::treesitter_types::Span {
11578        match self {
11579            Self::Expression(inner) => inner.span(),
11580            Self::PrivatePropertyIdentifier(inner) => inner.span(),
11581        }
11582    }
11583}
11584#[derive(Debug, Clone, PartialEq, Eq)]
11585pub enum BinaryExpressionOperator {
11586    NotEq(::treesitter_types::Span),
11587    BangEqEq(::treesitter_types::Span),
11588    Percent(::treesitter_types::Span),
11589    Amp(::treesitter_types::Span),
11590    AmpAmp(::treesitter_types::Span),
11591    Star(::treesitter_types::Span),
11592    StarStar(::treesitter_types::Span),
11593    Plus(::treesitter_types::Span),
11594    Minus(::treesitter_types::Span),
11595    Slash(::treesitter_types::Span),
11596    Lt(::treesitter_types::Span),
11597    Shl(::treesitter_types::Span),
11598    LtEq(::treesitter_types::Span),
11599    EqEq(::treesitter_types::Span),
11600    EqEqEq(::treesitter_types::Span),
11601    Gt(::treesitter_types::Span),
11602    GtEq(::treesitter_types::Span),
11603    Shr(::treesitter_types::Span),
11604    GtGtGt(::treesitter_types::Span),
11605    QuestionQuestion(::treesitter_types::Span),
11606    Caret(::treesitter_types::Span),
11607    In(::treesitter_types::Span),
11608    Instanceof(::treesitter_types::Span),
11609    Pipe(::treesitter_types::Span),
11610    PipePipe(::treesitter_types::Span),
11611}
11612impl<'tree> ::treesitter_types::FromNode<'tree> for BinaryExpressionOperator {
11613    #[allow(clippy::collapsible_else_if)]
11614    fn from_node(
11615        node: ::tree_sitter::Node<'tree>,
11616        _src: &'tree [u8],
11617    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
11618        match node.kind() {
11619            "!=" => Ok(Self::NotEq(::treesitter_types::Span::from(node))),
11620            "!==" => Ok(Self::BangEqEq(::treesitter_types::Span::from(node))),
11621            "%" => Ok(Self::Percent(::treesitter_types::Span::from(node))),
11622            "&" => Ok(Self::Amp(::treesitter_types::Span::from(node))),
11623            "&&" => Ok(Self::AmpAmp(::treesitter_types::Span::from(node))),
11624            "*" => Ok(Self::Star(::treesitter_types::Span::from(node))),
11625            "**" => Ok(Self::StarStar(::treesitter_types::Span::from(node))),
11626            "+" => Ok(Self::Plus(::treesitter_types::Span::from(node))),
11627            "-" => Ok(Self::Minus(::treesitter_types::Span::from(node))),
11628            "/" => Ok(Self::Slash(::treesitter_types::Span::from(node))),
11629            "<" => Ok(Self::Lt(::treesitter_types::Span::from(node))),
11630            "<<" => Ok(Self::Shl(::treesitter_types::Span::from(node))),
11631            "<=" => Ok(Self::LtEq(::treesitter_types::Span::from(node))),
11632            "==" => Ok(Self::EqEq(::treesitter_types::Span::from(node))),
11633            "===" => Ok(Self::EqEqEq(::treesitter_types::Span::from(node))),
11634            ">" => Ok(Self::Gt(::treesitter_types::Span::from(node))),
11635            ">=" => Ok(Self::GtEq(::treesitter_types::Span::from(node))),
11636            ">>" => Ok(Self::Shr(::treesitter_types::Span::from(node))),
11637            ">>>" => Ok(Self::GtGtGt(::treesitter_types::Span::from(node))),
11638            "??" => Ok(Self::QuestionQuestion(::treesitter_types::Span::from(node))),
11639            "^" => Ok(Self::Caret(::treesitter_types::Span::from(node))),
11640            "in" => Ok(Self::In(::treesitter_types::Span::from(node))),
11641            "instanceof" => Ok(Self::Instanceof(::treesitter_types::Span::from(node))),
11642            "|" => Ok(Self::Pipe(::treesitter_types::Span::from(node))),
11643            "||" => Ok(Self::PipePipe(::treesitter_types::Span::from(node))),
11644            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
11645        }
11646    }
11647}
11648impl ::treesitter_types::Spanned for BinaryExpressionOperator {
11649    fn span(&self) -> ::treesitter_types::Span {
11650        match self {
11651            Self::NotEq(span) => *span,
11652            Self::BangEqEq(span) => *span,
11653            Self::Percent(span) => *span,
11654            Self::Amp(span) => *span,
11655            Self::AmpAmp(span) => *span,
11656            Self::Star(span) => *span,
11657            Self::StarStar(span) => *span,
11658            Self::Plus(span) => *span,
11659            Self::Minus(span) => *span,
11660            Self::Slash(span) => *span,
11661            Self::Lt(span) => *span,
11662            Self::Shl(span) => *span,
11663            Self::LtEq(span) => *span,
11664            Self::EqEq(span) => *span,
11665            Self::EqEqEq(span) => *span,
11666            Self::Gt(span) => *span,
11667            Self::GtEq(span) => *span,
11668            Self::Shr(span) => *span,
11669            Self::GtGtGt(span) => *span,
11670            Self::QuestionQuestion(span) => *span,
11671            Self::Caret(span) => *span,
11672            Self::In(span) => *span,
11673            Self::Instanceof(span) => *span,
11674            Self::Pipe(span) => *span,
11675            Self::PipePipe(span) => *span,
11676        }
11677    }
11678}
11679#[derive(Debug, Clone, PartialEq, Eq)]
11680pub enum CallExpressionArguments<'tree> {
11681    Arguments(::std::boxed::Box<Arguments<'tree>>),
11682    TemplateString(::std::boxed::Box<TemplateString<'tree>>),
11683}
11684impl<'tree> ::treesitter_types::FromNode<'tree> for CallExpressionArguments<'tree> {
11685    #[allow(clippy::collapsible_else_if)]
11686    fn from_node(
11687        node: ::tree_sitter::Node<'tree>,
11688        src: &'tree [u8],
11689    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
11690        match node.kind() {
11691            "arguments" => Ok(Self::Arguments(::std::boxed::Box::new(
11692                <Arguments as ::treesitter_types::FromNode>::from_node(node, src)?,
11693            ))),
11694            "template_string" => Ok(Self::TemplateString(::std::boxed::Box::new(
11695                <TemplateString as ::treesitter_types::FromNode>::from_node(node, src)?,
11696            ))),
11697            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
11698        }
11699    }
11700}
11701impl ::treesitter_types::Spanned for CallExpressionArguments<'_> {
11702    fn span(&self) -> ::treesitter_types::Span {
11703        match self {
11704            Self::Arguments(inner) => inner.span(),
11705            Self::TemplateString(inner) => inner.span(),
11706        }
11707    }
11708}
11709#[derive(Debug, Clone, PartialEq, Eq)]
11710pub enum CallExpressionFunction<'tree> {
11711    Expression(::std::boxed::Box<Expression<'tree>>),
11712    Import(::std::boxed::Box<Import<'tree>>),
11713}
11714impl<'tree> ::treesitter_types::FromNode<'tree> for CallExpressionFunction<'tree> {
11715    #[allow(clippy::collapsible_else_if)]
11716    fn from_node(
11717        node: ::tree_sitter::Node<'tree>,
11718        src: &'tree [u8],
11719    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
11720        match node.kind() {
11721            "import" => Ok(Self::Import(::std::boxed::Box::new(
11722                <Import as ::treesitter_types::FromNode>::from_node(node, src)?,
11723            ))),
11724            _other => {
11725                if let Ok(v) = <Expression as ::treesitter_types::FromNode>::from_node(node, src) {
11726                    Ok(Self::Expression(::std::boxed::Box::new(v)))
11727                } else {
11728                    Err(::treesitter_types::ParseError::unexpected_kind(
11729                        _other, node,
11730                    ))
11731                }
11732            }
11733        }
11734    }
11735}
11736impl ::treesitter_types::Spanned for CallExpressionFunction<'_> {
11737    fn span(&self) -> ::treesitter_types::Span {
11738        match self {
11739            Self::Expression(inner) => inner.span(),
11740            Self::Import(inner) => inner.span(),
11741        }
11742    }
11743}
11744#[derive(Debug, Clone, PartialEq, Eq)]
11745pub enum CallSignatureReturnType<'tree> {
11746    AssertsAnnotation(::std::boxed::Box<AssertsAnnotation<'tree>>),
11747    TypeAnnotation(::std::boxed::Box<TypeAnnotation<'tree>>),
11748    TypePredicateAnnotation(::std::boxed::Box<TypePredicateAnnotation<'tree>>),
11749}
11750impl<'tree> ::treesitter_types::FromNode<'tree> for CallSignatureReturnType<'tree> {
11751    #[allow(clippy::collapsible_else_if)]
11752    fn from_node(
11753        node: ::tree_sitter::Node<'tree>,
11754        src: &'tree [u8],
11755    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
11756        match node.kind() {
11757            "asserts_annotation" => Ok(Self::AssertsAnnotation(::std::boxed::Box::new(
11758                <AssertsAnnotation as ::treesitter_types::FromNode>::from_node(node, src)?,
11759            ))),
11760            "type_annotation" => Ok(Self::TypeAnnotation(::std::boxed::Box::new(
11761                <TypeAnnotation as ::treesitter_types::FromNode>::from_node(node, src)?,
11762            ))),
11763            "type_predicate_annotation" => {
11764                Ok(Self::TypePredicateAnnotation(::std::boxed::Box::new(
11765                    <TypePredicateAnnotation as ::treesitter_types::FromNode>::from_node(
11766                        node, src,
11767                    )?,
11768                )))
11769            }
11770            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
11771        }
11772    }
11773}
11774impl ::treesitter_types::Spanned for CallSignatureReturnType<'_> {
11775    fn span(&self) -> ::treesitter_types::Span {
11776        match self {
11777            Self::AssertsAnnotation(inner) => inner.span(),
11778            Self::TypeAnnotation(inner) => inner.span(),
11779            Self::TypePredicateAnnotation(inner) => inner.span(),
11780        }
11781    }
11782}
11783#[derive(Debug, Clone, PartialEq, Eq)]
11784pub enum CatchClauseParameter<'tree> {
11785    ArrayPattern(::std::boxed::Box<ArrayPattern<'tree>>),
11786    Identifier(::std::boxed::Box<Identifier<'tree>>),
11787    ObjectPattern(::std::boxed::Box<ObjectPattern<'tree>>),
11788}
11789impl<'tree> ::treesitter_types::FromNode<'tree> for CatchClauseParameter<'tree> {
11790    #[allow(clippy::collapsible_else_if)]
11791    fn from_node(
11792        node: ::tree_sitter::Node<'tree>,
11793        src: &'tree [u8],
11794    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
11795        match node.kind() {
11796            "array_pattern" => Ok(Self::ArrayPattern(::std::boxed::Box::new(
11797                <ArrayPattern as ::treesitter_types::FromNode>::from_node(node, src)?,
11798            ))),
11799            "identifier" => Ok(Self::Identifier(::std::boxed::Box::new(
11800                <Identifier as ::treesitter_types::FromNode>::from_node(node, src)?,
11801            ))),
11802            "object_pattern" => Ok(Self::ObjectPattern(::std::boxed::Box::new(
11803                <ObjectPattern as ::treesitter_types::FromNode>::from_node(node, src)?,
11804            ))),
11805            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
11806        }
11807    }
11808}
11809impl ::treesitter_types::Spanned for CatchClauseParameter<'_> {
11810    fn span(&self) -> ::treesitter_types::Span {
11811        match self {
11812            Self::ArrayPattern(inner) => inner.span(),
11813            Self::Identifier(inner) => inner.span(),
11814            Self::ObjectPattern(inner) => inner.span(),
11815        }
11816    }
11817}
11818#[derive(Debug, Clone, PartialEq, Eq)]
11819pub enum ClassBodyChildren<'tree> {
11820    AbstractMethodSignature(::std::boxed::Box<AbstractMethodSignature<'tree>>),
11821    ClassStaticBlock(::std::boxed::Box<ClassStaticBlock<'tree>>),
11822    IndexSignature(::std::boxed::Box<IndexSignature<'tree>>),
11823    MethodDefinition(::std::boxed::Box<MethodDefinition<'tree>>),
11824    MethodSignature(::std::boxed::Box<MethodSignature<'tree>>),
11825    PublicFieldDefinition(::std::boxed::Box<PublicFieldDefinition<'tree>>),
11826}
11827impl<'tree> ::treesitter_types::FromNode<'tree> for ClassBodyChildren<'tree> {
11828    #[allow(clippy::collapsible_else_if)]
11829    fn from_node(
11830        node: ::tree_sitter::Node<'tree>,
11831        src: &'tree [u8],
11832    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
11833        match node.kind() {
11834            "abstract_method_signature" => {
11835                Ok(Self::AbstractMethodSignature(::std::boxed::Box::new(
11836                    <AbstractMethodSignature as ::treesitter_types::FromNode>::from_node(
11837                        node, src,
11838                    )?,
11839                )))
11840            }
11841            "class_static_block" => Ok(Self::ClassStaticBlock(::std::boxed::Box::new(
11842                <ClassStaticBlock as ::treesitter_types::FromNode>::from_node(node, src)?,
11843            ))),
11844            "index_signature" => Ok(Self::IndexSignature(::std::boxed::Box::new(
11845                <IndexSignature as ::treesitter_types::FromNode>::from_node(node, src)?,
11846            ))),
11847            "method_definition" => Ok(Self::MethodDefinition(::std::boxed::Box::new(
11848                <MethodDefinition as ::treesitter_types::FromNode>::from_node(node, src)?,
11849            ))),
11850            "method_signature" => Ok(Self::MethodSignature(::std::boxed::Box::new(
11851                <MethodSignature as ::treesitter_types::FromNode>::from_node(node, src)?,
11852            ))),
11853            "public_field_definition" => Ok(Self::PublicFieldDefinition(::std::boxed::Box::new(
11854                <PublicFieldDefinition as ::treesitter_types::FromNode>::from_node(node, src)?,
11855            ))),
11856            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
11857        }
11858    }
11859}
11860impl ::treesitter_types::Spanned for ClassBodyChildren<'_> {
11861    fn span(&self) -> ::treesitter_types::Span {
11862        match self {
11863            Self::AbstractMethodSignature(inner) => inner.span(),
11864            Self::ClassStaticBlock(inner) => inner.span(),
11865            Self::IndexSignature(inner) => inner.span(),
11866            Self::MethodDefinition(inner) => inner.span(),
11867            Self::MethodSignature(inner) => inner.span(),
11868            Self::PublicFieldDefinition(inner) => inner.span(),
11869        }
11870    }
11871}
11872#[derive(Debug, Clone, PartialEq, Eq)]
11873pub enum ClassHeritageChildren<'tree> {
11874    ExtendsClause(::std::boxed::Box<ExtendsClause<'tree>>),
11875    ImplementsClause(::std::boxed::Box<ImplementsClause<'tree>>),
11876}
11877impl<'tree> ::treesitter_types::FromNode<'tree> for ClassHeritageChildren<'tree> {
11878    #[allow(clippy::collapsible_else_if)]
11879    fn from_node(
11880        node: ::tree_sitter::Node<'tree>,
11881        src: &'tree [u8],
11882    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
11883        match node.kind() {
11884            "extends_clause" => Ok(Self::ExtendsClause(::std::boxed::Box::new(
11885                <ExtendsClause as ::treesitter_types::FromNode>::from_node(node, src)?,
11886            ))),
11887            "implements_clause" => Ok(Self::ImplementsClause(::std::boxed::Box::new(
11888                <ImplementsClause as ::treesitter_types::FromNode>::from_node(node, src)?,
11889            ))),
11890            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
11891        }
11892    }
11893}
11894impl ::treesitter_types::Spanned for ClassHeritageChildren<'_> {
11895    fn span(&self) -> ::treesitter_types::Span {
11896        match self {
11897            Self::ExtendsClause(inner) => inner.span(),
11898            Self::ImplementsClause(inner) => inner.span(),
11899        }
11900    }
11901}
11902#[derive(Debug, Clone, PartialEq, Eq)]
11903pub enum DecoratorChildren<'tree> {
11904    CallExpression(::std::boxed::Box<CallExpression<'tree>>),
11905    Identifier(::std::boxed::Box<Identifier<'tree>>),
11906    MemberExpression(::std::boxed::Box<MemberExpression<'tree>>),
11907    ParenthesizedExpression(::std::boxed::Box<ParenthesizedExpression<'tree>>),
11908}
11909impl<'tree> ::treesitter_types::FromNode<'tree> for DecoratorChildren<'tree> {
11910    #[allow(clippy::collapsible_else_if)]
11911    fn from_node(
11912        node: ::tree_sitter::Node<'tree>,
11913        src: &'tree [u8],
11914    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
11915        match node.kind() {
11916            "call_expression" => Ok(Self::CallExpression(::std::boxed::Box::new(
11917                <CallExpression as ::treesitter_types::FromNode>::from_node(node, src)?,
11918            ))),
11919            "identifier" => Ok(Self::Identifier(::std::boxed::Box::new(
11920                <Identifier as ::treesitter_types::FromNode>::from_node(node, src)?,
11921            ))),
11922            "member_expression" => Ok(Self::MemberExpression(::std::boxed::Box::new(
11923                <MemberExpression as ::treesitter_types::FromNode>::from_node(node, src)?,
11924            ))),
11925            "parenthesized_expression" => {
11926                Ok(Self::ParenthesizedExpression(::std::boxed::Box::new(
11927                    <ParenthesizedExpression as ::treesitter_types::FromNode>::from_node(
11928                        node, src,
11929                    )?,
11930                )))
11931            }
11932            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
11933        }
11934    }
11935}
11936impl ::treesitter_types::Spanned for DecoratorChildren<'_> {
11937    fn span(&self) -> ::treesitter_types::Span {
11938        match self {
11939            Self::CallExpression(inner) => inner.span(),
11940            Self::Identifier(inner) => inner.span(),
11941            Self::MemberExpression(inner) => inner.span(),
11942            Self::ParenthesizedExpression(inner) => inner.span(),
11943        }
11944    }
11945}
11946#[derive(Debug, Clone, PartialEq, Eq)]
11947pub enum EnumAssignmentName<'tree> {
11948    ComputedPropertyName(::std::boxed::Box<ComputedPropertyName<'tree>>),
11949    Number(::std::boxed::Box<Number<'tree>>),
11950    PrivatePropertyIdentifier(::std::boxed::Box<PrivatePropertyIdentifier<'tree>>),
11951    PropertyIdentifier(::std::boxed::Box<PropertyIdentifier<'tree>>),
11952    String(::std::boxed::Box<String<'tree>>),
11953}
11954impl<'tree> ::treesitter_types::FromNode<'tree> for EnumAssignmentName<'tree> {
11955    #[allow(clippy::collapsible_else_if)]
11956    fn from_node(
11957        node: ::tree_sitter::Node<'tree>,
11958        src: &'tree [u8],
11959    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
11960        match node.kind() {
11961            "computed_property_name" => Ok(Self::ComputedPropertyName(::std::boxed::Box::new(
11962                <ComputedPropertyName as ::treesitter_types::FromNode>::from_node(node, src)?,
11963            ))),
11964            "number" => Ok(Self::Number(::std::boxed::Box::new(
11965                <Number as ::treesitter_types::FromNode>::from_node(node, src)?,
11966            ))),
11967            "private_property_identifier" => {
11968                Ok(Self::PrivatePropertyIdentifier(::std::boxed::Box::new(
11969                    <PrivatePropertyIdentifier as ::treesitter_types::FromNode>::from_node(
11970                        node, src,
11971                    )?,
11972                )))
11973            }
11974            "property_identifier" => Ok(Self::PropertyIdentifier(::std::boxed::Box::new(
11975                <PropertyIdentifier as ::treesitter_types::FromNode>::from_node(node, src)?,
11976            ))),
11977            "string" => Ok(Self::String(::std::boxed::Box::new(
11978                <String as ::treesitter_types::FromNode>::from_node(node, src)?,
11979            ))),
11980            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
11981        }
11982    }
11983}
11984impl ::treesitter_types::Spanned for EnumAssignmentName<'_> {
11985    fn span(&self) -> ::treesitter_types::Span {
11986        match self {
11987            Self::ComputedPropertyName(inner) => inner.span(),
11988            Self::Number(inner) => inner.span(),
11989            Self::PrivatePropertyIdentifier(inner) => inner.span(),
11990            Self::PropertyIdentifier(inner) => inner.span(),
11991            Self::String(inner) => inner.span(),
11992        }
11993    }
11994}
11995#[derive(Debug, Clone, PartialEq, Eq)]
11996pub enum EnumBodyName<'tree> {
11997    ComputedPropertyName(::std::boxed::Box<ComputedPropertyName<'tree>>),
11998    Number(::std::boxed::Box<Number<'tree>>),
11999    PrivatePropertyIdentifier(::std::boxed::Box<PrivatePropertyIdentifier<'tree>>),
12000    PropertyIdentifier(::std::boxed::Box<PropertyIdentifier<'tree>>),
12001    String(::std::boxed::Box<String<'tree>>),
12002}
12003impl<'tree> ::treesitter_types::FromNode<'tree> for EnumBodyName<'tree> {
12004    #[allow(clippy::collapsible_else_if)]
12005    fn from_node(
12006        node: ::tree_sitter::Node<'tree>,
12007        src: &'tree [u8],
12008    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
12009        match node.kind() {
12010            "computed_property_name" => Ok(Self::ComputedPropertyName(::std::boxed::Box::new(
12011                <ComputedPropertyName as ::treesitter_types::FromNode>::from_node(node, src)?,
12012            ))),
12013            "number" => Ok(Self::Number(::std::boxed::Box::new(
12014                <Number as ::treesitter_types::FromNode>::from_node(node, src)?,
12015            ))),
12016            "private_property_identifier" => {
12017                Ok(Self::PrivatePropertyIdentifier(::std::boxed::Box::new(
12018                    <PrivatePropertyIdentifier as ::treesitter_types::FromNode>::from_node(
12019                        node, src,
12020                    )?,
12021                )))
12022            }
12023            "property_identifier" => Ok(Self::PropertyIdentifier(::std::boxed::Box::new(
12024                <PropertyIdentifier as ::treesitter_types::FromNode>::from_node(node, src)?,
12025            ))),
12026            "string" => Ok(Self::String(::std::boxed::Box::new(
12027                <String as ::treesitter_types::FromNode>::from_node(node, src)?,
12028            ))),
12029            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
12030        }
12031    }
12032}
12033impl ::treesitter_types::Spanned for EnumBodyName<'_> {
12034    fn span(&self) -> ::treesitter_types::Span {
12035        match self {
12036            Self::ComputedPropertyName(inner) => inner.span(),
12037            Self::Number(inner) => inner.span(),
12038            Self::PrivatePropertyIdentifier(inner) => inner.span(),
12039            Self::PropertyIdentifier(inner) => inner.span(),
12040            Self::String(inner) => inner.span(),
12041        }
12042    }
12043}
12044#[derive(Debug, Clone, PartialEq, Eq)]
12045pub enum ExportSpecifierAlias<'tree> {
12046    Identifier(::std::boxed::Box<Identifier<'tree>>),
12047    String(::std::boxed::Box<String<'tree>>),
12048}
12049impl<'tree> ::treesitter_types::FromNode<'tree> for ExportSpecifierAlias<'tree> {
12050    #[allow(clippy::collapsible_else_if)]
12051    fn from_node(
12052        node: ::tree_sitter::Node<'tree>,
12053        src: &'tree [u8],
12054    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
12055        match node.kind() {
12056            "identifier" => Ok(Self::Identifier(::std::boxed::Box::new(
12057                <Identifier as ::treesitter_types::FromNode>::from_node(node, src)?,
12058            ))),
12059            "string" => Ok(Self::String(::std::boxed::Box::new(
12060                <String as ::treesitter_types::FromNode>::from_node(node, src)?,
12061            ))),
12062            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
12063        }
12064    }
12065}
12066impl ::treesitter_types::Spanned for ExportSpecifierAlias<'_> {
12067    fn span(&self) -> ::treesitter_types::Span {
12068        match self {
12069            Self::Identifier(inner) => inner.span(),
12070            Self::String(inner) => inner.span(),
12071        }
12072    }
12073}
12074#[derive(Debug, Clone, PartialEq, Eq)]
12075pub enum ExportSpecifierName<'tree> {
12076    Identifier(::std::boxed::Box<Identifier<'tree>>),
12077    String(::std::boxed::Box<String<'tree>>),
12078}
12079impl<'tree> ::treesitter_types::FromNode<'tree> for ExportSpecifierName<'tree> {
12080    #[allow(clippy::collapsible_else_if)]
12081    fn from_node(
12082        node: ::tree_sitter::Node<'tree>,
12083        src: &'tree [u8],
12084    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
12085        match node.kind() {
12086            "identifier" => Ok(Self::Identifier(::std::boxed::Box::new(
12087                <Identifier as ::treesitter_types::FromNode>::from_node(node, src)?,
12088            ))),
12089            "string" => Ok(Self::String(::std::boxed::Box::new(
12090                <String as ::treesitter_types::FromNode>::from_node(node, src)?,
12091            ))),
12092            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
12093        }
12094    }
12095}
12096impl ::treesitter_types::Spanned for ExportSpecifierName<'_> {
12097    fn span(&self) -> ::treesitter_types::Span {
12098        match self {
12099            Self::Identifier(inner) => inner.span(),
12100            Self::String(inner) => inner.span(),
12101        }
12102    }
12103}
12104#[derive(Debug, Clone, PartialEq, Eq)]
12105pub enum ExportStatementChildren<'tree> {
12106    ExportClause(::std::boxed::Box<ExportClause<'tree>>),
12107    Expression(::std::boxed::Box<Expression<'tree>>),
12108    Identifier(::std::boxed::Box<Identifier<'tree>>),
12109    NamespaceExport(::std::boxed::Box<NamespaceExport<'tree>>),
12110}
12111impl<'tree> ::treesitter_types::FromNode<'tree> for ExportStatementChildren<'tree> {
12112    #[allow(clippy::collapsible_else_if)]
12113    fn from_node(
12114        node: ::tree_sitter::Node<'tree>,
12115        src: &'tree [u8],
12116    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
12117        match node.kind() {
12118            "export_clause" => Ok(Self::ExportClause(::std::boxed::Box::new(
12119                <ExportClause as ::treesitter_types::FromNode>::from_node(node, src)?,
12120            ))),
12121            "identifier" => Ok(Self::Identifier(::std::boxed::Box::new(
12122                <Identifier as ::treesitter_types::FromNode>::from_node(node, src)?,
12123            ))),
12124            "namespace_export" => Ok(Self::NamespaceExport(::std::boxed::Box::new(
12125                <NamespaceExport as ::treesitter_types::FromNode>::from_node(node, src)?,
12126            ))),
12127            _other => {
12128                if let Ok(v) = <Expression as ::treesitter_types::FromNode>::from_node(node, src) {
12129                    Ok(Self::Expression(::std::boxed::Box::new(v)))
12130                } else {
12131                    Err(::treesitter_types::ParseError::unexpected_kind(
12132                        _other, node,
12133                    ))
12134                }
12135            }
12136        }
12137    }
12138}
12139impl ::treesitter_types::Spanned for ExportStatementChildren<'_> {
12140    fn span(&self) -> ::treesitter_types::Span {
12141        match self {
12142            Self::ExportClause(inner) => inner.span(),
12143            Self::Expression(inner) => inner.span(),
12144            Self::Identifier(inner) => inner.span(),
12145            Self::NamespaceExport(inner) => inner.span(),
12146        }
12147    }
12148}
12149#[derive(Debug, Clone, PartialEq, Eq)]
12150pub enum ExpressionStatementChildren<'tree> {
12151    Expression(::std::boxed::Box<Expression<'tree>>),
12152    SequenceExpression(::std::boxed::Box<SequenceExpression<'tree>>),
12153}
12154impl<'tree> ::treesitter_types::FromNode<'tree> for ExpressionStatementChildren<'tree> {
12155    #[allow(clippy::collapsible_else_if)]
12156    fn from_node(
12157        node: ::tree_sitter::Node<'tree>,
12158        src: &'tree [u8],
12159    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
12160        match node.kind() {
12161            "sequence_expression" => Ok(Self::SequenceExpression(::std::boxed::Box::new(
12162                <SequenceExpression as ::treesitter_types::FromNode>::from_node(node, src)?,
12163            ))),
12164            _other => {
12165                if let Ok(v) = <Expression as ::treesitter_types::FromNode>::from_node(node, src) {
12166                    Ok(Self::Expression(::std::boxed::Box::new(v)))
12167                } else {
12168                    Err(::treesitter_types::ParseError::unexpected_kind(
12169                        _other, node,
12170                    ))
12171                }
12172            }
12173        }
12174    }
12175}
12176impl ::treesitter_types::Spanned for ExpressionStatementChildren<'_> {
12177    fn span(&self) -> ::treesitter_types::Span {
12178        match self {
12179            Self::Expression(inner) => inner.span(),
12180            Self::SequenceExpression(inner) => inner.span(),
12181        }
12182    }
12183}
12184#[derive(Debug, Clone, PartialEq, Eq)]
12185pub enum ExtendsTypeClauseType<'tree> {
12186    GenericType(::std::boxed::Box<GenericType<'tree>>),
12187    NestedTypeIdentifier(::std::boxed::Box<NestedTypeIdentifier<'tree>>),
12188    TypeIdentifier(::std::boxed::Box<TypeIdentifier<'tree>>),
12189}
12190impl<'tree> ::treesitter_types::FromNode<'tree> for ExtendsTypeClauseType<'tree> {
12191    #[allow(clippy::collapsible_else_if)]
12192    fn from_node(
12193        node: ::tree_sitter::Node<'tree>,
12194        src: &'tree [u8],
12195    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
12196        match node.kind() {
12197            "generic_type" => Ok(Self::GenericType(::std::boxed::Box::new(
12198                <GenericType as ::treesitter_types::FromNode>::from_node(node, src)?,
12199            ))),
12200            "nested_type_identifier" => Ok(Self::NestedTypeIdentifier(::std::boxed::Box::new(
12201                <NestedTypeIdentifier as ::treesitter_types::FromNode>::from_node(node, src)?,
12202            ))),
12203            "type_identifier" => Ok(Self::TypeIdentifier(::std::boxed::Box::new(
12204                <TypeIdentifier as ::treesitter_types::FromNode>::from_node(node, src)?,
12205            ))),
12206            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
12207        }
12208    }
12209}
12210impl ::treesitter_types::Spanned for ExtendsTypeClauseType<'_> {
12211    fn span(&self) -> ::treesitter_types::Span {
12212        match self {
12213            Self::GenericType(inner) => inner.span(),
12214            Self::NestedTypeIdentifier(inner) => inner.span(),
12215            Self::TypeIdentifier(inner) => inner.span(),
12216        }
12217    }
12218}
12219#[derive(Debug, Clone, PartialEq, Eq)]
12220pub enum ForInStatementKind {
12221    Const(::treesitter_types::Span),
12222    Let(::treesitter_types::Span),
12223    Var(::treesitter_types::Span),
12224}
12225impl<'tree> ::treesitter_types::FromNode<'tree> for ForInStatementKind {
12226    #[allow(clippy::collapsible_else_if)]
12227    fn from_node(
12228        node: ::tree_sitter::Node<'tree>,
12229        _src: &'tree [u8],
12230    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
12231        match node.kind() {
12232            "const" => Ok(Self::Const(::treesitter_types::Span::from(node))),
12233            "let" => Ok(Self::Let(::treesitter_types::Span::from(node))),
12234            "var" => Ok(Self::Var(::treesitter_types::Span::from(node))),
12235            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
12236        }
12237    }
12238}
12239impl ::treesitter_types::Spanned for ForInStatementKind {
12240    fn span(&self) -> ::treesitter_types::Span {
12241        match self {
12242            Self::Const(span) => *span,
12243            Self::Let(span) => *span,
12244            Self::Var(span) => *span,
12245        }
12246    }
12247}
12248#[derive(Debug, Clone, PartialEq, Eq)]
12249pub enum ForInStatementLeft<'tree> {
12250    ArrayPattern(::std::boxed::Box<ArrayPattern<'tree>>),
12251    Identifier(::std::boxed::Box<Identifier<'tree>>),
12252    MemberExpression(::std::boxed::Box<MemberExpression<'tree>>),
12253    NonNullExpression(::std::boxed::Box<NonNullExpression<'tree>>),
12254    ObjectPattern(::std::boxed::Box<ObjectPattern<'tree>>),
12255    ParenthesizedExpression(::std::boxed::Box<ParenthesizedExpression<'tree>>),
12256    SubscriptExpression(::std::boxed::Box<SubscriptExpression<'tree>>),
12257    Undefined(::std::boxed::Box<Undefined<'tree>>),
12258}
12259impl<'tree> ::treesitter_types::FromNode<'tree> for ForInStatementLeft<'tree> {
12260    #[allow(clippy::collapsible_else_if)]
12261    fn from_node(
12262        node: ::tree_sitter::Node<'tree>,
12263        src: &'tree [u8],
12264    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
12265        match node.kind() {
12266            "array_pattern" => Ok(Self::ArrayPattern(::std::boxed::Box::new(
12267                <ArrayPattern as ::treesitter_types::FromNode>::from_node(node, src)?,
12268            ))),
12269            "identifier" => Ok(Self::Identifier(::std::boxed::Box::new(
12270                <Identifier as ::treesitter_types::FromNode>::from_node(node, src)?,
12271            ))),
12272            "member_expression" => Ok(Self::MemberExpression(::std::boxed::Box::new(
12273                <MemberExpression as ::treesitter_types::FromNode>::from_node(node, src)?,
12274            ))),
12275            "non_null_expression" => Ok(Self::NonNullExpression(::std::boxed::Box::new(
12276                <NonNullExpression as ::treesitter_types::FromNode>::from_node(node, src)?,
12277            ))),
12278            "object_pattern" => Ok(Self::ObjectPattern(::std::boxed::Box::new(
12279                <ObjectPattern as ::treesitter_types::FromNode>::from_node(node, src)?,
12280            ))),
12281            "parenthesized_expression" => {
12282                Ok(Self::ParenthesizedExpression(::std::boxed::Box::new(
12283                    <ParenthesizedExpression as ::treesitter_types::FromNode>::from_node(
12284                        node, src,
12285                    )?,
12286                )))
12287            }
12288            "subscript_expression" => Ok(Self::SubscriptExpression(::std::boxed::Box::new(
12289                <SubscriptExpression as ::treesitter_types::FromNode>::from_node(node, src)?,
12290            ))),
12291            "undefined" => Ok(Self::Undefined(::std::boxed::Box::new(
12292                <Undefined as ::treesitter_types::FromNode>::from_node(node, src)?,
12293            ))),
12294            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
12295        }
12296    }
12297}
12298impl ::treesitter_types::Spanned for ForInStatementLeft<'_> {
12299    fn span(&self) -> ::treesitter_types::Span {
12300        match self {
12301            Self::ArrayPattern(inner) => inner.span(),
12302            Self::Identifier(inner) => inner.span(),
12303            Self::MemberExpression(inner) => inner.span(),
12304            Self::NonNullExpression(inner) => inner.span(),
12305            Self::ObjectPattern(inner) => inner.span(),
12306            Self::ParenthesizedExpression(inner) => inner.span(),
12307            Self::SubscriptExpression(inner) => inner.span(),
12308            Self::Undefined(inner) => inner.span(),
12309        }
12310    }
12311}
12312#[derive(Debug, Clone, PartialEq, Eq)]
12313pub enum ForInStatementOperator {
12314    In(::treesitter_types::Span),
12315    Of(::treesitter_types::Span),
12316}
12317impl<'tree> ::treesitter_types::FromNode<'tree> for ForInStatementOperator {
12318    #[allow(clippy::collapsible_else_if)]
12319    fn from_node(
12320        node: ::tree_sitter::Node<'tree>,
12321        _src: &'tree [u8],
12322    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
12323        match node.kind() {
12324            "in" => Ok(Self::In(::treesitter_types::Span::from(node))),
12325            "of" => Ok(Self::Of(::treesitter_types::Span::from(node))),
12326            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
12327        }
12328    }
12329}
12330impl ::treesitter_types::Spanned for ForInStatementOperator {
12331    fn span(&self) -> ::treesitter_types::Span {
12332        match self {
12333            Self::In(span) => *span,
12334            Self::Of(span) => *span,
12335        }
12336    }
12337}
12338#[derive(Debug, Clone, PartialEq, Eq)]
12339pub enum ForInStatementRight<'tree> {
12340    Expression(::std::boxed::Box<Expression<'tree>>),
12341    SequenceExpression(::std::boxed::Box<SequenceExpression<'tree>>),
12342}
12343impl<'tree> ::treesitter_types::FromNode<'tree> for ForInStatementRight<'tree> {
12344    #[allow(clippy::collapsible_else_if)]
12345    fn from_node(
12346        node: ::tree_sitter::Node<'tree>,
12347        src: &'tree [u8],
12348    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
12349        match node.kind() {
12350            "sequence_expression" => Ok(Self::SequenceExpression(::std::boxed::Box::new(
12351                <SequenceExpression as ::treesitter_types::FromNode>::from_node(node, src)?,
12352            ))),
12353            _other => {
12354                if let Ok(v) = <Expression as ::treesitter_types::FromNode>::from_node(node, src) {
12355                    Ok(Self::Expression(::std::boxed::Box::new(v)))
12356                } else {
12357                    Err(::treesitter_types::ParseError::unexpected_kind(
12358                        _other, node,
12359                    ))
12360                }
12361            }
12362        }
12363    }
12364}
12365impl ::treesitter_types::Spanned for ForInStatementRight<'_> {
12366    fn span(&self) -> ::treesitter_types::Span {
12367        match self {
12368            Self::Expression(inner) => inner.span(),
12369            Self::SequenceExpression(inner) => inner.span(),
12370        }
12371    }
12372}
12373#[derive(Debug, Clone, PartialEq, Eq)]
12374pub enum ForStatementCondition<'tree> {
12375    Semicolon(::treesitter_types::Span),
12376    EmptyStatement(::std::boxed::Box<EmptyStatement<'tree>>),
12377    Expression(::std::boxed::Box<Expression<'tree>>),
12378    SequenceExpression(::std::boxed::Box<SequenceExpression<'tree>>),
12379}
12380impl<'tree> ::treesitter_types::FromNode<'tree> for ForStatementCondition<'tree> {
12381    #[allow(clippy::collapsible_else_if)]
12382    fn from_node(
12383        node: ::tree_sitter::Node<'tree>,
12384        src: &'tree [u8],
12385    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
12386        match node.kind() {
12387            ";" => Ok(Self::Semicolon(::treesitter_types::Span::from(node))),
12388            "empty_statement" => Ok(Self::EmptyStatement(::std::boxed::Box::new(
12389                <EmptyStatement as ::treesitter_types::FromNode>::from_node(node, src)?,
12390            ))),
12391            "sequence_expression" => Ok(Self::SequenceExpression(::std::boxed::Box::new(
12392                <SequenceExpression as ::treesitter_types::FromNode>::from_node(node, src)?,
12393            ))),
12394            _other => {
12395                if let Ok(v) = <Expression as ::treesitter_types::FromNode>::from_node(node, src) {
12396                    Ok(Self::Expression(::std::boxed::Box::new(v)))
12397                } else {
12398                    Err(::treesitter_types::ParseError::unexpected_kind(
12399                        _other, node,
12400                    ))
12401                }
12402            }
12403        }
12404    }
12405}
12406impl ::treesitter_types::Spanned for ForStatementCondition<'_> {
12407    fn span(&self) -> ::treesitter_types::Span {
12408        match self {
12409            Self::Semicolon(span) => *span,
12410            Self::EmptyStatement(inner) => inner.span(),
12411            Self::Expression(inner) => inner.span(),
12412            Self::SequenceExpression(inner) => inner.span(),
12413        }
12414    }
12415}
12416#[derive(Debug, Clone, PartialEq, Eq)]
12417pub enum ForStatementIncrement<'tree> {
12418    Expression(::std::boxed::Box<Expression<'tree>>),
12419    SequenceExpression(::std::boxed::Box<SequenceExpression<'tree>>),
12420}
12421impl<'tree> ::treesitter_types::FromNode<'tree> for ForStatementIncrement<'tree> {
12422    #[allow(clippy::collapsible_else_if)]
12423    fn from_node(
12424        node: ::tree_sitter::Node<'tree>,
12425        src: &'tree [u8],
12426    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
12427        match node.kind() {
12428            "sequence_expression" => Ok(Self::SequenceExpression(::std::boxed::Box::new(
12429                <SequenceExpression as ::treesitter_types::FromNode>::from_node(node, src)?,
12430            ))),
12431            _other => {
12432                if let Ok(v) = <Expression as ::treesitter_types::FromNode>::from_node(node, src) {
12433                    Ok(Self::Expression(::std::boxed::Box::new(v)))
12434                } else {
12435                    Err(::treesitter_types::ParseError::unexpected_kind(
12436                        _other, node,
12437                    ))
12438                }
12439            }
12440        }
12441    }
12442}
12443impl ::treesitter_types::Spanned for ForStatementIncrement<'_> {
12444    fn span(&self) -> ::treesitter_types::Span {
12445        match self {
12446            Self::Expression(inner) => inner.span(),
12447            Self::SequenceExpression(inner) => inner.span(),
12448        }
12449    }
12450}
12451#[derive(Debug, Clone, PartialEq, Eq)]
12452pub enum ForStatementInitializer<'tree> {
12453    EmptyStatement(::std::boxed::Box<EmptyStatement<'tree>>),
12454    Expression(::std::boxed::Box<Expression<'tree>>),
12455    LexicalDeclaration(::std::boxed::Box<LexicalDeclaration<'tree>>),
12456    SequenceExpression(::std::boxed::Box<SequenceExpression<'tree>>),
12457    VariableDeclaration(::std::boxed::Box<VariableDeclaration<'tree>>),
12458}
12459impl<'tree> ::treesitter_types::FromNode<'tree> for ForStatementInitializer<'tree> {
12460    #[allow(clippy::collapsible_else_if)]
12461    fn from_node(
12462        node: ::tree_sitter::Node<'tree>,
12463        src: &'tree [u8],
12464    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
12465        match node.kind() {
12466            "empty_statement" => Ok(Self::EmptyStatement(::std::boxed::Box::new(
12467                <EmptyStatement as ::treesitter_types::FromNode>::from_node(node, src)?,
12468            ))),
12469            "lexical_declaration" => Ok(Self::LexicalDeclaration(::std::boxed::Box::new(
12470                <LexicalDeclaration as ::treesitter_types::FromNode>::from_node(node, src)?,
12471            ))),
12472            "sequence_expression" => Ok(Self::SequenceExpression(::std::boxed::Box::new(
12473                <SequenceExpression as ::treesitter_types::FromNode>::from_node(node, src)?,
12474            ))),
12475            "variable_declaration" => Ok(Self::VariableDeclaration(::std::boxed::Box::new(
12476                <VariableDeclaration as ::treesitter_types::FromNode>::from_node(node, src)?,
12477            ))),
12478            _other => {
12479                if let Ok(v) = <Expression as ::treesitter_types::FromNode>::from_node(node, src) {
12480                    Ok(Self::Expression(::std::boxed::Box::new(v)))
12481                } else {
12482                    Err(::treesitter_types::ParseError::unexpected_kind(
12483                        _other, node,
12484                    ))
12485                }
12486            }
12487        }
12488    }
12489}
12490impl ::treesitter_types::Spanned for ForStatementInitializer<'_> {
12491    fn span(&self) -> ::treesitter_types::Span {
12492        match self {
12493            Self::EmptyStatement(inner) => inner.span(),
12494            Self::Expression(inner) => inner.span(),
12495            Self::LexicalDeclaration(inner) => inner.span(),
12496            Self::SequenceExpression(inner) => inner.span(),
12497            Self::VariableDeclaration(inner) => inner.span(),
12498        }
12499    }
12500}
12501#[derive(Debug, Clone, PartialEq, Eq)]
12502pub enum FormalParametersChildren<'tree> {
12503    OptionalParameter(::std::boxed::Box<OptionalParameter<'tree>>),
12504    RequiredParameter(::std::boxed::Box<RequiredParameter<'tree>>),
12505}
12506impl<'tree> ::treesitter_types::FromNode<'tree> for FormalParametersChildren<'tree> {
12507    #[allow(clippy::collapsible_else_if)]
12508    fn from_node(
12509        node: ::tree_sitter::Node<'tree>,
12510        src: &'tree [u8],
12511    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
12512        match node.kind() {
12513            "optional_parameter" => Ok(Self::OptionalParameter(::std::boxed::Box::new(
12514                <OptionalParameter as ::treesitter_types::FromNode>::from_node(node, src)?,
12515            ))),
12516            "required_parameter" => Ok(Self::RequiredParameter(::std::boxed::Box::new(
12517                <RequiredParameter as ::treesitter_types::FromNode>::from_node(node, src)?,
12518            ))),
12519            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
12520        }
12521    }
12522}
12523impl ::treesitter_types::Spanned for FormalParametersChildren<'_> {
12524    fn span(&self) -> ::treesitter_types::Span {
12525        match self {
12526            Self::OptionalParameter(inner) => inner.span(),
12527            Self::RequiredParameter(inner) => inner.span(),
12528        }
12529    }
12530}
12531#[derive(Debug, Clone, PartialEq, Eq)]
12532pub enum FunctionDeclarationReturnType<'tree> {
12533    AssertsAnnotation(::std::boxed::Box<AssertsAnnotation<'tree>>),
12534    TypeAnnotation(::std::boxed::Box<TypeAnnotation<'tree>>),
12535    TypePredicateAnnotation(::std::boxed::Box<TypePredicateAnnotation<'tree>>),
12536}
12537impl<'tree> ::treesitter_types::FromNode<'tree> for FunctionDeclarationReturnType<'tree> {
12538    #[allow(clippy::collapsible_else_if)]
12539    fn from_node(
12540        node: ::tree_sitter::Node<'tree>,
12541        src: &'tree [u8],
12542    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
12543        match node.kind() {
12544            "asserts_annotation" => Ok(Self::AssertsAnnotation(::std::boxed::Box::new(
12545                <AssertsAnnotation as ::treesitter_types::FromNode>::from_node(node, src)?,
12546            ))),
12547            "type_annotation" => Ok(Self::TypeAnnotation(::std::boxed::Box::new(
12548                <TypeAnnotation as ::treesitter_types::FromNode>::from_node(node, src)?,
12549            ))),
12550            "type_predicate_annotation" => {
12551                Ok(Self::TypePredicateAnnotation(::std::boxed::Box::new(
12552                    <TypePredicateAnnotation as ::treesitter_types::FromNode>::from_node(
12553                        node, src,
12554                    )?,
12555                )))
12556            }
12557            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
12558        }
12559    }
12560}
12561impl ::treesitter_types::Spanned for FunctionDeclarationReturnType<'_> {
12562    fn span(&self) -> ::treesitter_types::Span {
12563        match self {
12564            Self::AssertsAnnotation(inner) => inner.span(),
12565            Self::TypeAnnotation(inner) => inner.span(),
12566            Self::TypePredicateAnnotation(inner) => inner.span(),
12567        }
12568    }
12569}
12570#[derive(Debug, Clone, PartialEq, Eq)]
12571pub enum FunctionExpressionReturnType<'tree> {
12572    AssertsAnnotation(::std::boxed::Box<AssertsAnnotation<'tree>>),
12573    TypeAnnotation(::std::boxed::Box<TypeAnnotation<'tree>>),
12574    TypePredicateAnnotation(::std::boxed::Box<TypePredicateAnnotation<'tree>>),
12575}
12576impl<'tree> ::treesitter_types::FromNode<'tree> for FunctionExpressionReturnType<'tree> {
12577    #[allow(clippy::collapsible_else_if)]
12578    fn from_node(
12579        node: ::tree_sitter::Node<'tree>,
12580        src: &'tree [u8],
12581    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
12582        match node.kind() {
12583            "asserts_annotation" => Ok(Self::AssertsAnnotation(::std::boxed::Box::new(
12584                <AssertsAnnotation as ::treesitter_types::FromNode>::from_node(node, src)?,
12585            ))),
12586            "type_annotation" => Ok(Self::TypeAnnotation(::std::boxed::Box::new(
12587                <TypeAnnotation as ::treesitter_types::FromNode>::from_node(node, src)?,
12588            ))),
12589            "type_predicate_annotation" => {
12590                Ok(Self::TypePredicateAnnotation(::std::boxed::Box::new(
12591                    <TypePredicateAnnotation as ::treesitter_types::FromNode>::from_node(
12592                        node, src,
12593                    )?,
12594                )))
12595            }
12596            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
12597        }
12598    }
12599}
12600impl ::treesitter_types::Spanned for FunctionExpressionReturnType<'_> {
12601    fn span(&self) -> ::treesitter_types::Span {
12602        match self {
12603            Self::AssertsAnnotation(inner) => inner.span(),
12604            Self::TypeAnnotation(inner) => inner.span(),
12605            Self::TypePredicateAnnotation(inner) => inner.span(),
12606        }
12607    }
12608}
12609#[derive(Debug, Clone, PartialEq, Eq)]
12610pub enum FunctionSignatureReturnType<'tree> {
12611    AssertsAnnotation(::std::boxed::Box<AssertsAnnotation<'tree>>),
12612    TypeAnnotation(::std::boxed::Box<TypeAnnotation<'tree>>),
12613    TypePredicateAnnotation(::std::boxed::Box<TypePredicateAnnotation<'tree>>),
12614}
12615impl<'tree> ::treesitter_types::FromNode<'tree> for FunctionSignatureReturnType<'tree> {
12616    #[allow(clippy::collapsible_else_if)]
12617    fn from_node(
12618        node: ::tree_sitter::Node<'tree>,
12619        src: &'tree [u8],
12620    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
12621        match node.kind() {
12622            "asserts_annotation" => Ok(Self::AssertsAnnotation(::std::boxed::Box::new(
12623                <AssertsAnnotation as ::treesitter_types::FromNode>::from_node(node, src)?,
12624            ))),
12625            "type_annotation" => Ok(Self::TypeAnnotation(::std::boxed::Box::new(
12626                <TypeAnnotation as ::treesitter_types::FromNode>::from_node(node, src)?,
12627            ))),
12628            "type_predicate_annotation" => {
12629                Ok(Self::TypePredicateAnnotation(::std::boxed::Box::new(
12630                    <TypePredicateAnnotation as ::treesitter_types::FromNode>::from_node(
12631                        node, src,
12632                    )?,
12633                )))
12634            }
12635            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
12636        }
12637    }
12638}
12639impl ::treesitter_types::Spanned for FunctionSignatureReturnType<'_> {
12640    fn span(&self) -> ::treesitter_types::Span {
12641        match self {
12642            Self::AssertsAnnotation(inner) => inner.span(),
12643            Self::TypeAnnotation(inner) => inner.span(),
12644            Self::TypePredicateAnnotation(inner) => inner.span(),
12645        }
12646    }
12647}
12648#[derive(Debug, Clone, PartialEq, Eq)]
12649pub enum FunctionTypeReturnType<'tree> {
12650    Asserts(::std::boxed::Box<Asserts<'tree>>),
12651    Type(::std::boxed::Box<Type<'tree>>),
12652    TypePredicate(::std::boxed::Box<TypePredicate<'tree>>),
12653}
12654impl<'tree> ::treesitter_types::FromNode<'tree> for FunctionTypeReturnType<'tree> {
12655    #[allow(clippy::collapsible_else_if)]
12656    fn from_node(
12657        node: ::tree_sitter::Node<'tree>,
12658        src: &'tree [u8],
12659    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
12660        match node.kind() {
12661            "asserts" => Ok(Self::Asserts(::std::boxed::Box::new(
12662                <Asserts as ::treesitter_types::FromNode>::from_node(node, src)?,
12663            ))),
12664            "type_predicate" => Ok(Self::TypePredicate(::std::boxed::Box::new(
12665                <TypePredicate as ::treesitter_types::FromNode>::from_node(node, src)?,
12666            ))),
12667            _other => {
12668                if let Ok(v) = <Type as ::treesitter_types::FromNode>::from_node(node, src) {
12669                    Ok(Self::Type(::std::boxed::Box::new(v)))
12670                } else {
12671                    Err(::treesitter_types::ParseError::unexpected_kind(
12672                        _other, node,
12673                    ))
12674                }
12675            }
12676        }
12677    }
12678}
12679impl ::treesitter_types::Spanned for FunctionTypeReturnType<'_> {
12680    fn span(&self) -> ::treesitter_types::Span {
12681        match self {
12682            Self::Asserts(inner) => inner.span(),
12683            Self::Type(inner) => inner.span(),
12684            Self::TypePredicate(inner) => inner.span(),
12685        }
12686    }
12687}
12688#[derive(Debug, Clone, PartialEq, Eq)]
12689pub enum GeneratorFunctionReturnType<'tree> {
12690    AssertsAnnotation(::std::boxed::Box<AssertsAnnotation<'tree>>),
12691    TypeAnnotation(::std::boxed::Box<TypeAnnotation<'tree>>),
12692    TypePredicateAnnotation(::std::boxed::Box<TypePredicateAnnotation<'tree>>),
12693}
12694impl<'tree> ::treesitter_types::FromNode<'tree> for GeneratorFunctionReturnType<'tree> {
12695    #[allow(clippy::collapsible_else_if)]
12696    fn from_node(
12697        node: ::tree_sitter::Node<'tree>,
12698        src: &'tree [u8],
12699    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
12700        match node.kind() {
12701            "asserts_annotation" => Ok(Self::AssertsAnnotation(::std::boxed::Box::new(
12702                <AssertsAnnotation as ::treesitter_types::FromNode>::from_node(node, src)?,
12703            ))),
12704            "type_annotation" => Ok(Self::TypeAnnotation(::std::boxed::Box::new(
12705                <TypeAnnotation as ::treesitter_types::FromNode>::from_node(node, src)?,
12706            ))),
12707            "type_predicate_annotation" => {
12708                Ok(Self::TypePredicateAnnotation(::std::boxed::Box::new(
12709                    <TypePredicateAnnotation as ::treesitter_types::FromNode>::from_node(
12710                        node, src,
12711                    )?,
12712                )))
12713            }
12714            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
12715        }
12716    }
12717}
12718impl ::treesitter_types::Spanned for GeneratorFunctionReturnType<'_> {
12719    fn span(&self) -> ::treesitter_types::Span {
12720        match self {
12721            Self::AssertsAnnotation(inner) => inner.span(),
12722            Self::TypeAnnotation(inner) => inner.span(),
12723            Self::TypePredicateAnnotation(inner) => inner.span(),
12724        }
12725    }
12726}
12727#[derive(Debug, Clone, PartialEq, Eq)]
12728pub enum GeneratorFunctionDeclarationReturnType<'tree> {
12729    AssertsAnnotation(::std::boxed::Box<AssertsAnnotation<'tree>>),
12730    TypeAnnotation(::std::boxed::Box<TypeAnnotation<'tree>>),
12731    TypePredicateAnnotation(::std::boxed::Box<TypePredicateAnnotation<'tree>>),
12732}
12733impl<'tree> ::treesitter_types::FromNode<'tree> for GeneratorFunctionDeclarationReturnType<'tree> {
12734    #[allow(clippy::collapsible_else_if)]
12735    fn from_node(
12736        node: ::tree_sitter::Node<'tree>,
12737        src: &'tree [u8],
12738    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
12739        match node.kind() {
12740            "asserts_annotation" => Ok(Self::AssertsAnnotation(::std::boxed::Box::new(
12741                <AssertsAnnotation as ::treesitter_types::FromNode>::from_node(node, src)?,
12742            ))),
12743            "type_annotation" => Ok(Self::TypeAnnotation(::std::boxed::Box::new(
12744                <TypeAnnotation as ::treesitter_types::FromNode>::from_node(node, src)?,
12745            ))),
12746            "type_predicate_annotation" => {
12747                Ok(Self::TypePredicateAnnotation(::std::boxed::Box::new(
12748                    <TypePredicateAnnotation as ::treesitter_types::FromNode>::from_node(
12749                        node, src,
12750                    )?,
12751                )))
12752            }
12753            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
12754        }
12755    }
12756}
12757impl ::treesitter_types::Spanned for GeneratorFunctionDeclarationReturnType<'_> {
12758    fn span(&self) -> ::treesitter_types::Span {
12759        match self {
12760            Self::AssertsAnnotation(inner) => inner.span(),
12761            Self::TypeAnnotation(inner) => inner.span(),
12762            Self::TypePredicateAnnotation(inner) => inner.span(),
12763        }
12764    }
12765}
12766#[derive(Debug, Clone, PartialEq, Eq)]
12767pub enum GenericTypeName<'tree> {
12768    NestedTypeIdentifier(::std::boxed::Box<NestedTypeIdentifier<'tree>>),
12769    TypeIdentifier(::std::boxed::Box<TypeIdentifier<'tree>>),
12770}
12771impl<'tree> ::treesitter_types::FromNode<'tree> for GenericTypeName<'tree> {
12772    #[allow(clippy::collapsible_else_if)]
12773    fn from_node(
12774        node: ::tree_sitter::Node<'tree>,
12775        src: &'tree [u8],
12776    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
12777        match node.kind() {
12778            "nested_type_identifier" => Ok(Self::NestedTypeIdentifier(::std::boxed::Box::new(
12779                <NestedTypeIdentifier as ::treesitter_types::FromNode>::from_node(node, src)?,
12780            ))),
12781            "type_identifier" => Ok(Self::TypeIdentifier(::std::boxed::Box::new(
12782                <TypeIdentifier as ::treesitter_types::FromNode>::from_node(node, src)?,
12783            ))),
12784            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
12785        }
12786    }
12787}
12788impl ::treesitter_types::Spanned for GenericTypeName<'_> {
12789    fn span(&self) -> ::treesitter_types::Span {
12790        match self {
12791            Self::NestedTypeIdentifier(inner) => inner.span(),
12792            Self::TypeIdentifier(inner) => inner.span(),
12793        }
12794    }
12795}
12796#[derive(Debug, Clone, PartialEq, Eq)]
12797pub enum ImportAliasChildren<'tree> {
12798    Identifier(::std::boxed::Box<Identifier<'tree>>),
12799    NestedIdentifier(::std::boxed::Box<NestedIdentifier<'tree>>),
12800}
12801impl<'tree> ::treesitter_types::FromNode<'tree> for ImportAliasChildren<'tree> {
12802    #[allow(clippy::collapsible_else_if)]
12803    fn from_node(
12804        node: ::tree_sitter::Node<'tree>,
12805        src: &'tree [u8],
12806    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
12807        match node.kind() {
12808            "identifier" => Ok(Self::Identifier(::std::boxed::Box::new(
12809                <Identifier as ::treesitter_types::FromNode>::from_node(node, src)?,
12810            ))),
12811            "nested_identifier" => Ok(Self::NestedIdentifier(::std::boxed::Box::new(
12812                <NestedIdentifier as ::treesitter_types::FromNode>::from_node(node, src)?,
12813            ))),
12814            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
12815        }
12816    }
12817}
12818impl ::treesitter_types::Spanned for ImportAliasChildren<'_> {
12819    fn span(&self) -> ::treesitter_types::Span {
12820        match self {
12821            Self::Identifier(inner) => inner.span(),
12822            Self::NestedIdentifier(inner) => inner.span(),
12823        }
12824    }
12825}
12826#[derive(Debug, Clone, PartialEq, Eq)]
12827pub enum ImportClauseChildren<'tree> {
12828    Identifier(::std::boxed::Box<Identifier<'tree>>),
12829    NamedImports(::std::boxed::Box<NamedImports<'tree>>),
12830    NamespaceImport(::std::boxed::Box<NamespaceImport<'tree>>),
12831}
12832impl<'tree> ::treesitter_types::FromNode<'tree> for ImportClauseChildren<'tree> {
12833    #[allow(clippy::collapsible_else_if)]
12834    fn from_node(
12835        node: ::tree_sitter::Node<'tree>,
12836        src: &'tree [u8],
12837    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
12838        match node.kind() {
12839            "identifier" => Ok(Self::Identifier(::std::boxed::Box::new(
12840                <Identifier as ::treesitter_types::FromNode>::from_node(node, src)?,
12841            ))),
12842            "named_imports" => Ok(Self::NamedImports(::std::boxed::Box::new(
12843                <NamedImports as ::treesitter_types::FromNode>::from_node(node, src)?,
12844            ))),
12845            "namespace_import" => Ok(Self::NamespaceImport(::std::boxed::Box::new(
12846                <NamespaceImport as ::treesitter_types::FromNode>::from_node(node, src)?,
12847            ))),
12848            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
12849        }
12850    }
12851}
12852impl ::treesitter_types::Spanned for ImportClauseChildren<'_> {
12853    fn span(&self) -> ::treesitter_types::Span {
12854        match self {
12855            Self::Identifier(inner) => inner.span(),
12856            Self::NamedImports(inner) => inner.span(),
12857            Self::NamespaceImport(inner) => inner.span(),
12858        }
12859    }
12860}
12861#[derive(Debug, Clone, PartialEq, Eq)]
12862pub enum ImportSpecifierName<'tree> {
12863    Identifier(::std::boxed::Box<Identifier<'tree>>),
12864    String(::std::boxed::Box<String<'tree>>),
12865}
12866impl<'tree> ::treesitter_types::FromNode<'tree> for ImportSpecifierName<'tree> {
12867    #[allow(clippy::collapsible_else_if)]
12868    fn from_node(
12869        node: ::tree_sitter::Node<'tree>,
12870        src: &'tree [u8],
12871    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
12872        match node.kind() {
12873            "identifier" => Ok(Self::Identifier(::std::boxed::Box::new(
12874                <Identifier as ::treesitter_types::FromNode>::from_node(node, src)?,
12875            ))),
12876            "string" => Ok(Self::String(::std::boxed::Box::new(
12877                <String as ::treesitter_types::FromNode>::from_node(node, src)?,
12878            ))),
12879            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
12880        }
12881    }
12882}
12883impl ::treesitter_types::Spanned for ImportSpecifierName<'_> {
12884    fn span(&self) -> ::treesitter_types::Span {
12885        match self {
12886            Self::Identifier(inner) => inner.span(),
12887            Self::String(inner) => inner.span(),
12888        }
12889    }
12890}
12891#[derive(Debug, Clone, PartialEq, Eq)]
12892pub enum ImportStatementChildren<'tree> {
12893    ImportAttribute(::std::boxed::Box<ImportAttribute<'tree>>),
12894    ImportClause(::std::boxed::Box<ImportClause<'tree>>),
12895    ImportRequireClause(::std::boxed::Box<ImportRequireClause<'tree>>),
12896}
12897impl<'tree> ::treesitter_types::FromNode<'tree> for ImportStatementChildren<'tree> {
12898    #[allow(clippy::collapsible_else_if)]
12899    fn from_node(
12900        node: ::tree_sitter::Node<'tree>,
12901        src: &'tree [u8],
12902    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
12903        match node.kind() {
12904            "import_attribute" => Ok(Self::ImportAttribute(::std::boxed::Box::new(
12905                <ImportAttribute as ::treesitter_types::FromNode>::from_node(node, src)?,
12906            ))),
12907            "import_clause" => Ok(Self::ImportClause(::std::boxed::Box::new(
12908                <ImportClause as ::treesitter_types::FromNode>::from_node(node, src)?,
12909            ))),
12910            "import_require_clause" => Ok(Self::ImportRequireClause(::std::boxed::Box::new(
12911                <ImportRequireClause as ::treesitter_types::FromNode>::from_node(node, src)?,
12912            ))),
12913            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
12914        }
12915    }
12916}
12917impl ::treesitter_types::Spanned for ImportStatementChildren<'_> {
12918    fn span(&self) -> ::treesitter_types::Span {
12919        match self {
12920            Self::ImportAttribute(inner) => inner.span(),
12921            Self::ImportClause(inner) => inner.span(),
12922            Self::ImportRequireClause(inner) => inner.span(),
12923        }
12924    }
12925}
12926#[derive(Debug, Clone, PartialEq, Eq)]
12927pub enum IndexSignatureSign {
12928    Plus(::treesitter_types::Span),
12929    Minus(::treesitter_types::Span),
12930}
12931impl<'tree> ::treesitter_types::FromNode<'tree> for IndexSignatureSign {
12932    #[allow(clippy::collapsible_else_if)]
12933    fn from_node(
12934        node: ::tree_sitter::Node<'tree>,
12935        _src: &'tree [u8],
12936    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
12937        match node.kind() {
12938            "+" => Ok(Self::Plus(::treesitter_types::Span::from(node))),
12939            "-" => Ok(Self::Minus(::treesitter_types::Span::from(node))),
12940            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
12941        }
12942    }
12943}
12944impl ::treesitter_types::Spanned for IndexSignatureSign {
12945    fn span(&self) -> ::treesitter_types::Span {
12946        match self {
12947            Self::Plus(span) => *span,
12948            Self::Minus(span) => *span,
12949        }
12950    }
12951}
12952#[derive(Debug, Clone, PartialEq, Eq)]
12953pub enum IndexSignatureType<'tree> {
12954    AddingTypeAnnotation(::std::boxed::Box<AddingTypeAnnotation<'tree>>),
12955    OmittingTypeAnnotation(::std::boxed::Box<OmittingTypeAnnotation<'tree>>),
12956    OptingTypeAnnotation(::std::boxed::Box<OptingTypeAnnotation<'tree>>),
12957    TypeAnnotation(::std::boxed::Box<TypeAnnotation<'tree>>),
12958}
12959impl<'tree> ::treesitter_types::FromNode<'tree> for IndexSignatureType<'tree> {
12960    #[allow(clippy::collapsible_else_if)]
12961    fn from_node(
12962        node: ::tree_sitter::Node<'tree>,
12963        src: &'tree [u8],
12964    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
12965        match node.kind() {
12966            "adding_type_annotation" => Ok(Self::AddingTypeAnnotation(::std::boxed::Box::new(
12967                <AddingTypeAnnotation as ::treesitter_types::FromNode>::from_node(node, src)?,
12968            ))),
12969            "omitting_type_annotation" => Ok(Self::OmittingTypeAnnotation(::std::boxed::Box::new(
12970                <OmittingTypeAnnotation as ::treesitter_types::FromNode>::from_node(node, src)?,
12971            ))),
12972            "opting_type_annotation" => Ok(Self::OptingTypeAnnotation(::std::boxed::Box::new(
12973                <OptingTypeAnnotation as ::treesitter_types::FromNode>::from_node(node, src)?,
12974            ))),
12975            "type_annotation" => Ok(Self::TypeAnnotation(::std::boxed::Box::new(
12976                <TypeAnnotation as ::treesitter_types::FromNode>::from_node(node, src)?,
12977            ))),
12978            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
12979        }
12980    }
12981}
12982impl ::treesitter_types::Spanned for IndexSignatureType<'_> {
12983    fn span(&self) -> ::treesitter_types::Span {
12984        match self {
12985            Self::AddingTypeAnnotation(inner) => inner.span(),
12986            Self::OmittingTypeAnnotation(inner) => inner.span(),
12987            Self::OptingTypeAnnotation(inner) => inner.span(),
12988            Self::TypeAnnotation(inner) => inner.span(),
12989        }
12990    }
12991}
12992#[derive(Debug, Clone, PartialEq, Eq)]
12993pub enum InferTypeChildren<'tree> {
12994    Type(::std::boxed::Box<Type<'tree>>),
12995    TypeIdentifier(::std::boxed::Box<TypeIdentifier<'tree>>),
12996}
12997impl<'tree> ::treesitter_types::FromNode<'tree> for InferTypeChildren<'tree> {
12998    #[allow(clippy::collapsible_else_if)]
12999    fn from_node(
13000        node: ::tree_sitter::Node<'tree>,
13001        src: &'tree [u8],
13002    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
13003        match node.kind() {
13004            "type_identifier" => Ok(Self::TypeIdentifier(::std::boxed::Box::new(
13005                <TypeIdentifier as ::treesitter_types::FromNode>::from_node(node, src)?,
13006            ))),
13007            _other => {
13008                if let Ok(v) = <Type as ::treesitter_types::FromNode>::from_node(node, src) {
13009                    Ok(Self::Type(::std::boxed::Box::new(v)))
13010                } else {
13011                    Err(::treesitter_types::ParseError::unexpected_kind(
13012                        _other, node,
13013                    ))
13014                }
13015            }
13016        }
13017    }
13018}
13019impl ::treesitter_types::Spanned for InferTypeChildren<'_> {
13020    fn span(&self) -> ::treesitter_types::Span {
13021        match self {
13022            Self::Type(inner) => inner.span(),
13023            Self::TypeIdentifier(inner) => inner.span(),
13024        }
13025    }
13026}
13027#[derive(Debug, Clone, PartialEq, Eq)]
13028pub enum InstantiationExpressionFunction<'tree> {
13029    Identifier(::std::boxed::Box<Identifier<'tree>>),
13030    Import(::std::boxed::Box<Import<'tree>>),
13031    MemberExpression(::std::boxed::Box<MemberExpression<'tree>>),
13032    SubscriptExpression(::std::boxed::Box<SubscriptExpression<'tree>>),
13033}
13034impl<'tree> ::treesitter_types::FromNode<'tree> for InstantiationExpressionFunction<'tree> {
13035    #[allow(clippy::collapsible_else_if)]
13036    fn from_node(
13037        node: ::tree_sitter::Node<'tree>,
13038        src: &'tree [u8],
13039    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
13040        match node.kind() {
13041            "identifier" => Ok(Self::Identifier(::std::boxed::Box::new(
13042                <Identifier as ::treesitter_types::FromNode>::from_node(node, src)?,
13043            ))),
13044            "import" => Ok(Self::Import(::std::boxed::Box::new(
13045                <Import as ::treesitter_types::FromNode>::from_node(node, src)?,
13046            ))),
13047            "member_expression" => Ok(Self::MemberExpression(::std::boxed::Box::new(
13048                <MemberExpression as ::treesitter_types::FromNode>::from_node(node, src)?,
13049            ))),
13050            "subscript_expression" => Ok(Self::SubscriptExpression(::std::boxed::Box::new(
13051                <SubscriptExpression as ::treesitter_types::FromNode>::from_node(node, src)?,
13052            ))),
13053            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
13054        }
13055    }
13056}
13057impl ::treesitter_types::Spanned for InstantiationExpressionFunction<'_> {
13058    fn span(&self) -> ::treesitter_types::Span {
13059        match self {
13060            Self::Identifier(inner) => inner.span(),
13061            Self::Import(inner) => inner.span(),
13062            Self::MemberExpression(inner) => inner.span(),
13063            Self::SubscriptExpression(inner) => inner.span(),
13064        }
13065    }
13066}
13067#[derive(Debug, Clone, PartialEq, Eq)]
13068pub enum InterfaceBodyChildren<'tree> {
13069    CallSignature(::std::boxed::Box<CallSignature<'tree>>),
13070    ConstructSignature(::std::boxed::Box<ConstructSignature<'tree>>),
13071    ExportStatement(::std::boxed::Box<ExportStatement<'tree>>),
13072    IndexSignature(::std::boxed::Box<IndexSignature<'tree>>),
13073    MethodSignature(::std::boxed::Box<MethodSignature<'tree>>),
13074    PropertySignature(::std::boxed::Box<PropertySignature<'tree>>),
13075}
13076impl<'tree> ::treesitter_types::FromNode<'tree> for InterfaceBodyChildren<'tree> {
13077    #[allow(clippy::collapsible_else_if)]
13078    fn from_node(
13079        node: ::tree_sitter::Node<'tree>,
13080        src: &'tree [u8],
13081    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
13082        match node.kind() {
13083            "call_signature" => Ok(Self::CallSignature(::std::boxed::Box::new(
13084                <CallSignature as ::treesitter_types::FromNode>::from_node(node, src)?,
13085            ))),
13086            "construct_signature" => Ok(Self::ConstructSignature(::std::boxed::Box::new(
13087                <ConstructSignature as ::treesitter_types::FromNode>::from_node(node, src)?,
13088            ))),
13089            "export_statement" => Ok(Self::ExportStatement(::std::boxed::Box::new(
13090                <ExportStatement as ::treesitter_types::FromNode>::from_node(node, src)?,
13091            ))),
13092            "index_signature" => Ok(Self::IndexSignature(::std::boxed::Box::new(
13093                <IndexSignature as ::treesitter_types::FromNode>::from_node(node, src)?,
13094            ))),
13095            "method_signature" => Ok(Self::MethodSignature(::std::boxed::Box::new(
13096                <MethodSignature as ::treesitter_types::FromNode>::from_node(node, src)?,
13097            ))),
13098            "property_signature" => Ok(Self::PropertySignature(::std::boxed::Box::new(
13099                <PropertySignature as ::treesitter_types::FromNode>::from_node(node, src)?,
13100            ))),
13101            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
13102        }
13103    }
13104}
13105impl ::treesitter_types::Spanned for InterfaceBodyChildren<'_> {
13106    fn span(&self) -> ::treesitter_types::Span {
13107        match self {
13108            Self::CallSignature(inner) => inner.span(),
13109            Self::ConstructSignature(inner) => inner.span(),
13110            Self::ExportStatement(inner) => inner.span(),
13111            Self::IndexSignature(inner) => inner.span(),
13112            Self::MethodSignature(inner) => inner.span(),
13113            Self::PropertySignature(inner) => inner.span(),
13114        }
13115    }
13116}
13117#[derive(Debug, Clone, PartialEq, Eq)]
13118pub enum InternalModuleName<'tree> {
13119    Identifier(::std::boxed::Box<Identifier<'tree>>),
13120    NestedIdentifier(::std::boxed::Box<NestedIdentifier<'tree>>),
13121    String(::std::boxed::Box<String<'tree>>),
13122}
13123impl<'tree> ::treesitter_types::FromNode<'tree> for InternalModuleName<'tree> {
13124    #[allow(clippy::collapsible_else_if)]
13125    fn from_node(
13126        node: ::tree_sitter::Node<'tree>,
13127        src: &'tree [u8],
13128    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
13129        match node.kind() {
13130            "identifier" => Ok(Self::Identifier(::std::boxed::Box::new(
13131                <Identifier as ::treesitter_types::FromNode>::from_node(node, src)?,
13132            ))),
13133            "nested_identifier" => Ok(Self::NestedIdentifier(::std::boxed::Box::new(
13134                <NestedIdentifier as ::treesitter_types::FromNode>::from_node(node, src)?,
13135            ))),
13136            "string" => Ok(Self::String(::std::boxed::Box::new(
13137                <String as ::treesitter_types::FromNode>::from_node(node, src)?,
13138            ))),
13139            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
13140        }
13141    }
13142}
13143impl ::treesitter_types::Spanned for InternalModuleName<'_> {
13144    fn span(&self) -> ::treesitter_types::Span {
13145        match self {
13146            Self::Identifier(inner) => inner.span(),
13147            Self::NestedIdentifier(inner) => inner.span(),
13148            Self::String(inner) => inner.span(),
13149        }
13150    }
13151}
13152#[derive(Debug, Clone, PartialEq, Eq)]
13153pub enum LexicalDeclarationKind {
13154    Const(::treesitter_types::Span),
13155    Let(::treesitter_types::Span),
13156}
13157impl<'tree> ::treesitter_types::FromNode<'tree> for LexicalDeclarationKind {
13158    #[allow(clippy::collapsible_else_if)]
13159    fn from_node(
13160        node: ::tree_sitter::Node<'tree>,
13161        _src: &'tree [u8],
13162    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
13163        match node.kind() {
13164            "const" => Ok(Self::Const(::treesitter_types::Span::from(node))),
13165            "let" => Ok(Self::Let(::treesitter_types::Span::from(node))),
13166            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
13167        }
13168    }
13169}
13170impl ::treesitter_types::Spanned for LexicalDeclarationKind {
13171    fn span(&self) -> ::treesitter_types::Span {
13172        match self {
13173            Self::Const(span) => *span,
13174            Self::Let(span) => *span,
13175        }
13176    }
13177}
13178#[derive(Debug, Clone, PartialEq, Eq)]
13179pub enum LiteralTypeChildren<'tree> {
13180    False(::std::boxed::Box<False<'tree>>),
13181    Null(::std::boxed::Box<Null<'tree>>),
13182    Number(::std::boxed::Box<Number<'tree>>),
13183    String(::std::boxed::Box<String<'tree>>),
13184    True(::std::boxed::Box<True<'tree>>),
13185    UnaryExpression(::std::boxed::Box<UnaryExpression<'tree>>),
13186    Undefined(::std::boxed::Box<Undefined<'tree>>),
13187}
13188impl<'tree> ::treesitter_types::FromNode<'tree> for LiteralTypeChildren<'tree> {
13189    #[allow(clippy::collapsible_else_if)]
13190    fn from_node(
13191        node: ::tree_sitter::Node<'tree>,
13192        src: &'tree [u8],
13193    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
13194        match node.kind() {
13195            "false" => Ok(Self::False(::std::boxed::Box::new(
13196                <False as ::treesitter_types::FromNode>::from_node(node, src)?,
13197            ))),
13198            "null" => Ok(Self::Null(::std::boxed::Box::new(
13199                <Null as ::treesitter_types::FromNode>::from_node(node, src)?,
13200            ))),
13201            "number" => Ok(Self::Number(::std::boxed::Box::new(
13202                <Number as ::treesitter_types::FromNode>::from_node(node, src)?,
13203            ))),
13204            "string" => Ok(Self::String(::std::boxed::Box::new(
13205                <String as ::treesitter_types::FromNode>::from_node(node, src)?,
13206            ))),
13207            "true" => Ok(Self::True(::std::boxed::Box::new(
13208                <True as ::treesitter_types::FromNode>::from_node(node, src)?,
13209            ))),
13210            "unary_expression" => Ok(Self::UnaryExpression(::std::boxed::Box::new(
13211                <UnaryExpression as ::treesitter_types::FromNode>::from_node(node, src)?,
13212            ))),
13213            "undefined" => Ok(Self::Undefined(::std::boxed::Box::new(
13214                <Undefined as ::treesitter_types::FromNode>::from_node(node, src)?,
13215            ))),
13216            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
13217        }
13218    }
13219}
13220impl ::treesitter_types::Spanned for LiteralTypeChildren<'_> {
13221    fn span(&self) -> ::treesitter_types::Span {
13222        match self {
13223            Self::False(inner) => inner.span(),
13224            Self::Null(inner) => inner.span(),
13225            Self::Number(inner) => inner.span(),
13226            Self::String(inner) => inner.span(),
13227            Self::True(inner) => inner.span(),
13228            Self::UnaryExpression(inner) => inner.span(),
13229            Self::Undefined(inner) => inner.span(),
13230        }
13231    }
13232}
13233#[derive(Debug, Clone, PartialEq, Eq)]
13234pub enum MemberExpressionObject<'tree> {
13235    Expression(::std::boxed::Box<Expression<'tree>>),
13236    Import(::std::boxed::Box<Import<'tree>>),
13237}
13238impl<'tree> ::treesitter_types::FromNode<'tree> for MemberExpressionObject<'tree> {
13239    #[allow(clippy::collapsible_else_if)]
13240    fn from_node(
13241        node: ::tree_sitter::Node<'tree>,
13242        src: &'tree [u8],
13243    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
13244        match node.kind() {
13245            "import" => Ok(Self::Import(::std::boxed::Box::new(
13246                <Import as ::treesitter_types::FromNode>::from_node(node, src)?,
13247            ))),
13248            _other => {
13249                if let Ok(v) = <Expression as ::treesitter_types::FromNode>::from_node(node, src) {
13250                    Ok(Self::Expression(::std::boxed::Box::new(v)))
13251                } else {
13252                    Err(::treesitter_types::ParseError::unexpected_kind(
13253                        _other, node,
13254                    ))
13255                }
13256            }
13257        }
13258    }
13259}
13260impl ::treesitter_types::Spanned for MemberExpressionObject<'_> {
13261    fn span(&self) -> ::treesitter_types::Span {
13262        match self {
13263            Self::Expression(inner) => inner.span(),
13264            Self::Import(inner) => inner.span(),
13265        }
13266    }
13267}
13268#[derive(Debug, Clone, PartialEq, Eq)]
13269pub enum MemberExpressionProperty<'tree> {
13270    PrivatePropertyIdentifier(::std::boxed::Box<PrivatePropertyIdentifier<'tree>>),
13271    PropertyIdentifier(::std::boxed::Box<PropertyIdentifier<'tree>>),
13272}
13273impl<'tree> ::treesitter_types::FromNode<'tree> for MemberExpressionProperty<'tree> {
13274    #[allow(clippy::collapsible_else_if)]
13275    fn from_node(
13276        node: ::tree_sitter::Node<'tree>,
13277        src: &'tree [u8],
13278    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
13279        match node.kind() {
13280            "private_property_identifier" => {
13281                Ok(Self::PrivatePropertyIdentifier(::std::boxed::Box::new(
13282                    <PrivatePropertyIdentifier as ::treesitter_types::FromNode>::from_node(
13283                        node, src,
13284                    )?,
13285                )))
13286            }
13287            "property_identifier" => Ok(Self::PropertyIdentifier(::std::boxed::Box::new(
13288                <PropertyIdentifier as ::treesitter_types::FromNode>::from_node(node, src)?,
13289            ))),
13290            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
13291        }
13292    }
13293}
13294impl ::treesitter_types::Spanned for MemberExpressionProperty<'_> {
13295    fn span(&self) -> ::treesitter_types::Span {
13296        match self {
13297            Self::PrivatePropertyIdentifier(inner) => inner.span(),
13298            Self::PropertyIdentifier(inner) => inner.span(),
13299        }
13300    }
13301}
13302#[derive(Debug, Clone, PartialEq, Eq)]
13303pub enum MethodDefinitionName<'tree> {
13304    ComputedPropertyName(::std::boxed::Box<ComputedPropertyName<'tree>>),
13305    Number(::std::boxed::Box<Number<'tree>>),
13306    PrivatePropertyIdentifier(::std::boxed::Box<PrivatePropertyIdentifier<'tree>>),
13307    PropertyIdentifier(::std::boxed::Box<PropertyIdentifier<'tree>>),
13308    String(::std::boxed::Box<String<'tree>>),
13309}
13310impl<'tree> ::treesitter_types::FromNode<'tree> for MethodDefinitionName<'tree> {
13311    #[allow(clippy::collapsible_else_if)]
13312    fn from_node(
13313        node: ::tree_sitter::Node<'tree>,
13314        src: &'tree [u8],
13315    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
13316        match node.kind() {
13317            "computed_property_name" => Ok(Self::ComputedPropertyName(::std::boxed::Box::new(
13318                <ComputedPropertyName as ::treesitter_types::FromNode>::from_node(node, src)?,
13319            ))),
13320            "number" => Ok(Self::Number(::std::boxed::Box::new(
13321                <Number as ::treesitter_types::FromNode>::from_node(node, src)?,
13322            ))),
13323            "private_property_identifier" => {
13324                Ok(Self::PrivatePropertyIdentifier(::std::boxed::Box::new(
13325                    <PrivatePropertyIdentifier as ::treesitter_types::FromNode>::from_node(
13326                        node, src,
13327                    )?,
13328                )))
13329            }
13330            "property_identifier" => Ok(Self::PropertyIdentifier(::std::boxed::Box::new(
13331                <PropertyIdentifier as ::treesitter_types::FromNode>::from_node(node, src)?,
13332            ))),
13333            "string" => Ok(Self::String(::std::boxed::Box::new(
13334                <String as ::treesitter_types::FromNode>::from_node(node, src)?,
13335            ))),
13336            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
13337        }
13338    }
13339}
13340impl ::treesitter_types::Spanned for MethodDefinitionName<'_> {
13341    fn span(&self) -> ::treesitter_types::Span {
13342        match self {
13343            Self::ComputedPropertyName(inner) => inner.span(),
13344            Self::Number(inner) => inner.span(),
13345            Self::PrivatePropertyIdentifier(inner) => inner.span(),
13346            Self::PropertyIdentifier(inner) => inner.span(),
13347            Self::String(inner) => inner.span(),
13348        }
13349    }
13350}
13351#[derive(Debug, Clone, PartialEq, Eq)]
13352pub enum MethodDefinitionReturnType<'tree> {
13353    AssertsAnnotation(::std::boxed::Box<AssertsAnnotation<'tree>>),
13354    TypeAnnotation(::std::boxed::Box<TypeAnnotation<'tree>>),
13355    TypePredicateAnnotation(::std::boxed::Box<TypePredicateAnnotation<'tree>>),
13356}
13357impl<'tree> ::treesitter_types::FromNode<'tree> for MethodDefinitionReturnType<'tree> {
13358    #[allow(clippy::collapsible_else_if)]
13359    fn from_node(
13360        node: ::tree_sitter::Node<'tree>,
13361        src: &'tree [u8],
13362    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
13363        match node.kind() {
13364            "asserts_annotation" => Ok(Self::AssertsAnnotation(::std::boxed::Box::new(
13365                <AssertsAnnotation as ::treesitter_types::FromNode>::from_node(node, src)?,
13366            ))),
13367            "type_annotation" => Ok(Self::TypeAnnotation(::std::boxed::Box::new(
13368                <TypeAnnotation as ::treesitter_types::FromNode>::from_node(node, src)?,
13369            ))),
13370            "type_predicate_annotation" => {
13371                Ok(Self::TypePredicateAnnotation(::std::boxed::Box::new(
13372                    <TypePredicateAnnotation as ::treesitter_types::FromNode>::from_node(
13373                        node, src,
13374                    )?,
13375                )))
13376            }
13377            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
13378        }
13379    }
13380}
13381impl ::treesitter_types::Spanned for MethodDefinitionReturnType<'_> {
13382    fn span(&self) -> ::treesitter_types::Span {
13383        match self {
13384            Self::AssertsAnnotation(inner) => inner.span(),
13385            Self::TypeAnnotation(inner) => inner.span(),
13386            Self::TypePredicateAnnotation(inner) => inner.span(),
13387        }
13388    }
13389}
13390#[derive(Debug, Clone, PartialEq, Eq)]
13391pub enum MethodDefinitionChildren<'tree> {
13392    AccessibilityModifier(::std::boxed::Box<AccessibilityModifier<'tree>>),
13393    OverrideModifier(::std::boxed::Box<OverrideModifier<'tree>>),
13394}
13395impl<'tree> ::treesitter_types::FromNode<'tree> for MethodDefinitionChildren<'tree> {
13396    #[allow(clippy::collapsible_else_if)]
13397    fn from_node(
13398        node: ::tree_sitter::Node<'tree>,
13399        src: &'tree [u8],
13400    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
13401        match node.kind() {
13402            "accessibility_modifier" => Ok(Self::AccessibilityModifier(::std::boxed::Box::new(
13403                <AccessibilityModifier as ::treesitter_types::FromNode>::from_node(node, src)?,
13404            ))),
13405            "override_modifier" => Ok(Self::OverrideModifier(::std::boxed::Box::new(
13406                <OverrideModifier as ::treesitter_types::FromNode>::from_node(node, src)?,
13407            ))),
13408            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
13409        }
13410    }
13411}
13412impl ::treesitter_types::Spanned for MethodDefinitionChildren<'_> {
13413    fn span(&self) -> ::treesitter_types::Span {
13414        match self {
13415            Self::AccessibilityModifier(inner) => inner.span(),
13416            Self::OverrideModifier(inner) => inner.span(),
13417        }
13418    }
13419}
13420#[derive(Debug, Clone, PartialEq, Eq)]
13421pub enum MethodSignatureName<'tree> {
13422    ComputedPropertyName(::std::boxed::Box<ComputedPropertyName<'tree>>),
13423    Number(::std::boxed::Box<Number<'tree>>),
13424    PrivatePropertyIdentifier(::std::boxed::Box<PrivatePropertyIdentifier<'tree>>),
13425    PropertyIdentifier(::std::boxed::Box<PropertyIdentifier<'tree>>),
13426    String(::std::boxed::Box<String<'tree>>),
13427}
13428impl<'tree> ::treesitter_types::FromNode<'tree> for MethodSignatureName<'tree> {
13429    #[allow(clippy::collapsible_else_if)]
13430    fn from_node(
13431        node: ::tree_sitter::Node<'tree>,
13432        src: &'tree [u8],
13433    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
13434        match node.kind() {
13435            "computed_property_name" => Ok(Self::ComputedPropertyName(::std::boxed::Box::new(
13436                <ComputedPropertyName as ::treesitter_types::FromNode>::from_node(node, src)?,
13437            ))),
13438            "number" => Ok(Self::Number(::std::boxed::Box::new(
13439                <Number as ::treesitter_types::FromNode>::from_node(node, src)?,
13440            ))),
13441            "private_property_identifier" => {
13442                Ok(Self::PrivatePropertyIdentifier(::std::boxed::Box::new(
13443                    <PrivatePropertyIdentifier as ::treesitter_types::FromNode>::from_node(
13444                        node, src,
13445                    )?,
13446                )))
13447            }
13448            "property_identifier" => Ok(Self::PropertyIdentifier(::std::boxed::Box::new(
13449                <PropertyIdentifier as ::treesitter_types::FromNode>::from_node(node, src)?,
13450            ))),
13451            "string" => Ok(Self::String(::std::boxed::Box::new(
13452                <String as ::treesitter_types::FromNode>::from_node(node, src)?,
13453            ))),
13454            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
13455        }
13456    }
13457}
13458impl ::treesitter_types::Spanned for MethodSignatureName<'_> {
13459    fn span(&self) -> ::treesitter_types::Span {
13460        match self {
13461            Self::ComputedPropertyName(inner) => inner.span(),
13462            Self::Number(inner) => inner.span(),
13463            Self::PrivatePropertyIdentifier(inner) => inner.span(),
13464            Self::PropertyIdentifier(inner) => inner.span(),
13465            Self::String(inner) => inner.span(),
13466        }
13467    }
13468}
13469#[derive(Debug, Clone, PartialEq, Eq)]
13470pub enum MethodSignatureReturnType<'tree> {
13471    AssertsAnnotation(::std::boxed::Box<AssertsAnnotation<'tree>>),
13472    TypeAnnotation(::std::boxed::Box<TypeAnnotation<'tree>>),
13473    TypePredicateAnnotation(::std::boxed::Box<TypePredicateAnnotation<'tree>>),
13474}
13475impl<'tree> ::treesitter_types::FromNode<'tree> for MethodSignatureReturnType<'tree> {
13476    #[allow(clippy::collapsible_else_if)]
13477    fn from_node(
13478        node: ::tree_sitter::Node<'tree>,
13479        src: &'tree [u8],
13480    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
13481        match node.kind() {
13482            "asserts_annotation" => Ok(Self::AssertsAnnotation(::std::boxed::Box::new(
13483                <AssertsAnnotation as ::treesitter_types::FromNode>::from_node(node, src)?,
13484            ))),
13485            "type_annotation" => Ok(Self::TypeAnnotation(::std::boxed::Box::new(
13486                <TypeAnnotation as ::treesitter_types::FromNode>::from_node(node, src)?,
13487            ))),
13488            "type_predicate_annotation" => {
13489                Ok(Self::TypePredicateAnnotation(::std::boxed::Box::new(
13490                    <TypePredicateAnnotation as ::treesitter_types::FromNode>::from_node(
13491                        node, src,
13492                    )?,
13493                )))
13494            }
13495            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
13496        }
13497    }
13498}
13499impl ::treesitter_types::Spanned for MethodSignatureReturnType<'_> {
13500    fn span(&self) -> ::treesitter_types::Span {
13501        match self {
13502            Self::AssertsAnnotation(inner) => inner.span(),
13503            Self::TypeAnnotation(inner) => inner.span(),
13504            Self::TypePredicateAnnotation(inner) => inner.span(),
13505        }
13506    }
13507}
13508#[derive(Debug, Clone, PartialEq, Eq)]
13509pub enum MethodSignatureChildren<'tree> {
13510    AccessibilityModifier(::std::boxed::Box<AccessibilityModifier<'tree>>),
13511    OverrideModifier(::std::boxed::Box<OverrideModifier<'tree>>),
13512}
13513impl<'tree> ::treesitter_types::FromNode<'tree> for MethodSignatureChildren<'tree> {
13514    #[allow(clippy::collapsible_else_if)]
13515    fn from_node(
13516        node: ::tree_sitter::Node<'tree>,
13517        src: &'tree [u8],
13518    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
13519        match node.kind() {
13520            "accessibility_modifier" => Ok(Self::AccessibilityModifier(::std::boxed::Box::new(
13521                <AccessibilityModifier as ::treesitter_types::FromNode>::from_node(node, src)?,
13522            ))),
13523            "override_modifier" => Ok(Self::OverrideModifier(::std::boxed::Box::new(
13524                <OverrideModifier as ::treesitter_types::FromNode>::from_node(node, src)?,
13525            ))),
13526            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
13527        }
13528    }
13529}
13530impl ::treesitter_types::Spanned for MethodSignatureChildren<'_> {
13531    fn span(&self) -> ::treesitter_types::Span {
13532        match self {
13533            Self::AccessibilityModifier(inner) => inner.span(),
13534            Self::OverrideModifier(inner) => inner.span(),
13535        }
13536    }
13537}
13538#[derive(Debug, Clone, PartialEq, Eq)]
13539pub enum ModuleName<'tree> {
13540    Identifier(::std::boxed::Box<Identifier<'tree>>),
13541    NestedIdentifier(::std::boxed::Box<NestedIdentifier<'tree>>),
13542    String(::std::boxed::Box<String<'tree>>),
13543}
13544impl<'tree> ::treesitter_types::FromNode<'tree> for ModuleName<'tree> {
13545    #[allow(clippy::collapsible_else_if)]
13546    fn from_node(
13547        node: ::tree_sitter::Node<'tree>,
13548        src: &'tree [u8],
13549    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
13550        match node.kind() {
13551            "identifier" => Ok(Self::Identifier(::std::boxed::Box::new(
13552                <Identifier as ::treesitter_types::FromNode>::from_node(node, src)?,
13553            ))),
13554            "nested_identifier" => Ok(Self::NestedIdentifier(::std::boxed::Box::new(
13555                <NestedIdentifier as ::treesitter_types::FromNode>::from_node(node, src)?,
13556            ))),
13557            "string" => Ok(Self::String(::std::boxed::Box::new(
13558                <String as ::treesitter_types::FromNode>::from_node(node, src)?,
13559            ))),
13560            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
13561        }
13562    }
13563}
13564impl ::treesitter_types::Spanned for ModuleName<'_> {
13565    fn span(&self) -> ::treesitter_types::Span {
13566        match self {
13567            Self::Identifier(inner) => inner.span(),
13568            Self::NestedIdentifier(inner) => inner.span(),
13569            Self::String(inner) => inner.span(),
13570        }
13571    }
13572}
13573#[derive(Debug, Clone, PartialEq, Eq)]
13574pub enum NamespaceExportChildren<'tree> {
13575    Identifier(::std::boxed::Box<Identifier<'tree>>),
13576    String(::std::boxed::Box<String<'tree>>),
13577}
13578impl<'tree> ::treesitter_types::FromNode<'tree> for NamespaceExportChildren<'tree> {
13579    #[allow(clippy::collapsible_else_if)]
13580    fn from_node(
13581        node: ::tree_sitter::Node<'tree>,
13582        src: &'tree [u8],
13583    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
13584        match node.kind() {
13585            "identifier" => Ok(Self::Identifier(::std::boxed::Box::new(
13586                <Identifier as ::treesitter_types::FromNode>::from_node(node, src)?,
13587            ))),
13588            "string" => Ok(Self::String(::std::boxed::Box::new(
13589                <String as ::treesitter_types::FromNode>::from_node(node, src)?,
13590            ))),
13591            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
13592        }
13593    }
13594}
13595impl ::treesitter_types::Spanned for NamespaceExportChildren<'_> {
13596    fn span(&self) -> ::treesitter_types::Span {
13597        match self {
13598            Self::Identifier(inner) => inner.span(),
13599            Self::String(inner) => inner.span(),
13600        }
13601    }
13602}
13603#[derive(Debug, Clone, PartialEq, Eq)]
13604pub enum NestedIdentifierObject<'tree> {
13605    Identifier(::std::boxed::Box<Identifier<'tree>>),
13606    MemberExpression(::std::boxed::Box<MemberExpression<'tree>>),
13607}
13608impl<'tree> ::treesitter_types::FromNode<'tree> for NestedIdentifierObject<'tree> {
13609    #[allow(clippy::collapsible_else_if)]
13610    fn from_node(
13611        node: ::tree_sitter::Node<'tree>,
13612        src: &'tree [u8],
13613    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
13614        match node.kind() {
13615            "identifier" => Ok(Self::Identifier(::std::boxed::Box::new(
13616                <Identifier as ::treesitter_types::FromNode>::from_node(node, src)?,
13617            ))),
13618            "member_expression" => Ok(Self::MemberExpression(::std::boxed::Box::new(
13619                <MemberExpression as ::treesitter_types::FromNode>::from_node(node, src)?,
13620            ))),
13621            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
13622        }
13623    }
13624}
13625impl ::treesitter_types::Spanned for NestedIdentifierObject<'_> {
13626    fn span(&self) -> ::treesitter_types::Span {
13627        match self {
13628            Self::Identifier(inner) => inner.span(),
13629            Self::MemberExpression(inner) => inner.span(),
13630        }
13631    }
13632}
13633#[derive(Debug, Clone, PartialEq, Eq)]
13634pub enum NestedTypeIdentifierModule<'tree> {
13635    Identifier(::std::boxed::Box<Identifier<'tree>>),
13636    NestedIdentifier(::std::boxed::Box<NestedIdentifier<'tree>>),
13637}
13638impl<'tree> ::treesitter_types::FromNode<'tree> for NestedTypeIdentifierModule<'tree> {
13639    #[allow(clippy::collapsible_else_if)]
13640    fn from_node(
13641        node: ::tree_sitter::Node<'tree>,
13642        src: &'tree [u8],
13643    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
13644        match node.kind() {
13645            "identifier" => Ok(Self::Identifier(::std::boxed::Box::new(
13646                <Identifier as ::treesitter_types::FromNode>::from_node(node, src)?,
13647            ))),
13648            "nested_identifier" => Ok(Self::NestedIdentifier(::std::boxed::Box::new(
13649                <NestedIdentifier as ::treesitter_types::FromNode>::from_node(node, src)?,
13650            ))),
13651            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
13652        }
13653    }
13654}
13655impl ::treesitter_types::Spanned for NestedTypeIdentifierModule<'_> {
13656    fn span(&self) -> ::treesitter_types::Span {
13657        match self {
13658            Self::Identifier(inner) => inner.span(),
13659            Self::NestedIdentifier(inner) => inner.span(),
13660        }
13661    }
13662}
13663#[derive(Debug, Clone, PartialEq, Eq)]
13664pub enum ObjectChildren<'tree> {
13665    MethodDefinition(::std::boxed::Box<MethodDefinition<'tree>>),
13666    Pair(::std::boxed::Box<Pair<'tree>>),
13667    ShorthandPropertyIdentifier(::std::boxed::Box<ShorthandPropertyIdentifier<'tree>>),
13668    SpreadElement(::std::boxed::Box<SpreadElement<'tree>>),
13669}
13670impl<'tree> ::treesitter_types::FromNode<'tree> for ObjectChildren<'tree> {
13671    #[allow(clippy::collapsible_else_if)]
13672    fn from_node(
13673        node: ::tree_sitter::Node<'tree>,
13674        src: &'tree [u8],
13675    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
13676        match node.kind() {
13677            "method_definition" => Ok(Self::MethodDefinition(::std::boxed::Box::new(
13678                <MethodDefinition as ::treesitter_types::FromNode>::from_node(node, src)?,
13679            ))),
13680            "pair" => Ok(Self::Pair(::std::boxed::Box::new(
13681                <Pair as ::treesitter_types::FromNode>::from_node(node, src)?,
13682            ))),
13683            "shorthand_property_identifier" => {
13684                Ok(Self::ShorthandPropertyIdentifier(::std::boxed::Box::new(
13685                    <ShorthandPropertyIdentifier as ::treesitter_types::FromNode>::from_node(
13686                        node, src,
13687                    )?,
13688                )))
13689            }
13690            "spread_element" => Ok(Self::SpreadElement(::std::boxed::Box::new(
13691                <SpreadElement as ::treesitter_types::FromNode>::from_node(node, src)?,
13692            ))),
13693            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
13694        }
13695    }
13696}
13697impl ::treesitter_types::Spanned for ObjectChildren<'_> {
13698    fn span(&self) -> ::treesitter_types::Span {
13699        match self {
13700            Self::MethodDefinition(inner) => inner.span(),
13701            Self::Pair(inner) => inner.span(),
13702            Self::ShorthandPropertyIdentifier(inner) => inner.span(),
13703            Self::SpreadElement(inner) => inner.span(),
13704        }
13705    }
13706}
13707#[derive(Debug, Clone, PartialEq, Eq)]
13708pub enum ObjectAssignmentPatternLeft<'tree> {
13709    ArrayPattern(::std::boxed::Box<ArrayPattern<'tree>>),
13710    ObjectPattern(::std::boxed::Box<ObjectPattern<'tree>>),
13711    ShorthandPropertyIdentifierPattern(
13712        ::std::boxed::Box<ShorthandPropertyIdentifierPattern<'tree>>,
13713    ),
13714}
13715impl<'tree> ::treesitter_types::FromNode<'tree> for ObjectAssignmentPatternLeft<'tree> {
13716    #[allow(clippy::collapsible_else_if)]
13717    fn from_node(
13718        node: ::tree_sitter::Node<'tree>,
13719        src: &'tree [u8],
13720    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
13721        match node.kind() {
13722            "array_pattern" => {
13723                Ok(
13724                    Self::ArrayPattern(
13725                        ::std::boxed::Box::new(
13726                            <ArrayPattern as ::treesitter_types::FromNode>::from_node(
13727                                node,
13728                                src,
13729                            )?,
13730                        ),
13731                    ),
13732                )
13733            }
13734            "object_pattern" => {
13735                Ok(
13736                    Self::ObjectPattern(
13737                        ::std::boxed::Box::new(
13738                            <ObjectPattern as ::treesitter_types::FromNode>::from_node(
13739                                node,
13740                                src,
13741                            )?,
13742                        ),
13743                    ),
13744                )
13745            }
13746            "shorthand_property_identifier_pattern" => {
13747                Ok(
13748                    Self::ShorthandPropertyIdentifierPattern(
13749                        ::std::boxed::Box::new(
13750                            <ShorthandPropertyIdentifierPattern as ::treesitter_types::FromNode>::from_node(
13751                                node,
13752                                src,
13753                            )?,
13754                        ),
13755                    ),
13756                )
13757            }
13758            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
13759        }
13760    }
13761}
13762impl ::treesitter_types::Spanned for ObjectAssignmentPatternLeft<'_> {
13763    fn span(&self) -> ::treesitter_types::Span {
13764        match self {
13765            Self::ArrayPattern(inner) => inner.span(),
13766            Self::ObjectPattern(inner) => inner.span(),
13767            Self::ShorthandPropertyIdentifierPattern(inner) => inner.span(),
13768        }
13769    }
13770}
13771#[derive(Debug, Clone, PartialEq, Eq)]
13772pub enum ObjectPatternChildren<'tree> {
13773    ObjectAssignmentPattern(::std::boxed::Box<ObjectAssignmentPattern<'tree>>),
13774    PairPattern(::std::boxed::Box<PairPattern<'tree>>),
13775    RestPattern(::std::boxed::Box<RestPattern<'tree>>),
13776    ShorthandPropertyIdentifierPattern(
13777        ::std::boxed::Box<ShorthandPropertyIdentifierPattern<'tree>>,
13778    ),
13779}
13780impl<'tree> ::treesitter_types::FromNode<'tree> for ObjectPatternChildren<'tree> {
13781    #[allow(clippy::collapsible_else_if)]
13782    fn from_node(
13783        node: ::tree_sitter::Node<'tree>,
13784        src: &'tree [u8],
13785    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
13786        match node.kind() {
13787            "object_assignment_pattern" => {
13788                Ok(
13789                    Self::ObjectAssignmentPattern(
13790                        ::std::boxed::Box::new(
13791                            <ObjectAssignmentPattern as ::treesitter_types::FromNode>::from_node(
13792                                node,
13793                                src,
13794                            )?,
13795                        ),
13796                    ),
13797                )
13798            }
13799            "pair_pattern" => {
13800                Ok(
13801                    Self::PairPattern(
13802                        ::std::boxed::Box::new(
13803                            <PairPattern as ::treesitter_types::FromNode>::from_node(
13804                                node,
13805                                src,
13806                            )?,
13807                        ),
13808                    ),
13809                )
13810            }
13811            "rest_pattern" => {
13812                Ok(
13813                    Self::RestPattern(
13814                        ::std::boxed::Box::new(
13815                            <RestPattern as ::treesitter_types::FromNode>::from_node(
13816                                node,
13817                                src,
13818                            )?,
13819                        ),
13820                    ),
13821                )
13822            }
13823            "shorthand_property_identifier_pattern" => {
13824                Ok(
13825                    Self::ShorthandPropertyIdentifierPattern(
13826                        ::std::boxed::Box::new(
13827                            <ShorthandPropertyIdentifierPattern as ::treesitter_types::FromNode>::from_node(
13828                                node,
13829                                src,
13830                            )?,
13831                        ),
13832                    ),
13833                )
13834            }
13835            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
13836        }
13837    }
13838}
13839impl ::treesitter_types::Spanned for ObjectPatternChildren<'_> {
13840    fn span(&self) -> ::treesitter_types::Span {
13841        match self {
13842            Self::ObjectAssignmentPattern(inner) => inner.span(),
13843            Self::PairPattern(inner) => inner.span(),
13844            Self::RestPattern(inner) => inner.span(),
13845            Self::ShorthandPropertyIdentifierPattern(inner) => inner.span(),
13846        }
13847    }
13848}
13849#[derive(Debug, Clone, PartialEq, Eq)]
13850pub enum ObjectTypeChildren<'tree> {
13851    CallSignature(::std::boxed::Box<CallSignature<'tree>>),
13852    ConstructSignature(::std::boxed::Box<ConstructSignature<'tree>>),
13853    ExportStatement(::std::boxed::Box<ExportStatement<'tree>>),
13854    IndexSignature(::std::boxed::Box<IndexSignature<'tree>>),
13855    MethodSignature(::std::boxed::Box<MethodSignature<'tree>>),
13856    PropertySignature(::std::boxed::Box<PropertySignature<'tree>>),
13857}
13858impl<'tree> ::treesitter_types::FromNode<'tree> for ObjectTypeChildren<'tree> {
13859    #[allow(clippy::collapsible_else_if)]
13860    fn from_node(
13861        node: ::tree_sitter::Node<'tree>,
13862        src: &'tree [u8],
13863    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
13864        match node.kind() {
13865            "call_signature" => Ok(Self::CallSignature(::std::boxed::Box::new(
13866                <CallSignature as ::treesitter_types::FromNode>::from_node(node, src)?,
13867            ))),
13868            "construct_signature" => Ok(Self::ConstructSignature(::std::boxed::Box::new(
13869                <ConstructSignature as ::treesitter_types::FromNode>::from_node(node, src)?,
13870            ))),
13871            "export_statement" => Ok(Self::ExportStatement(::std::boxed::Box::new(
13872                <ExportStatement as ::treesitter_types::FromNode>::from_node(node, src)?,
13873            ))),
13874            "index_signature" => Ok(Self::IndexSignature(::std::boxed::Box::new(
13875                <IndexSignature as ::treesitter_types::FromNode>::from_node(node, src)?,
13876            ))),
13877            "method_signature" => Ok(Self::MethodSignature(::std::boxed::Box::new(
13878                <MethodSignature as ::treesitter_types::FromNode>::from_node(node, src)?,
13879            ))),
13880            "property_signature" => Ok(Self::PropertySignature(::std::boxed::Box::new(
13881                <PropertySignature as ::treesitter_types::FromNode>::from_node(node, src)?,
13882            ))),
13883            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
13884        }
13885    }
13886}
13887impl ::treesitter_types::Spanned for ObjectTypeChildren<'_> {
13888    fn span(&self) -> ::treesitter_types::Span {
13889        match self {
13890            Self::CallSignature(inner) => inner.span(),
13891            Self::ConstructSignature(inner) => inner.span(),
13892            Self::ExportStatement(inner) => inner.span(),
13893            Self::IndexSignature(inner) => inner.span(),
13894            Self::MethodSignature(inner) => inner.span(),
13895            Self::PropertySignature(inner) => inner.span(),
13896        }
13897    }
13898}
13899#[derive(Debug, Clone, PartialEq, Eq)]
13900pub enum OptionalParameterPattern<'tree> {
13901    Pattern(::std::boxed::Box<Pattern<'tree>>),
13902    This(::std::boxed::Box<This<'tree>>),
13903}
13904impl<'tree> ::treesitter_types::FromNode<'tree> for OptionalParameterPattern<'tree> {
13905    #[allow(clippy::collapsible_else_if)]
13906    fn from_node(
13907        node: ::tree_sitter::Node<'tree>,
13908        src: &'tree [u8],
13909    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
13910        match node.kind() {
13911            "this" => Ok(Self::This(::std::boxed::Box::new(
13912                <This as ::treesitter_types::FromNode>::from_node(node, src)?,
13913            ))),
13914            _other => {
13915                if let Ok(v) = <Pattern as ::treesitter_types::FromNode>::from_node(node, src) {
13916                    Ok(Self::Pattern(::std::boxed::Box::new(v)))
13917                } else {
13918                    Err(::treesitter_types::ParseError::unexpected_kind(
13919                        _other, node,
13920                    ))
13921                }
13922            }
13923        }
13924    }
13925}
13926impl ::treesitter_types::Spanned for OptionalParameterPattern<'_> {
13927    fn span(&self) -> ::treesitter_types::Span {
13928        match self {
13929            Self::Pattern(inner) => inner.span(),
13930            Self::This(inner) => inner.span(),
13931        }
13932    }
13933}
13934#[derive(Debug, Clone, PartialEq, Eq)]
13935pub enum OptionalParameterChildren<'tree> {
13936    AccessibilityModifier(::std::boxed::Box<AccessibilityModifier<'tree>>),
13937    OverrideModifier(::std::boxed::Box<OverrideModifier<'tree>>),
13938}
13939impl<'tree> ::treesitter_types::FromNode<'tree> for OptionalParameterChildren<'tree> {
13940    #[allow(clippy::collapsible_else_if)]
13941    fn from_node(
13942        node: ::tree_sitter::Node<'tree>,
13943        src: &'tree [u8],
13944    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
13945        match node.kind() {
13946            "accessibility_modifier" => Ok(Self::AccessibilityModifier(::std::boxed::Box::new(
13947                <AccessibilityModifier as ::treesitter_types::FromNode>::from_node(node, src)?,
13948            ))),
13949            "override_modifier" => Ok(Self::OverrideModifier(::std::boxed::Box::new(
13950                <OverrideModifier as ::treesitter_types::FromNode>::from_node(node, src)?,
13951            ))),
13952            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
13953        }
13954    }
13955}
13956impl ::treesitter_types::Spanned for OptionalParameterChildren<'_> {
13957    fn span(&self) -> ::treesitter_types::Span {
13958        match self {
13959            Self::AccessibilityModifier(inner) => inner.span(),
13960            Self::OverrideModifier(inner) => inner.span(),
13961        }
13962    }
13963}
13964#[derive(Debug, Clone, PartialEq, Eq)]
13965pub enum PairKey<'tree> {
13966    ComputedPropertyName(::std::boxed::Box<ComputedPropertyName<'tree>>),
13967    Number(::std::boxed::Box<Number<'tree>>),
13968    PrivatePropertyIdentifier(::std::boxed::Box<PrivatePropertyIdentifier<'tree>>),
13969    PropertyIdentifier(::std::boxed::Box<PropertyIdentifier<'tree>>),
13970    String(::std::boxed::Box<String<'tree>>),
13971}
13972impl<'tree> ::treesitter_types::FromNode<'tree> for PairKey<'tree> {
13973    #[allow(clippy::collapsible_else_if)]
13974    fn from_node(
13975        node: ::tree_sitter::Node<'tree>,
13976        src: &'tree [u8],
13977    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
13978        match node.kind() {
13979            "computed_property_name" => Ok(Self::ComputedPropertyName(::std::boxed::Box::new(
13980                <ComputedPropertyName as ::treesitter_types::FromNode>::from_node(node, src)?,
13981            ))),
13982            "number" => Ok(Self::Number(::std::boxed::Box::new(
13983                <Number as ::treesitter_types::FromNode>::from_node(node, src)?,
13984            ))),
13985            "private_property_identifier" => {
13986                Ok(Self::PrivatePropertyIdentifier(::std::boxed::Box::new(
13987                    <PrivatePropertyIdentifier as ::treesitter_types::FromNode>::from_node(
13988                        node, src,
13989                    )?,
13990                )))
13991            }
13992            "property_identifier" => Ok(Self::PropertyIdentifier(::std::boxed::Box::new(
13993                <PropertyIdentifier as ::treesitter_types::FromNode>::from_node(node, src)?,
13994            ))),
13995            "string" => Ok(Self::String(::std::boxed::Box::new(
13996                <String as ::treesitter_types::FromNode>::from_node(node, src)?,
13997            ))),
13998            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
13999        }
14000    }
14001}
14002impl ::treesitter_types::Spanned for PairKey<'_> {
14003    fn span(&self) -> ::treesitter_types::Span {
14004        match self {
14005            Self::ComputedPropertyName(inner) => inner.span(),
14006            Self::Number(inner) => inner.span(),
14007            Self::PrivatePropertyIdentifier(inner) => inner.span(),
14008            Self::PropertyIdentifier(inner) => inner.span(),
14009            Self::String(inner) => inner.span(),
14010        }
14011    }
14012}
14013#[derive(Debug, Clone, PartialEq, Eq)]
14014pub enum PairPatternKey<'tree> {
14015    ComputedPropertyName(::std::boxed::Box<ComputedPropertyName<'tree>>),
14016    Number(::std::boxed::Box<Number<'tree>>),
14017    PrivatePropertyIdentifier(::std::boxed::Box<PrivatePropertyIdentifier<'tree>>),
14018    PropertyIdentifier(::std::boxed::Box<PropertyIdentifier<'tree>>),
14019    String(::std::boxed::Box<String<'tree>>),
14020}
14021impl<'tree> ::treesitter_types::FromNode<'tree> for PairPatternKey<'tree> {
14022    #[allow(clippy::collapsible_else_if)]
14023    fn from_node(
14024        node: ::tree_sitter::Node<'tree>,
14025        src: &'tree [u8],
14026    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
14027        match node.kind() {
14028            "computed_property_name" => Ok(Self::ComputedPropertyName(::std::boxed::Box::new(
14029                <ComputedPropertyName as ::treesitter_types::FromNode>::from_node(node, src)?,
14030            ))),
14031            "number" => Ok(Self::Number(::std::boxed::Box::new(
14032                <Number as ::treesitter_types::FromNode>::from_node(node, src)?,
14033            ))),
14034            "private_property_identifier" => {
14035                Ok(Self::PrivatePropertyIdentifier(::std::boxed::Box::new(
14036                    <PrivatePropertyIdentifier as ::treesitter_types::FromNode>::from_node(
14037                        node, src,
14038                    )?,
14039                )))
14040            }
14041            "property_identifier" => Ok(Self::PropertyIdentifier(::std::boxed::Box::new(
14042                <PropertyIdentifier as ::treesitter_types::FromNode>::from_node(node, src)?,
14043            ))),
14044            "string" => Ok(Self::String(::std::boxed::Box::new(
14045                <String as ::treesitter_types::FromNode>::from_node(node, src)?,
14046            ))),
14047            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
14048        }
14049    }
14050}
14051impl ::treesitter_types::Spanned for PairPatternKey<'_> {
14052    fn span(&self) -> ::treesitter_types::Span {
14053        match self {
14054            Self::ComputedPropertyName(inner) => inner.span(),
14055            Self::Number(inner) => inner.span(),
14056            Self::PrivatePropertyIdentifier(inner) => inner.span(),
14057            Self::PropertyIdentifier(inner) => inner.span(),
14058            Self::String(inner) => inner.span(),
14059        }
14060    }
14061}
14062#[derive(Debug, Clone, PartialEq, Eq)]
14063pub enum PairPatternValue<'tree> {
14064    AssignmentPattern(::std::boxed::Box<AssignmentPattern<'tree>>),
14065    Pattern(::std::boxed::Box<Pattern<'tree>>),
14066}
14067impl<'tree> ::treesitter_types::FromNode<'tree> for PairPatternValue<'tree> {
14068    #[allow(clippy::collapsible_else_if)]
14069    fn from_node(
14070        node: ::tree_sitter::Node<'tree>,
14071        src: &'tree [u8],
14072    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
14073        match node.kind() {
14074            "assignment_pattern" => Ok(Self::AssignmentPattern(::std::boxed::Box::new(
14075                <AssignmentPattern as ::treesitter_types::FromNode>::from_node(node, src)?,
14076            ))),
14077            _other => {
14078                if let Ok(v) = <Pattern as ::treesitter_types::FromNode>::from_node(node, src) {
14079                    Ok(Self::Pattern(::std::boxed::Box::new(v)))
14080                } else {
14081                    Err(::treesitter_types::ParseError::unexpected_kind(
14082                        _other, node,
14083                    ))
14084                }
14085            }
14086        }
14087    }
14088}
14089impl ::treesitter_types::Spanned for PairPatternValue<'_> {
14090    fn span(&self) -> ::treesitter_types::Span {
14091        match self {
14092            Self::AssignmentPattern(inner) => inner.span(),
14093            Self::Pattern(inner) => inner.span(),
14094        }
14095    }
14096}
14097#[derive(Debug, Clone, PartialEq, Eq)]
14098pub enum ParenthesizedExpressionChildren<'tree> {
14099    CallExpression(::std::boxed::Box<CallExpression<'tree>>),
14100    Expression(::std::boxed::Box<Expression<'tree>>),
14101    Identifier(::std::boxed::Box<Identifier<'tree>>),
14102    MemberExpression(::std::boxed::Box<MemberExpression<'tree>>),
14103    SequenceExpression(::std::boxed::Box<SequenceExpression<'tree>>),
14104}
14105impl<'tree> ::treesitter_types::FromNode<'tree> for ParenthesizedExpressionChildren<'tree> {
14106    #[allow(clippy::collapsible_else_if)]
14107    fn from_node(
14108        node: ::tree_sitter::Node<'tree>,
14109        src: &'tree [u8],
14110    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
14111        match node.kind() {
14112            "call_expression" => Ok(Self::CallExpression(::std::boxed::Box::new(
14113                <CallExpression as ::treesitter_types::FromNode>::from_node(node, src)?,
14114            ))),
14115            "identifier" => Ok(Self::Identifier(::std::boxed::Box::new(
14116                <Identifier as ::treesitter_types::FromNode>::from_node(node, src)?,
14117            ))),
14118            "member_expression" => Ok(Self::MemberExpression(::std::boxed::Box::new(
14119                <MemberExpression as ::treesitter_types::FromNode>::from_node(node, src)?,
14120            ))),
14121            "sequence_expression" => Ok(Self::SequenceExpression(::std::boxed::Box::new(
14122                <SequenceExpression as ::treesitter_types::FromNode>::from_node(node, src)?,
14123            ))),
14124            _other => {
14125                if let Ok(v) = <Expression as ::treesitter_types::FromNode>::from_node(node, src) {
14126                    Ok(Self::Expression(::std::boxed::Box::new(v)))
14127                } else {
14128                    Err(::treesitter_types::ParseError::unexpected_kind(
14129                        _other, node,
14130                    ))
14131                }
14132            }
14133        }
14134    }
14135}
14136impl ::treesitter_types::Spanned for ParenthesizedExpressionChildren<'_> {
14137    fn span(&self) -> ::treesitter_types::Span {
14138        match self {
14139            Self::CallExpression(inner) => inner.span(),
14140            Self::Expression(inner) => inner.span(),
14141            Self::Identifier(inner) => inner.span(),
14142            Self::MemberExpression(inner) => inner.span(),
14143            Self::SequenceExpression(inner) => inner.span(),
14144        }
14145    }
14146}
14147#[derive(Debug, Clone, PartialEq, Eq)]
14148pub enum ProgramChildren<'tree> {
14149    HashBangLine(::std::boxed::Box<HashBangLine<'tree>>),
14150    Statement(::std::boxed::Box<Statement<'tree>>),
14151}
14152impl<'tree> ::treesitter_types::FromNode<'tree> for ProgramChildren<'tree> {
14153    #[allow(clippy::collapsible_else_if)]
14154    fn from_node(
14155        node: ::tree_sitter::Node<'tree>,
14156        src: &'tree [u8],
14157    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
14158        match node.kind() {
14159            "hash_bang_line" => Ok(Self::HashBangLine(::std::boxed::Box::new(
14160                <HashBangLine as ::treesitter_types::FromNode>::from_node(node, src)?,
14161            ))),
14162            _other => {
14163                if let Ok(v) = <Statement as ::treesitter_types::FromNode>::from_node(node, src) {
14164                    Ok(Self::Statement(::std::boxed::Box::new(v)))
14165                } else {
14166                    Err(::treesitter_types::ParseError::unexpected_kind(
14167                        _other, node,
14168                    ))
14169                }
14170            }
14171        }
14172    }
14173}
14174impl ::treesitter_types::Spanned for ProgramChildren<'_> {
14175    fn span(&self) -> ::treesitter_types::Span {
14176        match self {
14177            Self::HashBangLine(inner) => inner.span(),
14178            Self::Statement(inner) => inner.span(),
14179        }
14180    }
14181}
14182#[derive(Debug, Clone, PartialEq, Eq)]
14183pub enum PropertySignatureName<'tree> {
14184    ComputedPropertyName(::std::boxed::Box<ComputedPropertyName<'tree>>),
14185    Number(::std::boxed::Box<Number<'tree>>),
14186    PrivatePropertyIdentifier(::std::boxed::Box<PrivatePropertyIdentifier<'tree>>),
14187    PropertyIdentifier(::std::boxed::Box<PropertyIdentifier<'tree>>),
14188    String(::std::boxed::Box<String<'tree>>),
14189}
14190impl<'tree> ::treesitter_types::FromNode<'tree> for PropertySignatureName<'tree> {
14191    #[allow(clippy::collapsible_else_if)]
14192    fn from_node(
14193        node: ::tree_sitter::Node<'tree>,
14194        src: &'tree [u8],
14195    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
14196        match node.kind() {
14197            "computed_property_name" => Ok(Self::ComputedPropertyName(::std::boxed::Box::new(
14198                <ComputedPropertyName as ::treesitter_types::FromNode>::from_node(node, src)?,
14199            ))),
14200            "number" => Ok(Self::Number(::std::boxed::Box::new(
14201                <Number as ::treesitter_types::FromNode>::from_node(node, src)?,
14202            ))),
14203            "private_property_identifier" => {
14204                Ok(Self::PrivatePropertyIdentifier(::std::boxed::Box::new(
14205                    <PrivatePropertyIdentifier as ::treesitter_types::FromNode>::from_node(
14206                        node, src,
14207                    )?,
14208                )))
14209            }
14210            "property_identifier" => Ok(Self::PropertyIdentifier(::std::boxed::Box::new(
14211                <PropertyIdentifier as ::treesitter_types::FromNode>::from_node(node, src)?,
14212            ))),
14213            "string" => Ok(Self::String(::std::boxed::Box::new(
14214                <String as ::treesitter_types::FromNode>::from_node(node, src)?,
14215            ))),
14216            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
14217        }
14218    }
14219}
14220impl ::treesitter_types::Spanned for PropertySignatureName<'_> {
14221    fn span(&self) -> ::treesitter_types::Span {
14222        match self {
14223            Self::ComputedPropertyName(inner) => inner.span(),
14224            Self::Number(inner) => inner.span(),
14225            Self::PrivatePropertyIdentifier(inner) => inner.span(),
14226            Self::PropertyIdentifier(inner) => inner.span(),
14227            Self::String(inner) => inner.span(),
14228        }
14229    }
14230}
14231#[derive(Debug, Clone, PartialEq, Eq)]
14232pub enum PropertySignatureChildren<'tree> {
14233    AccessibilityModifier(::std::boxed::Box<AccessibilityModifier<'tree>>),
14234    OverrideModifier(::std::boxed::Box<OverrideModifier<'tree>>),
14235}
14236impl<'tree> ::treesitter_types::FromNode<'tree> for PropertySignatureChildren<'tree> {
14237    #[allow(clippy::collapsible_else_if)]
14238    fn from_node(
14239        node: ::tree_sitter::Node<'tree>,
14240        src: &'tree [u8],
14241    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
14242        match node.kind() {
14243            "accessibility_modifier" => Ok(Self::AccessibilityModifier(::std::boxed::Box::new(
14244                <AccessibilityModifier as ::treesitter_types::FromNode>::from_node(node, src)?,
14245            ))),
14246            "override_modifier" => Ok(Self::OverrideModifier(::std::boxed::Box::new(
14247                <OverrideModifier as ::treesitter_types::FromNode>::from_node(node, src)?,
14248            ))),
14249            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
14250        }
14251    }
14252}
14253impl ::treesitter_types::Spanned for PropertySignatureChildren<'_> {
14254    fn span(&self) -> ::treesitter_types::Span {
14255        match self {
14256            Self::AccessibilityModifier(inner) => inner.span(),
14257            Self::OverrideModifier(inner) => inner.span(),
14258        }
14259    }
14260}
14261#[derive(Debug, Clone, PartialEq, Eq)]
14262pub enum PublicFieldDefinitionName<'tree> {
14263    ComputedPropertyName(::std::boxed::Box<ComputedPropertyName<'tree>>),
14264    Number(::std::boxed::Box<Number<'tree>>),
14265    PrivatePropertyIdentifier(::std::boxed::Box<PrivatePropertyIdentifier<'tree>>),
14266    PropertyIdentifier(::std::boxed::Box<PropertyIdentifier<'tree>>),
14267    String(::std::boxed::Box<String<'tree>>),
14268}
14269impl<'tree> ::treesitter_types::FromNode<'tree> for PublicFieldDefinitionName<'tree> {
14270    #[allow(clippy::collapsible_else_if)]
14271    fn from_node(
14272        node: ::tree_sitter::Node<'tree>,
14273        src: &'tree [u8],
14274    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
14275        match node.kind() {
14276            "computed_property_name" => Ok(Self::ComputedPropertyName(::std::boxed::Box::new(
14277                <ComputedPropertyName as ::treesitter_types::FromNode>::from_node(node, src)?,
14278            ))),
14279            "number" => Ok(Self::Number(::std::boxed::Box::new(
14280                <Number as ::treesitter_types::FromNode>::from_node(node, src)?,
14281            ))),
14282            "private_property_identifier" => {
14283                Ok(Self::PrivatePropertyIdentifier(::std::boxed::Box::new(
14284                    <PrivatePropertyIdentifier as ::treesitter_types::FromNode>::from_node(
14285                        node, src,
14286                    )?,
14287                )))
14288            }
14289            "property_identifier" => Ok(Self::PropertyIdentifier(::std::boxed::Box::new(
14290                <PropertyIdentifier as ::treesitter_types::FromNode>::from_node(node, src)?,
14291            ))),
14292            "string" => Ok(Self::String(::std::boxed::Box::new(
14293                <String as ::treesitter_types::FromNode>::from_node(node, src)?,
14294            ))),
14295            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
14296        }
14297    }
14298}
14299impl ::treesitter_types::Spanned for PublicFieldDefinitionName<'_> {
14300    fn span(&self) -> ::treesitter_types::Span {
14301        match self {
14302            Self::ComputedPropertyName(inner) => inner.span(),
14303            Self::Number(inner) => inner.span(),
14304            Self::PrivatePropertyIdentifier(inner) => inner.span(),
14305            Self::PropertyIdentifier(inner) => inner.span(),
14306            Self::String(inner) => inner.span(),
14307        }
14308    }
14309}
14310#[derive(Debug, Clone, PartialEq, Eq)]
14311pub enum PublicFieldDefinitionChildren<'tree> {
14312    AccessibilityModifier(::std::boxed::Box<AccessibilityModifier<'tree>>),
14313    OverrideModifier(::std::boxed::Box<OverrideModifier<'tree>>),
14314}
14315impl<'tree> ::treesitter_types::FromNode<'tree> for PublicFieldDefinitionChildren<'tree> {
14316    #[allow(clippy::collapsible_else_if)]
14317    fn from_node(
14318        node: ::tree_sitter::Node<'tree>,
14319        src: &'tree [u8],
14320    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
14321        match node.kind() {
14322            "accessibility_modifier" => Ok(Self::AccessibilityModifier(::std::boxed::Box::new(
14323                <AccessibilityModifier as ::treesitter_types::FromNode>::from_node(node, src)?,
14324            ))),
14325            "override_modifier" => Ok(Self::OverrideModifier(::std::boxed::Box::new(
14326                <OverrideModifier as ::treesitter_types::FromNode>::from_node(node, src)?,
14327            ))),
14328            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
14329        }
14330    }
14331}
14332impl ::treesitter_types::Spanned for PublicFieldDefinitionChildren<'_> {
14333    fn span(&self) -> ::treesitter_types::Span {
14334        match self {
14335            Self::AccessibilityModifier(inner) => inner.span(),
14336            Self::OverrideModifier(inner) => inner.span(),
14337        }
14338    }
14339}
14340#[derive(Debug, Clone, PartialEq, Eq)]
14341pub enum RequiredParameterName<'tree> {
14342    Identifier(::std::boxed::Box<Identifier<'tree>>),
14343    RestPattern(::std::boxed::Box<RestPattern<'tree>>),
14344}
14345impl<'tree> ::treesitter_types::FromNode<'tree> for RequiredParameterName<'tree> {
14346    #[allow(clippy::collapsible_else_if)]
14347    fn from_node(
14348        node: ::tree_sitter::Node<'tree>,
14349        src: &'tree [u8],
14350    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
14351        match node.kind() {
14352            "identifier" => Ok(Self::Identifier(::std::boxed::Box::new(
14353                <Identifier as ::treesitter_types::FromNode>::from_node(node, src)?,
14354            ))),
14355            "rest_pattern" => Ok(Self::RestPattern(::std::boxed::Box::new(
14356                <RestPattern as ::treesitter_types::FromNode>::from_node(node, src)?,
14357            ))),
14358            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
14359        }
14360    }
14361}
14362impl ::treesitter_types::Spanned for RequiredParameterName<'_> {
14363    fn span(&self) -> ::treesitter_types::Span {
14364        match self {
14365            Self::Identifier(inner) => inner.span(),
14366            Self::RestPattern(inner) => inner.span(),
14367        }
14368    }
14369}
14370#[derive(Debug, Clone, PartialEq, Eq)]
14371pub enum RequiredParameterPattern<'tree> {
14372    Pattern(::std::boxed::Box<Pattern<'tree>>),
14373    This(::std::boxed::Box<This<'tree>>),
14374}
14375impl<'tree> ::treesitter_types::FromNode<'tree> for RequiredParameterPattern<'tree> {
14376    #[allow(clippy::collapsible_else_if)]
14377    fn from_node(
14378        node: ::tree_sitter::Node<'tree>,
14379        src: &'tree [u8],
14380    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
14381        match node.kind() {
14382            "this" => Ok(Self::This(::std::boxed::Box::new(
14383                <This as ::treesitter_types::FromNode>::from_node(node, src)?,
14384            ))),
14385            _other => {
14386                if let Ok(v) = <Pattern as ::treesitter_types::FromNode>::from_node(node, src) {
14387                    Ok(Self::Pattern(::std::boxed::Box::new(v)))
14388                } else {
14389                    Err(::treesitter_types::ParseError::unexpected_kind(
14390                        _other, node,
14391                    ))
14392                }
14393            }
14394        }
14395    }
14396}
14397impl ::treesitter_types::Spanned for RequiredParameterPattern<'_> {
14398    fn span(&self) -> ::treesitter_types::Span {
14399        match self {
14400            Self::Pattern(inner) => inner.span(),
14401            Self::This(inner) => inner.span(),
14402        }
14403    }
14404}
14405#[derive(Debug, Clone, PartialEq, Eq)]
14406pub enum RequiredParameterChildren<'tree> {
14407    AccessibilityModifier(::std::boxed::Box<AccessibilityModifier<'tree>>),
14408    OverrideModifier(::std::boxed::Box<OverrideModifier<'tree>>),
14409}
14410impl<'tree> ::treesitter_types::FromNode<'tree> for RequiredParameterChildren<'tree> {
14411    #[allow(clippy::collapsible_else_if)]
14412    fn from_node(
14413        node: ::tree_sitter::Node<'tree>,
14414        src: &'tree [u8],
14415    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
14416        match node.kind() {
14417            "accessibility_modifier" => Ok(Self::AccessibilityModifier(::std::boxed::Box::new(
14418                <AccessibilityModifier as ::treesitter_types::FromNode>::from_node(node, src)?,
14419            ))),
14420            "override_modifier" => Ok(Self::OverrideModifier(::std::boxed::Box::new(
14421                <OverrideModifier as ::treesitter_types::FromNode>::from_node(node, src)?,
14422            ))),
14423            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
14424        }
14425    }
14426}
14427impl ::treesitter_types::Spanned for RequiredParameterChildren<'_> {
14428    fn span(&self) -> ::treesitter_types::Span {
14429        match self {
14430            Self::AccessibilityModifier(inner) => inner.span(),
14431            Self::OverrideModifier(inner) => inner.span(),
14432        }
14433    }
14434}
14435#[derive(Debug, Clone, PartialEq, Eq)]
14436pub enum RestPatternChildren<'tree> {
14437    ArrayPattern(::std::boxed::Box<ArrayPattern<'tree>>),
14438    Identifier(::std::boxed::Box<Identifier<'tree>>),
14439    MemberExpression(::std::boxed::Box<MemberExpression<'tree>>),
14440    NonNullExpression(::std::boxed::Box<NonNullExpression<'tree>>),
14441    ObjectPattern(::std::boxed::Box<ObjectPattern<'tree>>),
14442    SubscriptExpression(::std::boxed::Box<SubscriptExpression<'tree>>),
14443    Undefined(::std::boxed::Box<Undefined<'tree>>),
14444}
14445impl<'tree> ::treesitter_types::FromNode<'tree> for RestPatternChildren<'tree> {
14446    #[allow(clippy::collapsible_else_if)]
14447    fn from_node(
14448        node: ::tree_sitter::Node<'tree>,
14449        src: &'tree [u8],
14450    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
14451        match node.kind() {
14452            "array_pattern" => Ok(Self::ArrayPattern(::std::boxed::Box::new(
14453                <ArrayPattern as ::treesitter_types::FromNode>::from_node(node, src)?,
14454            ))),
14455            "identifier" => Ok(Self::Identifier(::std::boxed::Box::new(
14456                <Identifier as ::treesitter_types::FromNode>::from_node(node, src)?,
14457            ))),
14458            "member_expression" => Ok(Self::MemberExpression(::std::boxed::Box::new(
14459                <MemberExpression as ::treesitter_types::FromNode>::from_node(node, src)?,
14460            ))),
14461            "non_null_expression" => Ok(Self::NonNullExpression(::std::boxed::Box::new(
14462                <NonNullExpression as ::treesitter_types::FromNode>::from_node(node, src)?,
14463            ))),
14464            "object_pattern" => Ok(Self::ObjectPattern(::std::boxed::Box::new(
14465                <ObjectPattern as ::treesitter_types::FromNode>::from_node(node, src)?,
14466            ))),
14467            "subscript_expression" => Ok(Self::SubscriptExpression(::std::boxed::Box::new(
14468                <SubscriptExpression as ::treesitter_types::FromNode>::from_node(node, src)?,
14469            ))),
14470            "undefined" => Ok(Self::Undefined(::std::boxed::Box::new(
14471                <Undefined as ::treesitter_types::FromNode>::from_node(node, src)?,
14472            ))),
14473            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
14474        }
14475    }
14476}
14477impl ::treesitter_types::Spanned for RestPatternChildren<'_> {
14478    fn span(&self) -> ::treesitter_types::Span {
14479        match self {
14480            Self::ArrayPattern(inner) => inner.span(),
14481            Self::Identifier(inner) => inner.span(),
14482            Self::MemberExpression(inner) => inner.span(),
14483            Self::NonNullExpression(inner) => inner.span(),
14484            Self::ObjectPattern(inner) => inner.span(),
14485            Self::SubscriptExpression(inner) => inner.span(),
14486            Self::Undefined(inner) => inner.span(),
14487        }
14488    }
14489}
14490#[derive(Debug, Clone, PartialEq, Eq)]
14491pub enum ReturnStatementChildren<'tree> {
14492    Expression(::std::boxed::Box<Expression<'tree>>),
14493    SequenceExpression(::std::boxed::Box<SequenceExpression<'tree>>),
14494}
14495impl<'tree> ::treesitter_types::FromNode<'tree> for ReturnStatementChildren<'tree> {
14496    #[allow(clippy::collapsible_else_if)]
14497    fn from_node(
14498        node: ::tree_sitter::Node<'tree>,
14499        src: &'tree [u8],
14500    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
14501        match node.kind() {
14502            "sequence_expression" => Ok(Self::SequenceExpression(::std::boxed::Box::new(
14503                <SequenceExpression as ::treesitter_types::FromNode>::from_node(node, src)?,
14504            ))),
14505            _other => {
14506                if let Ok(v) = <Expression as ::treesitter_types::FromNode>::from_node(node, src) {
14507                    Ok(Self::Expression(::std::boxed::Box::new(v)))
14508                } else {
14509                    Err(::treesitter_types::ParseError::unexpected_kind(
14510                        _other, node,
14511                    ))
14512                }
14513            }
14514        }
14515    }
14516}
14517impl ::treesitter_types::Spanned for ReturnStatementChildren<'_> {
14518    fn span(&self) -> ::treesitter_types::Span {
14519        match self {
14520            Self::Expression(inner) => inner.span(),
14521            Self::SequenceExpression(inner) => inner.span(),
14522        }
14523    }
14524}
14525#[derive(Debug, Clone, PartialEq, Eq)]
14526pub enum SatisfiesExpressionChildren<'tree> {
14527    Expression(::std::boxed::Box<Expression<'tree>>),
14528    Type(::std::boxed::Box<Type<'tree>>),
14529}
14530impl<'tree> ::treesitter_types::FromNode<'tree> for SatisfiesExpressionChildren<'tree> {
14531    #[allow(clippy::collapsible_else_if)]
14532    fn from_node(
14533        node: ::tree_sitter::Node<'tree>,
14534        src: &'tree [u8],
14535    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
14536        if let Ok(v) = <Expression as ::treesitter_types::FromNode>::from_node(node, src) {
14537            Ok(Self::Expression(::std::boxed::Box::new(v)))
14538        } else {
14539            if let Ok(v) = <Type as ::treesitter_types::FromNode>::from_node(node, src) {
14540                Ok(Self::Type(::std::boxed::Box::new(v)))
14541            } else {
14542                Err(::treesitter_types::ParseError::unexpected_kind(
14543                    node.kind(),
14544                    node,
14545                ))
14546            }
14547        }
14548    }
14549}
14550impl ::treesitter_types::Spanned for SatisfiesExpressionChildren<'_> {
14551    fn span(&self) -> ::treesitter_types::Span {
14552        match self {
14553            Self::Expression(inner) => inner.span(),
14554            Self::Type(inner) => inner.span(),
14555        }
14556    }
14557}
14558#[derive(Debug, Clone, PartialEq, Eq)]
14559pub enum StringChildren<'tree> {
14560    EscapeSequence(::std::boxed::Box<EscapeSequence<'tree>>),
14561    StringFragment(::std::boxed::Box<StringFragment<'tree>>),
14562}
14563impl<'tree> ::treesitter_types::FromNode<'tree> for StringChildren<'tree> {
14564    #[allow(clippy::collapsible_else_if)]
14565    fn from_node(
14566        node: ::tree_sitter::Node<'tree>,
14567        src: &'tree [u8],
14568    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
14569        match node.kind() {
14570            "escape_sequence" => Ok(Self::EscapeSequence(::std::boxed::Box::new(
14571                <EscapeSequence as ::treesitter_types::FromNode>::from_node(node, src)?,
14572            ))),
14573            "string_fragment" => Ok(Self::StringFragment(::std::boxed::Box::new(
14574                <StringFragment as ::treesitter_types::FromNode>::from_node(node, src)?,
14575            ))),
14576            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
14577        }
14578    }
14579}
14580impl ::treesitter_types::Spanned for StringChildren<'_> {
14581    fn span(&self) -> ::treesitter_types::Span {
14582        match self {
14583            Self::EscapeSequence(inner) => inner.span(),
14584            Self::StringFragment(inner) => inner.span(),
14585        }
14586    }
14587}
14588#[derive(Debug, Clone, PartialEq, Eq)]
14589pub enum SubscriptExpressionIndex<'tree> {
14590    Expression(::std::boxed::Box<Expression<'tree>>),
14591    Number(::std::boxed::Box<Number<'tree>>),
14592    PredefinedType(::std::boxed::Box<PredefinedType<'tree>>),
14593    SequenceExpression(::std::boxed::Box<SequenceExpression<'tree>>),
14594    String(::std::boxed::Box<String<'tree>>),
14595}
14596impl<'tree> ::treesitter_types::FromNode<'tree> for SubscriptExpressionIndex<'tree> {
14597    #[allow(clippy::collapsible_else_if)]
14598    fn from_node(
14599        node: ::tree_sitter::Node<'tree>,
14600        src: &'tree [u8],
14601    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
14602        match node.kind() {
14603            "number" => Ok(Self::Number(::std::boxed::Box::new(
14604                <Number as ::treesitter_types::FromNode>::from_node(node, src)?,
14605            ))),
14606            "predefined_type" => Ok(Self::PredefinedType(::std::boxed::Box::new(
14607                <PredefinedType as ::treesitter_types::FromNode>::from_node(node, src)?,
14608            ))),
14609            "sequence_expression" => Ok(Self::SequenceExpression(::std::boxed::Box::new(
14610                <SequenceExpression as ::treesitter_types::FromNode>::from_node(node, src)?,
14611            ))),
14612            "string" => Ok(Self::String(::std::boxed::Box::new(
14613                <String as ::treesitter_types::FromNode>::from_node(node, src)?,
14614            ))),
14615            _other => {
14616                if let Ok(v) = <Expression as ::treesitter_types::FromNode>::from_node(node, src) {
14617                    Ok(Self::Expression(::std::boxed::Box::new(v)))
14618                } else {
14619                    Err(::treesitter_types::ParseError::unexpected_kind(
14620                        _other, node,
14621                    ))
14622                }
14623            }
14624        }
14625    }
14626}
14627impl ::treesitter_types::Spanned for SubscriptExpressionIndex<'_> {
14628    fn span(&self) -> ::treesitter_types::Span {
14629        match self {
14630            Self::Expression(inner) => inner.span(),
14631            Self::Number(inner) => inner.span(),
14632            Self::PredefinedType(inner) => inner.span(),
14633            Self::SequenceExpression(inner) => inner.span(),
14634            Self::String(inner) => inner.span(),
14635        }
14636    }
14637}
14638#[derive(Debug, Clone, PartialEq, Eq)]
14639pub enum SwitchBodyChildren<'tree> {
14640    SwitchCase(::std::boxed::Box<SwitchCase<'tree>>),
14641    SwitchDefault(::std::boxed::Box<SwitchDefault<'tree>>),
14642}
14643impl<'tree> ::treesitter_types::FromNode<'tree> for SwitchBodyChildren<'tree> {
14644    #[allow(clippy::collapsible_else_if)]
14645    fn from_node(
14646        node: ::tree_sitter::Node<'tree>,
14647        src: &'tree [u8],
14648    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
14649        match node.kind() {
14650            "switch_case" => Ok(Self::SwitchCase(::std::boxed::Box::new(
14651                <SwitchCase as ::treesitter_types::FromNode>::from_node(node, src)?,
14652            ))),
14653            "switch_default" => Ok(Self::SwitchDefault(::std::boxed::Box::new(
14654                <SwitchDefault as ::treesitter_types::FromNode>::from_node(node, src)?,
14655            ))),
14656            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
14657        }
14658    }
14659}
14660impl ::treesitter_types::Spanned for SwitchBodyChildren<'_> {
14661    fn span(&self) -> ::treesitter_types::Span {
14662        match self {
14663            Self::SwitchCase(inner) => inner.span(),
14664            Self::SwitchDefault(inner) => inner.span(),
14665        }
14666    }
14667}
14668#[derive(Debug, Clone, PartialEq, Eq)]
14669pub enum SwitchCaseValue<'tree> {
14670    Expression(::std::boxed::Box<Expression<'tree>>),
14671    SequenceExpression(::std::boxed::Box<SequenceExpression<'tree>>),
14672}
14673impl<'tree> ::treesitter_types::FromNode<'tree> for SwitchCaseValue<'tree> {
14674    #[allow(clippy::collapsible_else_if)]
14675    fn from_node(
14676        node: ::tree_sitter::Node<'tree>,
14677        src: &'tree [u8],
14678    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
14679        match node.kind() {
14680            "sequence_expression" => Ok(Self::SequenceExpression(::std::boxed::Box::new(
14681                <SequenceExpression as ::treesitter_types::FromNode>::from_node(node, src)?,
14682            ))),
14683            _other => {
14684                if let Ok(v) = <Expression as ::treesitter_types::FromNode>::from_node(node, src) {
14685                    Ok(Self::Expression(::std::boxed::Box::new(v)))
14686                } else {
14687                    Err(::treesitter_types::ParseError::unexpected_kind(
14688                        _other, node,
14689                    ))
14690                }
14691            }
14692        }
14693    }
14694}
14695impl ::treesitter_types::Spanned for SwitchCaseValue<'_> {
14696    fn span(&self) -> ::treesitter_types::Span {
14697        match self {
14698            Self::Expression(inner) => inner.span(),
14699            Self::SequenceExpression(inner) => inner.span(),
14700        }
14701    }
14702}
14703#[derive(Debug, Clone, PartialEq, Eq)]
14704pub enum TemplateLiteralTypeChildren<'tree> {
14705    StringFragment(::std::boxed::Box<StringFragment<'tree>>),
14706    TemplateType(::std::boxed::Box<TemplateType<'tree>>),
14707}
14708impl<'tree> ::treesitter_types::FromNode<'tree> for TemplateLiteralTypeChildren<'tree> {
14709    #[allow(clippy::collapsible_else_if)]
14710    fn from_node(
14711        node: ::tree_sitter::Node<'tree>,
14712        src: &'tree [u8],
14713    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
14714        match node.kind() {
14715            "string_fragment" => Ok(Self::StringFragment(::std::boxed::Box::new(
14716                <StringFragment as ::treesitter_types::FromNode>::from_node(node, src)?,
14717            ))),
14718            "template_type" => Ok(Self::TemplateType(::std::boxed::Box::new(
14719                <TemplateType as ::treesitter_types::FromNode>::from_node(node, src)?,
14720            ))),
14721            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
14722        }
14723    }
14724}
14725impl ::treesitter_types::Spanned for TemplateLiteralTypeChildren<'_> {
14726    fn span(&self) -> ::treesitter_types::Span {
14727        match self {
14728            Self::StringFragment(inner) => inner.span(),
14729            Self::TemplateType(inner) => inner.span(),
14730        }
14731    }
14732}
14733#[derive(Debug, Clone, PartialEq, Eq)]
14734pub enum TemplateStringChildren<'tree> {
14735    EscapeSequence(::std::boxed::Box<EscapeSequence<'tree>>),
14736    StringFragment(::std::boxed::Box<StringFragment<'tree>>),
14737    TemplateSubstitution(::std::boxed::Box<TemplateSubstitution<'tree>>),
14738}
14739impl<'tree> ::treesitter_types::FromNode<'tree> for TemplateStringChildren<'tree> {
14740    #[allow(clippy::collapsible_else_if)]
14741    fn from_node(
14742        node: ::tree_sitter::Node<'tree>,
14743        src: &'tree [u8],
14744    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
14745        match node.kind() {
14746            "escape_sequence" => Ok(Self::EscapeSequence(::std::boxed::Box::new(
14747                <EscapeSequence as ::treesitter_types::FromNode>::from_node(node, src)?,
14748            ))),
14749            "string_fragment" => Ok(Self::StringFragment(::std::boxed::Box::new(
14750                <StringFragment as ::treesitter_types::FromNode>::from_node(node, src)?,
14751            ))),
14752            "template_substitution" => Ok(Self::TemplateSubstitution(::std::boxed::Box::new(
14753                <TemplateSubstitution as ::treesitter_types::FromNode>::from_node(node, src)?,
14754            ))),
14755            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
14756        }
14757    }
14758}
14759impl ::treesitter_types::Spanned for TemplateStringChildren<'_> {
14760    fn span(&self) -> ::treesitter_types::Span {
14761        match self {
14762            Self::EscapeSequence(inner) => inner.span(),
14763            Self::StringFragment(inner) => inner.span(),
14764            Self::TemplateSubstitution(inner) => inner.span(),
14765        }
14766    }
14767}
14768#[derive(Debug, Clone, PartialEq, Eq)]
14769pub enum TemplateSubstitutionChildren<'tree> {
14770    Expression(::std::boxed::Box<Expression<'tree>>),
14771    SequenceExpression(::std::boxed::Box<SequenceExpression<'tree>>),
14772}
14773impl<'tree> ::treesitter_types::FromNode<'tree> for TemplateSubstitutionChildren<'tree> {
14774    #[allow(clippy::collapsible_else_if)]
14775    fn from_node(
14776        node: ::tree_sitter::Node<'tree>,
14777        src: &'tree [u8],
14778    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
14779        match node.kind() {
14780            "sequence_expression" => Ok(Self::SequenceExpression(::std::boxed::Box::new(
14781                <SequenceExpression as ::treesitter_types::FromNode>::from_node(node, src)?,
14782            ))),
14783            _other => {
14784                if let Ok(v) = <Expression as ::treesitter_types::FromNode>::from_node(node, src) {
14785                    Ok(Self::Expression(::std::boxed::Box::new(v)))
14786                } else {
14787                    Err(::treesitter_types::ParseError::unexpected_kind(
14788                        _other, node,
14789                    ))
14790                }
14791            }
14792        }
14793    }
14794}
14795impl ::treesitter_types::Spanned for TemplateSubstitutionChildren<'_> {
14796    fn span(&self) -> ::treesitter_types::Span {
14797        match self {
14798            Self::Expression(inner) => inner.span(),
14799            Self::SequenceExpression(inner) => inner.span(),
14800        }
14801    }
14802}
14803#[derive(Debug, Clone, PartialEq, Eq)]
14804pub enum TemplateTypeChildren<'tree> {
14805    InferType(::std::boxed::Box<InferType<'tree>>),
14806    PrimaryType(::std::boxed::Box<PrimaryType<'tree>>),
14807}
14808impl<'tree> ::treesitter_types::FromNode<'tree> for TemplateTypeChildren<'tree> {
14809    #[allow(clippy::collapsible_else_if)]
14810    fn from_node(
14811        node: ::tree_sitter::Node<'tree>,
14812        src: &'tree [u8],
14813    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
14814        match node.kind() {
14815            "infer_type" => Ok(Self::InferType(::std::boxed::Box::new(
14816                <InferType as ::treesitter_types::FromNode>::from_node(node, src)?,
14817            ))),
14818            _other => {
14819                if let Ok(v) = <PrimaryType as ::treesitter_types::FromNode>::from_node(node, src) {
14820                    Ok(Self::PrimaryType(::std::boxed::Box::new(v)))
14821                } else {
14822                    Err(::treesitter_types::ParseError::unexpected_kind(
14823                        _other, node,
14824                    ))
14825                }
14826            }
14827        }
14828    }
14829}
14830impl ::treesitter_types::Spanned for TemplateTypeChildren<'_> {
14831    fn span(&self) -> ::treesitter_types::Span {
14832        match self {
14833            Self::InferType(inner) => inner.span(),
14834            Self::PrimaryType(inner) => inner.span(),
14835        }
14836    }
14837}
14838#[derive(Debug, Clone, PartialEq, Eq)]
14839pub enum ThrowStatementChildren<'tree> {
14840    Expression(::std::boxed::Box<Expression<'tree>>),
14841    SequenceExpression(::std::boxed::Box<SequenceExpression<'tree>>),
14842}
14843impl<'tree> ::treesitter_types::FromNode<'tree> for ThrowStatementChildren<'tree> {
14844    #[allow(clippy::collapsible_else_if)]
14845    fn from_node(
14846        node: ::tree_sitter::Node<'tree>,
14847        src: &'tree [u8],
14848    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
14849        match node.kind() {
14850            "sequence_expression" => Ok(Self::SequenceExpression(::std::boxed::Box::new(
14851                <SequenceExpression as ::treesitter_types::FromNode>::from_node(node, src)?,
14852            ))),
14853            _other => {
14854                if let Ok(v) = <Expression as ::treesitter_types::FromNode>::from_node(node, src) {
14855                    Ok(Self::Expression(::std::boxed::Box::new(v)))
14856                } else {
14857                    Err(::treesitter_types::ParseError::unexpected_kind(
14858                        _other, node,
14859                    ))
14860                }
14861            }
14862        }
14863    }
14864}
14865impl ::treesitter_types::Spanned for ThrowStatementChildren<'_> {
14866    fn span(&self) -> ::treesitter_types::Span {
14867        match self {
14868            Self::Expression(inner) => inner.span(),
14869            Self::SequenceExpression(inner) => inner.span(),
14870        }
14871    }
14872}
14873#[derive(Debug, Clone, PartialEq, Eq)]
14874pub enum TupleTypeChildren<'tree> {
14875    OptionalParameter(::std::boxed::Box<OptionalParameter<'tree>>),
14876    OptionalType(::std::boxed::Box<OptionalType<'tree>>),
14877    RequiredParameter(::std::boxed::Box<RequiredParameter<'tree>>),
14878    RestType(::std::boxed::Box<RestType<'tree>>),
14879    Type(::std::boxed::Box<Type<'tree>>),
14880}
14881impl<'tree> ::treesitter_types::FromNode<'tree> for TupleTypeChildren<'tree> {
14882    #[allow(clippy::collapsible_else_if)]
14883    fn from_node(
14884        node: ::tree_sitter::Node<'tree>,
14885        src: &'tree [u8],
14886    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
14887        match node.kind() {
14888            "optional_parameter" => Ok(Self::OptionalParameter(::std::boxed::Box::new(
14889                <OptionalParameter as ::treesitter_types::FromNode>::from_node(node, src)?,
14890            ))),
14891            "optional_type" => Ok(Self::OptionalType(::std::boxed::Box::new(
14892                <OptionalType as ::treesitter_types::FromNode>::from_node(node, src)?,
14893            ))),
14894            "required_parameter" => Ok(Self::RequiredParameter(::std::boxed::Box::new(
14895                <RequiredParameter as ::treesitter_types::FromNode>::from_node(node, src)?,
14896            ))),
14897            "rest_type" => Ok(Self::RestType(::std::boxed::Box::new(
14898                <RestType as ::treesitter_types::FromNode>::from_node(node, src)?,
14899            ))),
14900            _other => {
14901                if let Ok(v) = <Type as ::treesitter_types::FromNode>::from_node(node, src) {
14902                    Ok(Self::Type(::std::boxed::Box::new(v)))
14903                } else {
14904                    Err(::treesitter_types::ParseError::unexpected_kind(
14905                        _other, node,
14906                    ))
14907                }
14908            }
14909        }
14910    }
14911}
14912impl ::treesitter_types::Spanned for TupleTypeChildren<'_> {
14913    fn span(&self) -> ::treesitter_types::Span {
14914        match self {
14915            Self::OptionalParameter(inner) => inner.span(),
14916            Self::OptionalType(inner) => inner.span(),
14917            Self::RequiredParameter(inner) => inner.span(),
14918            Self::RestType(inner) => inner.span(),
14919            Self::Type(inner) => inner.span(),
14920        }
14921    }
14922}
14923#[derive(Debug, Clone, PartialEq, Eq)]
14924pub enum TypeAssertionChildren<'tree> {
14925    Expression(::std::boxed::Box<Expression<'tree>>),
14926    TypeArguments(::std::boxed::Box<TypeArguments<'tree>>),
14927}
14928impl<'tree> ::treesitter_types::FromNode<'tree> for TypeAssertionChildren<'tree> {
14929    #[allow(clippy::collapsible_else_if)]
14930    fn from_node(
14931        node: ::tree_sitter::Node<'tree>,
14932        src: &'tree [u8],
14933    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
14934        match node.kind() {
14935            "type_arguments" => Ok(Self::TypeArguments(::std::boxed::Box::new(
14936                <TypeArguments as ::treesitter_types::FromNode>::from_node(node, src)?,
14937            ))),
14938            _other => {
14939                if let Ok(v) = <Expression as ::treesitter_types::FromNode>::from_node(node, src) {
14940                    Ok(Self::Expression(::std::boxed::Box::new(v)))
14941                } else {
14942                    Err(::treesitter_types::ParseError::unexpected_kind(
14943                        _other, node,
14944                    ))
14945                }
14946            }
14947        }
14948    }
14949}
14950impl ::treesitter_types::Spanned for TypeAssertionChildren<'_> {
14951    fn span(&self) -> ::treesitter_types::Span {
14952        match self {
14953            Self::Expression(inner) => inner.span(),
14954            Self::TypeArguments(inner) => inner.span(),
14955        }
14956    }
14957}
14958#[derive(Debug, Clone, PartialEq, Eq)]
14959pub enum TypePredicateName<'tree> {
14960    Identifier(::std::boxed::Box<Identifier<'tree>>),
14961    This(::std::boxed::Box<This<'tree>>),
14962}
14963impl<'tree> ::treesitter_types::FromNode<'tree> for TypePredicateName<'tree> {
14964    #[allow(clippy::collapsible_else_if)]
14965    fn from_node(
14966        node: ::tree_sitter::Node<'tree>,
14967        src: &'tree [u8],
14968    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
14969        match node.kind() {
14970            "identifier" => Ok(Self::Identifier(::std::boxed::Box::new(
14971                <Identifier as ::treesitter_types::FromNode>::from_node(node, src)?,
14972            ))),
14973            "this" => Ok(Self::This(::std::boxed::Box::new(
14974                <This as ::treesitter_types::FromNode>::from_node(node, src)?,
14975            ))),
14976            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
14977        }
14978    }
14979}
14980impl ::treesitter_types::Spanned for TypePredicateName<'_> {
14981    fn span(&self) -> ::treesitter_types::Span {
14982        match self {
14983            Self::Identifier(inner) => inner.span(),
14984            Self::This(inner) => inner.span(),
14985        }
14986    }
14987}
14988#[derive(Debug, Clone, PartialEq, Eq)]
14989pub enum TypeQueryChildren<'tree> {
14990    CallExpression(::std::boxed::Box<CallExpression<'tree>>),
14991    Identifier(::std::boxed::Box<Identifier<'tree>>),
14992    InstantiationExpression(::std::boxed::Box<InstantiationExpression<'tree>>),
14993    MemberExpression(::std::boxed::Box<MemberExpression<'tree>>),
14994    SubscriptExpression(::std::boxed::Box<SubscriptExpression<'tree>>),
14995    This(::std::boxed::Box<This<'tree>>),
14996}
14997impl<'tree> ::treesitter_types::FromNode<'tree> for TypeQueryChildren<'tree> {
14998    #[allow(clippy::collapsible_else_if)]
14999    fn from_node(
15000        node: ::tree_sitter::Node<'tree>,
15001        src: &'tree [u8],
15002    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
15003        match node.kind() {
15004            "call_expression" => Ok(Self::CallExpression(::std::boxed::Box::new(
15005                <CallExpression as ::treesitter_types::FromNode>::from_node(node, src)?,
15006            ))),
15007            "identifier" => Ok(Self::Identifier(::std::boxed::Box::new(
15008                <Identifier as ::treesitter_types::FromNode>::from_node(node, src)?,
15009            ))),
15010            "instantiation_expression" => {
15011                Ok(Self::InstantiationExpression(::std::boxed::Box::new(
15012                    <InstantiationExpression as ::treesitter_types::FromNode>::from_node(
15013                        node, src,
15014                    )?,
15015                )))
15016            }
15017            "member_expression" => Ok(Self::MemberExpression(::std::boxed::Box::new(
15018                <MemberExpression as ::treesitter_types::FromNode>::from_node(node, src)?,
15019            ))),
15020            "subscript_expression" => Ok(Self::SubscriptExpression(::std::boxed::Box::new(
15021                <SubscriptExpression as ::treesitter_types::FromNode>::from_node(node, src)?,
15022            ))),
15023            "this" => Ok(Self::This(::std::boxed::Box::new(
15024                <This as ::treesitter_types::FromNode>::from_node(node, src)?,
15025            ))),
15026            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
15027        }
15028    }
15029}
15030impl ::treesitter_types::Spanned for TypeQueryChildren<'_> {
15031    fn span(&self) -> ::treesitter_types::Span {
15032        match self {
15033            Self::CallExpression(inner) => inner.span(),
15034            Self::Identifier(inner) => inner.span(),
15035            Self::InstantiationExpression(inner) => inner.span(),
15036            Self::MemberExpression(inner) => inner.span(),
15037            Self::SubscriptExpression(inner) => inner.span(),
15038            Self::This(inner) => inner.span(),
15039        }
15040    }
15041}
15042#[derive(Debug, Clone, PartialEq, Eq)]
15043pub enum UnaryExpressionArgument<'tree> {
15044    Expression(::std::boxed::Box<Expression<'tree>>),
15045    Number(::std::boxed::Box<Number<'tree>>),
15046}
15047impl<'tree> ::treesitter_types::FromNode<'tree> for UnaryExpressionArgument<'tree> {
15048    #[allow(clippy::collapsible_else_if)]
15049    fn from_node(
15050        node: ::tree_sitter::Node<'tree>,
15051        src: &'tree [u8],
15052    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
15053        match node.kind() {
15054            "number" => Ok(Self::Number(::std::boxed::Box::new(
15055                <Number as ::treesitter_types::FromNode>::from_node(node, src)?,
15056            ))),
15057            _other => {
15058                if let Ok(v) = <Expression as ::treesitter_types::FromNode>::from_node(node, src) {
15059                    Ok(Self::Expression(::std::boxed::Box::new(v)))
15060                } else {
15061                    Err(::treesitter_types::ParseError::unexpected_kind(
15062                        _other, node,
15063                    ))
15064                }
15065            }
15066        }
15067    }
15068}
15069impl ::treesitter_types::Spanned for UnaryExpressionArgument<'_> {
15070    fn span(&self) -> ::treesitter_types::Span {
15071        match self {
15072            Self::Expression(inner) => inner.span(),
15073            Self::Number(inner) => inner.span(),
15074        }
15075    }
15076}
15077#[derive(Debug, Clone, PartialEq, Eq)]
15078pub enum UnaryExpressionOperator {
15079    Bang(::treesitter_types::Span),
15080    Plus(::treesitter_types::Span),
15081    Minus(::treesitter_types::Span),
15082    Delete(::treesitter_types::Span),
15083    Typeof(::treesitter_types::Span),
15084    Void(::treesitter_types::Span),
15085    Tilde(::treesitter_types::Span),
15086}
15087impl<'tree> ::treesitter_types::FromNode<'tree> for UnaryExpressionOperator {
15088    #[allow(clippy::collapsible_else_if)]
15089    fn from_node(
15090        node: ::tree_sitter::Node<'tree>,
15091        _src: &'tree [u8],
15092    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
15093        match node.kind() {
15094            "!" => Ok(Self::Bang(::treesitter_types::Span::from(node))),
15095            "+" => Ok(Self::Plus(::treesitter_types::Span::from(node))),
15096            "-" => Ok(Self::Minus(::treesitter_types::Span::from(node))),
15097            "delete" => Ok(Self::Delete(::treesitter_types::Span::from(node))),
15098            "typeof" => Ok(Self::Typeof(::treesitter_types::Span::from(node))),
15099            "void" => Ok(Self::Void(::treesitter_types::Span::from(node))),
15100            "~" => Ok(Self::Tilde(::treesitter_types::Span::from(node))),
15101            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
15102        }
15103    }
15104}
15105impl ::treesitter_types::Spanned for UnaryExpressionOperator {
15106    fn span(&self) -> ::treesitter_types::Span {
15107        match self {
15108            Self::Bang(span) => *span,
15109            Self::Plus(span) => *span,
15110            Self::Minus(span) => *span,
15111            Self::Delete(span) => *span,
15112            Self::Typeof(span) => *span,
15113            Self::Void(span) => *span,
15114            Self::Tilde(span) => *span,
15115        }
15116    }
15117}
15118#[derive(Debug, Clone, PartialEq, Eq)]
15119pub enum UpdateExpressionOperator {
15120    PlusPlus(::treesitter_types::Span),
15121    MinusMinus(::treesitter_types::Span),
15122}
15123impl<'tree> ::treesitter_types::FromNode<'tree> for UpdateExpressionOperator {
15124    #[allow(clippy::collapsible_else_if)]
15125    fn from_node(
15126        node: ::tree_sitter::Node<'tree>,
15127        _src: &'tree [u8],
15128    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
15129        match node.kind() {
15130            "++" => Ok(Self::PlusPlus(::treesitter_types::Span::from(node))),
15131            "--" => Ok(Self::MinusMinus(::treesitter_types::Span::from(node))),
15132            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
15133        }
15134    }
15135}
15136impl ::treesitter_types::Spanned for UpdateExpressionOperator {
15137    fn span(&self) -> ::treesitter_types::Span {
15138        match self {
15139            Self::PlusPlus(span) => *span,
15140            Self::MinusMinus(span) => *span,
15141        }
15142    }
15143}
15144#[derive(Debug, Clone, PartialEq, Eq)]
15145pub enum VariableDeclaratorName<'tree> {
15146    ArrayPattern(::std::boxed::Box<ArrayPattern<'tree>>),
15147    Identifier(::std::boxed::Box<Identifier<'tree>>),
15148    ObjectPattern(::std::boxed::Box<ObjectPattern<'tree>>),
15149}
15150impl<'tree> ::treesitter_types::FromNode<'tree> for VariableDeclaratorName<'tree> {
15151    #[allow(clippy::collapsible_else_if)]
15152    fn from_node(
15153        node: ::tree_sitter::Node<'tree>,
15154        src: &'tree [u8],
15155    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
15156        match node.kind() {
15157            "array_pattern" => Ok(Self::ArrayPattern(::std::boxed::Box::new(
15158                <ArrayPattern as ::treesitter_types::FromNode>::from_node(node, src)?,
15159            ))),
15160            "identifier" => Ok(Self::Identifier(::std::boxed::Box::new(
15161                <Identifier as ::treesitter_types::FromNode>::from_node(node, src)?,
15162            ))),
15163            "object_pattern" => Ok(Self::ObjectPattern(::std::boxed::Box::new(
15164                <ObjectPattern as ::treesitter_types::FromNode>::from_node(node, src)?,
15165            ))),
15166            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
15167        }
15168    }
15169}
15170impl ::treesitter_types::Spanned for VariableDeclaratorName<'_> {
15171    fn span(&self) -> ::treesitter_types::Span {
15172        match self {
15173            Self::ArrayPattern(inner) => inner.span(),
15174            Self::Identifier(inner) => inner.span(),
15175            Self::ObjectPattern(inner) => inner.span(),
15176        }
15177    }
15178}
15179#[derive(Debug, Clone, PartialEq, Eq)]
15180pub enum AnyNode<'tree> {
15181    Declaration(Declaration<'tree>),
15182    Expression(Expression<'tree>),
15183    Pattern(Pattern<'tree>),
15184    PrimaryExpression(PrimaryExpression<'tree>),
15185    PrimaryType(PrimaryType<'tree>),
15186    Statement(Statement<'tree>),
15187    Type(Type<'tree>),
15188    AbstractClassDeclaration(AbstractClassDeclaration<'tree>),
15189    AbstractMethodSignature(AbstractMethodSignature<'tree>),
15190    AccessibilityModifier(AccessibilityModifier<'tree>),
15191    AddingTypeAnnotation(AddingTypeAnnotation<'tree>),
15192    AmbientDeclaration(AmbientDeclaration<'tree>),
15193    Arguments(Arguments<'tree>),
15194    Array(Array<'tree>),
15195    ArrayPattern(ArrayPattern<'tree>),
15196    ArrayType(ArrayType<'tree>),
15197    ArrowFunction(ArrowFunction<'tree>),
15198    AsExpression(AsExpression<'tree>),
15199    Asserts(Asserts<'tree>),
15200    AssertsAnnotation(AssertsAnnotation<'tree>),
15201    AssignmentExpression(AssignmentExpression<'tree>),
15202    AssignmentPattern(AssignmentPattern<'tree>),
15203    AugmentedAssignmentExpression(AugmentedAssignmentExpression<'tree>),
15204    AwaitExpression(AwaitExpression<'tree>),
15205    BinaryExpression(BinaryExpression<'tree>),
15206    BreakStatement(BreakStatement<'tree>),
15207    CallExpression(CallExpression<'tree>),
15208    CallSignature(CallSignature<'tree>),
15209    CatchClause(CatchClause<'tree>),
15210    Class(Class<'tree>),
15211    ClassBody(ClassBody<'tree>),
15212    ClassDeclaration(ClassDeclaration<'tree>),
15213    ClassHeritage(ClassHeritage<'tree>),
15214    ClassStaticBlock(ClassStaticBlock<'tree>),
15215    ComputedPropertyName(ComputedPropertyName<'tree>),
15216    ConditionalType(ConditionalType<'tree>),
15217    Constraint(Constraint<'tree>),
15218    ConstructSignature(ConstructSignature<'tree>),
15219    ConstructorType(ConstructorType<'tree>),
15220    ContinueStatement(ContinueStatement<'tree>),
15221    DebuggerStatement(DebuggerStatement<'tree>),
15222    Decorator(Decorator<'tree>),
15223    DefaultType(DefaultType<'tree>),
15224    DoStatement(DoStatement<'tree>),
15225    ElseClause(ElseClause<'tree>),
15226    EmptyStatement(EmptyStatement<'tree>),
15227    EnumAssignment(EnumAssignment<'tree>),
15228    EnumBody(EnumBody<'tree>),
15229    EnumDeclaration(EnumDeclaration<'tree>),
15230    ExistentialType(ExistentialType<'tree>),
15231    ExportClause(ExportClause<'tree>),
15232    ExportSpecifier(ExportSpecifier<'tree>),
15233    ExportStatement(ExportStatement<'tree>),
15234    ExpressionStatement(ExpressionStatement<'tree>),
15235    ExtendsClause(ExtendsClause<'tree>),
15236    ExtendsTypeClause(ExtendsTypeClause<'tree>),
15237    FinallyClause(FinallyClause<'tree>),
15238    FlowMaybeType(FlowMaybeType<'tree>),
15239    ForInStatement(ForInStatement<'tree>),
15240    ForStatement(ForStatement<'tree>),
15241    FormalParameters(FormalParameters<'tree>),
15242    FunctionDeclaration(FunctionDeclaration<'tree>),
15243    FunctionExpression(FunctionExpression<'tree>),
15244    FunctionSignature(FunctionSignature<'tree>),
15245    FunctionType(FunctionType<'tree>),
15246    GeneratorFunction(GeneratorFunction<'tree>),
15247    GeneratorFunctionDeclaration(GeneratorFunctionDeclaration<'tree>),
15248    GenericType(GenericType<'tree>),
15249    Identifier(Identifier<'tree>),
15250    IfStatement(IfStatement<'tree>),
15251    ImplementsClause(ImplementsClause<'tree>),
15252    Import(Import<'tree>),
15253    ImportAlias(ImportAlias<'tree>),
15254    ImportAttribute(ImportAttribute<'tree>),
15255    ImportClause(ImportClause<'tree>),
15256    ImportRequireClause(ImportRequireClause<'tree>),
15257    ImportSpecifier(ImportSpecifier<'tree>),
15258    ImportStatement(ImportStatement<'tree>),
15259    IndexSignature(IndexSignature<'tree>),
15260    IndexTypeQuery(IndexTypeQuery<'tree>),
15261    InferType(InferType<'tree>),
15262    InstantiationExpression(InstantiationExpression<'tree>),
15263    InterfaceBody(InterfaceBody<'tree>),
15264    InterfaceDeclaration(InterfaceDeclaration<'tree>),
15265    InternalModule(InternalModule<'tree>),
15266    IntersectionType(IntersectionType<'tree>),
15267    LabeledStatement(LabeledStatement<'tree>),
15268    LexicalDeclaration(LexicalDeclaration<'tree>),
15269    LiteralType(LiteralType<'tree>),
15270    LookupType(LookupType<'tree>),
15271    MappedTypeClause(MappedTypeClause<'tree>),
15272    MemberExpression(MemberExpression<'tree>),
15273    MetaProperty(MetaProperty<'tree>),
15274    MethodDefinition(MethodDefinition<'tree>),
15275    MethodSignature(MethodSignature<'tree>),
15276    Module(Module<'tree>),
15277    NamedImports(NamedImports<'tree>),
15278    NamespaceExport(NamespaceExport<'tree>),
15279    NamespaceImport(NamespaceImport<'tree>),
15280    NestedIdentifier(NestedIdentifier<'tree>),
15281    NestedTypeIdentifier(NestedTypeIdentifier<'tree>),
15282    NewExpression(NewExpression<'tree>),
15283    NonNullExpression(NonNullExpression<'tree>),
15284    Object(Object<'tree>),
15285    ObjectAssignmentPattern(ObjectAssignmentPattern<'tree>),
15286    ObjectPattern(ObjectPattern<'tree>),
15287    ObjectType(ObjectType<'tree>),
15288    OmittingTypeAnnotation(OmittingTypeAnnotation<'tree>),
15289    OptingTypeAnnotation(OptingTypeAnnotation<'tree>),
15290    OptionalChain(OptionalChain<'tree>),
15291    OptionalParameter(OptionalParameter<'tree>),
15292    OptionalType(OptionalType<'tree>),
15293    OverrideModifier(OverrideModifier<'tree>),
15294    Pair(Pair<'tree>),
15295    PairPattern(PairPattern<'tree>),
15296    ParenthesizedExpression(ParenthesizedExpression<'tree>),
15297    ParenthesizedType(ParenthesizedType<'tree>),
15298    PredefinedType(PredefinedType<'tree>),
15299    Program(Program<'tree>),
15300    PropertySignature(PropertySignature<'tree>),
15301    PublicFieldDefinition(PublicFieldDefinition<'tree>),
15302    ReadonlyType(ReadonlyType<'tree>),
15303    Regex(Regex<'tree>),
15304    RequiredParameter(RequiredParameter<'tree>),
15305    RestPattern(RestPattern<'tree>),
15306    RestType(RestType<'tree>),
15307    ReturnStatement(ReturnStatement<'tree>),
15308    SatisfiesExpression(SatisfiesExpression<'tree>),
15309    SequenceExpression(SequenceExpression<'tree>),
15310    SpreadElement(SpreadElement<'tree>),
15311    StatementBlock(StatementBlock<'tree>),
15312    String(String<'tree>),
15313    SubscriptExpression(SubscriptExpression<'tree>),
15314    SwitchBody(SwitchBody<'tree>),
15315    SwitchCase(SwitchCase<'tree>),
15316    SwitchDefault(SwitchDefault<'tree>),
15317    SwitchStatement(SwitchStatement<'tree>),
15318    TemplateLiteralType(TemplateLiteralType<'tree>),
15319    TemplateString(TemplateString<'tree>),
15320    TemplateSubstitution(TemplateSubstitution<'tree>),
15321    TemplateType(TemplateType<'tree>),
15322    TernaryExpression(TernaryExpression<'tree>),
15323    ThrowStatement(ThrowStatement<'tree>),
15324    TryStatement(TryStatement<'tree>),
15325    TupleType(TupleType<'tree>),
15326    TypeAliasDeclaration(TypeAliasDeclaration<'tree>),
15327    TypeAnnotation(TypeAnnotation<'tree>),
15328    TypeArguments(TypeArguments<'tree>),
15329    TypeAssertion(TypeAssertion<'tree>),
15330    TypeParameter(TypeParameter<'tree>),
15331    TypeParameters(TypeParameters<'tree>),
15332    TypePredicate(TypePredicate<'tree>),
15333    TypePredicateAnnotation(TypePredicateAnnotation<'tree>),
15334    TypeQuery(TypeQuery<'tree>),
15335    UnaryExpression(UnaryExpression<'tree>),
15336    UnionType(UnionType<'tree>),
15337    UpdateExpression(UpdateExpression<'tree>),
15338    VariableDeclaration(VariableDeclaration<'tree>),
15339    VariableDeclarator(VariableDeclarator<'tree>),
15340    WhileStatement(WhileStatement<'tree>),
15341    WithStatement(WithStatement<'tree>),
15342    YieldExpression(YieldExpression<'tree>),
15343    Comment(Comment<'tree>),
15344    EscapeSequence(EscapeSequence<'tree>),
15345    False(False<'tree>),
15346    HashBangLine(HashBangLine<'tree>),
15347    HtmlComment(HtmlComment<'tree>),
15348    Null(Null<'tree>),
15349    Number(Number<'tree>),
15350    PrivatePropertyIdentifier(PrivatePropertyIdentifier<'tree>),
15351    PropertyIdentifier(PropertyIdentifier<'tree>),
15352    RegexFlags(RegexFlags<'tree>),
15353    RegexPattern(RegexPattern<'tree>),
15354    ShorthandPropertyIdentifier(ShorthandPropertyIdentifier<'tree>),
15355    ShorthandPropertyIdentifierPattern(ShorthandPropertyIdentifierPattern<'tree>),
15356    StatementIdentifier(StatementIdentifier<'tree>),
15357    StringFragment(StringFragment<'tree>),
15358    Super(Super<'tree>),
15359    This(This<'tree>),
15360    ThisType(ThisType<'tree>),
15361    True(True<'tree>),
15362    TypeIdentifier(TypeIdentifier<'tree>),
15363    Undefined(Undefined<'tree>),
15364    Unknown(::tree_sitter::Node<'tree>),
15365}
15366impl<'tree> AnyNode<'tree> {
15367    pub fn from_node(node: ::tree_sitter::Node<'tree>, src: &'tree [u8]) -> Self {
15368        match node.kind() {
15369            "declaration" => <Declaration as ::treesitter_types::FromNode>::from_node(node, src)
15370                .map(Self::Declaration)
15371                .unwrap_or(Self::Unknown(node)),
15372            "expression" => <Expression as ::treesitter_types::FromNode>::from_node(node, src)
15373                .map(Self::Expression)
15374                .unwrap_or(Self::Unknown(node)),
15375            "pattern" => <Pattern as ::treesitter_types::FromNode>::from_node(node, src)
15376                .map(Self::Pattern)
15377                .unwrap_or(Self::Unknown(node)),
15378            "primary_expression" => {
15379                <PrimaryExpression as ::treesitter_types::FromNode>::from_node(node, src)
15380                    .map(Self::PrimaryExpression)
15381                    .unwrap_or(Self::Unknown(node))
15382            }
15383            "primary_type" => <PrimaryType as ::treesitter_types::FromNode>::from_node(node, src)
15384                .map(Self::PrimaryType)
15385                .unwrap_or(Self::Unknown(node)),
15386            "statement" => <Statement as ::treesitter_types::FromNode>::from_node(node, src)
15387                .map(Self::Statement)
15388                .unwrap_or(Self::Unknown(node)),
15389            "type" => <Type as ::treesitter_types::FromNode>::from_node(node, src)
15390                .map(Self::Type)
15391                .unwrap_or(Self::Unknown(node)),
15392            "abstract_class_declaration" => {
15393                <AbstractClassDeclaration as ::treesitter_types::FromNode>::from_node(node, src)
15394                    .map(Self::AbstractClassDeclaration)
15395                    .unwrap_or(Self::Unknown(node))
15396            }
15397            "abstract_method_signature" => {
15398                <AbstractMethodSignature as ::treesitter_types::FromNode>::from_node(node, src)
15399                    .map(Self::AbstractMethodSignature)
15400                    .unwrap_or(Self::Unknown(node))
15401            }
15402            "accessibility_modifier" => {
15403                <AccessibilityModifier as ::treesitter_types::FromNode>::from_node(node, src)
15404                    .map(Self::AccessibilityModifier)
15405                    .unwrap_or(Self::Unknown(node))
15406            }
15407            "adding_type_annotation" => {
15408                <AddingTypeAnnotation as ::treesitter_types::FromNode>::from_node(node, src)
15409                    .map(Self::AddingTypeAnnotation)
15410                    .unwrap_or(Self::Unknown(node))
15411            }
15412            "ambient_declaration" => {
15413                <AmbientDeclaration as ::treesitter_types::FromNode>::from_node(node, src)
15414                    .map(Self::AmbientDeclaration)
15415                    .unwrap_or(Self::Unknown(node))
15416            }
15417            "arguments" => <Arguments as ::treesitter_types::FromNode>::from_node(node, src)
15418                .map(Self::Arguments)
15419                .unwrap_or(Self::Unknown(node)),
15420            "array" => <Array as ::treesitter_types::FromNode>::from_node(node, src)
15421                .map(Self::Array)
15422                .unwrap_or(Self::Unknown(node)),
15423            "array_pattern" => <ArrayPattern as ::treesitter_types::FromNode>::from_node(node, src)
15424                .map(Self::ArrayPattern)
15425                .unwrap_or(Self::Unknown(node)),
15426            "array_type" => <ArrayType as ::treesitter_types::FromNode>::from_node(node, src)
15427                .map(Self::ArrayType)
15428                .unwrap_or(Self::Unknown(node)),
15429            "arrow_function" => {
15430                <ArrowFunction as ::treesitter_types::FromNode>::from_node(node, src)
15431                    .map(Self::ArrowFunction)
15432                    .unwrap_or(Self::Unknown(node))
15433            }
15434            "as_expression" => <AsExpression as ::treesitter_types::FromNode>::from_node(node, src)
15435                .map(Self::AsExpression)
15436                .unwrap_or(Self::Unknown(node)),
15437            "asserts" => <Asserts as ::treesitter_types::FromNode>::from_node(node, src)
15438                .map(Self::Asserts)
15439                .unwrap_or(Self::Unknown(node)),
15440            "asserts_annotation" => {
15441                <AssertsAnnotation as ::treesitter_types::FromNode>::from_node(node, src)
15442                    .map(Self::AssertsAnnotation)
15443                    .unwrap_or(Self::Unknown(node))
15444            }
15445            "assignment_expression" => {
15446                <AssignmentExpression as ::treesitter_types::FromNode>::from_node(node, src)
15447                    .map(Self::AssignmentExpression)
15448                    .unwrap_or(Self::Unknown(node))
15449            }
15450            "assignment_pattern" => {
15451                <AssignmentPattern as ::treesitter_types::FromNode>::from_node(node, src)
15452                    .map(Self::AssignmentPattern)
15453                    .unwrap_or(Self::Unknown(node))
15454            }
15455            "augmented_assignment_expression" => {
15456                <AugmentedAssignmentExpression as ::treesitter_types::FromNode>::from_node(
15457                    node, src,
15458                )
15459                .map(Self::AugmentedAssignmentExpression)
15460                .unwrap_or(Self::Unknown(node))
15461            }
15462            "await_expression" => {
15463                <AwaitExpression as ::treesitter_types::FromNode>::from_node(node, src)
15464                    .map(Self::AwaitExpression)
15465                    .unwrap_or(Self::Unknown(node))
15466            }
15467            "binary_expression" => {
15468                <BinaryExpression as ::treesitter_types::FromNode>::from_node(node, src)
15469                    .map(Self::BinaryExpression)
15470                    .unwrap_or(Self::Unknown(node))
15471            }
15472            "break_statement" => {
15473                <BreakStatement as ::treesitter_types::FromNode>::from_node(node, src)
15474                    .map(Self::BreakStatement)
15475                    .unwrap_or(Self::Unknown(node))
15476            }
15477            "call_expression" => {
15478                <CallExpression as ::treesitter_types::FromNode>::from_node(node, src)
15479                    .map(Self::CallExpression)
15480                    .unwrap_or(Self::Unknown(node))
15481            }
15482            "call_signature" => {
15483                <CallSignature as ::treesitter_types::FromNode>::from_node(node, src)
15484                    .map(Self::CallSignature)
15485                    .unwrap_or(Self::Unknown(node))
15486            }
15487            "catch_clause" => <CatchClause as ::treesitter_types::FromNode>::from_node(node, src)
15488                .map(Self::CatchClause)
15489                .unwrap_or(Self::Unknown(node)),
15490            "class" => <Class as ::treesitter_types::FromNode>::from_node(node, src)
15491                .map(Self::Class)
15492                .unwrap_or(Self::Unknown(node)),
15493            "class_body" => <ClassBody as ::treesitter_types::FromNode>::from_node(node, src)
15494                .map(Self::ClassBody)
15495                .unwrap_or(Self::Unknown(node)),
15496            "class_declaration" => {
15497                <ClassDeclaration as ::treesitter_types::FromNode>::from_node(node, src)
15498                    .map(Self::ClassDeclaration)
15499                    .unwrap_or(Self::Unknown(node))
15500            }
15501            "class_heritage" => {
15502                <ClassHeritage as ::treesitter_types::FromNode>::from_node(node, src)
15503                    .map(Self::ClassHeritage)
15504                    .unwrap_or(Self::Unknown(node))
15505            }
15506            "class_static_block" => {
15507                <ClassStaticBlock as ::treesitter_types::FromNode>::from_node(node, src)
15508                    .map(Self::ClassStaticBlock)
15509                    .unwrap_or(Self::Unknown(node))
15510            }
15511            "computed_property_name" => {
15512                <ComputedPropertyName as ::treesitter_types::FromNode>::from_node(node, src)
15513                    .map(Self::ComputedPropertyName)
15514                    .unwrap_or(Self::Unknown(node))
15515            }
15516            "conditional_type" => {
15517                <ConditionalType as ::treesitter_types::FromNode>::from_node(node, src)
15518                    .map(Self::ConditionalType)
15519                    .unwrap_or(Self::Unknown(node))
15520            }
15521            "constraint" => <Constraint as ::treesitter_types::FromNode>::from_node(node, src)
15522                .map(Self::Constraint)
15523                .unwrap_or(Self::Unknown(node)),
15524            "construct_signature" => {
15525                <ConstructSignature as ::treesitter_types::FromNode>::from_node(node, src)
15526                    .map(Self::ConstructSignature)
15527                    .unwrap_or(Self::Unknown(node))
15528            }
15529            "constructor_type" => {
15530                <ConstructorType as ::treesitter_types::FromNode>::from_node(node, src)
15531                    .map(Self::ConstructorType)
15532                    .unwrap_or(Self::Unknown(node))
15533            }
15534            "continue_statement" => {
15535                <ContinueStatement as ::treesitter_types::FromNode>::from_node(node, src)
15536                    .map(Self::ContinueStatement)
15537                    .unwrap_or(Self::Unknown(node))
15538            }
15539            "debugger_statement" => {
15540                <DebuggerStatement as ::treesitter_types::FromNode>::from_node(node, src)
15541                    .map(Self::DebuggerStatement)
15542                    .unwrap_or(Self::Unknown(node))
15543            }
15544            "decorator" => <Decorator as ::treesitter_types::FromNode>::from_node(node, src)
15545                .map(Self::Decorator)
15546                .unwrap_or(Self::Unknown(node)),
15547            "default_type" => <DefaultType as ::treesitter_types::FromNode>::from_node(node, src)
15548                .map(Self::DefaultType)
15549                .unwrap_or(Self::Unknown(node)),
15550            "do_statement" => <DoStatement as ::treesitter_types::FromNode>::from_node(node, src)
15551                .map(Self::DoStatement)
15552                .unwrap_or(Self::Unknown(node)),
15553            "else_clause" => <ElseClause as ::treesitter_types::FromNode>::from_node(node, src)
15554                .map(Self::ElseClause)
15555                .unwrap_or(Self::Unknown(node)),
15556            "empty_statement" => {
15557                <EmptyStatement as ::treesitter_types::FromNode>::from_node(node, src)
15558                    .map(Self::EmptyStatement)
15559                    .unwrap_or(Self::Unknown(node))
15560            }
15561            "enum_assignment" => {
15562                <EnumAssignment as ::treesitter_types::FromNode>::from_node(node, src)
15563                    .map(Self::EnumAssignment)
15564                    .unwrap_or(Self::Unknown(node))
15565            }
15566            "enum_body" => <EnumBody as ::treesitter_types::FromNode>::from_node(node, src)
15567                .map(Self::EnumBody)
15568                .unwrap_or(Self::Unknown(node)),
15569            "enum_declaration" => {
15570                <EnumDeclaration as ::treesitter_types::FromNode>::from_node(node, src)
15571                    .map(Self::EnumDeclaration)
15572                    .unwrap_or(Self::Unknown(node))
15573            }
15574            "existential_type" => {
15575                <ExistentialType as ::treesitter_types::FromNode>::from_node(node, src)
15576                    .map(Self::ExistentialType)
15577                    .unwrap_or(Self::Unknown(node))
15578            }
15579            "export_clause" => <ExportClause as ::treesitter_types::FromNode>::from_node(node, src)
15580                .map(Self::ExportClause)
15581                .unwrap_or(Self::Unknown(node)),
15582            "export_specifier" => {
15583                <ExportSpecifier as ::treesitter_types::FromNode>::from_node(node, src)
15584                    .map(Self::ExportSpecifier)
15585                    .unwrap_or(Self::Unknown(node))
15586            }
15587            "export_statement" => {
15588                <ExportStatement as ::treesitter_types::FromNode>::from_node(node, src)
15589                    .map(Self::ExportStatement)
15590                    .unwrap_or(Self::Unknown(node))
15591            }
15592            "expression_statement" => {
15593                <ExpressionStatement as ::treesitter_types::FromNode>::from_node(node, src)
15594                    .map(Self::ExpressionStatement)
15595                    .unwrap_or(Self::Unknown(node))
15596            }
15597            "extends_clause" => {
15598                <ExtendsClause as ::treesitter_types::FromNode>::from_node(node, src)
15599                    .map(Self::ExtendsClause)
15600                    .unwrap_or(Self::Unknown(node))
15601            }
15602            "extends_type_clause" => {
15603                <ExtendsTypeClause as ::treesitter_types::FromNode>::from_node(node, src)
15604                    .map(Self::ExtendsTypeClause)
15605                    .unwrap_or(Self::Unknown(node))
15606            }
15607            "finally_clause" => {
15608                <FinallyClause as ::treesitter_types::FromNode>::from_node(node, src)
15609                    .map(Self::FinallyClause)
15610                    .unwrap_or(Self::Unknown(node))
15611            }
15612            "flow_maybe_type" => {
15613                <FlowMaybeType as ::treesitter_types::FromNode>::from_node(node, src)
15614                    .map(Self::FlowMaybeType)
15615                    .unwrap_or(Self::Unknown(node))
15616            }
15617            "for_in_statement" => {
15618                <ForInStatement as ::treesitter_types::FromNode>::from_node(node, src)
15619                    .map(Self::ForInStatement)
15620                    .unwrap_or(Self::Unknown(node))
15621            }
15622            "for_statement" => <ForStatement as ::treesitter_types::FromNode>::from_node(node, src)
15623                .map(Self::ForStatement)
15624                .unwrap_or(Self::Unknown(node)),
15625            "formal_parameters" => {
15626                <FormalParameters as ::treesitter_types::FromNode>::from_node(node, src)
15627                    .map(Self::FormalParameters)
15628                    .unwrap_or(Self::Unknown(node))
15629            }
15630            "function_declaration" => {
15631                <FunctionDeclaration as ::treesitter_types::FromNode>::from_node(node, src)
15632                    .map(Self::FunctionDeclaration)
15633                    .unwrap_or(Self::Unknown(node))
15634            }
15635            "function_expression" => {
15636                <FunctionExpression as ::treesitter_types::FromNode>::from_node(node, src)
15637                    .map(Self::FunctionExpression)
15638                    .unwrap_or(Self::Unknown(node))
15639            }
15640            "function_signature" => {
15641                <FunctionSignature as ::treesitter_types::FromNode>::from_node(node, src)
15642                    .map(Self::FunctionSignature)
15643                    .unwrap_or(Self::Unknown(node))
15644            }
15645            "function_type" => <FunctionType as ::treesitter_types::FromNode>::from_node(node, src)
15646                .map(Self::FunctionType)
15647                .unwrap_or(Self::Unknown(node)),
15648            "generator_function" => {
15649                <GeneratorFunction as ::treesitter_types::FromNode>::from_node(node, src)
15650                    .map(Self::GeneratorFunction)
15651                    .unwrap_or(Self::Unknown(node))
15652            }
15653            "generator_function_declaration" => {
15654                <GeneratorFunctionDeclaration as ::treesitter_types::FromNode>::from_node(node, src)
15655                    .map(Self::GeneratorFunctionDeclaration)
15656                    .unwrap_or(Self::Unknown(node))
15657            }
15658            "generic_type" => <GenericType as ::treesitter_types::FromNode>::from_node(node, src)
15659                .map(Self::GenericType)
15660                .unwrap_or(Self::Unknown(node)),
15661            "identifier" => <Identifier as ::treesitter_types::FromNode>::from_node(node, src)
15662                .map(Self::Identifier)
15663                .unwrap_or(Self::Unknown(node)),
15664            "if_statement" => <IfStatement as ::treesitter_types::FromNode>::from_node(node, src)
15665                .map(Self::IfStatement)
15666                .unwrap_or(Self::Unknown(node)),
15667            "implements_clause" => {
15668                <ImplementsClause as ::treesitter_types::FromNode>::from_node(node, src)
15669                    .map(Self::ImplementsClause)
15670                    .unwrap_or(Self::Unknown(node))
15671            }
15672            "import" => <Import as ::treesitter_types::FromNode>::from_node(node, src)
15673                .map(Self::Import)
15674                .unwrap_or(Self::Unknown(node)),
15675            "import_alias" => <ImportAlias as ::treesitter_types::FromNode>::from_node(node, src)
15676                .map(Self::ImportAlias)
15677                .unwrap_or(Self::Unknown(node)),
15678            "import_attribute" => {
15679                <ImportAttribute as ::treesitter_types::FromNode>::from_node(node, src)
15680                    .map(Self::ImportAttribute)
15681                    .unwrap_or(Self::Unknown(node))
15682            }
15683            "import_clause" => <ImportClause as ::treesitter_types::FromNode>::from_node(node, src)
15684                .map(Self::ImportClause)
15685                .unwrap_or(Self::Unknown(node)),
15686            "import_require_clause" => {
15687                <ImportRequireClause as ::treesitter_types::FromNode>::from_node(node, src)
15688                    .map(Self::ImportRequireClause)
15689                    .unwrap_or(Self::Unknown(node))
15690            }
15691            "import_specifier" => {
15692                <ImportSpecifier as ::treesitter_types::FromNode>::from_node(node, src)
15693                    .map(Self::ImportSpecifier)
15694                    .unwrap_or(Self::Unknown(node))
15695            }
15696            "import_statement" => {
15697                <ImportStatement as ::treesitter_types::FromNode>::from_node(node, src)
15698                    .map(Self::ImportStatement)
15699                    .unwrap_or(Self::Unknown(node))
15700            }
15701            "index_signature" => {
15702                <IndexSignature as ::treesitter_types::FromNode>::from_node(node, src)
15703                    .map(Self::IndexSignature)
15704                    .unwrap_or(Self::Unknown(node))
15705            }
15706            "index_type_query" => {
15707                <IndexTypeQuery as ::treesitter_types::FromNode>::from_node(node, src)
15708                    .map(Self::IndexTypeQuery)
15709                    .unwrap_or(Self::Unknown(node))
15710            }
15711            "infer_type" => <InferType as ::treesitter_types::FromNode>::from_node(node, src)
15712                .map(Self::InferType)
15713                .unwrap_or(Self::Unknown(node)),
15714            "instantiation_expression" => {
15715                <InstantiationExpression as ::treesitter_types::FromNode>::from_node(node, src)
15716                    .map(Self::InstantiationExpression)
15717                    .unwrap_or(Self::Unknown(node))
15718            }
15719            "interface_body" => {
15720                <InterfaceBody as ::treesitter_types::FromNode>::from_node(node, src)
15721                    .map(Self::InterfaceBody)
15722                    .unwrap_or(Self::Unknown(node))
15723            }
15724            "interface_declaration" => {
15725                <InterfaceDeclaration as ::treesitter_types::FromNode>::from_node(node, src)
15726                    .map(Self::InterfaceDeclaration)
15727                    .unwrap_or(Self::Unknown(node))
15728            }
15729            "internal_module" => {
15730                <InternalModule as ::treesitter_types::FromNode>::from_node(node, src)
15731                    .map(Self::InternalModule)
15732                    .unwrap_or(Self::Unknown(node))
15733            }
15734            "intersection_type" => {
15735                <IntersectionType as ::treesitter_types::FromNode>::from_node(node, src)
15736                    .map(Self::IntersectionType)
15737                    .unwrap_or(Self::Unknown(node))
15738            }
15739            "labeled_statement" => {
15740                <LabeledStatement as ::treesitter_types::FromNode>::from_node(node, src)
15741                    .map(Self::LabeledStatement)
15742                    .unwrap_or(Self::Unknown(node))
15743            }
15744            "lexical_declaration" => {
15745                <LexicalDeclaration as ::treesitter_types::FromNode>::from_node(node, src)
15746                    .map(Self::LexicalDeclaration)
15747                    .unwrap_or(Self::Unknown(node))
15748            }
15749            "literal_type" => <LiteralType as ::treesitter_types::FromNode>::from_node(node, src)
15750                .map(Self::LiteralType)
15751                .unwrap_or(Self::Unknown(node)),
15752            "lookup_type" => <LookupType as ::treesitter_types::FromNode>::from_node(node, src)
15753                .map(Self::LookupType)
15754                .unwrap_or(Self::Unknown(node)),
15755            "mapped_type_clause" => {
15756                <MappedTypeClause as ::treesitter_types::FromNode>::from_node(node, src)
15757                    .map(Self::MappedTypeClause)
15758                    .unwrap_or(Self::Unknown(node))
15759            }
15760            "member_expression" => {
15761                <MemberExpression as ::treesitter_types::FromNode>::from_node(node, src)
15762                    .map(Self::MemberExpression)
15763                    .unwrap_or(Self::Unknown(node))
15764            }
15765            "meta_property" => <MetaProperty as ::treesitter_types::FromNode>::from_node(node, src)
15766                .map(Self::MetaProperty)
15767                .unwrap_or(Self::Unknown(node)),
15768            "method_definition" => {
15769                <MethodDefinition as ::treesitter_types::FromNode>::from_node(node, src)
15770                    .map(Self::MethodDefinition)
15771                    .unwrap_or(Self::Unknown(node))
15772            }
15773            "method_signature" => {
15774                <MethodSignature as ::treesitter_types::FromNode>::from_node(node, src)
15775                    .map(Self::MethodSignature)
15776                    .unwrap_or(Self::Unknown(node))
15777            }
15778            "module" => <Module as ::treesitter_types::FromNode>::from_node(node, src)
15779                .map(Self::Module)
15780                .unwrap_or(Self::Unknown(node)),
15781            "named_imports" => <NamedImports as ::treesitter_types::FromNode>::from_node(node, src)
15782                .map(Self::NamedImports)
15783                .unwrap_or(Self::Unknown(node)),
15784            "namespace_export" => {
15785                <NamespaceExport as ::treesitter_types::FromNode>::from_node(node, src)
15786                    .map(Self::NamespaceExport)
15787                    .unwrap_or(Self::Unknown(node))
15788            }
15789            "namespace_import" => {
15790                <NamespaceImport as ::treesitter_types::FromNode>::from_node(node, src)
15791                    .map(Self::NamespaceImport)
15792                    .unwrap_or(Self::Unknown(node))
15793            }
15794            "nested_identifier" => {
15795                <NestedIdentifier as ::treesitter_types::FromNode>::from_node(node, src)
15796                    .map(Self::NestedIdentifier)
15797                    .unwrap_or(Self::Unknown(node))
15798            }
15799            "nested_type_identifier" => {
15800                <NestedTypeIdentifier as ::treesitter_types::FromNode>::from_node(node, src)
15801                    .map(Self::NestedTypeIdentifier)
15802                    .unwrap_or(Self::Unknown(node))
15803            }
15804            "new_expression" => {
15805                <NewExpression as ::treesitter_types::FromNode>::from_node(node, src)
15806                    .map(Self::NewExpression)
15807                    .unwrap_or(Self::Unknown(node))
15808            }
15809            "non_null_expression" => {
15810                <NonNullExpression as ::treesitter_types::FromNode>::from_node(node, src)
15811                    .map(Self::NonNullExpression)
15812                    .unwrap_or(Self::Unknown(node))
15813            }
15814            "object" => <Object as ::treesitter_types::FromNode>::from_node(node, src)
15815                .map(Self::Object)
15816                .unwrap_or(Self::Unknown(node)),
15817            "object_assignment_pattern" => {
15818                <ObjectAssignmentPattern as ::treesitter_types::FromNode>::from_node(node, src)
15819                    .map(Self::ObjectAssignmentPattern)
15820                    .unwrap_or(Self::Unknown(node))
15821            }
15822            "object_pattern" => {
15823                <ObjectPattern as ::treesitter_types::FromNode>::from_node(node, src)
15824                    .map(Self::ObjectPattern)
15825                    .unwrap_or(Self::Unknown(node))
15826            }
15827            "object_type" => <ObjectType as ::treesitter_types::FromNode>::from_node(node, src)
15828                .map(Self::ObjectType)
15829                .unwrap_or(Self::Unknown(node)),
15830            "omitting_type_annotation" => {
15831                <OmittingTypeAnnotation as ::treesitter_types::FromNode>::from_node(node, src)
15832                    .map(Self::OmittingTypeAnnotation)
15833                    .unwrap_or(Self::Unknown(node))
15834            }
15835            "opting_type_annotation" => {
15836                <OptingTypeAnnotation as ::treesitter_types::FromNode>::from_node(node, src)
15837                    .map(Self::OptingTypeAnnotation)
15838                    .unwrap_or(Self::Unknown(node))
15839            }
15840            "optional_chain" => {
15841                <OptionalChain as ::treesitter_types::FromNode>::from_node(node, src)
15842                    .map(Self::OptionalChain)
15843                    .unwrap_or(Self::Unknown(node))
15844            }
15845            "optional_parameter" => {
15846                <OptionalParameter as ::treesitter_types::FromNode>::from_node(node, src)
15847                    .map(Self::OptionalParameter)
15848                    .unwrap_or(Self::Unknown(node))
15849            }
15850            "optional_type" => <OptionalType as ::treesitter_types::FromNode>::from_node(node, src)
15851                .map(Self::OptionalType)
15852                .unwrap_or(Self::Unknown(node)),
15853            "override_modifier" => {
15854                <OverrideModifier as ::treesitter_types::FromNode>::from_node(node, src)
15855                    .map(Self::OverrideModifier)
15856                    .unwrap_or(Self::Unknown(node))
15857            }
15858            "pair" => <Pair as ::treesitter_types::FromNode>::from_node(node, src)
15859                .map(Self::Pair)
15860                .unwrap_or(Self::Unknown(node)),
15861            "pair_pattern" => <PairPattern as ::treesitter_types::FromNode>::from_node(node, src)
15862                .map(Self::PairPattern)
15863                .unwrap_or(Self::Unknown(node)),
15864            "parenthesized_expression" => {
15865                <ParenthesizedExpression as ::treesitter_types::FromNode>::from_node(node, src)
15866                    .map(Self::ParenthesizedExpression)
15867                    .unwrap_or(Self::Unknown(node))
15868            }
15869            "parenthesized_type" => {
15870                <ParenthesizedType as ::treesitter_types::FromNode>::from_node(node, src)
15871                    .map(Self::ParenthesizedType)
15872                    .unwrap_or(Self::Unknown(node))
15873            }
15874            "predefined_type" => {
15875                <PredefinedType as ::treesitter_types::FromNode>::from_node(node, src)
15876                    .map(Self::PredefinedType)
15877                    .unwrap_or(Self::Unknown(node))
15878            }
15879            "program" => <Program as ::treesitter_types::FromNode>::from_node(node, src)
15880                .map(Self::Program)
15881                .unwrap_or(Self::Unknown(node)),
15882            "property_signature" => {
15883                <PropertySignature as ::treesitter_types::FromNode>::from_node(node, src)
15884                    .map(Self::PropertySignature)
15885                    .unwrap_or(Self::Unknown(node))
15886            }
15887            "public_field_definition" => {
15888                <PublicFieldDefinition as ::treesitter_types::FromNode>::from_node(node, src)
15889                    .map(Self::PublicFieldDefinition)
15890                    .unwrap_or(Self::Unknown(node))
15891            }
15892            "readonly_type" => <ReadonlyType as ::treesitter_types::FromNode>::from_node(node, src)
15893                .map(Self::ReadonlyType)
15894                .unwrap_or(Self::Unknown(node)),
15895            "regex" => <Regex as ::treesitter_types::FromNode>::from_node(node, src)
15896                .map(Self::Regex)
15897                .unwrap_or(Self::Unknown(node)),
15898            "required_parameter" => {
15899                <RequiredParameter as ::treesitter_types::FromNode>::from_node(node, src)
15900                    .map(Self::RequiredParameter)
15901                    .unwrap_or(Self::Unknown(node))
15902            }
15903            "rest_pattern" => <RestPattern as ::treesitter_types::FromNode>::from_node(node, src)
15904                .map(Self::RestPattern)
15905                .unwrap_or(Self::Unknown(node)),
15906            "rest_type" => <RestType as ::treesitter_types::FromNode>::from_node(node, src)
15907                .map(Self::RestType)
15908                .unwrap_or(Self::Unknown(node)),
15909            "return_statement" => {
15910                <ReturnStatement as ::treesitter_types::FromNode>::from_node(node, src)
15911                    .map(Self::ReturnStatement)
15912                    .unwrap_or(Self::Unknown(node))
15913            }
15914            "satisfies_expression" => {
15915                <SatisfiesExpression as ::treesitter_types::FromNode>::from_node(node, src)
15916                    .map(Self::SatisfiesExpression)
15917                    .unwrap_or(Self::Unknown(node))
15918            }
15919            "sequence_expression" => {
15920                <SequenceExpression as ::treesitter_types::FromNode>::from_node(node, src)
15921                    .map(Self::SequenceExpression)
15922                    .unwrap_or(Self::Unknown(node))
15923            }
15924            "spread_element" => {
15925                <SpreadElement as ::treesitter_types::FromNode>::from_node(node, src)
15926                    .map(Self::SpreadElement)
15927                    .unwrap_or(Self::Unknown(node))
15928            }
15929            "statement_block" => {
15930                <StatementBlock as ::treesitter_types::FromNode>::from_node(node, src)
15931                    .map(Self::StatementBlock)
15932                    .unwrap_or(Self::Unknown(node))
15933            }
15934            "string" => <String as ::treesitter_types::FromNode>::from_node(node, src)
15935                .map(Self::String)
15936                .unwrap_or(Self::Unknown(node)),
15937            "subscript_expression" => {
15938                <SubscriptExpression as ::treesitter_types::FromNode>::from_node(node, src)
15939                    .map(Self::SubscriptExpression)
15940                    .unwrap_or(Self::Unknown(node))
15941            }
15942            "switch_body" => <SwitchBody as ::treesitter_types::FromNode>::from_node(node, src)
15943                .map(Self::SwitchBody)
15944                .unwrap_or(Self::Unknown(node)),
15945            "switch_case" => <SwitchCase as ::treesitter_types::FromNode>::from_node(node, src)
15946                .map(Self::SwitchCase)
15947                .unwrap_or(Self::Unknown(node)),
15948            "switch_default" => {
15949                <SwitchDefault as ::treesitter_types::FromNode>::from_node(node, src)
15950                    .map(Self::SwitchDefault)
15951                    .unwrap_or(Self::Unknown(node))
15952            }
15953            "switch_statement" => {
15954                <SwitchStatement as ::treesitter_types::FromNode>::from_node(node, src)
15955                    .map(Self::SwitchStatement)
15956                    .unwrap_or(Self::Unknown(node))
15957            }
15958            "template_literal_type" => {
15959                <TemplateLiteralType as ::treesitter_types::FromNode>::from_node(node, src)
15960                    .map(Self::TemplateLiteralType)
15961                    .unwrap_or(Self::Unknown(node))
15962            }
15963            "template_string" => {
15964                <TemplateString as ::treesitter_types::FromNode>::from_node(node, src)
15965                    .map(Self::TemplateString)
15966                    .unwrap_or(Self::Unknown(node))
15967            }
15968            "template_substitution" => {
15969                <TemplateSubstitution as ::treesitter_types::FromNode>::from_node(node, src)
15970                    .map(Self::TemplateSubstitution)
15971                    .unwrap_or(Self::Unknown(node))
15972            }
15973            "template_type" => <TemplateType as ::treesitter_types::FromNode>::from_node(node, src)
15974                .map(Self::TemplateType)
15975                .unwrap_or(Self::Unknown(node)),
15976            "ternary_expression" => {
15977                <TernaryExpression as ::treesitter_types::FromNode>::from_node(node, src)
15978                    .map(Self::TernaryExpression)
15979                    .unwrap_or(Self::Unknown(node))
15980            }
15981            "throw_statement" => {
15982                <ThrowStatement as ::treesitter_types::FromNode>::from_node(node, src)
15983                    .map(Self::ThrowStatement)
15984                    .unwrap_or(Self::Unknown(node))
15985            }
15986            "try_statement" => <TryStatement as ::treesitter_types::FromNode>::from_node(node, src)
15987                .map(Self::TryStatement)
15988                .unwrap_or(Self::Unknown(node)),
15989            "tuple_type" => <TupleType as ::treesitter_types::FromNode>::from_node(node, src)
15990                .map(Self::TupleType)
15991                .unwrap_or(Self::Unknown(node)),
15992            "type_alias_declaration" => {
15993                <TypeAliasDeclaration as ::treesitter_types::FromNode>::from_node(node, src)
15994                    .map(Self::TypeAliasDeclaration)
15995                    .unwrap_or(Self::Unknown(node))
15996            }
15997            "type_annotation" => {
15998                <TypeAnnotation as ::treesitter_types::FromNode>::from_node(node, src)
15999                    .map(Self::TypeAnnotation)
16000                    .unwrap_or(Self::Unknown(node))
16001            }
16002            "type_arguments" => {
16003                <TypeArguments as ::treesitter_types::FromNode>::from_node(node, src)
16004                    .map(Self::TypeArguments)
16005                    .unwrap_or(Self::Unknown(node))
16006            }
16007            "type_assertion" => {
16008                <TypeAssertion as ::treesitter_types::FromNode>::from_node(node, src)
16009                    .map(Self::TypeAssertion)
16010                    .unwrap_or(Self::Unknown(node))
16011            }
16012            "type_parameter" => {
16013                <TypeParameter as ::treesitter_types::FromNode>::from_node(node, src)
16014                    .map(Self::TypeParameter)
16015                    .unwrap_or(Self::Unknown(node))
16016            }
16017            "type_parameters" => {
16018                <TypeParameters as ::treesitter_types::FromNode>::from_node(node, src)
16019                    .map(Self::TypeParameters)
16020                    .unwrap_or(Self::Unknown(node))
16021            }
16022            "type_predicate" => {
16023                <TypePredicate as ::treesitter_types::FromNode>::from_node(node, src)
16024                    .map(Self::TypePredicate)
16025                    .unwrap_or(Self::Unknown(node))
16026            }
16027            "type_predicate_annotation" => {
16028                <TypePredicateAnnotation as ::treesitter_types::FromNode>::from_node(node, src)
16029                    .map(Self::TypePredicateAnnotation)
16030                    .unwrap_or(Self::Unknown(node))
16031            }
16032            "type_query" => <TypeQuery as ::treesitter_types::FromNode>::from_node(node, src)
16033                .map(Self::TypeQuery)
16034                .unwrap_or(Self::Unknown(node)),
16035            "unary_expression" => {
16036                <UnaryExpression as ::treesitter_types::FromNode>::from_node(node, src)
16037                    .map(Self::UnaryExpression)
16038                    .unwrap_or(Self::Unknown(node))
16039            }
16040            "union_type" => <UnionType as ::treesitter_types::FromNode>::from_node(node, src)
16041                .map(Self::UnionType)
16042                .unwrap_or(Self::Unknown(node)),
16043            "update_expression" => {
16044                <UpdateExpression as ::treesitter_types::FromNode>::from_node(node, src)
16045                    .map(Self::UpdateExpression)
16046                    .unwrap_or(Self::Unknown(node))
16047            }
16048            "variable_declaration" => {
16049                <VariableDeclaration as ::treesitter_types::FromNode>::from_node(node, src)
16050                    .map(Self::VariableDeclaration)
16051                    .unwrap_or(Self::Unknown(node))
16052            }
16053            "variable_declarator" => {
16054                <VariableDeclarator as ::treesitter_types::FromNode>::from_node(node, src)
16055                    .map(Self::VariableDeclarator)
16056                    .unwrap_or(Self::Unknown(node))
16057            }
16058            "while_statement" => {
16059                <WhileStatement as ::treesitter_types::FromNode>::from_node(node, src)
16060                    .map(Self::WhileStatement)
16061                    .unwrap_or(Self::Unknown(node))
16062            }
16063            "with_statement" => {
16064                <WithStatement as ::treesitter_types::FromNode>::from_node(node, src)
16065                    .map(Self::WithStatement)
16066                    .unwrap_or(Self::Unknown(node))
16067            }
16068            "yield_expression" => {
16069                <YieldExpression as ::treesitter_types::FromNode>::from_node(node, src)
16070                    .map(Self::YieldExpression)
16071                    .unwrap_or(Self::Unknown(node))
16072            }
16073            "comment" => <Comment as ::treesitter_types::FromNode>::from_node(node, src)
16074                .map(Self::Comment)
16075                .unwrap_or(Self::Unknown(node)),
16076            "escape_sequence" => {
16077                <EscapeSequence as ::treesitter_types::FromNode>::from_node(node, src)
16078                    .map(Self::EscapeSequence)
16079                    .unwrap_or(Self::Unknown(node))
16080            }
16081            "false" => <False as ::treesitter_types::FromNode>::from_node(node, src)
16082                .map(Self::False)
16083                .unwrap_or(Self::Unknown(node)),
16084            "hash_bang_line" => {
16085                <HashBangLine as ::treesitter_types::FromNode>::from_node(node, src)
16086                    .map(Self::HashBangLine)
16087                    .unwrap_or(Self::Unknown(node))
16088            }
16089            "html_comment" => <HtmlComment as ::treesitter_types::FromNode>::from_node(node, src)
16090                .map(Self::HtmlComment)
16091                .unwrap_or(Self::Unknown(node)),
16092            "null" => <Null as ::treesitter_types::FromNode>::from_node(node, src)
16093                .map(Self::Null)
16094                .unwrap_or(Self::Unknown(node)),
16095            "number" => <Number as ::treesitter_types::FromNode>::from_node(node, src)
16096                .map(Self::Number)
16097                .unwrap_or(Self::Unknown(node)),
16098            "private_property_identifier" => {
16099                <PrivatePropertyIdentifier as ::treesitter_types::FromNode>::from_node(node, src)
16100                    .map(Self::PrivatePropertyIdentifier)
16101                    .unwrap_or(Self::Unknown(node))
16102            }
16103            "property_identifier" => {
16104                <PropertyIdentifier as ::treesitter_types::FromNode>::from_node(node, src)
16105                    .map(Self::PropertyIdentifier)
16106                    .unwrap_or(Self::Unknown(node))
16107            }
16108            "regex_flags" => <RegexFlags as ::treesitter_types::FromNode>::from_node(node, src)
16109                .map(Self::RegexFlags)
16110                .unwrap_or(Self::Unknown(node)),
16111            "regex_pattern" => <RegexPattern as ::treesitter_types::FromNode>::from_node(node, src)
16112                .map(Self::RegexPattern)
16113                .unwrap_or(Self::Unknown(node)),
16114            "shorthand_property_identifier" => {
16115                <ShorthandPropertyIdentifier as ::treesitter_types::FromNode>::from_node(node, src)
16116                    .map(Self::ShorthandPropertyIdentifier)
16117                    .unwrap_or(Self::Unknown(node))
16118            }
16119            "shorthand_property_identifier_pattern" => {
16120                <ShorthandPropertyIdentifierPattern as ::treesitter_types::FromNode>::from_node(
16121                    node, src,
16122                )
16123                .map(Self::ShorthandPropertyIdentifierPattern)
16124                .unwrap_or(Self::Unknown(node))
16125            }
16126            "statement_identifier" => {
16127                <StatementIdentifier as ::treesitter_types::FromNode>::from_node(node, src)
16128                    .map(Self::StatementIdentifier)
16129                    .unwrap_or(Self::Unknown(node))
16130            }
16131            "string_fragment" => {
16132                <StringFragment as ::treesitter_types::FromNode>::from_node(node, src)
16133                    .map(Self::StringFragment)
16134                    .unwrap_or(Self::Unknown(node))
16135            }
16136            "super" => <Super as ::treesitter_types::FromNode>::from_node(node, src)
16137                .map(Self::Super)
16138                .unwrap_or(Self::Unknown(node)),
16139            "this" => <This as ::treesitter_types::FromNode>::from_node(node, src)
16140                .map(Self::This)
16141                .unwrap_or(Self::Unknown(node)),
16142            "this_type" => <ThisType as ::treesitter_types::FromNode>::from_node(node, src)
16143                .map(Self::ThisType)
16144                .unwrap_or(Self::Unknown(node)),
16145            "true" => <True as ::treesitter_types::FromNode>::from_node(node, src)
16146                .map(Self::True)
16147                .unwrap_or(Self::Unknown(node)),
16148            "type_identifier" => {
16149                <TypeIdentifier as ::treesitter_types::FromNode>::from_node(node, src)
16150                    .map(Self::TypeIdentifier)
16151                    .unwrap_or(Self::Unknown(node))
16152            }
16153            "undefined" => <Undefined as ::treesitter_types::FromNode>::from_node(node, src)
16154                .map(Self::Undefined)
16155                .unwrap_or(Self::Unknown(node)),
16156            _ => Self::Unknown(node),
16157        }
16158    }
16159}
16160impl ::treesitter_types::Spanned for AnyNode<'_> {
16161    fn span(&self) -> ::treesitter_types::Span {
16162        match self {
16163            Self::Declaration(inner) => inner.span(),
16164            Self::Expression(inner) => inner.span(),
16165            Self::Pattern(inner) => inner.span(),
16166            Self::PrimaryExpression(inner) => inner.span(),
16167            Self::PrimaryType(inner) => inner.span(),
16168            Self::Statement(inner) => inner.span(),
16169            Self::Type(inner) => inner.span(),
16170            Self::AbstractClassDeclaration(inner) => inner.span(),
16171            Self::AbstractMethodSignature(inner) => inner.span(),
16172            Self::AccessibilityModifier(inner) => inner.span(),
16173            Self::AddingTypeAnnotation(inner) => inner.span(),
16174            Self::AmbientDeclaration(inner) => inner.span(),
16175            Self::Arguments(inner) => inner.span(),
16176            Self::Array(inner) => inner.span(),
16177            Self::ArrayPattern(inner) => inner.span(),
16178            Self::ArrayType(inner) => inner.span(),
16179            Self::ArrowFunction(inner) => inner.span(),
16180            Self::AsExpression(inner) => inner.span(),
16181            Self::Asserts(inner) => inner.span(),
16182            Self::AssertsAnnotation(inner) => inner.span(),
16183            Self::AssignmentExpression(inner) => inner.span(),
16184            Self::AssignmentPattern(inner) => inner.span(),
16185            Self::AugmentedAssignmentExpression(inner) => inner.span(),
16186            Self::AwaitExpression(inner) => inner.span(),
16187            Self::BinaryExpression(inner) => inner.span(),
16188            Self::BreakStatement(inner) => inner.span(),
16189            Self::CallExpression(inner) => inner.span(),
16190            Self::CallSignature(inner) => inner.span(),
16191            Self::CatchClause(inner) => inner.span(),
16192            Self::Class(inner) => inner.span(),
16193            Self::ClassBody(inner) => inner.span(),
16194            Self::ClassDeclaration(inner) => inner.span(),
16195            Self::ClassHeritage(inner) => inner.span(),
16196            Self::ClassStaticBlock(inner) => inner.span(),
16197            Self::ComputedPropertyName(inner) => inner.span(),
16198            Self::ConditionalType(inner) => inner.span(),
16199            Self::Constraint(inner) => inner.span(),
16200            Self::ConstructSignature(inner) => inner.span(),
16201            Self::ConstructorType(inner) => inner.span(),
16202            Self::ContinueStatement(inner) => inner.span(),
16203            Self::DebuggerStatement(inner) => inner.span(),
16204            Self::Decorator(inner) => inner.span(),
16205            Self::DefaultType(inner) => inner.span(),
16206            Self::DoStatement(inner) => inner.span(),
16207            Self::ElseClause(inner) => inner.span(),
16208            Self::EmptyStatement(inner) => inner.span(),
16209            Self::EnumAssignment(inner) => inner.span(),
16210            Self::EnumBody(inner) => inner.span(),
16211            Self::EnumDeclaration(inner) => inner.span(),
16212            Self::ExistentialType(inner) => inner.span(),
16213            Self::ExportClause(inner) => inner.span(),
16214            Self::ExportSpecifier(inner) => inner.span(),
16215            Self::ExportStatement(inner) => inner.span(),
16216            Self::ExpressionStatement(inner) => inner.span(),
16217            Self::ExtendsClause(inner) => inner.span(),
16218            Self::ExtendsTypeClause(inner) => inner.span(),
16219            Self::FinallyClause(inner) => inner.span(),
16220            Self::FlowMaybeType(inner) => inner.span(),
16221            Self::ForInStatement(inner) => inner.span(),
16222            Self::ForStatement(inner) => inner.span(),
16223            Self::FormalParameters(inner) => inner.span(),
16224            Self::FunctionDeclaration(inner) => inner.span(),
16225            Self::FunctionExpression(inner) => inner.span(),
16226            Self::FunctionSignature(inner) => inner.span(),
16227            Self::FunctionType(inner) => inner.span(),
16228            Self::GeneratorFunction(inner) => inner.span(),
16229            Self::GeneratorFunctionDeclaration(inner) => inner.span(),
16230            Self::GenericType(inner) => inner.span(),
16231            Self::Identifier(inner) => inner.span(),
16232            Self::IfStatement(inner) => inner.span(),
16233            Self::ImplementsClause(inner) => inner.span(),
16234            Self::Import(inner) => inner.span(),
16235            Self::ImportAlias(inner) => inner.span(),
16236            Self::ImportAttribute(inner) => inner.span(),
16237            Self::ImportClause(inner) => inner.span(),
16238            Self::ImportRequireClause(inner) => inner.span(),
16239            Self::ImportSpecifier(inner) => inner.span(),
16240            Self::ImportStatement(inner) => inner.span(),
16241            Self::IndexSignature(inner) => inner.span(),
16242            Self::IndexTypeQuery(inner) => inner.span(),
16243            Self::InferType(inner) => inner.span(),
16244            Self::InstantiationExpression(inner) => inner.span(),
16245            Self::InterfaceBody(inner) => inner.span(),
16246            Self::InterfaceDeclaration(inner) => inner.span(),
16247            Self::InternalModule(inner) => inner.span(),
16248            Self::IntersectionType(inner) => inner.span(),
16249            Self::LabeledStatement(inner) => inner.span(),
16250            Self::LexicalDeclaration(inner) => inner.span(),
16251            Self::LiteralType(inner) => inner.span(),
16252            Self::LookupType(inner) => inner.span(),
16253            Self::MappedTypeClause(inner) => inner.span(),
16254            Self::MemberExpression(inner) => inner.span(),
16255            Self::MetaProperty(inner) => inner.span(),
16256            Self::MethodDefinition(inner) => inner.span(),
16257            Self::MethodSignature(inner) => inner.span(),
16258            Self::Module(inner) => inner.span(),
16259            Self::NamedImports(inner) => inner.span(),
16260            Self::NamespaceExport(inner) => inner.span(),
16261            Self::NamespaceImport(inner) => inner.span(),
16262            Self::NestedIdentifier(inner) => inner.span(),
16263            Self::NestedTypeIdentifier(inner) => inner.span(),
16264            Self::NewExpression(inner) => inner.span(),
16265            Self::NonNullExpression(inner) => inner.span(),
16266            Self::Object(inner) => inner.span(),
16267            Self::ObjectAssignmentPattern(inner) => inner.span(),
16268            Self::ObjectPattern(inner) => inner.span(),
16269            Self::ObjectType(inner) => inner.span(),
16270            Self::OmittingTypeAnnotation(inner) => inner.span(),
16271            Self::OptingTypeAnnotation(inner) => inner.span(),
16272            Self::OptionalChain(inner) => inner.span(),
16273            Self::OptionalParameter(inner) => inner.span(),
16274            Self::OptionalType(inner) => inner.span(),
16275            Self::OverrideModifier(inner) => inner.span(),
16276            Self::Pair(inner) => inner.span(),
16277            Self::PairPattern(inner) => inner.span(),
16278            Self::ParenthesizedExpression(inner) => inner.span(),
16279            Self::ParenthesizedType(inner) => inner.span(),
16280            Self::PredefinedType(inner) => inner.span(),
16281            Self::Program(inner) => inner.span(),
16282            Self::PropertySignature(inner) => inner.span(),
16283            Self::PublicFieldDefinition(inner) => inner.span(),
16284            Self::ReadonlyType(inner) => inner.span(),
16285            Self::Regex(inner) => inner.span(),
16286            Self::RequiredParameter(inner) => inner.span(),
16287            Self::RestPattern(inner) => inner.span(),
16288            Self::RestType(inner) => inner.span(),
16289            Self::ReturnStatement(inner) => inner.span(),
16290            Self::SatisfiesExpression(inner) => inner.span(),
16291            Self::SequenceExpression(inner) => inner.span(),
16292            Self::SpreadElement(inner) => inner.span(),
16293            Self::StatementBlock(inner) => inner.span(),
16294            Self::String(inner) => inner.span(),
16295            Self::SubscriptExpression(inner) => inner.span(),
16296            Self::SwitchBody(inner) => inner.span(),
16297            Self::SwitchCase(inner) => inner.span(),
16298            Self::SwitchDefault(inner) => inner.span(),
16299            Self::SwitchStatement(inner) => inner.span(),
16300            Self::TemplateLiteralType(inner) => inner.span(),
16301            Self::TemplateString(inner) => inner.span(),
16302            Self::TemplateSubstitution(inner) => inner.span(),
16303            Self::TemplateType(inner) => inner.span(),
16304            Self::TernaryExpression(inner) => inner.span(),
16305            Self::ThrowStatement(inner) => inner.span(),
16306            Self::TryStatement(inner) => inner.span(),
16307            Self::TupleType(inner) => inner.span(),
16308            Self::TypeAliasDeclaration(inner) => inner.span(),
16309            Self::TypeAnnotation(inner) => inner.span(),
16310            Self::TypeArguments(inner) => inner.span(),
16311            Self::TypeAssertion(inner) => inner.span(),
16312            Self::TypeParameter(inner) => inner.span(),
16313            Self::TypeParameters(inner) => inner.span(),
16314            Self::TypePredicate(inner) => inner.span(),
16315            Self::TypePredicateAnnotation(inner) => inner.span(),
16316            Self::TypeQuery(inner) => inner.span(),
16317            Self::UnaryExpression(inner) => inner.span(),
16318            Self::UnionType(inner) => inner.span(),
16319            Self::UpdateExpression(inner) => inner.span(),
16320            Self::VariableDeclaration(inner) => inner.span(),
16321            Self::VariableDeclarator(inner) => inner.span(),
16322            Self::WhileStatement(inner) => inner.span(),
16323            Self::WithStatement(inner) => inner.span(),
16324            Self::YieldExpression(inner) => inner.span(),
16325            Self::Comment(inner) => inner.span(),
16326            Self::EscapeSequence(inner) => inner.span(),
16327            Self::False(inner) => inner.span(),
16328            Self::HashBangLine(inner) => inner.span(),
16329            Self::HtmlComment(inner) => inner.span(),
16330            Self::Null(inner) => inner.span(),
16331            Self::Number(inner) => inner.span(),
16332            Self::PrivatePropertyIdentifier(inner) => inner.span(),
16333            Self::PropertyIdentifier(inner) => inner.span(),
16334            Self::RegexFlags(inner) => inner.span(),
16335            Self::RegexPattern(inner) => inner.span(),
16336            Self::ShorthandPropertyIdentifier(inner) => inner.span(),
16337            Self::ShorthandPropertyIdentifierPattern(inner) => inner.span(),
16338            Self::StatementIdentifier(inner) => inner.span(),
16339            Self::StringFragment(inner) => inner.span(),
16340            Self::Super(inner) => inner.span(),
16341            Self::This(inner) => inner.span(),
16342            Self::ThisType(inner) => inner.span(),
16343            Self::True(inner) => inner.span(),
16344            Self::TypeIdentifier(inner) => inner.span(),
16345            Self::Undefined(inner) => inner.span(),
16346            Self::Unknown(node) => ::treesitter_types::Span::from(*node),
16347        }
16348    }
16349}