Skip to main content

treesitter_types_javascript/
generated.rs

1#[derive(Debug, Clone)]
2pub enum Declaration<'tree> {
3    ClassDeclaration(::std::boxed::Box<ClassDeclaration<'tree>>),
4    FunctionDeclaration(::std::boxed::Box<FunctionDeclaration<'tree>>),
5    GeneratorFunctionDeclaration(::std::boxed::Box<GeneratorFunctionDeclaration<'tree>>),
6    LexicalDeclaration(::std::boxed::Box<LexicalDeclaration<'tree>>),
7    UsingDeclaration(::std::boxed::Box<UsingDeclaration<'tree>>),
8    VariableDeclaration(::std::boxed::Box<VariableDeclaration<'tree>>),
9}
10impl<'tree> ::treesitter_types::FromNode<'tree> for Declaration<'tree> {
11    #[allow(clippy::collapsible_else_if)]
12    fn from_node(
13        node: ::tree_sitter::Node<'tree>,
14        src: &'tree [u8],
15    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
16        match node.kind() {
17            "class_declaration" => Ok(Self::ClassDeclaration(::std::boxed::Box::new(
18                <ClassDeclaration as ::treesitter_types::FromNode>::from_node(node, src)?,
19            ))),
20            "function_declaration" => Ok(Self::FunctionDeclaration(::std::boxed::Box::new(
21                <FunctionDeclaration as ::treesitter_types::FromNode>::from_node(node, src)?,
22            ))),
23            "generator_function_declaration" => {
24                Ok(Self::GeneratorFunctionDeclaration(::std::boxed::Box::new(
25                    <GeneratorFunctionDeclaration as ::treesitter_types::FromNode>::from_node(
26                        node, src,
27                    )?,
28                )))
29            }
30            "lexical_declaration" => Ok(Self::LexicalDeclaration(::std::boxed::Box::new(
31                <LexicalDeclaration as ::treesitter_types::FromNode>::from_node(node, src)?,
32            ))),
33            "using_declaration" => Ok(Self::UsingDeclaration(::std::boxed::Box::new(
34                <UsingDeclaration as ::treesitter_types::FromNode>::from_node(node, src)?,
35            ))),
36            "variable_declaration" => Ok(Self::VariableDeclaration(::std::boxed::Box::new(
37                <VariableDeclaration as ::treesitter_types::FromNode>::from_node(node, src)?,
38            ))),
39            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
40        }
41    }
42}
43impl ::treesitter_types::Spanned for Declaration<'_> {
44    fn span(&self) -> ::treesitter_types::Span {
45        match self {
46            Self::ClassDeclaration(inner) => inner.span(),
47            Self::FunctionDeclaration(inner) => inner.span(),
48            Self::GeneratorFunctionDeclaration(inner) => inner.span(),
49            Self::LexicalDeclaration(inner) => inner.span(),
50            Self::UsingDeclaration(inner) => inner.span(),
51            Self::VariableDeclaration(inner) => inner.span(),
52        }
53    }
54}
55#[derive(Debug, Clone)]
56pub enum Expression<'tree> {
57    AssignmentExpression(::std::boxed::Box<AssignmentExpression<'tree>>),
58    AugmentedAssignmentExpression(::std::boxed::Box<AugmentedAssignmentExpression<'tree>>),
59    AwaitExpression(::std::boxed::Box<AwaitExpression<'tree>>),
60    BinaryExpression(::std::boxed::Box<BinaryExpression<'tree>>),
61    JsxElement(::std::boxed::Box<JsxElement<'tree>>),
62    JsxSelfClosingElement(::std::boxed::Box<JsxSelfClosingElement<'tree>>),
63    NewExpression(::std::boxed::Box<NewExpression<'tree>>),
64    PrimaryExpression(::std::boxed::Box<PrimaryExpression<'tree>>),
65    TernaryExpression(::std::boxed::Box<TernaryExpression<'tree>>),
66    UnaryExpression(::std::boxed::Box<UnaryExpression<'tree>>),
67    UpdateExpression(::std::boxed::Box<UpdateExpression<'tree>>),
68    YieldExpression(::std::boxed::Box<YieldExpression<'tree>>),
69}
70impl<'tree> ::treesitter_types::FromNode<'tree> for Expression<'tree> {
71    #[allow(clippy::collapsible_else_if)]
72    fn from_node(
73        node: ::tree_sitter::Node<'tree>,
74        src: &'tree [u8],
75    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
76        match node.kind() {
77            "assignment_expression" => Ok(Self::AssignmentExpression(::std::boxed::Box::new(
78                <AssignmentExpression as ::treesitter_types::FromNode>::from_node(node, src)?,
79            ))),
80            "augmented_assignment_expression" => {
81                Ok(Self::AugmentedAssignmentExpression(::std::boxed::Box::new(
82                    <AugmentedAssignmentExpression as ::treesitter_types::FromNode>::from_node(
83                        node, src,
84                    )?,
85                )))
86            }
87            "await_expression" => Ok(Self::AwaitExpression(::std::boxed::Box::new(
88                <AwaitExpression as ::treesitter_types::FromNode>::from_node(node, src)?,
89            ))),
90            "binary_expression" => Ok(Self::BinaryExpression(::std::boxed::Box::new(
91                <BinaryExpression as ::treesitter_types::FromNode>::from_node(node, src)?,
92            ))),
93            "jsx_element" => Ok(Self::JsxElement(::std::boxed::Box::new(
94                <JsxElement as ::treesitter_types::FromNode>::from_node(node, src)?,
95            ))),
96            "jsx_self_closing_element" => Ok(Self::JsxSelfClosingElement(::std::boxed::Box::new(
97                <JsxSelfClosingElement as ::treesitter_types::FromNode>::from_node(node, src)?,
98            ))),
99            "new_expression" => Ok(Self::NewExpression(::std::boxed::Box::new(
100                <NewExpression as ::treesitter_types::FromNode>::from_node(node, src)?,
101            ))),
102            "ternary_expression" => Ok(Self::TernaryExpression(::std::boxed::Box::new(
103                <TernaryExpression as ::treesitter_types::FromNode>::from_node(node, src)?,
104            ))),
105            "unary_expression" => Ok(Self::UnaryExpression(::std::boxed::Box::new(
106                <UnaryExpression as ::treesitter_types::FromNode>::from_node(node, src)?,
107            ))),
108            "update_expression" => Ok(Self::UpdateExpression(::std::boxed::Box::new(
109                <UpdateExpression as ::treesitter_types::FromNode>::from_node(node, src)?,
110            ))),
111            "yield_expression" => Ok(Self::YieldExpression(::std::boxed::Box::new(
112                <YieldExpression as ::treesitter_types::FromNode>::from_node(node, src)?,
113            ))),
114            _other => {
115                if let Ok(v) =
116                    <PrimaryExpression as ::treesitter_types::FromNode>::from_node(node, src)
117                {
118                    Ok(Self::PrimaryExpression(::std::boxed::Box::new(v)))
119                } else {
120                    Err(::treesitter_types::ParseError::unexpected_kind(
121                        _other, node,
122                    ))
123                }
124            }
125        }
126    }
127}
128impl ::treesitter_types::Spanned for Expression<'_> {
129    fn span(&self) -> ::treesitter_types::Span {
130        match self {
131            Self::AssignmentExpression(inner) => inner.span(),
132            Self::AugmentedAssignmentExpression(inner) => inner.span(),
133            Self::AwaitExpression(inner) => inner.span(),
134            Self::BinaryExpression(inner) => inner.span(),
135            Self::JsxElement(inner) => inner.span(),
136            Self::JsxSelfClosingElement(inner) => inner.span(),
137            Self::NewExpression(inner) => inner.span(),
138            Self::PrimaryExpression(inner) => inner.span(),
139            Self::TernaryExpression(inner) => inner.span(),
140            Self::UnaryExpression(inner) => inner.span(),
141            Self::UpdateExpression(inner) => inner.span(),
142            Self::YieldExpression(inner) => inner.span(),
143        }
144    }
145}
146#[derive(Debug, Clone)]
147pub enum Pattern<'tree> {
148    ArrayPattern(::std::boxed::Box<ArrayPattern<'tree>>),
149    Identifier(::std::boxed::Box<Identifier<'tree>>),
150    MemberExpression(::std::boxed::Box<MemberExpression<'tree>>),
151    ObjectPattern(::std::boxed::Box<ObjectPattern<'tree>>),
152    RestPattern(::std::boxed::Box<RestPattern<'tree>>),
153    SubscriptExpression(::std::boxed::Box<SubscriptExpression<'tree>>),
154    Undefined(::std::boxed::Box<Undefined<'tree>>),
155}
156impl<'tree> ::treesitter_types::FromNode<'tree> for Pattern<'tree> {
157    #[allow(clippy::collapsible_else_if)]
158    fn from_node(
159        node: ::tree_sitter::Node<'tree>,
160        src: &'tree [u8],
161    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
162        match node.kind() {
163            "array_pattern" => Ok(Self::ArrayPattern(::std::boxed::Box::new(
164                <ArrayPattern as ::treesitter_types::FromNode>::from_node(node, src)?,
165            ))),
166            "identifier" => Ok(Self::Identifier(::std::boxed::Box::new(
167                <Identifier as ::treesitter_types::FromNode>::from_node(node, src)?,
168            ))),
169            "member_expression" => Ok(Self::MemberExpression(::std::boxed::Box::new(
170                <MemberExpression as ::treesitter_types::FromNode>::from_node(node, src)?,
171            ))),
172            "object_pattern" => Ok(Self::ObjectPattern(::std::boxed::Box::new(
173                <ObjectPattern as ::treesitter_types::FromNode>::from_node(node, src)?,
174            ))),
175            "rest_pattern" => Ok(Self::RestPattern(::std::boxed::Box::new(
176                <RestPattern as ::treesitter_types::FromNode>::from_node(node, src)?,
177            ))),
178            "subscript_expression" => Ok(Self::SubscriptExpression(::std::boxed::Box::new(
179                <SubscriptExpression as ::treesitter_types::FromNode>::from_node(node, src)?,
180            ))),
181            "undefined" => Ok(Self::Undefined(::std::boxed::Box::new(
182                <Undefined as ::treesitter_types::FromNode>::from_node(node, src)?,
183            ))),
184            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
185        }
186    }
187}
188impl ::treesitter_types::Spanned for Pattern<'_> {
189    fn span(&self) -> ::treesitter_types::Span {
190        match self {
191            Self::ArrayPattern(inner) => inner.span(),
192            Self::Identifier(inner) => inner.span(),
193            Self::MemberExpression(inner) => inner.span(),
194            Self::ObjectPattern(inner) => inner.span(),
195            Self::RestPattern(inner) => inner.span(),
196            Self::SubscriptExpression(inner) => inner.span(),
197            Self::Undefined(inner) => inner.span(),
198        }
199    }
200}
201#[derive(Debug, Clone)]
202pub enum PrimaryExpression<'tree> {
203    Array(::std::boxed::Box<Array<'tree>>),
204    ArrowFunction(::std::boxed::Box<ArrowFunction<'tree>>),
205    CallExpression(::std::boxed::Box<CallExpression<'tree>>),
206    Class(::std::boxed::Box<Class<'tree>>),
207    False(::std::boxed::Box<False<'tree>>),
208    FunctionExpression(::std::boxed::Box<FunctionExpression<'tree>>),
209    GeneratorFunction(::std::boxed::Box<GeneratorFunction<'tree>>),
210    Identifier(::std::boxed::Box<Identifier<'tree>>),
211    MemberExpression(::std::boxed::Box<MemberExpression<'tree>>),
212    MetaProperty(::std::boxed::Box<MetaProperty<'tree>>),
213    Null(::std::boxed::Box<Null<'tree>>),
214    Number(::std::boxed::Box<Number<'tree>>),
215    Object(::std::boxed::Box<Object<'tree>>),
216    ParenthesizedExpression(::std::boxed::Box<ParenthesizedExpression<'tree>>),
217    Regex(::std::boxed::Box<Regex<'tree>>),
218    String(::std::boxed::Box<String<'tree>>),
219    SubscriptExpression(::std::boxed::Box<SubscriptExpression<'tree>>),
220    Super(::std::boxed::Box<Super<'tree>>),
221    TemplateString(::std::boxed::Box<TemplateString<'tree>>),
222    This(::std::boxed::Box<This<'tree>>),
223    True(::std::boxed::Box<True<'tree>>),
224    Undefined(::std::boxed::Box<Undefined<'tree>>),
225}
226impl<'tree> ::treesitter_types::FromNode<'tree> for PrimaryExpression<'tree> {
227    #[allow(clippy::collapsible_else_if)]
228    fn from_node(
229        node: ::tree_sitter::Node<'tree>,
230        src: &'tree [u8],
231    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
232        match node.kind() {
233            "array" => Ok(Self::Array(::std::boxed::Box::new(
234                <Array as ::treesitter_types::FromNode>::from_node(node, src)?,
235            ))),
236            "arrow_function" => Ok(Self::ArrowFunction(::std::boxed::Box::new(
237                <ArrowFunction as ::treesitter_types::FromNode>::from_node(node, src)?,
238            ))),
239            "call_expression" => Ok(Self::CallExpression(::std::boxed::Box::new(
240                <CallExpression as ::treesitter_types::FromNode>::from_node(node, src)?,
241            ))),
242            "class" => Ok(Self::Class(::std::boxed::Box::new(
243                <Class as ::treesitter_types::FromNode>::from_node(node, src)?,
244            ))),
245            "false" => Ok(Self::False(::std::boxed::Box::new(
246                <False as ::treesitter_types::FromNode>::from_node(node, src)?,
247            ))),
248            "function_expression" => Ok(Self::FunctionExpression(::std::boxed::Box::new(
249                <FunctionExpression as ::treesitter_types::FromNode>::from_node(node, src)?,
250            ))),
251            "generator_function" => Ok(Self::GeneratorFunction(::std::boxed::Box::new(
252                <GeneratorFunction as ::treesitter_types::FromNode>::from_node(node, src)?,
253            ))),
254            "identifier" => Ok(Self::Identifier(::std::boxed::Box::new(
255                <Identifier as ::treesitter_types::FromNode>::from_node(node, src)?,
256            ))),
257            "member_expression" => Ok(Self::MemberExpression(::std::boxed::Box::new(
258                <MemberExpression as ::treesitter_types::FromNode>::from_node(node, src)?,
259            ))),
260            "meta_property" => Ok(Self::MetaProperty(::std::boxed::Box::new(
261                <MetaProperty as ::treesitter_types::FromNode>::from_node(node, src)?,
262            ))),
263            "null" => Ok(Self::Null(::std::boxed::Box::new(
264                <Null as ::treesitter_types::FromNode>::from_node(node, src)?,
265            ))),
266            "number" => Ok(Self::Number(::std::boxed::Box::new(
267                <Number as ::treesitter_types::FromNode>::from_node(node, src)?,
268            ))),
269            "object" => Ok(Self::Object(::std::boxed::Box::new(
270                <Object as ::treesitter_types::FromNode>::from_node(node, src)?,
271            ))),
272            "parenthesized_expression" => {
273                Ok(Self::ParenthesizedExpression(::std::boxed::Box::new(
274                    <ParenthesizedExpression as ::treesitter_types::FromNode>::from_node(
275                        node, src,
276                    )?,
277                )))
278            }
279            "regex" => Ok(Self::Regex(::std::boxed::Box::new(
280                <Regex as ::treesitter_types::FromNode>::from_node(node, src)?,
281            ))),
282            "string" => Ok(Self::String(::std::boxed::Box::new(
283                <String as ::treesitter_types::FromNode>::from_node(node, src)?,
284            ))),
285            "subscript_expression" => Ok(Self::SubscriptExpression(::std::boxed::Box::new(
286                <SubscriptExpression as ::treesitter_types::FromNode>::from_node(node, src)?,
287            ))),
288            "super" => Ok(Self::Super(::std::boxed::Box::new(
289                <Super as ::treesitter_types::FromNode>::from_node(node, src)?,
290            ))),
291            "template_string" => Ok(Self::TemplateString(::std::boxed::Box::new(
292                <TemplateString as ::treesitter_types::FromNode>::from_node(node, src)?,
293            ))),
294            "this" => Ok(Self::This(::std::boxed::Box::new(
295                <This as ::treesitter_types::FromNode>::from_node(node, src)?,
296            ))),
297            "true" => Ok(Self::True(::std::boxed::Box::new(
298                <True as ::treesitter_types::FromNode>::from_node(node, src)?,
299            ))),
300            "undefined" => Ok(Self::Undefined(::std::boxed::Box::new(
301                <Undefined as ::treesitter_types::FromNode>::from_node(node, src)?,
302            ))),
303            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
304        }
305    }
306}
307impl ::treesitter_types::Spanned for PrimaryExpression<'_> {
308    fn span(&self) -> ::treesitter_types::Span {
309        match self {
310            Self::Array(inner) => inner.span(),
311            Self::ArrowFunction(inner) => inner.span(),
312            Self::CallExpression(inner) => inner.span(),
313            Self::Class(inner) => inner.span(),
314            Self::False(inner) => inner.span(),
315            Self::FunctionExpression(inner) => inner.span(),
316            Self::GeneratorFunction(inner) => inner.span(),
317            Self::Identifier(inner) => inner.span(),
318            Self::MemberExpression(inner) => inner.span(),
319            Self::MetaProperty(inner) => inner.span(),
320            Self::Null(inner) => inner.span(),
321            Self::Number(inner) => inner.span(),
322            Self::Object(inner) => inner.span(),
323            Self::ParenthesizedExpression(inner) => inner.span(),
324            Self::Regex(inner) => inner.span(),
325            Self::String(inner) => inner.span(),
326            Self::SubscriptExpression(inner) => inner.span(),
327            Self::Super(inner) => inner.span(),
328            Self::TemplateString(inner) => inner.span(),
329            Self::This(inner) => inner.span(),
330            Self::True(inner) => inner.span(),
331            Self::Undefined(inner) => inner.span(),
332        }
333    }
334}
335#[derive(Debug, Clone)]
336pub enum Statement<'tree> {
337    BreakStatement(::std::boxed::Box<BreakStatement<'tree>>),
338    ContinueStatement(::std::boxed::Box<ContinueStatement<'tree>>),
339    DebuggerStatement(::std::boxed::Box<DebuggerStatement<'tree>>),
340    Declaration(::std::boxed::Box<Declaration<'tree>>),
341    DoStatement(::std::boxed::Box<DoStatement<'tree>>),
342    EmptyStatement(::std::boxed::Box<EmptyStatement<'tree>>),
343    ExportStatement(::std::boxed::Box<ExportStatement<'tree>>),
344    ExpressionStatement(::std::boxed::Box<ExpressionStatement<'tree>>),
345    ForInStatement(::std::boxed::Box<ForInStatement<'tree>>),
346    ForStatement(::std::boxed::Box<ForStatement<'tree>>),
347    IfStatement(::std::boxed::Box<IfStatement<'tree>>),
348    ImportStatement(::std::boxed::Box<ImportStatement<'tree>>),
349    LabeledStatement(::std::boxed::Box<LabeledStatement<'tree>>),
350    ReturnStatement(::std::boxed::Box<ReturnStatement<'tree>>),
351    StatementBlock(::std::boxed::Box<StatementBlock<'tree>>),
352    SwitchStatement(::std::boxed::Box<SwitchStatement<'tree>>),
353    ThrowStatement(::std::boxed::Box<ThrowStatement<'tree>>),
354    TryStatement(::std::boxed::Box<TryStatement<'tree>>),
355    WhileStatement(::std::boxed::Box<WhileStatement<'tree>>),
356    WithStatement(::std::boxed::Box<WithStatement<'tree>>),
357}
358impl<'tree> ::treesitter_types::FromNode<'tree> for Statement<'tree> {
359    #[allow(clippy::collapsible_else_if)]
360    fn from_node(
361        node: ::tree_sitter::Node<'tree>,
362        src: &'tree [u8],
363    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
364        match node.kind() {
365            "break_statement" => Ok(Self::BreakStatement(::std::boxed::Box::new(
366                <BreakStatement as ::treesitter_types::FromNode>::from_node(node, src)?,
367            ))),
368            "continue_statement" => Ok(Self::ContinueStatement(::std::boxed::Box::new(
369                <ContinueStatement as ::treesitter_types::FromNode>::from_node(node, src)?,
370            ))),
371            "debugger_statement" => Ok(Self::DebuggerStatement(::std::boxed::Box::new(
372                <DebuggerStatement as ::treesitter_types::FromNode>::from_node(node, src)?,
373            ))),
374            "do_statement" => Ok(Self::DoStatement(::std::boxed::Box::new(
375                <DoStatement as ::treesitter_types::FromNode>::from_node(node, src)?,
376            ))),
377            "empty_statement" => Ok(Self::EmptyStatement(::std::boxed::Box::new(
378                <EmptyStatement as ::treesitter_types::FromNode>::from_node(node, src)?,
379            ))),
380            "export_statement" => Ok(Self::ExportStatement(::std::boxed::Box::new(
381                <ExportStatement as ::treesitter_types::FromNode>::from_node(node, src)?,
382            ))),
383            "expression_statement" => Ok(Self::ExpressionStatement(::std::boxed::Box::new(
384                <ExpressionStatement as ::treesitter_types::FromNode>::from_node(node, src)?,
385            ))),
386            "for_in_statement" => Ok(Self::ForInStatement(::std::boxed::Box::new(
387                <ForInStatement as ::treesitter_types::FromNode>::from_node(node, src)?,
388            ))),
389            "for_statement" => Ok(Self::ForStatement(::std::boxed::Box::new(
390                <ForStatement as ::treesitter_types::FromNode>::from_node(node, src)?,
391            ))),
392            "if_statement" => Ok(Self::IfStatement(::std::boxed::Box::new(
393                <IfStatement as ::treesitter_types::FromNode>::from_node(node, src)?,
394            ))),
395            "import_statement" => Ok(Self::ImportStatement(::std::boxed::Box::new(
396                <ImportStatement as ::treesitter_types::FromNode>::from_node(node, src)?,
397            ))),
398            "labeled_statement" => Ok(Self::LabeledStatement(::std::boxed::Box::new(
399                <LabeledStatement as ::treesitter_types::FromNode>::from_node(node, src)?,
400            ))),
401            "return_statement" => Ok(Self::ReturnStatement(::std::boxed::Box::new(
402                <ReturnStatement as ::treesitter_types::FromNode>::from_node(node, src)?,
403            ))),
404            "statement_block" => Ok(Self::StatementBlock(::std::boxed::Box::new(
405                <StatementBlock as ::treesitter_types::FromNode>::from_node(node, src)?,
406            ))),
407            "switch_statement" => Ok(Self::SwitchStatement(::std::boxed::Box::new(
408                <SwitchStatement as ::treesitter_types::FromNode>::from_node(node, src)?,
409            ))),
410            "throw_statement" => Ok(Self::ThrowStatement(::std::boxed::Box::new(
411                <ThrowStatement as ::treesitter_types::FromNode>::from_node(node, src)?,
412            ))),
413            "try_statement" => Ok(Self::TryStatement(::std::boxed::Box::new(
414                <TryStatement as ::treesitter_types::FromNode>::from_node(node, src)?,
415            ))),
416            "while_statement" => Ok(Self::WhileStatement(::std::boxed::Box::new(
417                <WhileStatement as ::treesitter_types::FromNode>::from_node(node, src)?,
418            ))),
419            "with_statement" => Ok(Self::WithStatement(::std::boxed::Box::new(
420                <WithStatement as ::treesitter_types::FromNode>::from_node(node, src)?,
421            ))),
422            _other => {
423                if let Ok(v) = <Declaration as ::treesitter_types::FromNode>::from_node(node, src) {
424                    Ok(Self::Declaration(::std::boxed::Box::new(v)))
425                } else {
426                    Err(::treesitter_types::ParseError::unexpected_kind(
427                        _other, node,
428                    ))
429                }
430            }
431        }
432    }
433}
434impl ::treesitter_types::Spanned for Statement<'_> {
435    fn span(&self) -> ::treesitter_types::Span {
436        match self {
437            Self::BreakStatement(inner) => inner.span(),
438            Self::ContinueStatement(inner) => inner.span(),
439            Self::DebuggerStatement(inner) => inner.span(),
440            Self::Declaration(inner) => inner.span(),
441            Self::DoStatement(inner) => inner.span(),
442            Self::EmptyStatement(inner) => inner.span(),
443            Self::ExportStatement(inner) => inner.span(),
444            Self::ExpressionStatement(inner) => inner.span(),
445            Self::ForInStatement(inner) => inner.span(),
446            Self::ForStatement(inner) => inner.span(),
447            Self::IfStatement(inner) => inner.span(),
448            Self::ImportStatement(inner) => inner.span(),
449            Self::LabeledStatement(inner) => inner.span(),
450            Self::ReturnStatement(inner) => inner.span(),
451            Self::StatementBlock(inner) => inner.span(),
452            Self::SwitchStatement(inner) => inner.span(),
453            Self::ThrowStatement(inner) => inner.span(),
454            Self::TryStatement(inner) => inner.span(),
455            Self::WhileStatement(inner) => inner.span(),
456            Self::WithStatement(inner) => inner.span(),
457        }
458    }
459}
460#[derive(Debug, Clone)]
461pub struct Arguments<'tree> {
462    pub span: ::treesitter_types::Span,
463    pub children: ::std::vec::Vec<ArgumentsChildren<'tree>>,
464}
465impl<'tree> ::treesitter_types::FromNode<'tree> for Arguments<'tree> {
466    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
467    fn from_node(
468        node: ::tree_sitter::Node<'tree>,
469        src: &'tree [u8],
470    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
471        debug_assert_eq!(node.kind(), "arguments");
472        Ok(Self {
473            span: ::treesitter_types::Span::from(node),
474            children: {
475                #[allow(clippy::suspicious_else_formatting)]
476                let non_field_children = {
477                    let mut cursor = node.walk();
478                    let mut result = ::std::vec::Vec::new();
479                    if cursor.goto_first_child() {
480                        loop {
481                            if cursor.field_name().is_none()
482                                && cursor.node().is_named()
483                                && !cursor.node().is_extra()
484                            {
485                                result.push(cursor.node());
486                            }
487                            if !cursor.goto_next_sibling() {
488                                break;
489                            }
490                        }
491                    }
492                    result
493                };
494                let mut items = ::std::vec::Vec::new();
495                for child in non_field_children {
496                    items.push(
497                        <ArgumentsChildren as ::treesitter_types::FromNode>::from_node(child, src)?,
498                    );
499                }
500                items
501            },
502        })
503    }
504}
505impl ::treesitter_types::Spanned for Arguments<'_> {
506    fn span(&self) -> ::treesitter_types::Span {
507        self.span
508    }
509}
510#[derive(Debug, Clone)]
511pub struct Array<'tree> {
512    pub span: ::treesitter_types::Span,
513    pub children: ::std::vec::Vec<ArrayChildren<'tree>>,
514}
515impl<'tree> ::treesitter_types::FromNode<'tree> for Array<'tree> {
516    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
517    fn from_node(
518        node: ::tree_sitter::Node<'tree>,
519        src: &'tree [u8],
520    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
521        debug_assert_eq!(node.kind(), "array");
522        Ok(Self {
523            span: ::treesitter_types::Span::from(node),
524            children: {
525                #[allow(clippy::suspicious_else_formatting)]
526                let non_field_children = {
527                    let mut cursor = node.walk();
528                    let mut result = ::std::vec::Vec::new();
529                    if cursor.goto_first_child() {
530                        loop {
531                            if cursor.field_name().is_none()
532                                && cursor.node().is_named()
533                                && !cursor.node().is_extra()
534                            {
535                                result.push(cursor.node());
536                            }
537                            if !cursor.goto_next_sibling() {
538                                break;
539                            }
540                        }
541                    }
542                    result
543                };
544                let mut items = ::std::vec::Vec::new();
545                for child in non_field_children {
546                    items.push(<ArrayChildren as ::treesitter_types::FromNode>::from_node(
547                        child, src,
548                    )?);
549                }
550                items
551            },
552        })
553    }
554}
555impl ::treesitter_types::Spanned for Array<'_> {
556    fn span(&self) -> ::treesitter_types::Span {
557        self.span
558    }
559}
560#[derive(Debug, Clone)]
561pub struct ArrayPattern<'tree> {
562    pub span: ::treesitter_types::Span,
563    pub children: ::std::vec::Vec<ArrayPatternChildren<'tree>>,
564}
565impl<'tree> ::treesitter_types::FromNode<'tree> for ArrayPattern<'tree> {
566    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
567    fn from_node(
568        node: ::tree_sitter::Node<'tree>,
569        src: &'tree [u8],
570    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
571        debug_assert_eq!(node.kind(), "array_pattern");
572        Ok(Self {
573            span: ::treesitter_types::Span::from(node),
574            children: {
575                #[allow(clippy::suspicious_else_formatting)]
576                let non_field_children = {
577                    let mut cursor = node.walk();
578                    let mut result = ::std::vec::Vec::new();
579                    if cursor.goto_first_child() {
580                        loop {
581                            if cursor.field_name().is_none()
582                                && cursor.node().is_named()
583                                && !cursor.node().is_extra()
584                            {
585                                result.push(cursor.node());
586                            }
587                            if !cursor.goto_next_sibling() {
588                                break;
589                            }
590                        }
591                    }
592                    result
593                };
594                let mut items = ::std::vec::Vec::new();
595                for child in non_field_children {
596                    items.push(
597                        <ArrayPatternChildren as ::treesitter_types::FromNode>::from_node(
598                            child, src,
599                        )?,
600                    );
601                }
602                items
603            },
604        })
605    }
606}
607impl ::treesitter_types::Spanned for ArrayPattern<'_> {
608    fn span(&self) -> ::treesitter_types::Span {
609        self.span
610    }
611}
612#[derive(Debug, Clone)]
613pub struct ArrowFunction<'tree> {
614    pub span: ::treesitter_types::Span,
615    pub body: ArrowFunctionBody<'tree>,
616    pub parameter: ::core::option::Option<Identifier<'tree>>,
617    pub parameters: ::core::option::Option<FormalParameters<'tree>>,
618}
619impl<'tree> ::treesitter_types::FromNode<'tree> for ArrowFunction<'tree> {
620    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
621    fn from_node(
622        node: ::tree_sitter::Node<'tree>,
623        src: &'tree [u8],
624    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
625        debug_assert_eq!(node.kind(), "arrow_function");
626        Ok(Self {
627            span: ::treesitter_types::Span::from(node),
628            body: {
629                let child = node
630                    .child_by_field_name("body")
631                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("body", node))?;
632                <ArrowFunctionBody as ::treesitter_types::FromNode>::from_node(child, src)?
633            },
634            parameter: match node.child_by_field_name("parameter") {
635                Some(child) => Some(<Identifier as ::treesitter_types::FromNode>::from_node(
636                    child, src,
637                )?),
638                None => None,
639            },
640            parameters: match node.child_by_field_name("parameters") {
641                Some(child) => {
642                    Some(<FormalParameters as ::treesitter_types::FromNode>::from_node(child, src)?)
643                }
644                None => None,
645            },
646        })
647    }
648}
649impl ::treesitter_types::Spanned for ArrowFunction<'_> {
650    fn span(&self) -> ::treesitter_types::Span {
651        self.span
652    }
653}
654#[derive(Debug, Clone)]
655pub struct AssignmentExpression<'tree> {
656    pub span: ::treesitter_types::Span,
657    pub left: AssignmentExpressionLeft<'tree>,
658    pub right: Expression<'tree>,
659}
660impl<'tree> ::treesitter_types::FromNode<'tree> for AssignmentExpression<'tree> {
661    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
662    fn from_node(
663        node: ::tree_sitter::Node<'tree>,
664        src: &'tree [u8],
665    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
666        debug_assert_eq!(node.kind(), "assignment_expression");
667        Ok(Self {
668            span: ::treesitter_types::Span::from(node),
669            left: {
670                let child = node
671                    .child_by_field_name("left")
672                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("left", node))?;
673                <AssignmentExpressionLeft as ::treesitter_types::FromNode>::from_node(child, src)?
674            },
675            right: {
676                let child = node
677                    .child_by_field_name("right")
678                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("right", node))?;
679                <Expression as ::treesitter_types::FromNode>::from_node(child, src)?
680            },
681        })
682    }
683}
684impl ::treesitter_types::Spanned for AssignmentExpression<'_> {
685    fn span(&self) -> ::treesitter_types::Span {
686        self.span
687    }
688}
689#[derive(Debug, Clone)]
690pub struct AssignmentPattern<'tree> {
691    pub span: ::treesitter_types::Span,
692    pub left: Pattern<'tree>,
693    pub right: Expression<'tree>,
694}
695impl<'tree> ::treesitter_types::FromNode<'tree> for AssignmentPattern<'tree> {
696    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
697    fn from_node(
698        node: ::tree_sitter::Node<'tree>,
699        src: &'tree [u8],
700    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
701        debug_assert_eq!(node.kind(), "assignment_pattern");
702        Ok(Self {
703            span: ::treesitter_types::Span::from(node),
704            left: {
705                let child = node
706                    .child_by_field_name("left")
707                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("left", node))?;
708                <Pattern as ::treesitter_types::FromNode>::from_node(child, src)?
709            },
710            right: {
711                let child = node
712                    .child_by_field_name("right")
713                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("right", node))?;
714                <Expression as ::treesitter_types::FromNode>::from_node(child, src)?
715            },
716        })
717    }
718}
719impl ::treesitter_types::Spanned for AssignmentPattern<'_> {
720    fn span(&self) -> ::treesitter_types::Span {
721        self.span
722    }
723}
724#[derive(Debug, Clone)]
725pub struct AugmentedAssignmentExpression<'tree> {
726    pub span: ::treesitter_types::Span,
727    pub left: AugmentedAssignmentExpressionLeft<'tree>,
728    pub operator: AugmentedAssignmentExpressionOperator,
729    pub right: Expression<'tree>,
730}
731impl<'tree> ::treesitter_types::FromNode<'tree> for AugmentedAssignmentExpression<'tree> {
732    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
733    fn from_node(
734        node: ::tree_sitter::Node<'tree>,
735        src: &'tree [u8],
736    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
737        debug_assert_eq!(node.kind(), "augmented_assignment_expression");
738        Ok(Self {
739            span: ::treesitter_types::Span::from(node),
740            left: {
741                let child = node
742                    .child_by_field_name("left")
743                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("left", node))?;
744                <AugmentedAssignmentExpressionLeft as ::treesitter_types::FromNode>::from_node(
745                    child, src,
746                )?
747            },
748            operator: {
749                let child = node.child_by_field_name("operator").ok_or_else(|| {
750                    ::treesitter_types::ParseError::missing_field("operator", node)
751                })?;
752                <AugmentedAssignmentExpressionOperator as ::treesitter_types::FromNode>::from_node(
753                    child, src,
754                )?
755            },
756            right: {
757                let child = node
758                    .child_by_field_name("right")
759                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("right", node))?;
760                <Expression as ::treesitter_types::FromNode>::from_node(child, src)?
761            },
762        })
763    }
764}
765impl ::treesitter_types::Spanned for AugmentedAssignmentExpression<'_> {
766    fn span(&self) -> ::treesitter_types::Span {
767        self.span
768    }
769}
770#[derive(Debug, Clone)]
771pub struct AwaitExpression<'tree> {
772    pub span: ::treesitter_types::Span,
773    pub children: Expression<'tree>,
774}
775impl<'tree> ::treesitter_types::FromNode<'tree> for AwaitExpression<'tree> {
776    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
777    fn from_node(
778        node: ::tree_sitter::Node<'tree>,
779        src: &'tree [u8],
780    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
781        debug_assert_eq!(node.kind(), "await_expression");
782        Ok(Self {
783            span: ::treesitter_types::Span::from(node),
784            children: {
785                #[allow(clippy::suspicious_else_formatting)]
786                let non_field_children = {
787                    let mut cursor = node.walk();
788                    let mut result = ::std::vec::Vec::new();
789                    if cursor.goto_first_child() {
790                        loop {
791                            if cursor.field_name().is_none()
792                                && cursor.node().is_named()
793                                && !cursor.node().is_extra()
794                            {
795                                result.push(cursor.node());
796                            }
797                            if !cursor.goto_next_sibling() {
798                                break;
799                            }
800                        }
801                    }
802                    result
803                };
804                let child = if let Some(&c) = non_field_children.first() {
805                    c
806                } else {
807                    let mut fallback_cursor = node.walk();
808                    let mut fallback_child = None;
809                    if fallback_cursor.goto_first_child() {
810                        loop {
811                            if fallback_cursor.field_name().is_none()
812                                && !fallback_cursor.node().is_extra()
813                            {
814                                fallback_child = Some(fallback_cursor.node());
815                                break;
816                            }
817                            if !fallback_cursor.goto_next_sibling() {
818                                break;
819                            }
820                        }
821                    }
822                    fallback_child.ok_or_else(|| {
823                        ::treesitter_types::ParseError::missing_field("children", node)
824                    })?
825                };
826                <Expression as ::treesitter_types::FromNode>::from_node(child, src)?
827            },
828        })
829    }
830}
831impl ::treesitter_types::Spanned for AwaitExpression<'_> {
832    fn span(&self) -> ::treesitter_types::Span {
833        self.span
834    }
835}
836#[derive(Debug, Clone)]
837pub struct BinaryExpression<'tree> {
838    pub span: ::treesitter_types::Span,
839    pub left: BinaryExpressionLeft<'tree>,
840    pub operator: BinaryExpressionOperator,
841    pub right: Expression<'tree>,
842}
843impl<'tree> ::treesitter_types::FromNode<'tree> for BinaryExpression<'tree> {
844    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
845    fn from_node(
846        node: ::tree_sitter::Node<'tree>,
847        src: &'tree [u8],
848    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
849        debug_assert_eq!(node.kind(), "binary_expression");
850        Ok(Self {
851            span: ::treesitter_types::Span::from(node),
852            left: {
853                let child = node
854                    .child_by_field_name("left")
855                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("left", node))?;
856                <BinaryExpressionLeft as ::treesitter_types::FromNode>::from_node(child, src)?
857            },
858            operator: {
859                let child = node.child_by_field_name("operator").ok_or_else(|| {
860                    ::treesitter_types::ParseError::missing_field("operator", node)
861                })?;
862                <BinaryExpressionOperator as ::treesitter_types::FromNode>::from_node(child, src)?
863            },
864            right: {
865                let child = node
866                    .child_by_field_name("right")
867                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("right", node))?;
868                <Expression as ::treesitter_types::FromNode>::from_node(child, src)?
869            },
870        })
871    }
872}
873impl ::treesitter_types::Spanned for BinaryExpression<'_> {
874    fn span(&self) -> ::treesitter_types::Span {
875        self.span
876    }
877}
878#[derive(Debug, Clone)]
879pub struct BreakStatement<'tree> {
880    pub span: ::treesitter_types::Span,
881    pub label: ::core::option::Option<StatementIdentifier<'tree>>,
882}
883impl<'tree> ::treesitter_types::FromNode<'tree> for BreakStatement<'tree> {
884    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
885    fn from_node(
886        node: ::tree_sitter::Node<'tree>,
887        src: &'tree [u8],
888    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
889        debug_assert_eq!(node.kind(), "break_statement");
890        Ok(Self {
891            span: ::treesitter_types::Span::from(node),
892            label: match node.child_by_field_name("label") {
893                Some(child) => Some(
894                    <StatementIdentifier as ::treesitter_types::FromNode>::from_node(child, src)?,
895                ),
896                None => None,
897            },
898        })
899    }
900}
901impl ::treesitter_types::Spanned for BreakStatement<'_> {
902    fn span(&self) -> ::treesitter_types::Span {
903        self.span
904    }
905}
906#[derive(Debug, Clone)]
907pub struct CallExpression<'tree> {
908    pub span: ::treesitter_types::Span,
909    pub arguments: CallExpressionArguments<'tree>,
910    pub function: CallExpressionFunction<'tree>,
911    pub optional_chain: ::core::option::Option<OptionalChain<'tree>>,
912}
913impl<'tree> ::treesitter_types::FromNode<'tree> for CallExpression<'tree> {
914    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
915    fn from_node(
916        node: ::tree_sitter::Node<'tree>,
917        src: &'tree [u8],
918    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
919        debug_assert_eq!(node.kind(), "call_expression");
920        Ok(Self {
921            span: ::treesitter_types::Span::from(node),
922            arguments: {
923                let child = node.child_by_field_name("arguments").ok_or_else(|| {
924                    ::treesitter_types::ParseError::missing_field("arguments", node)
925                })?;
926                <CallExpressionArguments as ::treesitter_types::FromNode>::from_node(child, src)?
927            },
928            function: {
929                let child = node.child_by_field_name("function").ok_or_else(|| {
930                    ::treesitter_types::ParseError::missing_field("function", node)
931                })?;
932                <CallExpressionFunction as ::treesitter_types::FromNode>::from_node(child, src)?
933            },
934            optional_chain: match node.child_by_field_name("optional_chain") {
935                Some(child) => Some(<OptionalChain as ::treesitter_types::FromNode>::from_node(
936                    child, src,
937                )?),
938                None => None,
939            },
940        })
941    }
942}
943impl ::treesitter_types::Spanned for CallExpression<'_> {
944    fn span(&self) -> ::treesitter_types::Span {
945        self.span
946    }
947}
948#[derive(Debug, Clone)]
949pub struct CatchClause<'tree> {
950    pub span: ::treesitter_types::Span,
951    pub body: StatementBlock<'tree>,
952    pub parameter: ::core::option::Option<CatchClauseParameter<'tree>>,
953}
954impl<'tree> ::treesitter_types::FromNode<'tree> for CatchClause<'tree> {
955    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
956    fn from_node(
957        node: ::tree_sitter::Node<'tree>,
958        src: &'tree [u8],
959    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
960        debug_assert_eq!(node.kind(), "catch_clause");
961        Ok(Self {
962            span: ::treesitter_types::Span::from(node),
963            body: {
964                let child = node
965                    .child_by_field_name("body")
966                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("body", node))?;
967                <StatementBlock as ::treesitter_types::FromNode>::from_node(child, src)?
968            },
969            parameter: match node.child_by_field_name("parameter") {
970                Some(child) => Some(
971                    <CatchClauseParameter as ::treesitter_types::FromNode>::from_node(child, src)?,
972                ),
973                None => None,
974            },
975        })
976    }
977}
978impl ::treesitter_types::Spanned for CatchClause<'_> {
979    fn span(&self) -> ::treesitter_types::Span {
980        self.span
981    }
982}
983#[derive(Debug, Clone)]
984pub struct Class<'tree> {
985    pub span: ::treesitter_types::Span,
986    pub body: ClassBody<'tree>,
987    pub decorator: ::std::vec::Vec<Decorator<'tree>>,
988    pub name: ::core::option::Option<Identifier<'tree>>,
989    pub children: ::core::option::Option<ClassHeritage<'tree>>,
990}
991impl<'tree> ::treesitter_types::FromNode<'tree> for Class<'tree> {
992    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
993    fn from_node(
994        node: ::tree_sitter::Node<'tree>,
995        src: &'tree [u8],
996    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
997        debug_assert_eq!(node.kind(), "class");
998        Ok(Self {
999            span: ::treesitter_types::Span::from(node),
1000            body: {
1001                let child = node
1002                    .child_by_field_name("body")
1003                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("body", node))?;
1004                <ClassBody as ::treesitter_types::FromNode>::from_node(child, src)?
1005            },
1006            decorator: {
1007                let mut cursor = node.walk();
1008                let mut items = ::std::vec::Vec::new();
1009                for child in node.children_by_field_name("decorator", &mut cursor) {
1010                    items.push(<Decorator as ::treesitter_types::FromNode>::from_node(
1011                        child, src,
1012                    )?);
1013                }
1014                items
1015            },
1016            name: match node.child_by_field_name("name") {
1017                Some(child) => Some(<Identifier as ::treesitter_types::FromNode>::from_node(
1018                    child, src,
1019                )?),
1020                None => None,
1021            },
1022            children: {
1023                #[allow(clippy::suspicious_else_formatting)]
1024                let non_field_children = {
1025                    let mut cursor = node.walk();
1026                    let mut result = ::std::vec::Vec::new();
1027                    if cursor.goto_first_child() {
1028                        loop {
1029                            if cursor.field_name().is_none()
1030                                && cursor.node().is_named()
1031                                && !cursor.node().is_extra()
1032                            {
1033                                result.push(cursor.node());
1034                            }
1035                            if !cursor.goto_next_sibling() {
1036                                break;
1037                            }
1038                        }
1039                    }
1040                    result
1041                };
1042                match non_field_children.first() {
1043                    Some(&child) => Some(
1044                        <ClassHeritage as ::treesitter_types::FromNode>::from_node(child, src)?,
1045                    ),
1046                    None => None,
1047                }
1048            },
1049        })
1050    }
1051}
1052impl ::treesitter_types::Spanned for Class<'_> {
1053    fn span(&self) -> ::treesitter_types::Span {
1054        self.span
1055    }
1056}
1057#[derive(Debug, Clone)]
1058pub struct ClassBody<'tree> {
1059    pub span: ::treesitter_types::Span,
1060    pub member: ::std::vec::Vec<ClassBodyMember<'tree>>,
1061}
1062impl<'tree> ::treesitter_types::FromNode<'tree> for ClassBody<'tree> {
1063    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
1064    fn from_node(
1065        node: ::tree_sitter::Node<'tree>,
1066        src: &'tree [u8],
1067    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
1068        debug_assert_eq!(node.kind(), "class_body");
1069        Ok(Self {
1070            span: ::treesitter_types::Span::from(node),
1071            member: {
1072                let mut cursor = node.walk();
1073                let mut items = ::std::vec::Vec::new();
1074                for child in node.children_by_field_name("member", &mut cursor) {
1075                    items.push(
1076                        <ClassBodyMember as ::treesitter_types::FromNode>::from_node(child, src)?,
1077                    );
1078                }
1079                items
1080            },
1081        })
1082    }
1083}
1084impl ::treesitter_types::Spanned for ClassBody<'_> {
1085    fn span(&self) -> ::treesitter_types::Span {
1086        self.span
1087    }
1088}
1089#[derive(Debug, Clone)]
1090pub struct ClassDeclaration<'tree> {
1091    pub span: ::treesitter_types::Span,
1092    pub body: ClassBody<'tree>,
1093    pub decorator: ::std::vec::Vec<Decorator<'tree>>,
1094    pub name: Identifier<'tree>,
1095    pub children: ::core::option::Option<ClassHeritage<'tree>>,
1096}
1097impl<'tree> ::treesitter_types::FromNode<'tree> for ClassDeclaration<'tree> {
1098    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
1099    fn from_node(
1100        node: ::tree_sitter::Node<'tree>,
1101        src: &'tree [u8],
1102    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
1103        debug_assert_eq!(node.kind(), "class_declaration");
1104        Ok(Self {
1105            span: ::treesitter_types::Span::from(node),
1106            body: {
1107                let child = node
1108                    .child_by_field_name("body")
1109                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("body", node))?;
1110                <ClassBody as ::treesitter_types::FromNode>::from_node(child, src)?
1111            },
1112            decorator: {
1113                let mut cursor = node.walk();
1114                let mut items = ::std::vec::Vec::new();
1115                for child in node.children_by_field_name("decorator", &mut cursor) {
1116                    items.push(<Decorator as ::treesitter_types::FromNode>::from_node(
1117                        child, src,
1118                    )?);
1119                }
1120                items
1121            },
1122            name: {
1123                let child = node
1124                    .child_by_field_name("name")
1125                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("name", node))?;
1126                <Identifier as ::treesitter_types::FromNode>::from_node(child, src)?
1127            },
1128            children: {
1129                #[allow(clippy::suspicious_else_formatting)]
1130                let non_field_children = {
1131                    let mut cursor = node.walk();
1132                    let mut result = ::std::vec::Vec::new();
1133                    if cursor.goto_first_child() {
1134                        loop {
1135                            if cursor.field_name().is_none()
1136                                && cursor.node().is_named()
1137                                && !cursor.node().is_extra()
1138                            {
1139                                result.push(cursor.node());
1140                            }
1141                            if !cursor.goto_next_sibling() {
1142                                break;
1143                            }
1144                        }
1145                    }
1146                    result
1147                };
1148                match non_field_children.first() {
1149                    Some(&child) => Some(
1150                        <ClassHeritage as ::treesitter_types::FromNode>::from_node(child, src)?,
1151                    ),
1152                    None => None,
1153                }
1154            },
1155        })
1156    }
1157}
1158impl ::treesitter_types::Spanned for ClassDeclaration<'_> {
1159    fn span(&self) -> ::treesitter_types::Span {
1160        self.span
1161    }
1162}
1163#[derive(Debug, Clone)]
1164pub struct ClassHeritage<'tree> {
1165    pub span: ::treesitter_types::Span,
1166    pub children: Expression<'tree>,
1167}
1168impl<'tree> ::treesitter_types::FromNode<'tree> for ClassHeritage<'tree> {
1169    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
1170    fn from_node(
1171        node: ::tree_sitter::Node<'tree>,
1172        src: &'tree [u8],
1173    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
1174        debug_assert_eq!(node.kind(), "class_heritage");
1175        Ok(Self {
1176            span: ::treesitter_types::Span::from(node),
1177            children: {
1178                #[allow(clippy::suspicious_else_formatting)]
1179                let non_field_children = {
1180                    let mut cursor = node.walk();
1181                    let mut result = ::std::vec::Vec::new();
1182                    if cursor.goto_first_child() {
1183                        loop {
1184                            if cursor.field_name().is_none()
1185                                && cursor.node().is_named()
1186                                && !cursor.node().is_extra()
1187                            {
1188                                result.push(cursor.node());
1189                            }
1190                            if !cursor.goto_next_sibling() {
1191                                break;
1192                            }
1193                        }
1194                    }
1195                    result
1196                };
1197                let child = if let Some(&c) = non_field_children.first() {
1198                    c
1199                } else {
1200                    let mut fallback_cursor = node.walk();
1201                    let mut fallback_child = None;
1202                    if fallback_cursor.goto_first_child() {
1203                        loop {
1204                            if fallback_cursor.field_name().is_none()
1205                                && !fallback_cursor.node().is_extra()
1206                            {
1207                                fallback_child = Some(fallback_cursor.node());
1208                                break;
1209                            }
1210                            if !fallback_cursor.goto_next_sibling() {
1211                                break;
1212                            }
1213                        }
1214                    }
1215                    fallback_child.ok_or_else(|| {
1216                        ::treesitter_types::ParseError::missing_field("children", node)
1217                    })?
1218                };
1219                <Expression as ::treesitter_types::FromNode>::from_node(child, src)?
1220            },
1221        })
1222    }
1223}
1224impl ::treesitter_types::Spanned for ClassHeritage<'_> {
1225    fn span(&self) -> ::treesitter_types::Span {
1226        self.span
1227    }
1228}
1229#[derive(Debug, Clone)]
1230pub struct ClassStaticBlock<'tree> {
1231    pub span: ::treesitter_types::Span,
1232    pub body: StatementBlock<'tree>,
1233}
1234impl<'tree> ::treesitter_types::FromNode<'tree> for ClassStaticBlock<'tree> {
1235    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
1236    fn from_node(
1237        node: ::tree_sitter::Node<'tree>,
1238        src: &'tree [u8],
1239    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
1240        debug_assert_eq!(node.kind(), "class_static_block");
1241        Ok(Self {
1242            span: ::treesitter_types::Span::from(node),
1243            body: {
1244                let child = node
1245                    .child_by_field_name("body")
1246                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("body", node))?;
1247                <StatementBlock as ::treesitter_types::FromNode>::from_node(child, src)?
1248            },
1249        })
1250    }
1251}
1252impl ::treesitter_types::Spanned for ClassStaticBlock<'_> {
1253    fn span(&self) -> ::treesitter_types::Span {
1254        self.span
1255    }
1256}
1257#[derive(Debug, Clone)]
1258pub struct ComputedPropertyName<'tree> {
1259    pub span: ::treesitter_types::Span,
1260    pub children: Expression<'tree>,
1261}
1262impl<'tree> ::treesitter_types::FromNode<'tree> for ComputedPropertyName<'tree> {
1263    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
1264    fn from_node(
1265        node: ::tree_sitter::Node<'tree>,
1266        src: &'tree [u8],
1267    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
1268        debug_assert_eq!(node.kind(), "computed_property_name");
1269        Ok(Self {
1270            span: ::treesitter_types::Span::from(node),
1271            children: {
1272                #[allow(clippy::suspicious_else_formatting)]
1273                let non_field_children = {
1274                    let mut cursor = node.walk();
1275                    let mut result = ::std::vec::Vec::new();
1276                    if cursor.goto_first_child() {
1277                        loop {
1278                            if cursor.field_name().is_none()
1279                                && cursor.node().is_named()
1280                                && !cursor.node().is_extra()
1281                            {
1282                                result.push(cursor.node());
1283                            }
1284                            if !cursor.goto_next_sibling() {
1285                                break;
1286                            }
1287                        }
1288                    }
1289                    result
1290                };
1291                let child = if let Some(&c) = non_field_children.first() {
1292                    c
1293                } else {
1294                    let mut fallback_cursor = node.walk();
1295                    let mut fallback_child = None;
1296                    if fallback_cursor.goto_first_child() {
1297                        loop {
1298                            if fallback_cursor.field_name().is_none()
1299                                && !fallback_cursor.node().is_extra()
1300                            {
1301                                fallback_child = Some(fallback_cursor.node());
1302                                break;
1303                            }
1304                            if !fallback_cursor.goto_next_sibling() {
1305                                break;
1306                            }
1307                        }
1308                    }
1309                    fallback_child.ok_or_else(|| {
1310                        ::treesitter_types::ParseError::missing_field("children", node)
1311                    })?
1312                };
1313                <Expression as ::treesitter_types::FromNode>::from_node(child, src)?
1314            },
1315        })
1316    }
1317}
1318impl ::treesitter_types::Spanned for ComputedPropertyName<'_> {
1319    fn span(&self) -> ::treesitter_types::Span {
1320        self.span
1321    }
1322}
1323#[derive(Debug, Clone)]
1324pub struct ContinueStatement<'tree> {
1325    pub span: ::treesitter_types::Span,
1326    pub label: ::core::option::Option<StatementIdentifier<'tree>>,
1327}
1328impl<'tree> ::treesitter_types::FromNode<'tree> for ContinueStatement<'tree> {
1329    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
1330    fn from_node(
1331        node: ::tree_sitter::Node<'tree>,
1332        src: &'tree [u8],
1333    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
1334        debug_assert_eq!(node.kind(), "continue_statement");
1335        Ok(Self {
1336            span: ::treesitter_types::Span::from(node),
1337            label: match node.child_by_field_name("label") {
1338                Some(child) => Some(
1339                    <StatementIdentifier as ::treesitter_types::FromNode>::from_node(child, src)?,
1340                ),
1341                None => None,
1342            },
1343        })
1344    }
1345}
1346impl ::treesitter_types::Spanned for ContinueStatement<'_> {
1347    fn span(&self) -> ::treesitter_types::Span {
1348        self.span
1349    }
1350}
1351#[derive(Debug, Clone)]
1352pub struct DebuggerStatement<'tree> {
1353    pub span: ::treesitter_types::Span,
1354    text: &'tree str,
1355}
1356impl<'tree> ::treesitter_types::FromNode<'tree> for DebuggerStatement<'tree> {
1357    fn from_node(
1358        node: ::tree_sitter::Node<'tree>,
1359        src: &'tree [u8],
1360    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
1361        debug_assert_eq!(node.kind(), "debugger_statement");
1362        Ok(Self {
1363            span: ::treesitter_types::Span::from(node),
1364            text: node.utf8_text(src)?,
1365        })
1366    }
1367}
1368impl<'tree> ::treesitter_types::LeafNode<'tree> for DebuggerStatement<'tree> {
1369    fn text(&self) -> &'tree str {
1370        self.text
1371    }
1372}
1373impl ::treesitter_types::Spanned for DebuggerStatement<'_> {
1374    fn span(&self) -> ::treesitter_types::Span {
1375        self.span
1376    }
1377}
1378#[derive(Debug, Clone)]
1379pub struct Decorator<'tree> {
1380    pub span: ::treesitter_types::Span,
1381    pub children: DecoratorChildren<'tree>,
1382}
1383impl<'tree> ::treesitter_types::FromNode<'tree> for Decorator<'tree> {
1384    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
1385    fn from_node(
1386        node: ::tree_sitter::Node<'tree>,
1387        src: &'tree [u8],
1388    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
1389        debug_assert_eq!(node.kind(), "decorator");
1390        Ok(Self {
1391            span: ::treesitter_types::Span::from(node),
1392            children: {
1393                #[allow(clippy::suspicious_else_formatting)]
1394                let non_field_children = {
1395                    let mut cursor = node.walk();
1396                    let mut result = ::std::vec::Vec::new();
1397                    if cursor.goto_first_child() {
1398                        loop {
1399                            if cursor.field_name().is_none()
1400                                && cursor.node().is_named()
1401                                && !cursor.node().is_extra()
1402                            {
1403                                result.push(cursor.node());
1404                            }
1405                            if !cursor.goto_next_sibling() {
1406                                break;
1407                            }
1408                        }
1409                    }
1410                    result
1411                };
1412                let child = if let Some(&c) = non_field_children.first() {
1413                    c
1414                } else {
1415                    let mut fallback_cursor = node.walk();
1416                    let mut fallback_child = None;
1417                    if fallback_cursor.goto_first_child() {
1418                        loop {
1419                            if fallback_cursor.field_name().is_none()
1420                                && !fallback_cursor.node().is_extra()
1421                            {
1422                                fallback_child = Some(fallback_cursor.node());
1423                                break;
1424                            }
1425                            if !fallback_cursor.goto_next_sibling() {
1426                                break;
1427                            }
1428                        }
1429                    }
1430                    fallback_child.ok_or_else(|| {
1431                        ::treesitter_types::ParseError::missing_field("children", node)
1432                    })?
1433                };
1434                <DecoratorChildren as ::treesitter_types::FromNode>::from_node(child, src)?
1435            },
1436        })
1437    }
1438}
1439impl ::treesitter_types::Spanned for Decorator<'_> {
1440    fn span(&self) -> ::treesitter_types::Span {
1441        self.span
1442    }
1443}
1444#[derive(Debug, Clone)]
1445pub struct DoStatement<'tree> {
1446    pub span: ::treesitter_types::Span,
1447    pub body: Statement<'tree>,
1448    pub condition: ParenthesizedExpression<'tree>,
1449}
1450impl<'tree> ::treesitter_types::FromNode<'tree> for DoStatement<'tree> {
1451    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
1452    fn from_node(
1453        node: ::tree_sitter::Node<'tree>,
1454        src: &'tree [u8],
1455    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
1456        debug_assert_eq!(node.kind(), "do_statement");
1457        Ok(Self {
1458            span: ::treesitter_types::Span::from(node),
1459            body: {
1460                let child = node
1461                    .child_by_field_name("body")
1462                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("body", node))?;
1463                <Statement as ::treesitter_types::FromNode>::from_node(child, src)?
1464            },
1465            condition: {
1466                let child = node.child_by_field_name("condition").ok_or_else(|| {
1467                    ::treesitter_types::ParseError::missing_field("condition", node)
1468                })?;
1469                <ParenthesizedExpression as ::treesitter_types::FromNode>::from_node(child, src)?
1470            },
1471        })
1472    }
1473}
1474impl ::treesitter_types::Spanned for DoStatement<'_> {
1475    fn span(&self) -> ::treesitter_types::Span {
1476        self.span
1477    }
1478}
1479#[derive(Debug, Clone)]
1480pub struct ElseClause<'tree> {
1481    pub span: ::treesitter_types::Span,
1482    pub children: Statement<'tree>,
1483}
1484impl<'tree> ::treesitter_types::FromNode<'tree> for ElseClause<'tree> {
1485    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
1486    fn from_node(
1487        node: ::tree_sitter::Node<'tree>,
1488        src: &'tree [u8],
1489    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
1490        debug_assert_eq!(node.kind(), "else_clause");
1491        Ok(Self {
1492            span: ::treesitter_types::Span::from(node),
1493            children: {
1494                #[allow(clippy::suspicious_else_formatting)]
1495                let non_field_children = {
1496                    let mut cursor = node.walk();
1497                    let mut result = ::std::vec::Vec::new();
1498                    if cursor.goto_first_child() {
1499                        loop {
1500                            if cursor.field_name().is_none()
1501                                && cursor.node().is_named()
1502                                && !cursor.node().is_extra()
1503                            {
1504                                result.push(cursor.node());
1505                            }
1506                            if !cursor.goto_next_sibling() {
1507                                break;
1508                            }
1509                        }
1510                    }
1511                    result
1512                };
1513                let child = if let Some(&c) = non_field_children.first() {
1514                    c
1515                } else {
1516                    let mut fallback_cursor = node.walk();
1517                    let mut fallback_child = None;
1518                    if fallback_cursor.goto_first_child() {
1519                        loop {
1520                            if fallback_cursor.field_name().is_none()
1521                                && !fallback_cursor.node().is_extra()
1522                            {
1523                                fallback_child = Some(fallback_cursor.node());
1524                                break;
1525                            }
1526                            if !fallback_cursor.goto_next_sibling() {
1527                                break;
1528                            }
1529                        }
1530                    }
1531                    fallback_child.ok_or_else(|| {
1532                        ::treesitter_types::ParseError::missing_field("children", node)
1533                    })?
1534                };
1535                <Statement as ::treesitter_types::FromNode>::from_node(child, src)?
1536            },
1537        })
1538    }
1539}
1540impl ::treesitter_types::Spanned for ElseClause<'_> {
1541    fn span(&self) -> ::treesitter_types::Span {
1542        self.span
1543    }
1544}
1545#[derive(Debug, Clone)]
1546pub struct EmptyStatement<'tree> {
1547    pub span: ::treesitter_types::Span,
1548    text: &'tree str,
1549}
1550impl<'tree> ::treesitter_types::FromNode<'tree> for EmptyStatement<'tree> {
1551    fn from_node(
1552        node: ::tree_sitter::Node<'tree>,
1553        src: &'tree [u8],
1554    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
1555        debug_assert_eq!(node.kind(), "empty_statement");
1556        Ok(Self {
1557            span: ::treesitter_types::Span::from(node),
1558            text: node.utf8_text(src)?,
1559        })
1560    }
1561}
1562impl<'tree> ::treesitter_types::LeafNode<'tree> for EmptyStatement<'tree> {
1563    fn text(&self) -> &'tree str {
1564        self.text
1565    }
1566}
1567impl ::treesitter_types::Spanned for EmptyStatement<'_> {
1568    fn span(&self) -> ::treesitter_types::Span {
1569        self.span
1570    }
1571}
1572#[derive(Debug, Clone)]
1573pub struct ExportClause<'tree> {
1574    pub span: ::treesitter_types::Span,
1575    pub children: ::std::vec::Vec<ExportSpecifier<'tree>>,
1576}
1577impl<'tree> ::treesitter_types::FromNode<'tree> for ExportClause<'tree> {
1578    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
1579    fn from_node(
1580        node: ::tree_sitter::Node<'tree>,
1581        src: &'tree [u8],
1582    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
1583        debug_assert_eq!(node.kind(), "export_clause");
1584        Ok(Self {
1585            span: ::treesitter_types::Span::from(node),
1586            children: {
1587                #[allow(clippy::suspicious_else_formatting)]
1588                let non_field_children = {
1589                    let mut cursor = node.walk();
1590                    let mut result = ::std::vec::Vec::new();
1591                    if cursor.goto_first_child() {
1592                        loop {
1593                            if cursor.field_name().is_none()
1594                                && cursor.node().is_named()
1595                                && !cursor.node().is_extra()
1596                            {
1597                                result.push(cursor.node());
1598                            }
1599                            if !cursor.goto_next_sibling() {
1600                                break;
1601                            }
1602                        }
1603                    }
1604                    result
1605                };
1606                let mut items = ::std::vec::Vec::new();
1607                for child in non_field_children {
1608                    items.push(
1609                        <ExportSpecifier as ::treesitter_types::FromNode>::from_node(child, src)?,
1610                    );
1611                }
1612                items
1613            },
1614        })
1615    }
1616}
1617impl ::treesitter_types::Spanned for ExportClause<'_> {
1618    fn span(&self) -> ::treesitter_types::Span {
1619        self.span
1620    }
1621}
1622#[derive(Debug, Clone)]
1623pub struct ExportSpecifier<'tree> {
1624    pub span: ::treesitter_types::Span,
1625    pub alias: ::core::option::Option<ExportSpecifierAlias<'tree>>,
1626    pub name: ExportSpecifierName<'tree>,
1627}
1628impl<'tree> ::treesitter_types::FromNode<'tree> for ExportSpecifier<'tree> {
1629    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
1630    fn from_node(
1631        node: ::tree_sitter::Node<'tree>,
1632        src: &'tree [u8],
1633    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
1634        debug_assert_eq!(node.kind(), "export_specifier");
1635        Ok(Self {
1636            span: ::treesitter_types::Span::from(node),
1637            alias: match node.child_by_field_name("alias") {
1638                Some(child) => Some(
1639                    <ExportSpecifierAlias as ::treesitter_types::FromNode>::from_node(child, src)?,
1640                ),
1641                None => None,
1642            },
1643            name: {
1644                let child = node
1645                    .child_by_field_name("name")
1646                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("name", node))?;
1647                <ExportSpecifierName as ::treesitter_types::FromNode>::from_node(child, src)?
1648            },
1649        })
1650    }
1651}
1652impl ::treesitter_types::Spanned for ExportSpecifier<'_> {
1653    fn span(&self) -> ::treesitter_types::Span {
1654        self.span
1655    }
1656}
1657#[derive(Debug, Clone)]
1658pub struct ExportStatement<'tree> {
1659    pub span: ::treesitter_types::Span,
1660    pub declaration: ::core::option::Option<Declaration<'tree>>,
1661    pub decorator: ::std::vec::Vec<Decorator<'tree>>,
1662    pub source: ::core::option::Option<String<'tree>>,
1663    pub value: ::core::option::Option<Expression<'tree>>,
1664    pub children: ::core::option::Option<ExportStatementChildren<'tree>>,
1665}
1666impl<'tree> ::treesitter_types::FromNode<'tree> for ExportStatement<'tree> {
1667    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
1668    fn from_node(
1669        node: ::tree_sitter::Node<'tree>,
1670        src: &'tree [u8],
1671    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
1672        debug_assert_eq!(node.kind(), "export_statement");
1673        Ok(Self {
1674            span: ::treesitter_types::Span::from(node),
1675            declaration: match node.child_by_field_name("declaration") {
1676                Some(child) => Some(<Declaration as ::treesitter_types::FromNode>::from_node(
1677                    child, src,
1678                )?),
1679                None => None,
1680            },
1681            decorator: {
1682                let mut cursor = node.walk();
1683                let mut items = ::std::vec::Vec::new();
1684                for child in node.children_by_field_name("decorator", &mut cursor) {
1685                    items.push(<Decorator as ::treesitter_types::FromNode>::from_node(
1686                        child, src,
1687                    )?);
1688                }
1689                items
1690            },
1691            source: match node.child_by_field_name("source") {
1692                Some(child) => Some(<String as ::treesitter_types::FromNode>::from_node(
1693                    child, src,
1694                )?),
1695                None => None,
1696            },
1697            value: match node.child_by_field_name("value") {
1698                Some(child) => Some(<Expression as ::treesitter_types::FromNode>::from_node(
1699                    child, src,
1700                )?),
1701                None => None,
1702            },
1703            children: {
1704                #[allow(clippy::suspicious_else_formatting)]
1705                let non_field_children = {
1706                    let mut cursor = node.walk();
1707                    let mut result = ::std::vec::Vec::new();
1708                    if cursor.goto_first_child() {
1709                        loop {
1710                            if cursor.field_name().is_none()
1711                                && cursor.node().is_named()
1712                                && !cursor.node().is_extra()
1713                            {
1714                                result.push(cursor.node());
1715                            }
1716                            if !cursor.goto_next_sibling() {
1717                                break;
1718                            }
1719                        }
1720                    }
1721                    result
1722                };
1723                match non_field_children.first() {
1724                    Some(&child) => Some(
1725                        <ExportStatementChildren as ::treesitter_types::FromNode>::from_node(
1726                            child, src,
1727                        )?,
1728                    ),
1729                    None => None,
1730                }
1731            },
1732        })
1733    }
1734}
1735impl ::treesitter_types::Spanned for ExportStatement<'_> {
1736    fn span(&self) -> ::treesitter_types::Span {
1737        self.span
1738    }
1739}
1740#[derive(Debug, Clone)]
1741pub struct ExpressionStatement<'tree> {
1742    pub span: ::treesitter_types::Span,
1743    pub children: ExpressionStatementChildren<'tree>,
1744}
1745impl<'tree> ::treesitter_types::FromNode<'tree> for ExpressionStatement<'tree> {
1746    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
1747    fn from_node(
1748        node: ::tree_sitter::Node<'tree>,
1749        src: &'tree [u8],
1750    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
1751        debug_assert_eq!(node.kind(), "expression_statement");
1752        Ok(Self {
1753            span: ::treesitter_types::Span::from(node),
1754            children: {
1755                #[allow(clippy::suspicious_else_formatting)]
1756                let non_field_children = {
1757                    let mut cursor = node.walk();
1758                    let mut result = ::std::vec::Vec::new();
1759                    if cursor.goto_first_child() {
1760                        loop {
1761                            if cursor.field_name().is_none()
1762                                && cursor.node().is_named()
1763                                && !cursor.node().is_extra()
1764                            {
1765                                result.push(cursor.node());
1766                            }
1767                            if !cursor.goto_next_sibling() {
1768                                break;
1769                            }
1770                        }
1771                    }
1772                    result
1773                };
1774                let child = if let Some(&c) = non_field_children.first() {
1775                    c
1776                } else {
1777                    let mut fallback_cursor = node.walk();
1778                    let mut fallback_child = None;
1779                    if fallback_cursor.goto_first_child() {
1780                        loop {
1781                            if fallback_cursor.field_name().is_none()
1782                                && !fallback_cursor.node().is_extra()
1783                            {
1784                                fallback_child = Some(fallback_cursor.node());
1785                                break;
1786                            }
1787                            if !fallback_cursor.goto_next_sibling() {
1788                                break;
1789                            }
1790                        }
1791                    }
1792                    fallback_child.ok_or_else(|| {
1793                        ::treesitter_types::ParseError::missing_field("children", node)
1794                    })?
1795                };
1796                <ExpressionStatementChildren as ::treesitter_types::FromNode>::from_node(
1797                    child, src,
1798                )?
1799            },
1800        })
1801    }
1802}
1803impl ::treesitter_types::Spanned for ExpressionStatement<'_> {
1804    fn span(&self) -> ::treesitter_types::Span {
1805        self.span
1806    }
1807}
1808#[derive(Debug, Clone)]
1809pub struct FieldDefinition<'tree> {
1810    pub span: ::treesitter_types::Span,
1811    pub decorator: ::std::vec::Vec<Decorator<'tree>>,
1812    pub property: FieldDefinitionProperty<'tree>,
1813    pub value: ::core::option::Option<Expression<'tree>>,
1814}
1815impl<'tree> ::treesitter_types::FromNode<'tree> for FieldDefinition<'tree> {
1816    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
1817    fn from_node(
1818        node: ::tree_sitter::Node<'tree>,
1819        src: &'tree [u8],
1820    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
1821        debug_assert_eq!(node.kind(), "field_definition");
1822        Ok(Self {
1823            span: ::treesitter_types::Span::from(node),
1824            decorator: {
1825                let mut cursor = node.walk();
1826                let mut items = ::std::vec::Vec::new();
1827                for child in node.children_by_field_name("decorator", &mut cursor) {
1828                    items.push(<Decorator as ::treesitter_types::FromNode>::from_node(
1829                        child, src,
1830                    )?);
1831                }
1832                items
1833            },
1834            property: {
1835                let child = node.child_by_field_name("property").ok_or_else(|| {
1836                    ::treesitter_types::ParseError::missing_field("property", node)
1837                })?;
1838                <FieldDefinitionProperty as ::treesitter_types::FromNode>::from_node(child, src)?
1839            },
1840            value: match node.child_by_field_name("value") {
1841                Some(child) => Some(<Expression as ::treesitter_types::FromNode>::from_node(
1842                    child, src,
1843                )?),
1844                None => None,
1845            },
1846        })
1847    }
1848}
1849impl ::treesitter_types::Spanned for FieldDefinition<'_> {
1850    fn span(&self) -> ::treesitter_types::Span {
1851        self.span
1852    }
1853}
1854#[derive(Debug, Clone)]
1855pub struct FinallyClause<'tree> {
1856    pub span: ::treesitter_types::Span,
1857    pub body: StatementBlock<'tree>,
1858}
1859impl<'tree> ::treesitter_types::FromNode<'tree> for FinallyClause<'tree> {
1860    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
1861    fn from_node(
1862        node: ::tree_sitter::Node<'tree>,
1863        src: &'tree [u8],
1864    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
1865        debug_assert_eq!(node.kind(), "finally_clause");
1866        Ok(Self {
1867            span: ::treesitter_types::Span::from(node),
1868            body: {
1869                let child = node
1870                    .child_by_field_name("body")
1871                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("body", node))?;
1872                <StatementBlock as ::treesitter_types::FromNode>::from_node(child, src)?
1873            },
1874        })
1875    }
1876}
1877impl ::treesitter_types::Spanned for FinallyClause<'_> {
1878    fn span(&self) -> ::treesitter_types::Span {
1879        self.span
1880    }
1881}
1882#[derive(Debug, Clone)]
1883pub struct ForInStatement<'tree> {
1884    pub span: ::treesitter_types::Span,
1885    pub body: Statement<'tree>,
1886    pub kind: ::std::vec::Vec<ForInStatementKind>,
1887    pub left: ForInStatementLeft<'tree>,
1888    pub operator: ForInStatementOperator,
1889    pub right: ForInStatementRight<'tree>,
1890    pub value: ::core::option::Option<Expression<'tree>>,
1891}
1892impl<'tree> ::treesitter_types::FromNode<'tree> for ForInStatement<'tree> {
1893    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
1894    fn from_node(
1895        node: ::tree_sitter::Node<'tree>,
1896        src: &'tree [u8],
1897    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
1898        debug_assert_eq!(node.kind(), "for_in_statement");
1899        Ok(Self {
1900            span: ::treesitter_types::Span::from(node),
1901            body: {
1902                let child = node
1903                    .child_by_field_name("body")
1904                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("body", node))?;
1905                <Statement as ::treesitter_types::FromNode>::from_node(child, src)?
1906            },
1907            kind: {
1908                let mut cursor = node.walk();
1909                let mut items = ::std::vec::Vec::new();
1910                for child in node.children_by_field_name("kind", &mut cursor) {
1911                    items.push(
1912                        <ForInStatementKind as ::treesitter_types::FromNode>::from_node(
1913                            child, src,
1914                        )?,
1915                    );
1916                }
1917                items
1918            },
1919            left: {
1920                let child = node
1921                    .child_by_field_name("left")
1922                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("left", node))?;
1923                <ForInStatementLeft as ::treesitter_types::FromNode>::from_node(child, src)?
1924            },
1925            operator: {
1926                let child = node.child_by_field_name("operator").ok_or_else(|| {
1927                    ::treesitter_types::ParseError::missing_field("operator", node)
1928                })?;
1929                <ForInStatementOperator as ::treesitter_types::FromNode>::from_node(child, src)?
1930            },
1931            right: {
1932                let child = node
1933                    .child_by_field_name("right")
1934                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("right", node))?;
1935                <ForInStatementRight as ::treesitter_types::FromNode>::from_node(child, src)?
1936            },
1937            value: match node.child_by_field_name("value") {
1938                Some(child) => Some(<Expression as ::treesitter_types::FromNode>::from_node(
1939                    child, src,
1940                )?),
1941                None => None,
1942            },
1943        })
1944    }
1945}
1946impl ::treesitter_types::Spanned for ForInStatement<'_> {
1947    fn span(&self) -> ::treesitter_types::Span {
1948        self.span
1949    }
1950}
1951#[derive(Debug, Clone)]
1952pub struct ForStatement<'tree> {
1953    pub span: ::treesitter_types::Span,
1954    pub body: Statement<'tree>,
1955    pub condition: ::std::vec::Vec<ForStatementCondition<'tree>>,
1956    pub increment: ::core::option::Option<ForStatementIncrement<'tree>>,
1957    pub initializer: ForStatementInitializer<'tree>,
1958}
1959impl<'tree> ::treesitter_types::FromNode<'tree> for ForStatement<'tree> {
1960    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
1961    fn from_node(
1962        node: ::tree_sitter::Node<'tree>,
1963        src: &'tree [u8],
1964    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
1965        debug_assert_eq!(node.kind(), "for_statement");
1966        Ok(Self {
1967            span: ::treesitter_types::Span::from(node),
1968            body: {
1969                let child = node
1970                    .child_by_field_name("body")
1971                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("body", node))?;
1972                <Statement as ::treesitter_types::FromNode>::from_node(child, src)?
1973            },
1974            condition: {
1975                let mut cursor = node.walk();
1976                let mut items = ::std::vec::Vec::new();
1977                for child in node.children_by_field_name("condition", &mut cursor) {
1978                    items.push(
1979                        <ForStatementCondition as ::treesitter_types::FromNode>::from_node(
1980                            child, src,
1981                        )?,
1982                    );
1983                }
1984                items
1985            },
1986            increment: match node.child_by_field_name("increment") {
1987                Some(child) => Some(
1988                    <ForStatementIncrement as ::treesitter_types::FromNode>::from_node(child, src)?,
1989                ),
1990                None => None,
1991            },
1992            initializer: {
1993                let child = node.child_by_field_name("initializer").ok_or_else(|| {
1994                    ::treesitter_types::ParseError::missing_field("initializer", node)
1995                })?;
1996                <ForStatementInitializer as ::treesitter_types::FromNode>::from_node(child, src)?
1997            },
1998        })
1999    }
2000}
2001impl ::treesitter_types::Spanned for ForStatement<'_> {
2002    fn span(&self) -> ::treesitter_types::Span {
2003        self.span
2004    }
2005}
2006#[derive(Debug, Clone)]
2007pub struct FormalParameters<'tree> {
2008    pub span: ::treesitter_types::Span,
2009    pub children: ::std::vec::Vec<FormalParametersChildren<'tree>>,
2010}
2011impl<'tree> ::treesitter_types::FromNode<'tree> for FormalParameters<'tree> {
2012    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
2013    fn from_node(
2014        node: ::tree_sitter::Node<'tree>,
2015        src: &'tree [u8],
2016    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
2017        debug_assert_eq!(node.kind(), "formal_parameters");
2018        Ok(Self {
2019            span: ::treesitter_types::Span::from(node),
2020            children: {
2021                #[allow(clippy::suspicious_else_formatting)]
2022                let non_field_children = {
2023                    let mut cursor = node.walk();
2024                    let mut result = ::std::vec::Vec::new();
2025                    if cursor.goto_first_child() {
2026                        loop {
2027                            if cursor.field_name().is_none()
2028                                && cursor.node().is_named()
2029                                && !cursor.node().is_extra()
2030                            {
2031                                result.push(cursor.node());
2032                            }
2033                            if !cursor.goto_next_sibling() {
2034                                break;
2035                            }
2036                        }
2037                    }
2038                    result
2039                };
2040                let mut items = ::std::vec::Vec::new();
2041                for child in non_field_children {
2042                    items.push(
2043                        <FormalParametersChildren as ::treesitter_types::FromNode>::from_node(
2044                            child, src,
2045                        )?,
2046                    );
2047                }
2048                items
2049            },
2050        })
2051    }
2052}
2053impl ::treesitter_types::Spanned for FormalParameters<'_> {
2054    fn span(&self) -> ::treesitter_types::Span {
2055        self.span
2056    }
2057}
2058#[derive(Debug, Clone)]
2059pub struct FunctionDeclaration<'tree> {
2060    pub span: ::treesitter_types::Span,
2061    pub body: StatementBlock<'tree>,
2062    pub name: Identifier<'tree>,
2063    pub parameters: FormalParameters<'tree>,
2064}
2065impl<'tree> ::treesitter_types::FromNode<'tree> for FunctionDeclaration<'tree> {
2066    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
2067    fn from_node(
2068        node: ::tree_sitter::Node<'tree>,
2069        src: &'tree [u8],
2070    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
2071        debug_assert_eq!(node.kind(), "function_declaration");
2072        Ok(Self {
2073            span: ::treesitter_types::Span::from(node),
2074            body: {
2075                let child = node
2076                    .child_by_field_name("body")
2077                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("body", node))?;
2078                <StatementBlock as ::treesitter_types::FromNode>::from_node(child, src)?
2079            },
2080            name: {
2081                let child = node
2082                    .child_by_field_name("name")
2083                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("name", node))?;
2084                <Identifier as ::treesitter_types::FromNode>::from_node(child, src)?
2085            },
2086            parameters: {
2087                let child = node.child_by_field_name("parameters").ok_or_else(|| {
2088                    ::treesitter_types::ParseError::missing_field("parameters", node)
2089                })?;
2090                <FormalParameters as ::treesitter_types::FromNode>::from_node(child, src)?
2091            },
2092        })
2093    }
2094}
2095impl ::treesitter_types::Spanned for FunctionDeclaration<'_> {
2096    fn span(&self) -> ::treesitter_types::Span {
2097        self.span
2098    }
2099}
2100#[derive(Debug, Clone)]
2101pub struct FunctionExpression<'tree> {
2102    pub span: ::treesitter_types::Span,
2103    pub body: StatementBlock<'tree>,
2104    pub name: ::core::option::Option<Identifier<'tree>>,
2105    pub parameters: FormalParameters<'tree>,
2106}
2107impl<'tree> ::treesitter_types::FromNode<'tree> for FunctionExpression<'tree> {
2108    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
2109    fn from_node(
2110        node: ::tree_sitter::Node<'tree>,
2111        src: &'tree [u8],
2112    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
2113        debug_assert_eq!(node.kind(), "function_expression");
2114        Ok(Self {
2115            span: ::treesitter_types::Span::from(node),
2116            body: {
2117                let child = node
2118                    .child_by_field_name("body")
2119                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("body", node))?;
2120                <StatementBlock as ::treesitter_types::FromNode>::from_node(child, src)?
2121            },
2122            name: match node.child_by_field_name("name") {
2123                Some(child) => Some(<Identifier as ::treesitter_types::FromNode>::from_node(
2124                    child, src,
2125                )?),
2126                None => None,
2127            },
2128            parameters: {
2129                let child = node.child_by_field_name("parameters").ok_or_else(|| {
2130                    ::treesitter_types::ParseError::missing_field("parameters", node)
2131                })?;
2132                <FormalParameters as ::treesitter_types::FromNode>::from_node(child, src)?
2133            },
2134        })
2135    }
2136}
2137impl ::treesitter_types::Spanned for FunctionExpression<'_> {
2138    fn span(&self) -> ::treesitter_types::Span {
2139        self.span
2140    }
2141}
2142#[derive(Debug, Clone)]
2143pub struct GeneratorFunction<'tree> {
2144    pub span: ::treesitter_types::Span,
2145    pub body: StatementBlock<'tree>,
2146    pub name: ::core::option::Option<Identifier<'tree>>,
2147    pub parameters: FormalParameters<'tree>,
2148}
2149impl<'tree> ::treesitter_types::FromNode<'tree> for GeneratorFunction<'tree> {
2150    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
2151    fn from_node(
2152        node: ::tree_sitter::Node<'tree>,
2153        src: &'tree [u8],
2154    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
2155        debug_assert_eq!(node.kind(), "generator_function");
2156        Ok(Self {
2157            span: ::treesitter_types::Span::from(node),
2158            body: {
2159                let child = node
2160                    .child_by_field_name("body")
2161                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("body", node))?;
2162                <StatementBlock as ::treesitter_types::FromNode>::from_node(child, src)?
2163            },
2164            name: match node.child_by_field_name("name") {
2165                Some(child) => Some(<Identifier as ::treesitter_types::FromNode>::from_node(
2166                    child, src,
2167                )?),
2168                None => None,
2169            },
2170            parameters: {
2171                let child = node.child_by_field_name("parameters").ok_or_else(|| {
2172                    ::treesitter_types::ParseError::missing_field("parameters", node)
2173                })?;
2174                <FormalParameters as ::treesitter_types::FromNode>::from_node(child, src)?
2175            },
2176        })
2177    }
2178}
2179impl ::treesitter_types::Spanned for GeneratorFunction<'_> {
2180    fn span(&self) -> ::treesitter_types::Span {
2181        self.span
2182    }
2183}
2184#[derive(Debug, Clone)]
2185pub struct GeneratorFunctionDeclaration<'tree> {
2186    pub span: ::treesitter_types::Span,
2187    pub body: StatementBlock<'tree>,
2188    pub name: Identifier<'tree>,
2189    pub parameters: FormalParameters<'tree>,
2190}
2191impl<'tree> ::treesitter_types::FromNode<'tree> for GeneratorFunctionDeclaration<'tree> {
2192    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
2193    fn from_node(
2194        node: ::tree_sitter::Node<'tree>,
2195        src: &'tree [u8],
2196    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
2197        debug_assert_eq!(node.kind(), "generator_function_declaration");
2198        Ok(Self {
2199            span: ::treesitter_types::Span::from(node),
2200            body: {
2201                let child = node
2202                    .child_by_field_name("body")
2203                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("body", node))?;
2204                <StatementBlock as ::treesitter_types::FromNode>::from_node(child, src)?
2205            },
2206            name: {
2207                let child = node
2208                    .child_by_field_name("name")
2209                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("name", node))?;
2210                <Identifier as ::treesitter_types::FromNode>::from_node(child, src)?
2211            },
2212            parameters: {
2213                let child = node.child_by_field_name("parameters").ok_or_else(|| {
2214                    ::treesitter_types::ParseError::missing_field("parameters", node)
2215                })?;
2216                <FormalParameters as ::treesitter_types::FromNode>::from_node(child, src)?
2217            },
2218        })
2219    }
2220}
2221impl ::treesitter_types::Spanned for GeneratorFunctionDeclaration<'_> {
2222    fn span(&self) -> ::treesitter_types::Span {
2223        self.span
2224    }
2225}
2226#[derive(Debug, Clone)]
2227pub struct IfStatement<'tree> {
2228    pub span: ::treesitter_types::Span,
2229    pub alternative: ::core::option::Option<ElseClause<'tree>>,
2230    pub condition: ParenthesizedExpression<'tree>,
2231    pub consequence: Statement<'tree>,
2232}
2233impl<'tree> ::treesitter_types::FromNode<'tree> for IfStatement<'tree> {
2234    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
2235    fn from_node(
2236        node: ::tree_sitter::Node<'tree>,
2237        src: &'tree [u8],
2238    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
2239        debug_assert_eq!(node.kind(), "if_statement");
2240        Ok(Self {
2241            span: ::treesitter_types::Span::from(node),
2242            alternative: match node.child_by_field_name("alternative") {
2243                Some(child) => Some(<ElseClause as ::treesitter_types::FromNode>::from_node(
2244                    child, src,
2245                )?),
2246                None => None,
2247            },
2248            condition: {
2249                let child = node.child_by_field_name("condition").ok_or_else(|| {
2250                    ::treesitter_types::ParseError::missing_field("condition", node)
2251                })?;
2252                <ParenthesizedExpression as ::treesitter_types::FromNode>::from_node(child, src)?
2253            },
2254            consequence: {
2255                let child = node.child_by_field_name("consequence").ok_or_else(|| {
2256                    ::treesitter_types::ParseError::missing_field("consequence", node)
2257                })?;
2258                <Statement as ::treesitter_types::FromNode>::from_node(child, src)?
2259            },
2260        })
2261    }
2262}
2263impl ::treesitter_types::Spanned for IfStatement<'_> {
2264    fn span(&self) -> ::treesitter_types::Span {
2265        self.span
2266    }
2267}
2268#[derive(Debug, Clone)]
2269pub struct Import<'tree> {
2270    pub span: ::treesitter_types::Span,
2271    text: &'tree str,
2272}
2273impl<'tree> ::treesitter_types::FromNode<'tree> for Import<'tree> {
2274    fn from_node(
2275        node: ::tree_sitter::Node<'tree>,
2276        src: &'tree [u8],
2277    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
2278        debug_assert_eq!(node.kind(), "import");
2279        Ok(Self {
2280            span: ::treesitter_types::Span::from(node),
2281            text: node.utf8_text(src)?,
2282        })
2283    }
2284}
2285impl<'tree> ::treesitter_types::LeafNode<'tree> for Import<'tree> {
2286    fn text(&self) -> &'tree str {
2287        self.text
2288    }
2289}
2290impl ::treesitter_types::Spanned for Import<'_> {
2291    fn span(&self) -> ::treesitter_types::Span {
2292        self.span
2293    }
2294}
2295#[derive(Debug, Clone)]
2296pub struct ImportAttribute<'tree> {
2297    pub span: ::treesitter_types::Span,
2298    pub children: Object<'tree>,
2299}
2300impl<'tree> ::treesitter_types::FromNode<'tree> for ImportAttribute<'tree> {
2301    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
2302    fn from_node(
2303        node: ::tree_sitter::Node<'tree>,
2304        src: &'tree [u8],
2305    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
2306        debug_assert_eq!(node.kind(), "import_attribute");
2307        Ok(Self {
2308            span: ::treesitter_types::Span::from(node),
2309            children: {
2310                #[allow(clippy::suspicious_else_formatting)]
2311                let non_field_children = {
2312                    let mut cursor = node.walk();
2313                    let mut result = ::std::vec::Vec::new();
2314                    if cursor.goto_first_child() {
2315                        loop {
2316                            if cursor.field_name().is_none()
2317                                && cursor.node().is_named()
2318                                && !cursor.node().is_extra()
2319                            {
2320                                result.push(cursor.node());
2321                            }
2322                            if !cursor.goto_next_sibling() {
2323                                break;
2324                            }
2325                        }
2326                    }
2327                    result
2328                };
2329                let child = if let Some(&c) = non_field_children.first() {
2330                    c
2331                } else {
2332                    let mut fallback_cursor = node.walk();
2333                    let mut fallback_child = None;
2334                    if fallback_cursor.goto_first_child() {
2335                        loop {
2336                            if fallback_cursor.field_name().is_none()
2337                                && !fallback_cursor.node().is_extra()
2338                            {
2339                                fallback_child = Some(fallback_cursor.node());
2340                                break;
2341                            }
2342                            if !fallback_cursor.goto_next_sibling() {
2343                                break;
2344                            }
2345                        }
2346                    }
2347                    fallback_child.ok_or_else(|| {
2348                        ::treesitter_types::ParseError::missing_field("children", node)
2349                    })?
2350                };
2351                <Object as ::treesitter_types::FromNode>::from_node(child, src)?
2352            },
2353        })
2354    }
2355}
2356impl ::treesitter_types::Spanned for ImportAttribute<'_> {
2357    fn span(&self) -> ::treesitter_types::Span {
2358        self.span
2359    }
2360}
2361#[derive(Debug, Clone)]
2362pub struct ImportClause<'tree> {
2363    pub span: ::treesitter_types::Span,
2364    pub children: ::std::vec::Vec<ImportClauseChildren<'tree>>,
2365}
2366impl<'tree> ::treesitter_types::FromNode<'tree> for ImportClause<'tree> {
2367    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
2368    fn from_node(
2369        node: ::tree_sitter::Node<'tree>,
2370        src: &'tree [u8],
2371    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
2372        debug_assert_eq!(node.kind(), "import_clause");
2373        Ok(Self {
2374            span: ::treesitter_types::Span::from(node),
2375            children: {
2376                #[allow(clippy::suspicious_else_formatting)]
2377                let non_field_children = {
2378                    let mut cursor = node.walk();
2379                    let mut result = ::std::vec::Vec::new();
2380                    if cursor.goto_first_child() {
2381                        loop {
2382                            if cursor.field_name().is_none()
2383                                && cursor.node().is_named()
2384                                && !cursor.node().is_extra()
2385                            {
2386                                result.push(cursor.node());
2387                            }
2388                            if !cursor.goto_next_sibling() {
2389                                break;
2390                            }
2391                        }
2392                    }
2393                    result
2394                };
2395                let mut items = ::std::vec::Vec::new();
2396                for child in non_field_children {
2397                    items.push(
2398                        <ImportClauseChildren as ::treesitter_types::FromNode>::from_node(
2399                            child, src,
2400                        )?,
2401                    );
2402                }
2403                items
2404            },
2405        })
2406    }
2407}
2408impl ::treesitter_types::Spanned for ImportClause<'_> {
2409    fn span(&self) -> ::treesitter_types::Span {
2410        self.span
2411    }
2412}
2413#[derive(Debug, Clone)]
2414pub struct ImportSpecifier<'tree> {
2415    pub span: ::treesitter_types::Span,
2416    pub alias: ::core::option::Option<Identifier<'tree>>,
2417    pub name: ImportSpecifierName<'tree>,
2418}
2419impl<'tree> ::treesitter_types::FromNode<'tree> for ImportSpecifier<'tree> {
2420    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
2421    fn from_node(
2422        node: ::tree_sitter::Node<'tree>,
2423        src: &'tree [u8],
2424    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
2425        debug_assert_eq!(node.kind(), "import_specifier");
2426        Ok(Self {
2427            span: ::treesitter_types::Span::from(node),
2428            alias: match node.child_by_field_name("alias") {
2429                Some(child) => Some(<Identifier as ::treesitter_types::FromNode>::from_node(
2430                    child, src,
2431                )?),
2432                None => None,
2433            },
2434            name: {
2435                let child = node
2436                    .child_by_field_name("name")
2437                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("name", node))?;
2438                <ImportSpecifierName as ::treesitter_types::FromNode>::from_node(child, src)?
2439            },
2440        })
2441    }
2442}
2443impl ::treesitter_types::Spanned for ImportSpecifier<'_> {
2444    fn span(&self) -> ::treesitter_types::Span {
2445        self.span
2446    }
2447}
2448#[derive(Debug, Clone)]
2449pub struct ImportStatement<'tree> {
2450    pub span: ::treesitter_types::Span,
2451    pub source: String<'tree>,
2452    pub children: ::std::vec::Vec<ImportStatementChildren<'tree>>,
2453}
2454impl<'tree> ::treesitter_types::FromNode<'tree> for ImportStatement<'tree> {
2455    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
2456    fn from_node(
2457        node: ::tree_sitter::Node<'tree>,
2458        src: &'tree [u8],
2459    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
2460        debug_assert_eq!(node.kind(), "import_statement");
2461        Ok(Self {
2462            span: ::treesitter_types::Span::from(node),
2463            source: {
2464                let child = node
2465                    .child_by_field_name("source")
2466                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("source", node))?;
2467                <String as ::treesitter_types::FromNode>::from_node(child, src)?
2468            },
2469            children: {
2470                #[allow(clippy::suspicious_else_formatting)]
2471                let non_field_children = {
2472                    let mut cursor = node.walk();
2473                    let mut result = ::std::vec::Vec::new();
2474                    if cursor.goto_first_child() {
2475                        loop {
2476                            if cursor.field_name().is_none()
2477                                && cursor.node().is_named()
2478                                && !cursor.node().is_extra()
2479                            {
2480                                result.push(cursor.node());
2481                            }
2482                            if !cursor.goto_next_sibling() {
2483                                break;
2484                            }
2485                        }
2486                    }
2487                    result
2488                };
2489                let mut items = ::std::vec::Vec::new();
2490                for child in non_field_children {
2491                    items.push(
2492                        <ImportStatementChildren as ::treesitter_types::FromNode>::from_node(
2493                            child, src,
2494                        )?,
2495                    );
2496                }
2497                items
2498            },
2499        })
2500    }
2501}
2502impl ::treesitter_types::Spanned for ImportStatement<'_> {
2503    fn span(&self) -> ::treesitter_types::Span {
2504        self.span
2505    }
2506}
2507#[derive(Debug, Clone)]
2508pub struct JsxAttribute<'tree> {
2509    pub span: ::treesitter_types::Span,
2510    pub children: ::std::vec::Vec<JsxAttributeChildren<'tree>>,
2511}
2512impl<'tree> ::treesitter_types::FromNode<'tree> for JsxAttribute<'tree> {
2513    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
2514    fn from_node(
2515        node: ::tree_sitter::Node<'tree>,
2516        src: &'tree [u8],
2517    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
2518        debug_assert_eq!(node.kind(), "jsx_attribute");
2519        Ok(Self {
2520            span: ::treesitter_types::Span::from(node),
2521            children: {
2522                #[allow(clippy::suspicious_else_formatting)]
2523                let non_field_children = {
2524                    let mut cursor = node.walk();
2525                    let mut result = ::std::vec::Vec::new();
2526                    if cursor.goto_first_child() {
2527                        loop {
2528                            if cursor.field_name().is_none()
2529                                && cursor.node().is_named()
2530                                && !cursor.node().is_extra()
2531                            {
2532                                result.push(cursor.node());
2533                            }
2534                            if !cursor.goto_next_sibling() {
2535                                break;
2536                            }
2537                        }
2538                    }
2539                    result
2540                };
2541                let mut items = ::std::vec::Vec::new();
2542                for child in non_field_children {
2543                    items.push(
2544                        <JsxAttributeChildren as ::treesitter_types::FromNode>::from_node(
2545                            child, src,
2546                        )?,
2547                    );
2548                }
2549                items
2550            },
2551        })
2552    }
2553}
2554impl ::treesitter_types::Spanned for JsxAttribute<'_> {
2555    fn span(&self) -> ::treesitter_types::Span {
2556        self.span
2557    }
2558}
2559#[derive(Debug, Clone)]
2560pub struct JsxClosingElement<'tree> {
2561    pub span: ::treesitter_types::Span,
2562    pub name: ::core::option::Option<JsxClosingElementName<'tree>>,
2563}
2564impl<'tree> ::treesitter_types::FromNode<'tree> for JsxClosingElement<'tree> {
2565    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
2566    fn from_node(
2567        node: ::tree_sitter::Node<'tree>,
2568        src: &'tree [u8],
2569    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
2570        debug_assert_eq!(node.kind(), "jsx_closing_element");
2571        Ok(Self {
2572            span: ::treesitter_types::Span::from(node),
2573            name: match node.child_by_field_name("name") {
2574                Some(child) => Some(
2575                    <JsxClosingElementName as ::treesitter_types::FromNode>::from_node(child, src)?,
2576                ),
2577                None => None,
2578            },
2579        })
2580    }
2581}
2582impl ::treesitter_types::Spanned for JsxClosingElement<'_> {
2583    fn span(&self) -> ::treesitter_types::Span {
2584        self.span
2585    }
2586}
2587#[derive(Debug, Clone)]
2588pub struct JsxElement<'tree> {
2589    pub span: ::treesitter_types::Span,
2590    pub close_tag: JsxClosingElement<'tree>,
2591    pub open_tag: JsxOpeningElement<'tree>,
2592    pub children: ::std::vec::Vec<JsxElementChildren<'tree>>,
2593}
2594impl<'tree> ::treesitter_types::FromNode<'tree> for JsxElement<'tree> {
2595    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
2596    fn from_node(
2597        node: ::tree_sitter::Node<'tree>,
2598        src: &'tree [u8],
2599    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
2600        debug_assert_eq!(node.kind(), "jsx_element");
2601        Ok(Self {
2602            span: ::treesitter_types::Span::from(node),
2603            close_tag: {
2604                let child = node.child_by_field_name("close_tag").ok_or_else(|| {
2605                    ::treesitter_types::ParseError::missing_field("close_tag", node)
2606                })?;
2607                <JsxClosingElement as ::treesitter_types::FromNode>::from_node(child, src)?
2608            },
2609            open_tag: {
2610                let child = node.child_by_field_name("open_tag").ok_or_else(|| {
2611                    ::treesitter_types::ParseError::missing_field("open_tag", node)
2612                })?;
2613                <JsxOpeningElement as ::treesitter_types::FromNode>::from_node(child, src)?
2614            },
2615            children: {
2616                #[allow(clippy::suspicious_else_formatting)]
2617                let non_field_children = {
2618                    let mut cursor = node.walk();
2619                    let mut result = ::std::vec::Vec::new();
2620                    if cursor.goto_first_child() {
2621                        loop {
2622                            if cursor.field_name().is_none()
2623                                && cursor.node().is_named()
2624                                && !cursor.node().is_extra()
2625                            {
2626                                result.push(cursor.node());
2627                            }
2628                            if !cursor.goto_next_sibling() {
2629                                break;
2630                            }
2631                        }
2632                    }
2633                    result
2634                };
2635                let mut items = ::std::vec::Vec::new();
2636                for child in non_field_children {
2637                    items.push(
2638                        <JsxElementChildren as ::treesitter_types::FromNode>::from_node(
2639                            child, src,
2640                        )?,
2641                    );
2642                }
2643                items
2644            },
2645        })
2646    }
2647}
2648impl ::treesitter_types::Spanned for JsxElement<'_> {
2649    fn span(&self) -> ::treesitter_types::Span {
2650        self.span
2651    }
2652}
2653#[derive(Debug, Clone)]
2654pub struct JsxExpression<'tree> {
2655    pub span: ::treesitter_types::Span,
2656    pub children: ::core::option::Option<JsxExpressionChildren<'tree>>,
2657}
2658impl<'tree> ::treesitter_types::FromNode<'tree> for JsxExpression<'tree> {
2659    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
2660    fn from_node(
2661        node: ::tree_sitter::Node<'tree>,
2662        src: &'tree [u8],
2663    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
2664        debug_assert_eq!(node.kind(), "jsx_expression");
2665        Ok(Self {
2666            span: ::treesitter_types::Span::from(node),
2667            children: {
2668                #[allow(clippy::suspicious_else_formatting)]
2669                let non_field_children = {
2670                    let mut cursor = node.walk();
2671                    let mut result = ::std::vec::Vec::new();
2672                    if cursor.goto_first_child() {
2673                        loop {
2674                            if cursor.field_name().is_none()
2675                                && cursor.node().is_named()
2676                                && !cursor.node().is_extra()
2677                            {
2678                                result.push(cursor.node());
2679                            }
2680                            if !cursor.goto_next_sibling() {
2681                                break;
2682                            }
2683                        }
2684                    }
2685                    result
2686                };
2687                match non_field_children.first() {
2688                    Some(&child) => Some(
2689                        <JsxExpressionChildren as ::treesitter_types::FromNode>::from_node(
2690                            child, src,
2691                        )?,
2692                    ),
2693                    None => None,
2694                }
2695            },
2696        })
2697    }
2698}
2699impl ::treesitter_types::Spanned for JsxExpression<'_> {
2700    fn span(&self) -> ::treesitter_types::Span {
2701        self.span
2702    }
2703}
2704#[derive(Debug, Clone)]
2705pub struct JsxNamespaceName<'tree> {
2706    pub span: ::treesitter_types::Span,
2707    pub children: ::std::vec::Vec<Identifier<'tree>>,
2708}
2709impl<'tree> ::treesitter_types::FromNode<'tree> for JsxNamespaceName<'tree> {
2710    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
2711    fn from_node(
2712        node: ::tree_sitter::Node<'tree>,
2713        src: &'tree [u8],
2714    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
2715        debug_assert_eq!(node.kind(), "jsx_namespace_name");
2716        Ok(Self {
2717            span: ::treesitter_types::Span::from(node),
2718            children: {
2719                #[allow(clippy::suspicious_else_formatting)]
2720                let non_field_children = {
2721                    let mut cursor = node.walk();
2722                    let mut result = ::std::vec::Vec::new();
2723                    if cursor.goto_first_child() {
2724                        loop {
2725                            if cursor.field_name().is_none()
2726                                && cursor.node().is_named()
2727                                && !cursor.node().is_extra()
2728                            {
2729                                result.push(cursor.node());
2730                            }
2731                            if !cursor.goto_next_sibling() {
2732                                break;
2733                            }
2734                        }
2735                    }
2736                    result
2737                };
2738                let mut items = ::std::vec::Vec::new();
2739                for child in non_field_children {
2740                    items.push(<Identifier as ::treesitter_types::FromNode>::from_node(
2741                        child, src,
2742                    )?);
2743                }
2744                items
2745            },
2746        })
2747    }
2748}
2749impl ::treesitter_types::Spanned for JsxNamespaceName<'_> {
2750    fn span(&self) -> ::treesitter_types::Span {
2751        self.span
2752    }
2753}
2754#[derive(Debug, Clone)]
2755pub struct JsxOpeningElement<'tree> {
2756    pub span: ::treesitter_types::Span,
2757    pub attribute: ::std::vec::Vec<JsxOpeningElementAttribute<'tree>>,
2758    pub name: ::core::option::Option<JsxOpeningElementName<'tree>>,
2759}
2760impl<'tree> ::treesitter_types::FromNode<'tree> for JsxOpeningElement<'tree> {
2761    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
2762    fn from_node(
2763        node: ::tree_sitter::Node<'tree>,
2764        src: &'tree [u8],
2765    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
2766        debug_assert_eq!(node.kind(), "jsx_opening_element");
2767        Ok(Self {
2768            span: ::treesitter_types::Span::from(node),
2769            attribute: {
2770                let mut cursor = node.walk();
2771                let mut items = ::std::vec::Vec::new();
2772                for child in node.children_by_field_name("attribute", &mut cursor) {
2773                    items.push(
2774                        <JsxOpeningElementAttribute as ::treesitter_types::FromNode>::from_node(
2775                            child, src,
2776                        )?,
2777                    );
2778                }
2779                items
2780            },
2781            name: match node.child_by_field_name("name") {
2782                Some(child) => Some(
2783                    <JsxOpeningElementName as ::treesitter_types::FromNode>::from_node(child, src)?,
2784                ),
2785                None => None,
2786            },
2787        })
2788    }
2789}
2790impl ::treesitter_types::Spanned for JsxOpeningElement<'_> {
2791    fn span(&self) -> ::treesitter_types::Span {
2792        self.span
2793    }
2794}
2795#[derive(Debug, Clone)]
2796pub struct JsxSelfClosingElement<'tree> {
2797    pub span: ::treesitter_types::Span,
2798    pub attribute: ::std::vec::Vec<JsxSelfClosingElementAttribute<'tree>>,
2799    pub name: JsxSelfClosingElementName<'tree>,
2800}
2801impl<'tree> ::treesitter_types::FromNode<'tree> for JsxSelfClosingElement<'tree> {
2802    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
2803    fn from_node(
2804        node: ::tree_sitter::Node<'tree>,
2805        src: &'tree [u8],
2806    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
2807        debug_assert_eq!(node.kind(), "jsx_self_closing_element");
2808        Ok(Self {
2809            span: ::treesitter_types::Span::from(node),
2810            attribute: {
2811                let mut cursor = node.walk();
2812                let mut items = ::std::vec::Vec::new();
2813                for child in node.children_by_field_name("attribute", &mut cursor) {
2814                    items
2815                        .push(
2816                            <JsxSelfClosingElementAttribute as ::treesitter_types::FromNode>::from_node(
2817                                child,
2818                                src,
2819                            )?,
2820                        );
2821                }
2822                items
2823            },
2824            name: {
2825                let child = node
2826                    .child_by_field_name("name")
2827                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("name", node))?;
2828                <JsxSelfClosingElementName as ::treesitter_types::FromNode>::from_node(child, src)?
2829            },
2830        })
2831    }
2832}
2833impl ::treesitter_types::Spanned for JsxSelfClosingElement<'_> {
2834    fn span(&self) -> ::treesitter_types::Span {
2835        self.span
2836    }
2837}
2838#[derive(Debug, Clone)]
2839pub struct LabeledStatement<'tree> {
2840    pub span: ::treesitter_types::Span,
2841    pub body: Statement<'tree>,
2842    pub label: StatementIdentifier<'tree>,
2843}
2844impl<'tree> ::treesitter_types::FromNode<'tree> for LabeledStatement<'tree> {
2845    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
2846    fn from_node(
2847        node: ::tree_sitter::Node<'tree>,
2848        src: &'tree [u8],
2849    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
2850        debug_assert_eq!(node.kind(), "labeled_statement");
2851        Ok(Self {
2852            span: ::treesitter_types::Span::from(node),
2853            body: {
2854                let child = node
2855                    .child_by_field_name("body")
2856                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("body", node))?;
2857                <Statement as ::treesitter_types::FromNode>::from_node(child, src)?
2858            },
2859            label: {
2860                let child = node
2861                    .child_by_field_name("label")
2862                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("label", node))?;
2863                <StatementIdentifier as ::treesitter_types::FromNode>::from_node(child, src)?
2864            },
2865        })
2866    }
2867}
2868impl ::treesitter_types::Spanned for LabeledStatement<'_> {
2869    fn span(&self) -> ::treesitter_types::Span {
2870        self.span
2871    }
2872}
2873#[derive(Debug, Clone)]
2874pub struct LexicalDeclaration<'tree> {
2875    pub span: ::treesitter_types::Span,
2876    pub kind: LexicalDeclarationKind,
2877    pub children: ::std::vec::Vec<VariableDeclarator<'tree>>,
2878}
2879impl<'tree> ::treesitter_types::FromNode<'tree> for LexicalDeclaration<'tree> {
2880    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
2881    fn from_node(
2882        node: ::tree_sitter::Node<'tree>,
2883        src: &'tree [u8],
2884    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
2885        debug_assert_eq!(node.kind(), "lexical_declaration");
2886        Ok(Self {
2887            span: ::treesitter_types::Span::from(node),
2888            kind: {
2889                let child = node
2890                    .child_by_field_name("kind")
2891                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("kind", node))?;
2892                <LexicalDeclarationKind as ::treesitter_types::FromNode>::from_node(child, src)?
2893            },
2894            children: {
2895                #[allow(clippy::suspicious_else_formatting)]
2896                let non_field_children = {
2897                    let mut cursor = node.walk();
2898                    let mut result = ::std::vec::Vec::new();
2899                    if cursor.goto_first_child() {
2900                        loop {
2901                            if cursor.field_name().is_none()
2902                                && cursor.node().is_named()
2903                                && !cursor.node().is_extra()
2904                            {
2905                                result.push(cursor.node());
2906                            }
2907                            if !cursor.goto_next_sibling() {
2908                                break;
2909                            }
2910                        }
2911                    }
2912                    result
2913                };
2914                let mut items = ::std::vec::Vec::new();
2915                for child in non_field_children {
2916                    items.push(
2917                        <VariableDeclarator as ::treesitter_types::FromNode>::from_node(
2918                            child, src,
2919                        )?,
2920                    );
2921                }
2922                items
2923            },
2924        })
2925    }
2926}
2927impl ::treesitter_types::Spanned for LexicalDeclaration<'_> {
2928    fn span(&self) -> ::treesitter_types::Span {
2929        self.span
2930    }
2931}
2932#[derive(Debug, Clone)]
2933pub struct MemberExpression<'tree> {
2934    pub span: ::treesitter_types::Span,
2935    pub object: MemberExpressionObject<'tree>,
2936    pub optional_chain: ::core::option::Option<OptionalChain<'tree>>,
2937    pub property: MemberExpressionProperty<'tree>,
2938}
2939impl<'tree> ::treesitter_types::FromNode<'tree> for MemberExpression<'tree> {
2940    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
2941    fn from_node(
2942        node: ::tree_sitter::Node<'tree>,
2943        src: &'tree [u8],
2944    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
2945        debug_assert_eq!(node.kind(), "member_expression");
2946        Ok(Self {
2947            span: ::treesitter_types::Span::from(node),
2948            object: {
2949                let child = node
2950                    .child_by_field_name("object")
2951                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("object", node))?;
2952                <MemberExpressionObject as ::treesitter_types::FromNode>::from_node(child, src)?
2953            },
2954            optional_chain: match node.child_by_field_name("optional_chain") {
2955                Some(child) => Some(<OptionalChain as ::treesitter_types::FromNode>::from_node(
2956                    child, src,
2957                )?),
2958                None => None,
2959            },
2960            property: {
2961                let child = node.child_by_field_name("property").ok_or_else(|| {
2962                    ::treesitter_types::ParseError::missing_field("property", node)
2963                })?;
2964                <MemberExpressionProperty as ::treesitter_types::FromNode>::from_node(child, src)?
2965            },
2966        })
2967    }
2968}
2969impl ::treesitter_types::Spanned for MemberExpression<'_> {
2970    fn span(&self) -> ::treesitter_types::Span {
2971        self.span
2972    }
2973}
2974#[derive(Debug, Clone)]
2975pub struct MetaProperty<'tree> {
2976    pub span: ::treesitter_types::Span,
2977    text: &'tree str,
2978}
2979impl<'tree> ::treesitter_types::FromNode<'tree> for MetaProperty<'tree> {
2980    fn from_node(
2981        node: ::tree_sitter::Node<'tree>,
2982        src: &'tree [u8],
2983    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
2984        debug_assert_eq!(node.kind(), "meta_property");
2985        Ok(Self {
2986            span: ::treesitter_types::Span::from(node),
2987            text: node.utf8_text(src)?,
2988        })
2989    }
2990}
2991impl<'tree> ::treesitter_types::LeafNode<'tree> for MetaProperty<'tree> {
2992    fn text(&self) -> &'tree str {
2993        self.text
2994    }
2995}
2996impl ::treesitter_types::Spanned for MetaProperty<'_> {
2997    fn span(&self) -> ::treesitter_types::Span {
2998        self.span
2999    }
3000}
3001#[derive(Debug, Clone)]
3002pub struct MethodDefinition<'tree> {
3003    pub span: ::treesitter_types::Span,
3004    pub body: StatementBlock<'tree>,
3005    pub decorator: ::std::vec::Vec<Decorator<'tree>>,
3006    pub name: MethodDefinitionName<'tree>,
3007    pub parameters: FormalParameters<'tree>,
3008}
3009impl<'tree> ::treesitter_types::FromNode<'tree> for MethodDefinition<'tree> {
3010    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
3011    fn from_node(
3012        node: ::tree_sitter::Node<'tree>,
3013        src: &'tree [u8],
3014    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
3015        debug_assert_eq!(node.kind(), "method_definition");
3016        Ok(Self {
3017            span: ::treesitter_types::Span::from(node),
3018            body: {
3019                let child = node
3020                    .child_by_field_name("body")
3021                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("body", node))?;
3022                <StatementBlock as ::treesitter_types::FromNode>::from_node(child, src)?
3023            },
3024            decorator: {
3025                let mut cursor = node.walk();
3026                let mut items = ::std::vec::Vec::new();
3027                for child in node.children_by_field_name("decorator", &mut cursor) {
3028                    items.push(<Decorator as ::treesitter_types::FromNode>::from_node(
3029                        child, src,
3030                    )?);
3031                }
3032                items
3033            },
3034            name: {
3035                let child = node
3036                    .child_by_field_name("name")
3037                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("name", node))?;
3038                <MethodDefinitionName as ::treesitter_types::FromNode>::from_node(child, src)?
3039            },
3040            parameters: {
3041                let child = node.child_by_field_name("parameters").ok_or_else(|| {
3042                    ::treesitter_types::ParseError::missing_field("parameters", node)
3043                })?;
3044                <FormalParameters as ::treesitter_types::FromNode>::from_node(child, src)?
3045            },
3046        })
3047    }
3048}
3049impl ::treesitter_types::Spanned for MethodDefinition<'_> {
3050    fn span(&self) -> ::treesitter_types::Span {
3051        self.span
3052    }
3053}
3054#[derive(Debug, Clone)]
3055pub struct NamedImports<'tree> {
3056    pub span: ::treesitter_types::Span,
3057    pub children: ::std::vec::Vec<ImportSpecifier<'tree>>,
3058}
3059impl<'tree> ::treesitter_types::FromNode<'tree> for NamedImports<'tree> {
3060    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
3061    fn from_node(
3062        node: ::tree_sitter::Node<'tree>,
3063        src: &'tree [u8],
3064    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
3065        debug_assert_eq!(node.kind(), "named_imports");
3066        Ok(Self {
3067            span: ::treesitter_types::Span::from(node),
3068            children: {
3069                #[allow(clippy::suspicious_else_formatting)]
3070                let non_field_children = {
3071                    let mut cursor = node.walk();
3072                    let mut result = ::std::vec::Vec::new();
3073                    if cursor.goto_first_child() {
3074                        loop {
3075                            if cursor.field_name().is_none()
3076                                && cursor.node().is_named()
3077                                && !cursor.node().is_extra()
3078                            {
3079                                result.push(cursor.node());
3080                            }
3081                            if !cursor.goto_next_sibling() {
3082                                break;
3083                            }
3084                        }
3085                    }
3086                    result
3087                };
3088                let mut items = ::std::vec::Vec::new();
3089                for child in non_field_children {
3090                    items.push(
3091                        <ImportSpecifier as ::treesitter_types::FromNode>::from_node(child, src)?,
3092                    );
3093                }
3094                items
3095            },
3096        })
3097    }
3098}
3099impl ::treesitter_types::Spanned for NamedImports<'_> {
3100    fn span(&self) -> ::treesitter_types::Span {
3101        self.span
3102    }
3103}
3104#[derive(Debug, Clone)]
3105pub struct NamespaceExport<'tree> {
3106    pub span: ::treesitter_types::Span,
3107    pub children: ::core::option::Option<NamespaceExportChildren<'tree>>,
3108}
3109impl<'tree> ::treesitter_types::FromNode<'tree> for NamespaceExport<'tree> {
3110    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
3111    fn from_node(
3112        node: ::tree_sitter::Node<'tree>,
3113        src: &'tree [u8],
3114    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
3115        debug_assert_eq!(node.kind(), "namespace_export");
3116        Ok(Self {
3117            span: ::treesitter_types::Span::from(node),
3118            children: {
3119                #[allow(clippy::suspicious_else_formatting)]
3120                let non_field_children = {
3121                    let mut cursor = node.walk();
3122                    let mut result = ::std::vec::Vec::new();
3123                    if cursor.goto_first_child() {
3124                        loop {
3125                            if cursor.field_name().is_none()
3126                                && cursor.node().is_named()
3127                                && !cursor.node().is_extra()
3128                            {
3129                                result.push(cursor.node());
3130                            }
3131                            if !cursor.goto_next_sibling() {
3132                                break;
3133                            }
3134                        }
3135                    }
3136                    result
3137                };
3138                match non_field_children.first() {
3139                    Some(&child) => Some(
3140                        <NamespaceExportChildren as ::treesitter_types::FromNode>::from_node(
3141                            child, src,
3142                        )?,
3143                    ),
3144                    None => None,
3145                }
3146            },
3147        })
3148    }
3149}
3150impl ::treesitter_types::Spanned for NamespaceExport<'_> {
3151    fn span(&self) -> ::treesitter_types::Span {
3152        self.span
3153    }
3154}
3155#[derive(Debug, Clone)]
3156pub struct NamespaceImport<'tree> {
3157    pub span: ::treesitter_types::Span,
3158    pub children: Identifier<'tree>,
3159}
3160impl<'tree> ::treesitter_types::FromNode<'tree> for NamespaceImport<'tree> {
3161    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
3162    fn from_node(
3163        node: ::tree_sitter::Node<'tree>,
3164        src: &'tree [u8],
3165    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
3166        debug_assert_eq!(node.kind(), "namespace_import");
3167        Ok(Self {
3168            span: ::treesitter_types::Span::from(node),
3169            children: {
3170                #[allow(clippy::suspicious_else_formatting)]
3171                let non_field_children = {
3172                    let mut cursor = node.walk();
3173                    let mut result = ::std::vec::Vec::new();
3174                    if cursor.goto_first_child() {
3175                        loop {
3176                            if cursor.field_name().is_none()
3177                                && cursor.node().is_named()
3178                                && !cursor.node().is_extra()
3179                            {
3180                                result.push(cursor.node());
3181                            }
3182                            if !cursor.goto_next_sibling() {
3183                                break;
3184                            }
3185                        }
3186                    }
3187                    result
3188                };
3189                let child = if let Some(&c) = non_field_children.first() {
3190                    c
3191                } else {
3192                    let mut fallback_cursor = node.walk();
3193                    let mut fallback_child = None;
3194                    if fallback_cursor.goto_first_child() {
3195                        loop {
3196                            if fallback_cursor.field_name().is_none()
3197                                && !fallback_cursor.node().is_extra()
3198                            {
3199                                fallback_child = Some(fallback_cursor.node());
3200                                break;
3201                            }
3202                            if !fallback_cursor.goto_next_sibling() {
3203                                break;
3204                            }
3205                        }
3206                    }
3207                    fallback_child.ok_or_else(|| {
3208                        ::treesitter_types::ParseError::missing_field("children", node)
3209                    })?
3210                };
3211                <Identifier as ::treesitter_types::FromNode>::from_node(child, src)?
3212            },
3213        })
3214    }
3215}
3216impl ::treesitter_types::Spanned for NamespaceImport<'_> {
3217    fn span(&self) -> ::treesitter_types::Span {
3218        self.span
3219    }
3220}
3221#[derive(Debug, Clone)]
3222pub struct NewExpression<'tree> {
3223    pub span: ::treesitter_types::Span,
3224    pub arguments: ::core::option::Option<Arguments<'tree>>,
3225    pub constructor: NewExpressionConstructor<'tree>,
3226}
3227impl<'tree> ::treesitter_types::FromNode<'tree> for NewExpression<'tree> {
3228    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
3229    fn from_node(
3230        node: ::tree_sitter::Node<'tree>,
3231        src: &'tree [u8],
3232    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
3233        debug_assert_eq!(node.kind(), "new_expression");
3234        Ok(Self {
3235            span: ::treesitter_types::Span::from(node),
3236            arguments: match node.child_by_field_name("arguments") {
3237                Some(child) => Some(<Arguments as ::treesitter_types::FromNode>::from_node(
3238                    child, src,
3239                )?),
3240                None => None,
3241            },
3242            constructor: {
3243                let child = node.child_by_field_name("constructor").ok_or_else(|| {
3244                    ::treesitter_types::ParseError::missing_field("constructor", node)
3245                })?;
3246                <NewExpressionConstructor as ::treesitter_types::FromNode>::from_node(child, src)?
3247            },
3248        })
3249    }
3250}
3251impl ::treesitter_types::Spanned for NewExpression<'_> {
3252    fn span(&self) -> ::treesitter_types::Span {
3253        self.span
3254    }
3255}
3256#[derive(Debug, Clone)]
3257pub struct Object<'tree> {
3258    pub span: ::treesitter_types::Span,
3259    pub children: ::std::vec::Vec<ObjectChildren<'tree>>,
3260}
3261impl<'tree> ::treesitter_types::FromNode<'tree> for Object<'tree> {
3262    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
3263    fn from_node(
3264        node: ::tree_sitter::Node<'tree>,
3265        src: &'tree [u8],
3266    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
3267        debug_assert_eq!(node.kind(), "object");
3268        Ok(Self {
3269            span: ::treesitter_types::Span::from(node),
3270            children: {
3271                #[allow(clippy::suspicious_else_formatting)]
3272                let non_field_children = {
3273                    let mut cursor = node.walk();
3274                    let mut result = ::std::vec::Vec::new();
3275                    if cursor.goto_first_child() {
3276                        loop {
3277                            if cursor.field_name().is_none()
3278                                && cursor.node().is_named()
3279                                && !cursor.node().is_extra()
3280                            {
3281                                result.push(cursor.node());
3282                            }
3283                            if !cursor.goto_next_sibling() {
3284                                break;
3285                            }
3286                        }
3287                    }
3288                    result
3289                };
3290                let mut items = ::std::vec::Vec::new();
3291                for child in non_field_children {
3292                    items.push(<ObjectChildren as ::treesitter_types::FromNode>::from_node(
3293                        child, src,
3294                    )?);
3295                }
3296                items
3297            },
3298        })
3299    }
3300}
3301impl ::treesitter_types::Spanned for Object<'_> {
3302    fn span(&self) -> ::treesitter_types::Span {
3303        self.span
3304    }
3305}
3306#[derive(Debug, Clone)]
3307pub struct ObjectAssignmentPattern<'tree> {
3308    pub span: ::treesitter_types::Span,
3309    pub left: ObjectAssignmentPatternLeft<'tree>,
3310    pub right: Expression<'tree>,
3311}
3312impl<'tree> ::treesitter_types::FromNode<'tree> for ObjectAssignmentPattern<'tree> {
3313    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
3314    fn from_node(
3315        node: ::tree_sitter::Node<'tree>,
3316        src: &'tree [u8],
3317    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
3318        debug_assert_eq!(node.kind(), "object_assignment_pattern");
3319        Ok(Self {
3320            span: ::treesitter_types::Span::from(node),
3321            left: {
3322                let child = node
3323                    .child_by_field_name("left")
3324                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("left", node))?;
3325                <ObjectAssignmentPatternLeft as ::treesitter_types::FromNode>::from_node(
3326                    child, src,
3327                )?
3328            },
3329            right: {
3330                let child = node
3331                    .child_by_field_name("right")
3332                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("right", node))?;
3333                <Expression as ::treesitter_types::FromNode>::from_node(child, src)?
3334            },
3335        })
3336    }
3337}
3338impl ::treesitter_types::Spanned for ObjectAssignmentPattern<'_> {
3339    fn span(&self) -> ::treesitter_types::Span {
3340        self.span
3341    }
3342}
3343#[derive(Debug, Clone)]
3344pub struct ObjectPattern<'tree> {
3345    pub span: ::treesitter_types::Span,
3346    pub children: ::std::vec::Vec<ObjectPatternChildren<'tree>>,
3347}
3348impl<'tree> ::treesitter_types::FromNode<'tree> for ObjectPattern<'tree> {
3349    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
3350    fn from_node(
3351        node: ::tree_sitter::Node<'tree>,
3352        src: &'tree [u8],
3353    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
3354        debug_assert_eq!(node.kind(), "object_pattern");
3355        Ok(Self {
3356            span: ::treesitter_types::Span::from(node),
3357            children: {
3358                #[allow(clippy::suspicious_else_formatting)]
3359                let non_field_children = {
3360                    let mut cursor = node.walk();
3361                    let mut result = ::std::vec::Vec::new();
3362                    if cursor.goto_first_child() {
3363                        loop {
3364                            if cursor.field_name().is_none()
3365                                && cursor.node().is_named()
3366                                && !cursor.node().is_extra()
3367                            {
3368                                result.push(cursor.node());
3369                            }
3370                            if !cursor.goto_next_sibling() {
3371                                break;
3372                            }
3373                        }
3374                    }
3375                    result
3376                };
3377                let mut items = ::std::vec::Vec::new();
3378                for child in non_field_children {
3379                    items.push(
3380                        <ObjectPatternChildren as ::treesitter_types::FromNode>::from_node(
3381                            child, src,
3382                        )?,
3383                    );
3384                }
3385                items
3386            },
3387        })
3388    }
3389}
3390impl ::treesitter_types::Spanned for ObjectPattern<'_> {
3391    fn span(&self) -> ::treesitter_types::Span {
3392        self.span
3393    }
3394}
3395#[derive(Debug, Clone)]
3396pub struct Pair<'tree> {
3397    pub span: ::treesitter_types::Span,
3398    pub key: PairKey<'tree>,
3399    pub value: Expression<'tree>,
3400}
3401impl<'tree> ::treesitter_types::FromNode<'tree> for Pair<'tree> {
3402    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
3403    fn from_node(
3404        node: ::tree_sitter::Node<'tree>,
3405        src: &'tree [u8],
3406    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
3407        debug_assert_eq!(node.kind(), "pair");
3408        Ok(Self {
3409            span: ::treesitter_types::Span::from(node),
3410            key: {
3411                let child = node
3412                    .child_by_field_name("key")
3413                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("key", node))?;
3414                <PairKey as ::treesitter_types::FromNode>::from_node(child, src)?
3415            },
3416            value: {
3417                let child = node
3418                    .child_by_field_name("value")
3419                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("value", node))?;
3420                <Expression as ::treesitter_types::FromNode>::from_node(child, src)?
3421            },
3422        })
3423    }
3424}
3425impl ::treesitter_types::Spanned for Pair<'_> {
3426    fn span(&self) -> ::treesitter_types::Span {
3427        self.span
3428    }
3429}
3430#[derive(Debug, Clone)]
3431pub struct PairPattern<'tree> {
3432    pub span: ::treesitter_types::Span,
3433    pub key: PairPatternKey<'tree>,
3434    pub value: PairPatternValue<'tree>,
3435}
3436impl<'tree> ::treesitter_types::FromNode<'tree> for PairPattern<'tree> {
3437    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
3438    fn from_node(
3439        node: ::tree_sitter::Node<'tree>,
3440        src: &'tree [u8],
3441    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
3442        debug_assert_eq!(node.kind(), "pair_pattern");
3443        Ok(Self {
3444            span: ::treesitter_types::Span::from(node),
3445            key: {
3446                let child = node
3447                    .child_by_field_name("key")
3448                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("key", node))?;
3449                <PairPatternKey as ::treesitter_types::FromNode>::from_node(child, src)?
3450            },
3451            value: {
3452                let child = node
3453                    .child_by_field_name("value")
3454                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("value", node))?;
3455                <PairPatternValue as ::treesitter_types::FromNode>::from_node(child, src)?
3456            },
3457        })
3458    }
3459}
3460impl ::treesitter_types::Spanned for PairPattern<'_> {
3461    fn span(&self) -> ::treesitter_types::Span {
3462        self.span
3463    }
3464}
3465#[derive(Debug, Clone)]
3466pub struct ParenthesizedExpression<'tree> {
3467    pub span: ::treesitter_types::Span,
3468    pub children: ParenthesizedExpressionChildren<'tree>,
3469}
3470impl<'tree> ::treesitter_types::FromNode<'tree> for ParenthesizedExpression<'tree> {
3471    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
3472    fn from_node(
3473        node: ::tree_sitter::Node<'tree>,
3474        src: &'tree [u8],
3475    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
3476        debug_assert_eq!(node.kind(), "parenthesized_expression");
3477        Ok(Self {
3478            span: ::treesitter_types::Span::from(node),
3479            children: {
3480                #[allow(clippy::suspicious_else_formatting)]
3481                let non_field_children = {
3482                    let mut cursor = node.walk();
3483                    let mut result = ::std::vec::Vec::new();
3484                    if cursor.goto_first_child() {
3485                        loop {
3486                            if cursor.field_name().is_none()
3487                                && cursor.node().is_named()
3488                                && !cursor.node().is_extra()
3489                            {
3490                                result.push(cursor.node());
3491                            }
3492                            if !cursor.goto_next_sibling() {
3493                                break;
3494                            }
3495                        }
3496                    }
3497                    result
3498                };
3499                let child = if let Some(&c) = non_field_children.first() {
3500                    c
3501                } else {
3502                    let mut fallback_cursor = node.walk();
3503                    let mut fallback_child = None;
3504                    if fallback_cursor.goto_first_child() {
3505                        loop {
3506                            if fallback_cursor.field_name().is_none()
3507                                && !fallback_cursor.node().is_extra()
3508                            {
3509                                fallback_child = Some(fallback_cursor.node());
3510                                break;
3511                            }
3512                            if !fallback_cursor.goto_next_sibling() {
3513                                break;
3514                            }
3515                        }
3516                    }
3517                    fallback_child.ok_or_else(|| {
3518                        ::treesitter_types::ParseError::missing_field("children", node)
3519                    })?
3520                };
3521                <ParenthesizedExpressionChildren as ::treesitter_types::FromNode>::from_node(
3522                    child, src,
3523                )?
3524            },
3525        })
3526    }
3527}
3528impl ::treesitter_types::Spanned for ParenthesizedExpression<'_> {
3529    fn span(&self) -> ::treesitter_types::Span {
3530        self.span
3531    }
3532}
3533#[derive(Debug, Clone)]
3534pub struct Program<'tree> {
3535    pub span: ::treesitter_types::Span,
3536    pub children: ::std::vec::Vec<ProgramChildren<'tree>>,
3537}
3538impl<'tree> ::treesitter_types::FromNode<'tree> for Program<'tree> {
3539    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
3540    fn from_node(
3541        node: ::tree_sitter::Node<'tree>,
3542        src: &'tree [u8],
3543    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
3544        debug_assert_eq!(node.kind(), "program");
3545        Ok(Self {
3546            span: ::treesitter_types::Span::from(node),
3547            children: {
3548                #[allow(clippy::suspicious_else_formatting)]
3549                let non_field_children = {
3550                    let mut cursor = node.walk();
3551                    let mut result = ::std::vec::Vec::new();
3552                    if cursor.goto_first_child() {
3553                        loop {
3554                            if cursor.field_name().is_none()
3555                                && cursor.node().is_named()
3556                                && !cursor.node().is_extra()
3557                            {
3558                                result.push(cursor.node());
3559                            }
3560                            if !cursor.goto_next_sibling() {
3561                                break;
3562                            }
3563                        }
3564                    }
3565                    result
3566                };
3567                let mut items = ::std::vec::Vec::new();
3568                for child in non_field_children {
3569                    items.push(
3570                        <ProgramChildren as ::treesitter_types::FromNode>::from_node(child, src)?,
3571                    );
3572                }
3573                items
3574            },
3575        })
3576    }
3577}
3578impl ::treesitter_types::Spanned for Program<'_> {
3579    fn span(&self) -> ::treesitter_types::Span {
3580        self.span
3581    }
3582}
3583#[derive(Debug, Clone)]
3584pub struct Regex<'tree> {
3585    pub span: ::treesitter_types::Span,
3586    pub flags: ::core::option::Option<RegexFlags<'tree>>,
3587    pub pattern: RegexPattern<'tree>,
3588}
3589impl<'tree> ::treesitter_types::FromNode<'tree> for Regex<'tree> {
3590    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
3591    fn from_node(
3592        node: ::tree_sitter::Node<'tree>,
3593        src: &'tree [u8],
3594    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
3595        debug_assert_eq!(node.kind(), "regex");
3596        Ok(Self {
3597            span: ::treesitter_types::Span::from(node),
3598            flags: match node.child_by_field_name("flags") {
3599                Some(child) => Some(<RegexFlags as ::treesitter_types::FromNode>::from_node(
3600                    child, src,
3601                )?),
3602                None => None,
3603            },
3604            pattern: {
3605                let child = node.child_by_field_name("pattern").ok_or_else(|| {
3606                    ::treesitter_types::ParseError::missing_field("pattern", node)
3607                })?;
3608                <RegexPattern as ::treesitter_types::FromNode>::from_node(child, src)?
3609            },
3610        })
3611    }
3612}
3613impl ::treesitter_types::Spanned for Regex<'_> {
3614    fn span(&self) -> ::treesitter_types::Span {
3615        self.span
3616    }
3617}
3618#[derive(Debug, Clone)]
3619pub struct RestPattern<'tree> {
3620    pub span: ::treesitter_types::Span,
3621    pub children: RestPatternChildren<'tree>,
3622}
3623impl<'tree> ::treesitter_types::FromNode<'tree> for RestPattern<'tree> {
3624    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
3625    fn from_node(
3626        node: ::tree_sitter::Node<'tree>,
3627        src: &'tree [u8],
3628    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
3629        debug_assert_eq!(node.kind(), "rest_pattern");
3630        Ok(Self {
3631            span: ::treesitter_types::Span::from(node),
3632            children: {
3633                #[allow(clippy::suspicious_else_formatting)]
3634                let non_field_children = {
3635                    let mut cursor = node.walk();
3636                    let mut result = ::std::vec::Vec::new();
3637                    if cursor.goto_first_child() {
3638                        loop {
3639                            if cursor.field_name().is_none()
3640                                && cursor.node().is_named()
3641                                && !cursor.node().is_extra()
3642                            {
3643                                result.push(cursor.node());
3644                            }
3645                            if !cursor.goto_next_sibling() {
3646                                break;
3647                            }
3648                        }
3649                    }
3650                    result
3651                };
3652                let child = if let Some(&c) = non_field_children.first() {
3653                    c
3654                } else {
3655                    let mut fallback_cursor = node.walk();
3656                    let mut fallback_child = None;
3657                    if fallback_cursor.goto_first_child() {
3658                        loop {
3659                            if fallback_cursor.field_name().is_none()
3660                                && !fallback_cursor.node().is_extra()
3661                            {
3662                                fallback_child = Some(fallback_cursor.node());
3663                                break;
3664                            }
3665                            if !fallback_cursor.goto_next_sibling() {
3666                                break;
3667                            }
3668                        }
3669                    }
3670                    fallback_child.ok_or_else(|| {
3671                        ::treesitter_types::ParseError::missing_field("children", node)
3672                    })?
3673                };
3674                <RestPatternChildren as ::treesitter_types::FromNode>::from_node(child, src)?
3675            },
3676        })
3677    }
3678}
3679impl ::treesitter_types::Spanned for RestPattern<'_> {
3680    fn span(&self) -> ::treesitter_types::Span {
3681        self.span
3682    }
3683}
3684#[derive(Debug, Clone)]
3685pub struct ReturnStatement<'tree> {
3686    pub span: ::treesitter_types::Span,
3687    pub children: ::core::option::Option<ReturnStatementChildren<'tree>>,
3688}
3689impl<'tree> ::treesitter_types::FromNode<'tree> for ReturnStatement<'tree> {
3690    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
3691    fn from_node(
3692        node: ::tree_sitter::Node<'tree>,
3693        src: &'tree [u8],
3694    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
3695        debug_assert_eq!(node.kind(), "return_statement");
3696        Ok(Self {
3697            span: ::treesitter_types::Span::from(node),
3698            children: {
3699                #[allow(clippy::suspicious_else_formatting)]
3700                let non_field_children = {
3701                    let mut cursor = node.walk();
3702                    let mut result = ::std::vec::Vec::new();
3703                    if cursor.goto_first_child() {
3704                        loop {
3705                            if cursor.field_name().is_none()
3706                                && cursor.node().is_named()
3707                                && !cursor.node().is_extra()
3708                            {
3709                                result.push(cursor.node());
3710                            }
3711                            if !cursor.goto_next_sibling() {
3712                                break;
3713                            }
3714                        }
3715                    }
3716                    result
3717                };
3718                match non_field_children.first() {
3719                    Some(&child) => Some(
3720                        <ReturnStatementChildren as ::treesitter_types::FromNode>::from_node(
3721                            child, src,
3722                        )?,
3723                    ),
3724                    None => None,
3725                }
3726            },
3727        })
3728    }
3729}
3730impl ::treesitter_types::Spanned for ReturnStatement<'_> {
3731    fn span(&self) -> ::treesitter_types::Span {
3732        self.span
3733    }
3734}
3735#[derive(Debug, Clone)]
3736pub struct SequenceExpression<'tree> {
3737    pub span: ::treesitter_types::Span,
3738    pub children: ::std::vec::Vec<Expression<'tree>>,
3739}
3740impl<'tree> ::treesitter_types::FromNode<'tree> for SequenceExpression<'tree> {
3741    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
3742    fn from_node(
3743        node: ::tree_sitter::Node<'tree>,
3744        src: &'tree [u8],
3745    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
3746        debug_assert_eq!(node.kind(), "sequence_expression");
3747        Ok(Self {
3748            span: ::treesitter_types::Span::from(node),
3749            children: {
3750                #[allow(clippy::suspicious_else_formatting)]
3751                let non_field_children = {
3752                    let mut cursor = node.walk();
3753                    let mut result = ::std::vec::Vec::new();
3754                    if cursor.goto_first_child() {
3755                        loop {
3756                            if cursor.field_name().is_none()
3757                                && cursor.node().is_named()
3758                                && !cursor.node().is_extra()
3759                            {
3760                                result.push(cursor.node());
3761                            }
3762                            if !cursor.goto_next_sibling() {
3763                                break;
3764                            }
3765                        }
3766                    }
3767                    result
3768                };
3769                let mut items = ::std::vec::Vec::new();
3770                for child in non_field_children {
3771                    items.push(<Expression as ::treesitter_types::FromNode>::from_node(
3772                        child, src,
3773                    )?);
3774                }
3775                items
3776            },
3777        })
3778    }
3779}
3780impl ::treesitter_types::Spanned for SequenceExpression<'_> {
3781    fn span(&self) -> ::treesitter_types::Span {
3782        self.span
3783    }
3784}
3785#[derive(Debug, Clone)]
3786pub struct SpreadElement<'tree> {
3787    pub span: ::treesitter_types::Span,
3788    pub children: Expression<'tree>,
3789}
3790impl<'tree> ::treesitter_types::FromNode<'tree> for SpreadElement<'tree> {
3791    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
3792    fn from_node(
3793        node: ::tree_sitter::Node<'tree>,
3794        src: &'tree [u8],
3795    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
3796        debug_assert_eq!(node.kind(), "spread_element");
3797        Ok(Self {
3798            span: ::treesitter_types::Span::from(node),
3799            children: {
3800                #[allow(clippy::suspicious_else_formatting)]
3801                let non_field_children = {
3802                    let mut cursor = node.walk();
3803                    let mut result = ::std::vec::Vec::new();
3804                    if cursor.goto_first_child() {
3805                        loop {
3806                            if cursor.field_name().is_none()
3807                                && cursor.node().is_named()
3808                                && !cursor.node().is_extra()
3809                            {
3810                                result.push(cursor.node());
3811                            }
3812                            if !cursor.goto_next_sibling() {
3813                                break;
3814                            }
3815                        }
3816                    }
3817                    result
3818                };
3819                let child = if let Some(&c) = non_field_children.first() {
3820                    c
3821                } else {
3822                    let mut fallback_cursor = node.walk();
3823                    let mut fallback_child = None;
3824                    if fallback_cursor.goto_first_child() {
3825                        loop {
3826                            if fallback_cursor.field_name().is_none()
3827                                && !fallback_cursor.node().is_extra()
3828                            {
3829                                fallback_child = Some(fallback_cursor.node());
3830                                break;
3831                            }
3832                            if !fallback_cursor.goto_next_sibling() {
3833                                break;
3834                            }
3835                        }
3836                    }
3837                    fallback_child.ok_or_else(|| {
3838                        ::treesitter_types::ParseError::missing_field("children", node)
3839                    })?
3840                };
3841                <Expression as ::treesitter_types::FromNode>::from_node(child, src)?
3842            },
3843        })
3844    }
3845}
3846impl ::treesitter_types::Spanned for SpreadElement<'_> {
3847    fn span(&self) -> ::treesitter_types::Span {
3848        self.span
3849    }
3850}
3851#[derive(Debug, Clone)]
3852pub struct StatementBlock<'tree> {
3853    pub span: ::treesitter_types::Span,
3854    pub children: ::std::vec::Vec<Statement<'tree>>,
3855}
3856impl<'tree> ::treesitter_types::FromNode<'tree> for StatementBlock<'tree> {
3857    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
3858    fn from_node(
3859        node: ::tree_sitter::Node<'tree>,
3860        src: &'tree [u8],
3861    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
3862        debug_assert_eq!(node.kind(), "statement_block");
3863        Ok(Self {
3864            span: ::treesitter_types::Span::from(node),
3865            children: {
3866                #[allow(clippy::suspicious_else_formatting)]
3867                let non_field_children = {
3868                    let mut cursor = node.walk();
3869                    let mut result = ::std::vec::Vec::new();
3870                    if cursor.goto_first_child() {
3871                        loop {
3872                            if cursor.field_name().is_none()
3873                                && cursor.node().is_named()
3874                                && !cursor.node().is_extra()
3875                            {
3876                                result.push(cursor.node());
3877                            }
3878                            if !cursor.goto_next_sibling() {
3879                                break;
3880                            }
3881                        }
3882                    }
3883                    result
3884                };
3885                let mut items = ::std::vec::Vec::new();
3886                for child in non_field_children {
3887                    items.push(<Statement as ::treesitter_types::FromNode>::from_node(
3888                        child, src,
3889                    )?);
3890                }
3891                items
3892            },
3893        })
3894    }
3895}
3896impl ::treesitter_types::Spanned for StatementBlock<'_> {
3897    fn span(&self) -> ::treesitter_types::Span {
3898        self.span
3899    }
3900}
3901#[derive(Debug, Clone)]
3902pub struct String<'tree> {
3903    pub span: ::treesitter_types::Span,
3904    pub children: ::std::vec::Vec<StringChildren<'tree>>,
3905}
3906impl<'tree> ::treesitter_types::FromNode<'tree> for String<'tree> {
3907    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
3908    fn from_node(
3909        node: ::tree_sitter::Node<'tree>,
3910        src: &'tree [u8],
3911    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
3912        debug_assert_eq!(node.kind(), "string");
3913        Ok(Self {
3914            span: ::treesitter_types::Span::from(node),
3915            children: {
3916                #[allow(clippy::suspicious_else_formatting)]
3917                let non_field_children = {
3918                    let mut cursor = node.walk();
3919                    let mut result = ::std::vec::Vec::new();
3920                    if cursor.goto_first_child() {
3921                        loop {
3922                            if cursor.field_name().is_none()
3923                                && cursor.node().is_named()
3924                                && !cursor.node().is_extra()
3925                            {
3926                                result.push(cursor.node());
3927                            }
3928                            if !cursor.goto_next_sibling() {
3929                                break;
3930                            }
3931                        }
3932                    }
3933                    result
3934                };
3935                let mut items = ::std::vec::Vec::new();
3936                for child in non_field_children {
3937                    items.push(<StringChildren as ::treesitter_types::FromNode>::from_node(
3938                        child, src,
3939                    )?);
3940                }
3941                items
3942            },
3943        })
3944    }
3945}
3946impl ::treesitter_types::Spanned for String<'_> {
3947    fn span(&self) -> ::treesitter_types::Span {
3948        self.span
3949    }
3950}
3951#[derive(Debug, Clone)]
3952pub struct SubscriptExpression<'tree> {
3953    pub span: ::treesitter_types::Span,
3954    pub index: SubscriptExpressionIndex<'tree>,
3955    pub object: Expression<'tree>,
3956    pub optional_chain: ::core::option::Option<OptionalChain<'tree>>,
3957}
3958impl<'tree> ::treesitter_types::FromNode<'tree> for SubscriptExpression<'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(), "subscript_expression");
3965        Ok(Self {
3966            span: ::treesitter_types::Span::from(node),
3967            index: {
3968                let child = node
3969                    .child_by_field_name("index")
3970                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("index", node))?;
3971                <SubscriptExpressionIndex as ::treesitter_types::FromNode>::from_node(child, src)?
3972            },
3973            object: {
3974                let child = node
3975                    .child_by_field_name("object")
3976                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("object", node))?;
3977                <Expression as ::treesitter_types::FromNode>::from_node(child, src)?
3978            },
3979            optional_chain: match node.child_by_field_name("optional_chain") {
3980                Some(child) => Some(<OptionalChain as ::treesitter_types::FromNode>::from_node(
3981                    child, src,
3982                )?),
3983                None => None,
3984            },
3985        })
3986    }
3987}
3988impl ::treesitter_types::Spanned for SubscriptExpression<'_> {
3989    fn span(&self) -> ::treesitter_types::Span {
3990        self.span
3991    }
3992}
3993#[derive(Debug, Clone)]
3994pub struct SwitchBody<'tree> {
3995    pub span: ::treesitter_types::Span,
3996    pub children: ::std::vec::Vec<SwitchBodyChildren<'tree>>,
3997}
3998impl<'tree> ::treesitter_types::FromNode<'tree> for SwitchBody<'tree> {
3999    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
4000    fn from_node(
4001        node: ::tree_sitter::Node<'tree>,
4002        src: &'tree [u8],
4003    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
4004        debug_assert_eq!(node.kind(), "switch_body");
4005        Ok(Self {
4006            span: ::treesitter_types::Span::from(node),
4007            children: {
4008                #[allow(clippy::suspicious_else_formatting)]
4009                let non_field_children = {
4010                    let mut cursor = node.walk();
4011                    let mut result = ::std::vec::Vec::new();
4012                    if cursor.goto_first_child() {
4013                        loop {
4014                            if cursor.field_name().is_none()
4015                                && cursor.node().is_named()
4016                                && !cursor.node().is_extra()
4017                            {
4018                                result.push(cursor.node());
4019                            }
4020                            if !cursor.goto_next_sibling() {
4021                                break;
4022                            }
4023                        }
4024                    }
4025                    result
4026                };
4027                let mut items = ::std::vec::Vec::new();
4028                for child in non_field_children {
4029                    items.push(
4030                        <SwitchBodyChildren as ::treesitter_types::FromNode>::from_node(
4031                            child, src,
4032                        )?,
4033                    );
4034                }
4035                items
4036            },
4037        })
4038    }
4039}
4040impl ::treesitter_types::Spanned for SwitchBody<'_> {
4041    fn span(&self) -> ::treesitter_types::Span {
4042        self.span
4043    }
4044}
4045#[derive(Debug, Clone)]
4046pub struct SwitchCase<'tree> {
4047    pub span: ::treesitter_types::Span,
4048    pub body: ::std::vec::Vec<Statement<'tree>>,
4049    pub value: SwitchCaseValue<'tree>,
4050}
4051impl<'tree> ::treesitter_types::FromNode<'tree> for SwitchCase<'tree> {
4052    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
4053    fn from_node(
4054        node: ::tree_sitter::Node<'tree>,
4055        src: &'tree [u8],
4056    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
4057        debug_assert_eq!(node.kind(), "switch_case");
4058        Ok(Self {
4059            span: ::treesitter_types::Span::from(node),
4060            body: {
4061                let mut cursor = node.walk();
4062                let mut items = ::std::vec::Vec::new();
4063                for child in node.children_by_field_name("body", &mut cursor) {
4064                    items.push(<Statement as ::treesitter_types::FromNode>::from_node(
4065                        child, src,
4066                    )?);
4067                }
4068                items
4069            },
4070            value: {
4071                let child = node
4072                    .child_by_field_name("value")
4073                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("value", node))?;
4074                <SwitchCaseValue as ::treesitter_types::FromNode>::from_node(child, src)?
4075            },
4076        })
4077    }
4078}
4079impl ::treesitter_types::Spanned for SwitchCase<'_> {
4080    fn span(&self) -> ::treesitter_types::Span {
4081        self.span
4082    }
4083}
4084#[derive(Debug, Clone)]
4085pub struct SwitchDefault<'tree> {
4086    pub span: ::treesitter_types::Span,
4087    pub body: ::std::vec::Vec<Statement<'tree>>,
4088}
4089impl<'tree> ::treesitter_types::FromNode<'tree> for SwitchDefault<'tree> {
4090    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
4091    fn from_node(
4092        node: ::tree_sitter::Node<'tree>,
4093        src: &'tree [u8],
4094    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
4095        debug_assert_eq!(node.kind(), "switch_default");
4096        Ok(Self {
4097            span: ::treesitter_types::Span::from(node),
4098            body: {
4099                let mut cursor = node.walk();
4100                let mut items = ::std::vec::Vec::new();
4101                for child in node.children_by_field_name("body", &mut cursor) {
4102                    items.push(<Statement as ::treesitter_types::FromNode>::from_node(
4103                        child, src,
4104                    )?);
4105                }
4106                items
4107            },
4108        })
4109    }
4110}
4111impl ::treesitter_types::Spanned for SwitchDefault<'_> {
4112    fn span(&self) -> ::treesitter_types::Span {
4113        self.span
4114    }
4115}
4116#[derive(Debug, Clone)]
4117pub struct SwitchStatement<'tree> {
4118    pub span: ::treesitter_types::Span,
4119    pub body: SwitchBody<'tree>,
4120    pub value: ParenthesizedExpression<'tree>,
4121}
4122impl<'tree> ::treesitter_types::FromNode<'tree> for SwitchStatement<'tree> {
4123    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
4124    fn from_node(
4125        node: ::tree_sitter::Node<'tree>,
4126        src: &'tree [u8],
4127    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
4128        debug_assert_eq!(node.kind(), "switch_statement");
4129        Ok(Self {
4130            span: ::treesitter_types::Span::from(node),
4131            body: {
4132                let child = node
4133                    .child_by_field_name("body")
4134                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("body", node))?;
4135                <SwitchBody as ::treesitter_types::FromNode>::from_node(child, src)?
4136            },
4137            value: {
4138                let child = node
4139                    .child_by_field_name("value")
4140                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("value", node))?;
4141                <ParenthesizedExpression as ::treesitter_types::FromNode>::from_node(child, src)?
4142            },
4143        })
4144    }
4145}
4146impl ::treesitter_types::Spanned for SwitchStatement<'_> {
4147    fn span(&self) -> ::treesitter_types::Span {
4148        self.span
4149    }
4150}
4151#[derive(Debug, Clone)]
4152pub struct TemplateString<'tree> {
4153    pub span: ::treesitter_types::Span,
4154    pub children: ::std::vec::Vec<TemplateStringChildren<'tree>>,
4155}
4156impl<'tree> ::treesitter_types::FromNode<'tree> for TemplateString<'tree> {
4157    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
4158    fn from_node(
4159        node: ::tree_sitter::Node<'tree>,
4160        src: &'tree [u8],
4161    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
4162        debug_assert_eq!(node.kind(), "template_string");
4163        Ok(Self {
4164            span: ::treesitter_types::Span::from(node),
4165            children: {
4166                #[allow(clippy::suspicious_else_formatting)]
4167                let non_field_children = {
4168                    let mut cursor = node.walk();
4169                    let mut result = ::std::vec::Vec::new();
4170                    if cursor.goto_first_child() {
4171                        loop {
4172                            if cursor.field_name().is_none()
4173                                && cursor.node().is_named()
4174                                && !cursor.node().is_extra()
4175                            {
4176                                result.push(cursor.node());
4177                            }
4178                            if !cursor.goto_next_sibling() {
4179                                break;
4180                            }
4181                        }
4182                    }
4183                    result
4184                };
4185                let mut items = ::std::vec::Vec::new();
4186                for child in non_field_children {
4187                    items.push(
4188                        <TemplateStringChildren as ::treesitter_types::FromNode>::from_node(
4189                            child, src,
4190                        )?,
4191                    );
4192                }
4193                items
4194            },
4195        })
4196    }
4197}
4198impl ::treesitter_types::Spanned for TemplateString<'_> {
4199    fn span(&self) -> ::treesitter_types::Span {
4200        self.span
4201    }
4202}
4203#[derive(Debug, Clone)]
4204pub struct TemplateSubstitution<'tree> {
4205    pub span: ::treesitter_types::Span,
4206    pub children: TemplateSubstitutionChildren<'tree>,
4207}
4208impl<'tree> ::treesitter_types::FromNode<'tree> for TemplateSubstitution<'tree> {
4209    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
4210    fn from_node(
4211        node: ::tree_sitter::Node<'tree>,
4212        src: &'tree [u8],
4213    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
4214        debug_assert_eq!(node.kind(), "template_substitution");
4215        Ok(Self {
4216            span: ::treesitter_types::Span::from(node),
4217            children: {
4218                #[allow(clippy::suspicious_else_formatting)]
4219                let non_field_children = {
4220                    let mut cursor = node.walk();
4221                    let mut result = ::std::vec::Vec::new();
4222                    if cursor.goto_first_child() {
4223                        loop {
4224                            if cursor.field_name().is_none()
4225                                && cursor.node().is_named()
4226                                && !cursor.node().is_extra()
4227                            {
4228                                result.push(cursor.node());
4229                            }
4230                            if !cursor.goto_next_sibling() {
4231                                break;
4232                            }
4233                        }
4234                    }
4235                    result
4236                };
4237                let child = if let Some(&c) = non_field_children.first() {
4238                    c
4239                } else {
4240                    let mut fallback_cursor = node.walk();
4241                    let mut fallback_child = None;
4242                    if fallback_cursor.goto_first_child() {
4243                        loop {
4244                            if fallback_cursor.field_name().is_none()
4245                                && !fallback_cursor.node().is_extra()
4246                            {
4247                                fallback_child = Some(fallback_cursor.node());
4248                                break;
4249                            }
4250                            if !fallback_cursor.goto_next_sibling() {
4251                                break;
4252                            }
4253                        }
4254                    }
4255                    fallback_child.ok_or_else(|| {
4256                        ::treesitter_types::ParseError::missing_field("children", node)
4257                    })?
4258                };
4259                <TemplateSubstitutionChildren as ::treesitter_types::FromNode>::from_node(
4260                    child, src,
4261                )?
4262            },
4263        })
4264    }
4265}
4266impl ::treesitter_types::Spanned for TemplateSubstitution<'_> {
4267    fn span(&self) -> ::treesitter_types::Span {
4268        self.span
4269    }
4270}
4271#[derive(Debug, Clone)]
4272pub struct TernaryExpression<'tree> {
4273    pub span: ::treesitter_types::Span,
4274    pub alternative: Expression<'tree>,
4275    pub condition: Expression<'tree>,
4276    pub consequence: Expression<'tree>,
4277}
4278impl<'tree> ::treesitter_types::FromNode<'tree> for TernaryExpression<'tree> {
4279    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
4280    fn from_node(
4281        node: ::tree_sitter::Node<'tree>,
4282        src: &'tree [u8],
4283    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
4284        debug_assert_eq!(node.kind(), "ternary_expression");
4285        Ok(Self {
4286            span: ::treesitter_types::Span::from(node),
4287            alternative: {
4288                let child = node.child_by_field_name("alternative").ok_or_else(|| {
4289                    ::treesitter_types::ParseError::missing_field("alternative", node)
4290                })?;
4291                <Expression as ::treesitter_types::FromNode>::from_node(child, src)?
4292            },
4293            condition: {
4294                let child = node.child_by_field_name("condition").ok_or_else(|| {
4295                    ::treesitter_types::ParseError::missing_field("condition", node)
4296                })?;
4297                <Expression as ::treesitter_types::FromNode>::from_node(child, src)?
4298            },
4299            consequence: {
4300                let child = node.child_by_field_name("consequence").ok_or_else(|| {
4301                    ::treesitter_types::ParseError::missing_field("consequence", node)
4302                })?;
4303                <Expression as ::treesitter_types::FromNode>::from_node(child, src)?
4304            },
4305        })
4306    }
4307}
4308impl ::treesitter_types::Spanned for TernaryExpression<'_> {
4309    fn span(&self) -> ::treesitter_types::Span {
4310        self.span
4311    }
4312}
4313#[derive(Debug, Clone)]
4314pub struct ThrowStatement<'tree> {
4315    pub span: ::treesitter_types::Span,
4316    pub children: ThrowStatementChildren<'tree>,
4317}
4318impl<'tree> ::treesitter_types::FromNode<'tree> for ThrowStatement<'tree> {
4319    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
4320    fn from_node(
4321        node: ::tree_sitter::Node<'tree>,
4322        src: &'tree [u8],
4323    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
4324        debug_assert_eq!(node.kind(), "throw_statement");
4325        Ok(Self {
4326            span: ::treesitter_types::Span::from(node),
4327            children: {
4328                #[allow(clippy::suspicious_else_formatting)]
4329                let non_field_children = {
4330                    let mut cursor = node.walk();
4331                    let mut result = ::std::vec::Vec::new();
4332                    if cursor.goto_first_child() {
4333                        loop {
4334                            if cursor.field_name().is_none()
4335                                && cursor.node().is_named()
4336                                && !cursor.node().is_extra()
4337                            {
4338                                result.push(cursor.node());
4339                            }
4340                            if !cursor.goto_next_sibling() {
4341                                break;
4342                            }
4343                        }
4344                    }
4345                    result
4346                };
4347                let child = if let Some(&c) = non_field_children.first() {
4348                    c
4349                } else {
4350                    let mut fallback_cursor = node.walk();
4351                    let mut fallback_child = None;
4352                    if fallback_cursor.goto_first_child() {
4353                        loop {
4354                            if fallback_cursor.field_name().is_none()
4355                                && !fallback_cursor.node().is_extra()
4356                            {
4357                                fallback_child = Some(fallback_cursor.node());
4358                                break;
4359                            }
4360                            if !fallback_cursor.goto_next_sibling() {
4361                                break;
4362                            }
4363                        }
4364                    }
4365                    fallback_child.ok_or_else(|| {
4366                        ::treesitter_types::ParseError::missing_field("children", node)
4367                    })?
4368                };
4369                <ThrowStatementChildren as ::treesitter_types::FromNode>::from_node(child, src)?
4370            },
4371        })
4372    }
4373}
4374impl ::treesitter_types::Spanned for ThrowStatement<'_> {
4375    fn span(&self) -> ::treesitter_types::Span {
4376        self.span
4377    }
4378}
4379#[derive(Debug, Clone)]
4380pub struct TryStatement<'tree> {
4381    pub span: ::treesitter_types::Span,
4382    pub body: StatementBlock<'tree>,
4383    pub finalizer: ::core::option::Option<FinallyClause<'tree>>,
4384    pub handler: ::core::option::Option<CatchClause<'tree>>,
4385}
4386impl<'tree> ::treesitter_types::FromNode<'tree> for TryStatement<'tree> {
4387    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
4388    fn from_node(
4389        node: ::tree_sitter::Node<'tree>,
4390        src: &'tree [u8],
4391    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
4392        debug_assert_eq!(node.kind(), "try_statement");
4393        Ok(Self {
4394            span: ::treesitter_types::Span::from(node),
4395            body: {
4396                let child = node
4397                    .child_by_field_name("body")
4398                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("body", node))?;
4399                <StatementBlock as ::treesitter_types::FromNode>::from_node(child, src)?
4400            },
4401            finalizer: match node.child_by_field_name("finalizer") {
4402                Some(child) => Some(<FinallyClause as ::treesitter_types::FromNode>::from_node(
4403                    child, src,
4404                )?),
4405                None => None,
4406            },
4407            handler: match node.child_by_field_name("handler") {
4408                Some(child) => Some(<CatchClause as ::treesitter_types::FromNode>::from_node(
4409                    child, src,
4410                )?),
4411                None => None,
4412            },
4413        })
4414    }
4415}
4416impl ::treesitter_types::Spanned for TryStatement<'_> {
4417    fn span(&self) -> ::treesitter_types::Span {
4418        self.span
4419    }
4420}
4421#[derive(Debug, Clone)]
4422pub struct UnaryExpression<'tree> {
4423    pub span: ::treesitter_types::Span,
4424    pub argument: Expression<'tree>,
4425    pub operator: UnaryExpressionOperator,
4426}
4427impl<'tree> ::treesitter_types::FromNode<'tree> for UnaryExpression<'tree> {
4428    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
4429    fn from_node(
4430        node: ::tree_sitter::Node<'tree>,
4431        src: &'tree [u8],
4432    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
4433        debug_assert_eq!(node.kind(), "unary_expression");
4434        Ok(Self {
4435            span: ::treesitter_types::Span::from(node),
4436            argument: {
4437                let child = node.child_by_field_name("argument").ok_or_else(|| {
4438                    ::treesitter_types::ParseError::missing_field("argument", node)
4439                })?;
4440                <Expression as ::treesitter_types::FromNode>::from_node(child, src)?
4441            },
4442            operator: {
4443                let child = node.child_by_field_name("operator").ok_or_else(|| {
4444                    ::treesitter_types::ParseError::missing_field("operator", node)
4445                })?;
4446                <UnaryExpressionOperator as ::treesitter_types::FromNode>::from_node(child, src)?
4447            },
4448        })
4449    }
4450}
4451impl ::treesitter_types::Spanned for UnaryExpression<'_> {
4452    fn span(&self) -> ::treesitter_types::Span {
4453        self.span
4454    }
4455}
4456#[derive(Debug, Clone)]
4457pub struct UpdateExpression<'tree> {
4458    pub span: ::treesitter_types::Span,
4459    pub argument: Expression<'tree>,
4460    pub operator: UpdateExpressionOperator,
4461}
4462impl<'tree> ::treesitter_types::FromNode<'tree> for UpdateExpression<'tree> {
4463    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
4464    fn from_node(
4465        node: ::tree_sitter::Node<'tree>,
4466        src: &'tree [u8],
4467    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
4468        debug_assert_eq!(node.kind(), "update_expression");
4469        Ok(Self {
4470            span: ::treesitter_types::Span::from(node),
4471            argument: {
4472                let child = node.child_by_field_name("argument").ok_or_else(|| {
4473                    ::treesitter_types::ParseError::missing_field("argument", node)
4474                })?;
4475                <Expression as ::treesitter_types::FromNode>::from_node(child, src)?
4476            },
4477            operator: {
4478                let child = node.child_by_field_name("operator").ok_or_else(|| {
4479                    ::treesitter_types::ParseError::missing_field("operator", node)
4480                })?;
4481                <UpdateExpressionOperator as ::treesitter_types::FromNode>::from_node(child, src)?
4482            },
4483        })
4484    }
4485}
4486impl ::treesitter_types::Spanned for UpdateExpression<'_> {
4487    fn span(&self) -> ::treesitter_types::Span {
4488        self.span
4489    }
4490}
4491#[derive(Debug, Clone)]
4492pub struct UsingDeclaration<'tree> {
4493    pub span: ::treesitter_types::Span,
4494    pub kind: ::std::vec::Vec<UsingDeclarationKind>,
4495    pub children: ::std::vec::Vec<VariableDeclarator<'tree>>,
4496}
4497impl<'tree> ::treesitter_types::FromNode<'tree> for UsingDeclaration<'tree> {
4498    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
4499    fn from_node(
4500        node: ::tree_sitter::Node<'tree>,
4501        src: &'tree [u8],
4502    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
4503        debug_assert_eq!(node.kind(), "using_declaration");
4504        Ok(Self {
4505            span: ::treesitter_types::Span::from(node),
4506            kind: {
4507                let mut cursor = node.walk();
4508                let mut items = ::std::vec::Vec::new();
4509                for child in node.children_by_field_name("kind", &mut cursor) {
4510                    items.push(
4511                        <UsingDeclarationKind as ::treesitter_types::FromNode>::from_node(
4512                            child, src,
4513                        )?,
4514                    );
4515                }
4516                items
4517            },
4518            children: {
4519                #[allow(clippy::suspicious_else_formatting)]
4520                let non_field_children = {
4521                    let mut cursor = node.walk();
4522                    let mut result = ::std::vec::Vec::new();
4523                    if cursor.goto_first_child() {
4524                        loop {
4525                            if cursor.field_name().is_none()
4526                                && cursor.node().is_named()
4527                                && !cursor.node().is_extra()
4528                            {
4529                                result.push(cursor.node());
4530                            }
4531                            if !cursor.goto_next_sibling() {
4532                                break;
4533                            }
4534                        }
4535                    }
4536                    result
4537                };
4538                let mut items = ::std::vec::Vec::new();
4539                for child in non_field_children {
4540                    items.push(
4541                        <VariableDeclarator as ::treesitter_types::FromNode>::from_node(
4542                            child, src,
4543                        )?,
4544                    );
4545                }
4546                items
4547            },
4548        })
4549    }
4550}
4551impl ::treesitter_types::Spanned for UsingDeclaration<'_> {
4552    fn span(&self) -> ::treesitter_types::Span {
4553        self.span
4554    }
4555}
4556#[derive(Debug, Clone)]
4557pub struct VariableDeclaration<'tree> {
4558    pub span: ::treesitter_types::Span,
4559    pub children: ::std::vec::Vec<VariableDeclarator<'tree>>,
4560}
4561impl<'tree> ::treesitter_types::FromNode<'tree> for VariableDeclaration<'tree> {
4562    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
4563    fn from_node(
4564        node: ::tree_sitter::Node<'tree>,
4565        src: &'tree [u8],
4566    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
4567        debug_assert_eq!(node.kind(), "variable_declaration");
4568        Ok(Self {
4569            span: ::treesitter_types::Span::from(node),
4570            children: {
4571                #[allow(clippy::suspicious_else_formatting)]
4572                let non_field_children = {
4573                    let mut cursor = node.walk();
4574                    let mut result = ::std::vec::Vec::new();
4575                    if cursor.goto_first_child() {
4576                        loop {
4577                            if cursor.field_name().is_none()
4578                                && cursor.node().is_named()
4579                                && !cursor.node().is_extra()
4580                            {
4581                                result.push(cursor.node());
4582                            }
4583                            if !cursor.goto_next_sibling() {
4584                                break;
4585                            }
4586                        }
4587                    }
4588                    result
4589                };
4590                let mut items = ::std::vec::Vec::new();
4591                for child in non_field_children {
4592                    items.push(
4593                        <VariableDeclarator as ::treesitter_types::FromNode>::from_node(
4594                            child, src,
4595                        )?,
4596                    );
4597                }
4598                items
4599            },
4600        })
4601    }
4602}
4603impl ::treesitter_types::Spanned for VariableDeclaration<'_> {
4604    fn span(&self) -> ::treesitter_types::Span {
4605        self.span
4606    }
4607}
4608#[derive(Debug, Clone)]
4609pub struct VariableDeclarator<'tree> {
4610    pub span: ::treesitter_types::Span,
4611    pub name: VariableDeclaratorName<'tree>,
4612    pub value: ::core::option::Option<Expression<'tree>>,
4613}
4614impl<'tree> ::treesitter_types::FromNode<'tree> for VariableDeclarator<'tree> {
4615    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
4616    fn from_node(
4617        node: ::tree_sitter::Node<'tree>,
4618        src: &'tree [u8],
4619    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
4620        debug_assert_eq!(node.kind(), "variable_declarator");
4621        Ok(Self {
4622            span: ::treesitter_types::Span::from(node),
4623            name: {
4624                let child = node
4625                    .child_by_field_name("name")
4626                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("name", node))?;
4627                <VariableDeclaratorName as ::treesitter_types::FromNode>::from_node(child, src)?
4628            },
4629            value: match node.child_by_field_name("value") {
4630                Some(child) => Some(<Expression as ::treesitter_types::FromNode>::from_node(
4631                    child, src,
4632                )?),
4633                None => None,
4634            },
4635        })
4636    }
4637}
4638impl ::treesitter_types::Spanned for VariableDeclarator<'_> {
4639    fn span(&self) -> ::treesitter_types::Span {
4640        self.span
4641    }
4642}
4643#[derive(Debug, Clone)]
4644pub struct WhileStatement<'tree> {
4645    pub span: ::treesitter_types::Span,
4646    pub body: Statement<'tree>,
4647    pub condition: ParenthesizedExpression<'tree>,
4648}
4649impl<'tree> ::treesitter_types::FromNode<'tree> for WhileStatement<'tree> {
4650    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
4651    fn from_node(
4652        node: ::tree_sitter::Node<'tree>,
4653        src: &'tree [u8],
4654    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
4655        debug_assert_eq!(node.kind(), "while_statement");
4656        Ok(Self {
4657            span: ::treesitter_types::Span::from(node),
4658            body: {
4659                let child = node
4660                    .child_by_field_name("body")
4661                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("body", node))?;
4662                <Statement as ::treesitter_types::FromNode>::from_node(child, src)?
4663            },
4664            condition: {
4665                let child = node.child_by_field_name("condition").ok_or_else(|| {
4666                    ::treesitter_types::ParseError::missing_field("condition", node)
4667                })?;
4668                <ParenthesizedExpression as ::treesitter_types::FromNode>::from_node(child, src)?
4669            },
4670        })
4671    }
4672}
4673impl ::treesitter_types::Spanned for WhileStatement<'_> {
4674    fn span(&self) -> ::treesitter_types::Span {
4675        self.span
4676    }
4677}
4678#[derive(Debug, Clone)]
4679pub struct WithStatement<'tree> {
4680    pub span: ::treesitter_types::Span,
4681    pub body: Statement<'tree>,
4682    pub object: ParenthesizedExpression<'tree>,
4683}
4684impl<'tree> ::treesitter_types::FromNode<'tree> for WithStatement<'tree> {
4685    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
4686    fn from_node(
4687        node: ::tree_sitter::Node<'tree>,
4688        src: &'tree [u8],
4689    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
4690        debug_assert_eq!(node.kind(), "with_statement");
4691        Ok(Self {
4692            span: ::treesitter_types::Span::from(node),
4693            body: {
4694                let child = node
4695                    .child_by_field_name("body")
4696                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("body", node))?;
4697                <Statement as ::treesitter_types::FromNode>::from_node(child, src)?
4698            },
4699            object: {
4700                let child = node
4701                    .child_by_field_name("object")
4702                    .ok_or_else(|| ::treesitter_types::ParseError::missing_field("object", node))?;
4703                <ParenthesizedExpression as ::treesitter_types::FromNode>::from_node(child, src)?
4704            },
4705        })
4706    }
4707}
4708impl ::treesitter_types::Spanned for WithStatement<'_> {
4709    fn span(&self) -> ::treesitter_types::Span {
4710        self.span
4711    }
4712}
4713#[derive(Debug, Clone)]
4714pub struct YieldExpression<'tree> {
4715    pub span: ::treesitter_types::Span,
4716    pub children: ::core::option::Option<Expression<'tree>>,
4717}
4718impl<'tree> ::treesitter_types::FromNode<'tree> for YieldExpression<'tree> {
4719    #[allow(clippy::match_single_binding, clippy::suspicious_else_formatting)]
4720    fn from_node(
4721        node: ::tree_sitter::Node<'tree>,
4722        src: &'tree [u8],
4723    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
4724        debug_assert_eq!(node.kind(), "yield_expression");
4725        Ok(Self {
4726            span: ::treesitter_types::Span::from(node),
4727            children: {
4728                #[allow(clippy::suspicious_else_formatting)]
4729                let non_field_children = {
4730                    let mut cursor = node.walk();
4731                    let mut result = ::std::vec::Vec::new();
4732                    if cursor.goto_first_child() {
4733                        loop {
4734                            if cursor.field_name().is_none()
4735                                && cursor.node().is_named()
4736                                && !cursor.node().is_extra()
4737                            {
4738                                result.push(cursor.node());
4739                            }
4740                            if !cursor.goto_next_sibling() {
4741                                break;
4742                            }
4743                        }
4744                    }
4745                    result
4746                };
4747                match non_field_children.first() {
4748                    Some(&child) => Some(<Expression as ::treesitter_types::FromNode>::from_node(
4749                        child, src,
4750                    )?),
4751                    None => None,
4752                }
4753            },
4754        })
4755    }
4756}
4757impl ::treesitter_types::Spanned for YieldExpression<'_> {
4758    fn span(&self) -> ::treesitter_types::Span {
4759        self.span
4760    }
4761}
4762#[derive(Debug, Clone)]
4763pub struct Comment<'tree> {
4764    pub span: ::treesitter_types::Span,
4765    text: &'tree str,
4766}
4767impl<'tree> ::treesitter_types::FromNode<'tree> for Comment<'tree> {
4768    fn from_node(
4769        node: ::tree_sitter::Node<'tree>,
4770        src: &'tree [u8],
4771    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
4772        debug_assert_eq!(node.kind(), "comment");
4773        Ok(Self {
4774            span: ::treesitter_types::Span::from(node),
4775            text: node.utf8_text(src)?,
4776        })
4777    }
4778}
4779impl<'tree> ::treesitter_types::LeafNode<'tree> for Comment<'tree> {
4780    fn text(&self) -> &'tree str {
4781        self.text
4782    }
4783}
4784impl ::treesitter_types::Spanned for Comment<'_> {
4785    fn span(&self) -> ::treesitter_types::Span {
4786        self.span
4787    }
4788}
4789#[derive(Debug, Clone)]
4790pub struct EscapeSequence<'tree> {
4791    pub span: ::treesitter_types::Span,
4792    text: &'tree str,
4793}
4794impl<'tree> ::treesitter_types::FromNode<'tree> for EscapeSequence<'tree> {
4795    fn from_node(
4796        node: ::tree_sitter::Node<'tree>,
4797        src: &'tree [u8],
4798    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
4799        debug_assert_eq!(node.kind(), "escape_sequence");
4800        Ok(Self {
4801            span: ::treesitter_types::Span::from(node),
4802            text: node.utf8_text(src)?,
4803        })
4804    }
4805}
4806impl<'tree> ::treesitter_types::LeafNode<'tree> for EscapeSequence<'tree> {
4807    fn text(&self) -> &'tree str {
4808        self.text
4809    }
4810}
4811impl ::treesitter_types::Spanned for EscapeSequence<'_> {
4812    fn span(&self) -> ::treesitter_types::Span {
4813        self.span
4814    }
4815}
4816#[derive(Debug, Clone)]
4817pub struct False<'tree> {
4818    pub span: ::treesitter_types::Span,
4819    text: &'tree str,
4820}
4821impl<'tree> ::treesitter_types::FromNode<'tree> for False<'tree> {
4822    fn from_node(
4823        node: ::tree_sitter::Node<'tree>,
4824        src: &'tree [u8],
4825    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
4826        debug_assert_eq!(node.kind(), "false");
4827        Ok(Self {
4828            span: ::treesitter_types::Span::from(node),
4829            text: node.utf8_text(src)?,
4830        })
4831    }
4832}
4833impl<'tree> ::treesitter_types::LeafNode<'tree> for False<'tree> {
4834    fn text(&self) -> &'tree str {
4835        self.text
4836    }
4837}
4838impl ::treesitter_types::Spanned for False<'_> {
4839    fn span(&self) -> ::treesitter_types::Span {
4840        self.span
4841    }
4842}
4843#[derive(Debug, Clone)]
4844pub struct HashBangLine<'tree> {
4845    pub span: ::treesitter_types::Span,
4846    text: &'tree str,
4847}
4848impl<'tree> ::treesitter_types::FromNode<'tree> for HashBangLine<'tree> {
4849    fn from_node(
4850        node: ::tree_sitter::Node<'tree>,
4851        src: &'tree [u8],
4852    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
4853        debug_assert_eq!(node.kind(), "hash_bang_line");
4854        Ok(Self {
4855            span: ::treesitter_types::Span::from(node),
4856            text: node.utf8_text(src)?,
4857        })
4858    }
4859}
4860impl<'tree> ::treesitter_types::LeafNode<'tree> for HashBangLine<'tree> {
4861    fn text(&self) -> &'tree str {
4862        self.text
4863    }
4864}
4865impl ::treesitter_types::Spanned for HashBangLine<'_> {
4866    fn span(&self) -> ::treesitter_types::Span {
4867        self.span
4868    }
4869}
4870#[derive(Debug, Clone)]
4871pub struct HtmlCharacterReference<'tree> {
4872    pub span: ::treesitter_types::Span,
4873    text: &'tree str,
4874}
4875impl<'tree> ::treesitter_types::FromNode<'tree> for HtmlCharacterReference<'tree> {
4876    fn from_node(
4877        node: ::tree_sitter::Node<'tree>,
4878        src: &'tree [u8],
4879    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
4880        debug_assert_eq!(node.kind(), "html_character_reference");
4881        Ok(Self {
4882            span: ::treesitter_types::Span::from(node),
4883            text: node.utf8_text(src)?,
4884        })
4885    }
4886}
4887impl<'tree> ::treesitter_types::LeafNode<'tree> for HtmlCharacterReference<'tree> {
4888    fn text(&self) -> &'tree str {
4889        self.text
4890    }
4891}
4892impl ::treesitter_types::Spanned for HtmlCharacterReference<'_> {
4893    fn span(&self) -> ::treesitter_types::Span {
4894        self.span
4895    }
4896}
4897#[derive(Debug, Clone)]
4898pub struct HtmlComment<'tree> {
4899    pub span: ::treesitter_types::Span,
4900    text: &'tree str,
4901}
4902impl<'tree> ::treesitter_types::FromNode<'tree> for HtmlComment<'tree> {
4903    fn from_node(
4904        node: ::tree_sitter::Node<'tree>,
4905        src: &'tree [u8],
4906    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
4907        debug_assert_eq!(node.kind(), "html_comment");
4908        Ok(Self {
4909            span: ::treesitter_types::Span::from(node),
4910            text: node.utf8_text(src)?,
4911        })
4912    }
4913}
4914impl<'tree> ::treesitter_types::LeafNode<'tree> for HtmlComment<'tree> {
4915    fn text(&self) -> &'tree str {
4916        self.text
4917    }
4918}
4919impl ::treesitter_types::Spanned for HtmlComment<'_> {
4920    fn span(&self) -> ::treesitter_types::Span {
4921        self.span
4922    }
4923}
4924#[derive(Debug, Clone)]
4925pub struct Identifier<'tree> {
4926    pub span: ::treesitter_types::Span,
4927    text: &'tree str,
4928}
4929impl<'tree> ::treesitter_types::FromNode<'tree> for Identifier<'tree> {
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(), "identifier");
4935        Ok(Self {
4936            span: ::treesitter_types::Span::from(node),
4937            text: node.utf8_text(src)?,
4938        })
4939    }
4940}
4941impl<'tree> ::treesitter_types::LeafNode<'tree> for Identifier<'tree> {
4942    fn text(&self) -> &'tree str {
4943        self.text
4944    }
4945}
4946impl ::treesitter_types::Spanned for Identifier<'_> {
4947    fn span(&self) -> ::treesitter_types::Span {
4948        self.span
4949    }
4950}
4951#[derive(Debug, Clone)]
4952pub struct JsxText<'tree> {
4953    pub span: ::treesitter_types::Span,
4954    text: &'tree str,
4955}
4956impl<'tree> ::treesitter_types::FromNode<'tree> for JsxText<'tree> {
4957    fn from_node(
4958        node: ::tree_sitter::Node<'tree>,
4959        src: &'tree [u8],
4960    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
4961        debug_assert_eq!(node.kind(), "jsx_text");
4962        Ok(Self {
4963            span: ::treesitter_types::Span::from(node),
4964            text: node.utf8_text(src)?,
4965        })
4966    }
4967}
4968impl<'tree> ::treesitter_types::LeafNode<'tree> for JsxText<'tree> {
4969    fn text(&self) -> &'tree str {
4970        self.text
4971    }
4972}
4973impl ::treesitter_types::Spanned for JsxText<'_> {
4974    fn span(&self) -> ::treesitter_types::Span {
4975        self.span
4976    }
4977}
4978#[derive(Debug, Clone)]
4979pub struct Null<'tree> {
4980    pub span: ::treesitter_types::Span,
4981    text: &'tree str,
4982}
4983impl<'tree> ::treesitter_types::FromNode<'tree> for Null<'tree> {
4984    fn from_node(
4985        node: ::tree_sitter::Node<'tree>,
4986        src: &'tree [u8],
4987    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
4988        debug_assert_eq!(node.kind(), "null");
4989        Ok(Self {
4990            span: ::treesitter_types::Span::from(node),
4991            text: node.utf8_text(src)?,
4992        })
4993    }
4994}
4995impl<'tree> ::treesitter_types::LeafNode<'tree> for Null<'tree> {
4996    fn text(&self) -> &'tree str {
4997        self.text
4998    }
4999}
5000impl ::treesitter_types::Spanned for Null<'_> {
5001    fn span(&self) -> ::treesitter_types::Span {
5002        self.span
5003    }
5004}
5005#[derive(Debug, Clone)]
5006pub struct Number<'tree> {
5007    pub span: ::treesitter_types::Span,
5008    text: &'tree str,
5009}
5010impl<'tree> ::treesitter_types::FromNode<'tree> for Number<'tree> {
5011    fn from_node(
5012        node: ::tree_sitter::Node<'tree>,
5013        src: &'tree [u8],
5014    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
5015        debug_assert_eq!(node.kind(), "number");
5016        Ok(Self {
5017            span: ::treesitter_types::Span::from(node),
5018            text: node.utf8_text(src)?,
5019        })
5020    }
5021}
5022impl<'tree> ::treesitter_types::LeafNode<'tree> for Number<'tree> {
5023    fn text(&self) -> &'tree str {
5024        self.text
5025    }
5026}
5027impl ::treesitter_types::Spanned for Number<'_> {
5028    fn span(&self) -> ::treesitter_types::Span {
5029        self.span
5030    }
5031}
5032#[derive(Debug, Clone)]
5033pub struct OptionalChain<'tree> {
5034    pub span: ::treesitter_types::Span,
5035    text: &'tree str,
5036}
5037impl<'tree> ::treesitter_types::FromNode<'tree> for OptionalChain<'tree> {
5038    fn from_node(
5039        node: ::tree_sitter::Node<'tree>,
5040        src: &'tree [u8],
5041    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
5042        debug_assert_eq!(node.kind(), "optional_chain");
5043        Ok(Self {
5044            span: ::treesitter_types::Span::from(node),
5045            text: node.utf8_text(src)?,
5046        })
5047    }
5048}
5049impl<'tree> ::treesitter_types::LeafNode<'tree> for OptionalChain<'tree> {
5050    fn text(&self) -> &'tree str {
5051        self.text
5052    }
5053}
5054impl ::treesitter_types::Spanned for OptionalChain<'_> {
5055    fn span(&self) -> ::treesitter_types::Span {
5056        self.span
5057    }
5058}
5059#[derive(Debug, Clone)]
5060pub struct PrivatePropertyIdentifier<'tree> {
5061    pub span: ::treesitter_types::Span,
5062    text: &'tree str,
5063}
5064impl<'tree> ::treesitter_types::FromNode<'tree> for PrivatePropertyIdentifier<'tree> {
5065    fn from_node(
5066        node: ::tree_sitter::Node<'tree>,
5067        src: &'tree [u8],
5068    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
5069        debug_assert_eq!(node.kind(), "private_property_identifier");
5070        Ok(Self {
5071            span: ::treesitter_types::Span::from(node),
5072            text: node.utf8_text(src)?,
5073        })
5074    }
5075}
5076impl<'tree> ::treesitter_types::LeafNode<'tree> for PrivatePropertyIdentifier<'tree> {
5077    fn text(&self) -> &'tree str {
5078        self.text
5079    }
5080}
5081impl ::treesitter_types::Spanned for PrivatePropertyIdentifier<'_> {
5082    fn span(&self) -> ::treesitter_types::Span {
5083        self.span
5084    }
5085}
5086#[derive(Debug, Clone)]
5087pub struct PropertyIdentifier<'tree> {
5088    pub span: ::treesitter_types::Span,
5089    text: &'tree str,
5090}
5091impl<'tree> ::treesitter_types::FromNode<'tree> for PropertyIdentifier<'tree> {
5092    fn from_node(
5093        node: ::tree_sitter::Node<'tree>,
5094        src: &'tree [u8],
5095    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
5096        debug_assert_eq!(node.kind(), "property_identifier");
5097        Ok(Self {
5098            span: ::treesitter_types::Span::from(node),
5099            text: node.utf8_text(src)?,
5100        })
5101    }
5102}
5103impl<'tree> ::treesitter_types::LeafNode<'tree> for PropertyIdentifier<'tree> {
5104    fn text(&self) -> &'tree str {
5105        self.text
5106    }
5107}
5108impl ::treesitter_types::Spanned for PropertyIdentifier<'_> {
5109    fn span(&self) -> ::treesitter_types::Span {
5110        self.span
5111    }
5112}
5113#[derive(Debug, Clone)]
5114pub struct RegexFlags<'tree> {
5115    pub span: ::treesitter_types::Span,
5116    text: &'tree str,
5117}
5118impl<'tree> ::treesitter_types::FromNode<'tree> for RegexFlags<'tree> {
5119    fn from_node(
5120        node: ::tree_sitter::Node<'tree>,
5121        src: &'tree [u8],
5122    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
5123        debug_assert_eq!(node.kind(), "regex_flags");
5124        Ok(Self {
5125            span: ::treesitter_types::Span::from(node),
5126            text: node.utf8_text(src)?,
5127        })
5128    }
5129}
5130impl<'tree> ::treesitter_types::LeafNode<'tree> for RegexFlags<'tree> {
5131    fn text(&self) -> &'tree str {
5132        self.text
5133    }
5134}
5135impl ::treesitter_types::Spanned for RegexFlags<'_> {
5136    fn span(&self) -> ::treesitter_types::Span {
5137        self.span
5138    }
5139}
5140#[derive(Debug, Clone)]
5141pub struct RegexPattern<'tree> {
5142    pub span: ::treesitter_types::Span,
5143    text: &'tree str,
5144}
5145impl<'tree> ::treesitter_types::FromNode<'tree> for RegexPattern<'tree> {
5146    fn from_node(
5147        node: ::tree_sitter::Node<'tree>,
5148        src: &'tree [u8],
5149    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
5150        debug_assert_eq!(node.kind(), "regex_pattern");
5151        Ok(Self {
5152            span: ::treesitter_types::Span::from(node),
5153            text: node.utf8_text(src)?,
5154        })
5155    }
5156}
5157impl<'tree> ::treesitter_types::LeafNode<'tree> for RegexPattern<'tree> {
5158    fn text(&self) -> &'tree str {
5159        self.text
5160    }
5161}
5162impl ::treesitter_types::Spanned for RegexPattern<'_> {
5163    fn span(&self) -> ::treesitter_types::Span {
5164        self.span
5165    }
5166}
5167#[derive(Debug, Clone)]
5168pub struct ShorthandPropertyIdentifier<'tree> {
5169    pub span: ::treesitter_types::Span,
5170    text: &'tree str,
5171}
5172impl<'tree> ::treesitter_types::FromNode<'tree> for ShorthandPropertyIdentifier<'tree> {
5173    fn from_node(
5174        node: ::tree_sitter::Node<'tree>,
5175        src: &'tree [u8],
5176    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
5177        debug_assert_eq!(node.kind(), "shorthand_property_identifier");
5178        Ok(Self {
5179            span: ::treesitter_types::Span::from(node),
5180            text: node.utf8_text(src)?,
5181        })
5182    }
5183}
5184impl<'tree> ::treesitter_types::LeafNode<'tree> for ShorthandPropertyIdentifier<'tree> {
5185    fn text(&self) -> &'tree str {
5186        self.text
5187    }
5188}
5189impl ::treesitter_types::Spanned for ShorthandPropertyIdentifier<'_> {
5190    fn span(&self) -> ::treesitter_types::Span {
5191        self.span
5192    }
5193}
5194#[derive(Debug, Clone)]
5195pub struct ShorthandPropertyIdentifierPattern<'tree> {
5196    pub span: ::treesitter_types::Span,
5197    text: &'tree str,
5198}
5199impl<'tree> ::treesitter_types::FromNode<'tree> for ShorthandPropertyIdentifierPattern<'tree> {
5200    fn from_node(
5201        node: ::tree_sitter::Node<'tree>,
5202        src: &'tree [u8],
5203    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
5204        debug_assert_eq!(node.kind(), "shorthand_property_identifier_pattern");
5205        Ok(Self {
5206            span: ::treesitter_types::Span::from(node),
5207            text: node.utf8_text(src)?,
5208        })
5209    }
5210}
5211impl<'tree> ::treesitter_types::LeafNode<'tree> for ShorthandPropertyIdentifierPattern<'tree> {
5212    fn text(&self) -> &'tree str {
5213        self.text
5214    }
5215}
5216impl ::treesitter_types::Spanned for ShorthandPropertyIdentifierPattern<'_> {
5217    fn span(&self) -> ::treesitter_types::Span {
5218        self.span
5219    }
5220}
5221#[derive(Debug, Clone)]
5222pub struct StatementIdentifier<'tree> {
5223    pub span: ::treesitter_types::Span,
5224    text: &'tree str,
5225}
5226impl<'tree> ::treesitter_types::FromNode<'tree> for StatementIdentifier<'tree> {
5227    fn from_node(
5228        node: ::tree_sitter::Node<'tree>,
5229        src: &'tree [u8],
5230    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
5231        debug_assert_eq!(node.kind(), "statement_identifier");
5232        Ok(Self {
5233            span: ::treesitter_types::Span::from(node),
5234            text: node.utf8_text(src)?,
5235        })
5236    }
5237}
5238impl<'tree> ::treesitter_types::LeafNode<'tree> for StatementIdentifier<'tree> {
5239    fn text(&self) -> &'tree str {
5240        self.text
5241    }
5242}
5243impl ::treesitter_types::Spanned for StatementIdentifier<'_> {
5244    fn span(&self) -> ::treesitter_types::Span {
5245        self.span
5246    }
5247}
5248#[derive(Debug, Clone)]
5249pub struct StringFragment<'tree> {
5250    pub span: ::treesitter_types::Span,
5251    text: &'tree str,
5252}
5253impl<'tree> ::treesitter_types::FromNode<'tree> for StringFragment<'tree> {
5254    fn from_node(
5255        node: ::tree_sitter::Node<'tree>,
5256        src: &'tree [u8],
5257    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
5258        debug_assert_eq!(node.kind(), "string_fragment");
5259        Ok(Self {
5260            span: ::treesitter_types::Span::from(node),
5261            text: node.utf8_text(src)?,
5262        })
5263    }
5264}
5265impl<'tree> ::treesitter_types::LeafNode<'tree> for StringFragment<'tree> {
5266    fn text(&self) -> &'tree str {
5267        self.text
5268    }
5269}
5270impl ::treesitter_types::Spanned for StringFragment<'_> {
5271    fn span(&self) -> ::treesitter_types::Span {
5272        self.span
5273    }
5274}
5275#[derive(Debug, Clone)]
5276pub struct Super<'tree> {
5277    pub span: ::treesitter_types::Span,
5278    text: &'tree str,
5279}
5280impl<'tree> ::treesitter_types::FromNode<'tree> for Super<'tree> {
5281    fn from_node(
5282        node: ::tree_sitter::Node<'tree>,
5283        src: &'tree [u8],
5284    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
5285        debug_assert_eq!(node.kind(), "super");
5286        Ok(Self {
5287            span: ::treesitter_types::Span::from(node),
5288            text: node.utf8_text(src)?,
5289        })
5290    }
5291}
5292impl<'tree> ::treesitter_types::LeafNode<'tree> for Super<'tree> {
5293    fn text(&self) -> &'tree str {
5294        self.text
5295    }
5296}
5297impl ::treesitter_types::Spanned for Super<'_> {
5298    fn span(&self) -> ::treesitter_types::Span {
5299        self.span
5300    }
5301}
5302#[derive(Debug, Clone)]
5303pub struct This<'tree> {
5304    pub span: ::treesitter_types::Span,
5305    text: &'tree str,
5306}
5307impl<'tree> ::treesitter_types::FromNode<'tree> for This<'tree> {
5308    fn from_node(
5309        node: ::tree_sitter::Node<'tree>,
5310        src: &'tree [u8],
5311    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
5312        debug_assert_eq!(node.kind(), "this");
5313        Ok(Self {
5314            span: ::treesitter_types::Span::from(node),
5315            text: node.utf8_text(src)?,
5316        })
5317    }
5318}
5319impl<'tree> ::treesitter_types::LeafNode<'tree> for This<'tree> {
5320    fn text(&self) -> &'tree str {
5321        self.text
5322    }
5323}
5324impl ::treesitter_types::Spanned for This<'_> {
5325    fn span(&self) -> ::treesitter_types::Span {
5326        self.span
5327    }
5328}
5329#[derive(Debug, Clone)]
5330pub struct True<'tree> {
5331    pub span: ::treesitter_types::Span,
5332    text: &'tree str,
5333}
5334impl<'tree> ::treesitter_types::FromNode<'tree> for True<'tree> {
5335    fn from_node(
5336        node: ::tree_sitter::Node<'tree>,
5337        src: &'tree [u8],
5338    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
5339        debug_assert_eq!(node.kind(), "true");
5340        Ok(Self {
5341            span: ::treesitter_types::Span::from(node),
5342            text: node.utf8_text(src)?,
5343        })
5344    }
5345}
5346impl<'tree> ::treesitter_types::LeafNode<'tree> for True<'tree> {
5347    fn text(&self) -> &'tree str {
5348        self.text
5349    }
5350}
5351impl ::treesitter_types::Spanned for True<'_> {
5352    fn span(&self) -> ::treesitter_types::Span {
5353        self.span
5354    }
5355}
5356#[derive(Debug, Clone)]
5357pub struct Undefined<'tree> {
5358    pub span: ::treesitter_types::Span,
5359    text: &'tree str,
5360}
5361impl<'tree> ::treesitter_types::FromNode<'tree> for Undefined<'tree> {
5362    fn from_node(
5363        node: ::tree_sitter::Node<'tree>,
5364        src: &'tree [u8],
5365    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
5366        debug_assert_eq!(node.kind(), "undefined");
5367        Ok(Self {
5368            span: ::treesitter_types::Span::from(node),
5369            text: node.utf8_text(src)?,
5370        })
5371    }
5372}
5373impl<'tree> ::treesitter_types::LeafNode<'tree> for Undefined<'tree> {
5374    fn text(&self) -> &'tree str {
5375        self.text
5376    }
5377}
5378impl ::treesitter_types::Spanned for Undefined<'_> {
5379    fn span(&self) -> ::treesitter_types::Span {
5380        self.span
5381    }
5382}
5383#[derive(Debug, Clone)]
5384pub enum ArgumentsChildren<'tree> {
5385    Expression(::std::boxed::Box<Expression<'tree>>),
5386    SpreadElement(::std::boxed::Box<SpreadElement<'tree>>),
5387}
5388impl<'tree> ::treesitter_types::FromNode<'tree> for ArgumentsChildren<'tree> {
5389    #[allow(clippy::collapsible_else_if)]
5390    fn from_node(
5391        node: ::tree_sitter::Node<'tree>,
5392        src: &'tree [u8],
5393    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
5394        match node.kind() {
5395            "spread_element" => Ok(Self::SpreadElement(::std::boxed::Box::new(
5396                <SpreadElement as ::treesitter_types::FromNode>::from_node(node, src)?,
5397            ))),
5398            _other => {
5399                if let Ok(v) = <Expression as ::treesitter_types::FromNode>::from_node(node, src) {
5400                    Ok(Self::Expression(::std::boxed::Box::new(v)))
5401                } else {
5402                    Err(::treesitter_types::ParseError::unexpected_kind(
5403                        _other, node,
5404                    ))
5405                }
5406            }
5407        }
5408    }
5409}
5410impl ::treesitter_types::Spanned for ArgumentsChildren<'_> {
5411    fn span(&self) -> ::treesitter_types::Span {
5412        match self {
5413            Self::Expression(inner) => inner.span(),
5414            Self::SpreadElement(inner) => inner.span(),
5415        }
5416    }
5417}
5418#[derive(Debug, Clone)]
5419pub enum ArrayChildren<'tree> {
5420    Expression(::std::boxed::Box<Expression<'tree>>),
5421    SpreadElement(::std::boxed::Box<SpreadElement<'tree>>),
5422}
5423impl<'tree> ::treesitter_types::FromNode<'tree> for ArrayChildren<'tree> {
5424    #[allow(clippy::collapsible_else_if)]
5425    fn from_node(
5426        node: ::tree_sitter::Node<'tree>,
5427        src: &'tree [u8],
5428    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
5429        match node.kind() {
5430            "spread_element" => Ok(Self::SpreadElement(::std::boxed::Box::new(
5431                <SpreadElement as ::treesitter_types::FromNode>::from_node(node, src)?,
5432            ))),
5433            _other => {
5434                if let Ok(v) = <Expression as ::treesitter_types::FromNode>::from_node(node, src) {
5435                    Ok(Self::Expression(::std::boxed::Box::new(v)))
5436                } else {
5437                    Err(::treesitter_types::ParseError::unexpected_kind(
5438                        _other, node,
5439                    ))
5440                }
5441            }
5442        }
5443    }
5444}
5445impl ::treesitter_types::Spanned for ArrayChildren<'_> {
5446    fn span(&self) -> ::treesitter_types::Span {
5447        match self {
5448            Self::Expression(inner) => inner.span(),
5449            Self::SpreadElement(inner) => inner.span(),
5450        }
5451    }
5452}
5453#[derive(Debug, Clone)]
5454pub enum ArrayPatternChildren<'tree> {
5455    AssignmentPattern(::std::boxed::Box<AssignmentPattern<'tree>>),
5456    Pattern(::std::boxed::Box<Pattern<'tree>>),
5457}
5458impl<'tree> ::treesitter_types::FromNode<'tree> for ArrayPatternChildren<'tree> {
5459    #[allow(clippy::collapsible_else_if)]
5460    fn from_node(
5461        node: ::tree_sitter::Node<'tree>,
5462        src: &'tree [u8],
5463    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
5464        match node.kind() {
5465            "assignment_pattern" => Ok(Self::AssignmentPattern(::std::boxed::Box::new(
5466                <AssignmentPattern as ::treesitter_types::FromNode>::from_node(node, src)?,
5467            ))),
5468            _other => {
5469                if let Ok(v) = <Pattern as ::treesitter_types::FromNode>::from_node(node, src) {
5470                    Ok(Self::Pattern(::std::boxed::Box::new(v)))
5471                } else {
5472                    Err(::treesitter_types::ParseError::unexpected_kind(
5473                        _other, node,
5474                    ))
5475                }
5476            }
5477        }
5478    }
5479}
5480impl ::treesitter_types::Spanned for ArrayPatternChildren<'_> {
5481    fn span(&self) -> ::treesitter_types::Span {
5482        match self {
5483            Self::AssignmentPattern(inner) => inner.span(),
5484            Self::Pattern(inner) => inner.span(),
5485        }
5486    }
5487}
5488#[derive(Debug, Clone)]
5489pub enum ArrowFunctionBody<'tree> {
5490    Expression(::std::boxed::Box<Expression<'tree>>),
5491    StatementBlock(::std::boxed::Box<StatementBlock<'tree>>),
5492}
5493impl<'tree> ::treesitter_types::FromNode<'tree> for ArrowFunctionBody<'tree> {
5494    #[allow(clippy::collapsible_else_if)]
5495    fn from_node(
5496        node: ::tree_sitter::Node<'tree>,
5497        src: &'tree [u8],
5498    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
5499        match node.kind() {
5500            "statement_block" => Ok(Self::StatementBlock(::std::boxed::Box::new(
5501                <StatementBlock as ::treesitter_types::FromNode>::from_node(node, src)?,
5502            ))),
5503            _other => {
5504                if let Ok(v) = <Expression as ::treesitter_types::FromNode>::from_node(node, src) {
5505                    Ok(Self::Expression(::std::boxed::Box::new(v)))
5506                } else {
5507                    Err(::treesitter_types::ParseError::unexpected_kind(
5508                        _other, node,
5509                    ))
5510                }
5511            }
5512        }
5513    }
5514}
5515impl ::treesitter_types::Spanned for ArrowFunctionBody<'_> {
5516    fn span(&self) -> ::treesitter_types::Span {
5517        match self {
5518            Self::Expression(inner) => inner.span(),
5519            Self::StatementBlock(inner) => inner.span(),
5520        }
5521    }
5522}
5523#[derive(Debug, Clone)]
5524pub enum AssignmentExpressionLeft<'tree> {
5525    ArrayPattern(::std::boxed::Box<ArrayPattern<'tree>>),
5526    Identifier(::std::boxed::Box<Identifier<'tree>>),
5527    MemberExpression(::std::boxed::Box<MemberExpression<'tree>>),
5528    ObjectPattern(::std::boxed::Box<ObjectPattern<'tree>>),
5529    ParenthesizedExpression(::std::boxed::Box<ParenthesizedExpression<'tree>>),
5530    SubscriptExpression(::std::boxed::Box<SubscriptExpression<'tree>>),
5531    Undefined(::std::boxed::Box<Undefined<'tree>>),
5532}
5533impl<'tree> ::treesitter_types::FromNode<'tree> for AssignmentExpressionLeft<'tree> {
5534    #[allow(clippy::collapsible_else_if)]
5535    fn from_node(
5536        node: ::tree_sitter::Node<'tree>,
5537        src: &'tree [u8],
5538    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
5539        match node.kind() {
5540            "array_pattern" => Ok(Self::ArrayPattern(::std::boxed::Box::new(
5541                <ArrayPattern as ::treesitter_types::FromNode>::from_node(node, src)?,
5542            ))),
5543            "identifier" => Ok(Self::Identifier(::std::boxed::Box::new(
5544                <Identifier as ::treesitter_types::FromNode>::from_node(node, src)?,
5545            ))),
5546            "member_expression" => Ok(Self::MemberExpression(::std::boxed::Box::new(
5547                <MemberExpression as ::treesitter_types::FromNode>::from_node(node, src)?,
5548            ))),
5549            "object_pattern" => Ok(Self::ObjectPattern(::std::boxed::Box::new(
5550                <ObjectPattern as ::treesitter_types::FromNode>::from_node(node, src)?,
5551            ))),
5552            "parenthesized_expression" => {
5553                Ok(Self::ParenthesizedExpression(::std::boxed::Box::new(
5554                    <ParenthesizedExpression as ::treesitter_types::FromNode>::from_node(
5555                        node, src,
5556                    )?,
5557                )))
5558            }
5559            "subscript_expression" => Ok(Self::SubscriptExpression(::std::boxed::Box::new(
5560                <SubscriptExpression as ::treesitter_types::FromNode>::from_node(node, src)?,
5561            ))),
5562            "undefined" => Ok(Self::Undefined(::std::boxed::Box::new(
5563                <Undefined as ::treesitter_types::FromNode>::from_node(node, src)?,
5564            ))),
5565            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
5566        }
5567    }
5568}
5569impl ::treesitter_types::Spanned for AssignmentExpressionLeft<'_> {
5570    fn span(&self) -> ::treesitter_types::Span {
5571        match self {
5572            Self::ArrayPattern(inner) => inner.span(),
5573            Self::Identifier(inner) => inner.span(),
5574            Self::MemberExpression(inner) => inner.span(),
5575            Self::ObjectPattern(inner) => inner.span(),
5576            Self::ParenthesizedExpression(inner) => inner.span(),
5577            Self::SubscriptExpression(inner) => inner.span(),
5578            Self::Undefined(inner) => inner.span(),
5579        }
5580    }
5581}
5582#[derive(Debug, Clone)]
5583pub enum AugmentedAssignmentExpressionLeft<'tree> {
5584    Identifier(::std::boxed::Box<Identifier<'tree>>),
5585    MemberExpression(::std::boxed::Box<MemberExpression<'tree>>),
5586    ParenthesizedExpression(::std::boxed::Box<ParenthesizedExpression<'tree>>),
5587    SubscriptExpression(::std::boxed::Box<SubscriptExpression<'tree>>),
5588}
5589impl<'tree> ::treesitter_types::FromNode<'tree> for AugmentedAssignmentExpressionLeft<'tree> {
5590    #[allow(clippy::collapsible_else_if)]
5591    fn from_node(
5592        node: ::tree_sitter::Node<'tree>,
5593        src: &'tree [u8],
5594    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
5595        match node.kind() {
5596            "identifier" => Ok(Self::Identifier(::std::boxed::Box::new(
5597                <Identifier as ::treesitter_types::FromNode>::from_node(node, src)?,
5598            ))),
5599            "member_expression" => Ok(Self::MemberExpression(::std::boxed::Box::new(
5600                <MemberExpression as ::treesitter_types::FromNode>::from_node(node, src)?,
5601            ))),
5602            "parenthesized_expression" => {
5603                Ok(Self::ParenthesizedExpression(::std::boxed::Box::new(
5604                    <ParenthesizedExpression as ::treesitter_types::FromNode>::from_node(
5605                        node, src,
5606                    )?,
5607                )))
5608            }
5609            "subscript_expression" => Ok(Self::SubscriptExpression(::std::boxed::Box::new(
5610                <SubscriptExpression as ::treesitter_types::FromNode>::from_node(node, src)?,
5611            ))),
5612            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
5613        }
5614    }
5615}
5616impl ::treesitter_types::Spanned for AugmentedAssignmentExpressionLeft<'_> {
5617    fn span(&self) -> ::treesitter_types::Span {
5618        match self {
5619            Self::Identifier(inner) => inner.span(),
5620            Self::MemberExpression(inner) => inner.span(),
5621            Self::ParenthesizedExpression(inner) => inner.span(),
5622            Self::SubscriptExpression(inner) => inner.span(),
5623        }
5624    }
5625}
5626#[derive(Debug, Clone)]
5627pub enum AugmentedAssignmentExpressionOperator {
5628    PercentEq(::treesitter_types::Span),
5629    AmpAmpEq(::treesitter_types::Span),
5630    AmpEq(::treesitter_types::Span),
5631    StarStarEq(::treesitter_types::Span),
5632    StarEq(::treesitter_types::Span),
5633    PlusEq(::treesitter_types::Span),
5634    MinusEq(::treesitter_types::Span),
5635    SlashEq(::treesitter_types::Span),
5636    ShlEq(::treesitter_types::Span),
5637    ShrEq(::treesitter_types::Span),
5638    GtGtGtEq(::treesitter_types::Span),
5639    QuestionQuestionEq(::treesitter_types::Span),
5640    CaretEq(::treesitter_types::Span),
5641    PipeEq(::treesitter_types::Span),
5642    PipePipeEq(::treesitter_types::Span),
5643}
5644impl<'tree> ::treesitter_types::FromNode<'tree> for AugmentedAssignmentExpressionOperator {
5645    #[allow(clippy::collapsible_else_if)]
5646    fn from_node(
5647        node: ::tree_sitter::Node<'tree>,
5648        _src: &'tree [u8],
5649    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
5650        match node.kind() {
5651            "%=" => Ok(Self::PercentEq(::treesitter_types::Span::from(node))),
5652            "&&=" => Ok(Self::AmpAmpEq(::treesitter_types::Span::from(node))),
5653            "&=" => Ok(Self::AmpEq(::treesitter_types::Span::from(node))),
5654            "**=" => Ok(Self::StarStarEq(::treesitter_types::Span::from(node))),
5655            "*=" => Ok(Self::StarEq(::treesitter_types::Span::from(node))),
5656            "+=" => Ok(Self::PlusEq(::treesitter_types::Span::from(node))),
5657            "-=" => Ok(Self::MinusEq(::treesitter_types::Span::from(node))),
5658            "/=" => Ok(Self::SlashEq(::treesitter_types::Span::from(node))),
5659            "<<=" => Ok(Self::ShlEq(::treesitter_types::Span::from(node))),
5660            ">>=" => Ok(Self::ShrEq(::treesitter_types::Span::from(node))),
5661            ">>>=" => Ok(Self::GtGtGtEq(::treesitter_types::Span::from(node))),
5662            "??=" => Ok(Self::QuestionQuestionEq(::treesitter_types::Span::from(
5663                node,
5664            ))),
5665            "^=" => Ok(Self::CaretEq(::treesitter_types::Span::from(node))),
5666            "|=" => Ok(Self::PipeEq(::treesitter_types::Span::from(node))),
5667            "||=" => Ok(Self::PipePipeEq(::treesitter_types::Span::from(node))),
5668            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
5669        }
5670    }
5671}
5672impl ::treesitter_types::Spanned for AugmentedAssignmentExpressionOperator {
5673    fn span(&self) -> ::treesitter_types::Span {
5674        match self {
5675            Self::PercentEq(span) => *span,
5676            Self::AmpAmpEq(span) => *span,
5677            Self::AmpEq(span) => *span,
5678            Self::StarStarEq(span) => *span,
5679            Self::StarEq(span) => *span,
5680            Self::PlusEq(span) => *span,
5681            Self::MinusEq(span) => *span,
5682            Self::SlashEq(span) => *span,
5683            Self::ShlEq(span) => *span,
5684            Self::ShrEq(span) => *span,
5685            Self::GtGtGtEq(span) => *span,
5686            Self::QuestionQuestionEq(span) => *span,
5687            Self::CaretEq(span) => *span,
5688            Self::PipeEq(span) => *span,
5689            Self::PipePipeEq(span) => *span,
5690        }
5691    }
5692}
5693#[derive(Debug, Clone)]
5694pub enum BinaryExpressionLeft<'tree> {
5695    Expression(::std::boxed::Box<Expression<'tree>>),
5696    PrivatePropertyIdentifier(::std::boxed::Box<PrivatePropertyIdentifier<'tree>>),
5697}
5698impl<'tree> ::treesitter_types::FromNode<'tree> for BinaryExpressionLeft<'tree> {
5699    #[allow(clippy::collapsible_else_if)]
5700    fn from_node(
5701        node: ::tree_sitter::Node<'tree>,
5702        src: &'tree [u8],
5703    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
5704        match node.kind() {
5705            "private_property_identifier" => {
5706                Ok(Self::PrivatePropertyIdentifier(::std::boxed::Box::new(
5707                    <PrivatePropertyIdentifier as ::treesitter_types::FromNode>::from_node(
5708                        node, src,
5709                    )?,
5710                )))
5711            }
5712            _other => {
5713                if let Ok(v) = <Expression as ::treesitter_types::FromNode>::from_node(node, src) {
5714                    Ok(Self::Expression(::std::boxed::Box::new(v)))
5715                } else {
5716                    Err(::treesitter_types::ParseError::unexpected_kind(
5717                        _other, node,
5718                    ))
5719                }
5720            }
5721        }
5722    }
5723}
5724impl ::treesitter_types::Spanned for BinaryExpressionLeft<'_> {
5725    fn span(&self) -> ::treesitter_types::Span {
5726        match self {
5727            Self::Expression(inner) => inner.span(),
5728            Self::PrivatePropertyIdentifier(inner) => inner.span(),
5729        }
5730    }
5731}
5732#[derive(Debug, Clone)]
5733pub enum BinaryExpressionOperator {
5734    NotEq(::treesitter_types::Span),
5735    BangEqEq(::treesitter_types::Span),
5736    Percent(::treesitter_types::Span),
5737    Amp(::treesitter_types::Span),
5738    AmpAmp(::treesitter_types::Span),
5739    Star(::treesitter_types::Span),
5740    StarStar(::treesitter_types::Span),
5741    Plus(::treesitter_types::Span),
5742    Minus(::treesitter_types::Span),
5743    Slash(::treesitter_types::Span),
5744    Lt(::treesitter_types::Span),
5745    Shl(::treesitter_types::Span),
5746    LtEq(::treesitter_types::Span),
5747    EqEq(::treesitter_types::Span),
5748    EqEqEq(::treesitter_types::Span),
5749    Gt(::treesitter_types::Span),
5750    GtEq(::treesitter_types::Span),
5751    Shr(::treesitter_types::Span),
5752    GtGtGt(::treesitter_types::Span),
5753    QuestionQuestion(::treesitter_types::Span),
5754    Caret(::treesitter_types::Span),
5755    In(::treesitter_types::Span),
5756    Instanceof(::treesitter_types::Span),
5757    Pipe(::treesitter_types::Span),
5758    PipePipe(::treesitter_types::Span),
5759}
5760impl<'tree> ::treesitter_types::FromNode<'tree> for BinaryExpressionOperator {
5761    #[allow(clippy::collapsible_else_if)]
5762    fn from_node(
5763        node: ::tree_sitter::Node<'tree>,
5764        _src: &'tree [u8],
5765    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
5766        match node.kind() {
5767            "!=" => Ok(Self::NotEq(::treesitter_types::Span::from(node))),
5768            "!==" => Ok(Self::BangEqEq(::treesitter_types::Span::from(node))),
5769            "%" => Ok(Self::Percent(::treesitter_types::Span::from(node))),
5770            "&" => Ok(Self::Amp(::treesitter_types::Span::from(node))),
5771            "&&" => Ok(Self::AmpAmp(::treesitter_types::Span::from(node))),
5772            "*" => Ok(Self::Star(::treesitter_types::Span::from(node))),
5773            "**" => Ok(Self::StarStar(::treesitter_types::Span::from(node))),
5774            "+" => Ok(Self::Plus(::treesitter_types::Span::from(node))),
5775            "-" => Ok(Self::Minus(::treesitter_types::Span::from(node))),
5776            "/" => Ok(Self::Slash(::treesitter_types::Span::from(node))),
5777            "<" => Ok(Self::Lt(::treesitter_types::Span::from(node))),
5778            "<<" => Ok(Self::Shl(::treesitter_types::Span::from(node))),
5779            "<=" => Ok(Self::LtEq(::treesitter_types::Span::from(node))),
5780            "==" => Ok(Self::EqEq(::treesitter_types::Span::from(node))),
5781            "===" => Ok(Self::EqEqEq(::treesitter_types::Span::from(node))),
5782            ">" => Ok(Self::Gt(::treesitter_types::Span::from(node))),
5783            ">=" => Ok(Self::GtEq(::treesitter_types::Span::from(node))),
5784            ">>" => Ok(Self::Shr(::treesitter_types::Span::from(node))),
5785            ">>>" => Ok(Self::GtGtGt(::treesitter_types::Span::from(node))),
5786            "??" => Ok(Self::QuestionQuestion(::treesitter_types::Span::from(node))),
5787            "^" => Ok(Self::Caret(::treesitter_types::Span::from(node))),
5788            "in" => Ok(Self::In(::treesitter_types::Span::from(node))),
5789            "instanceof" => Ok(Self::Instanceof(::treesitter_types::Span::from(node))),
5790            "|" => Ok(Self::Pipe(::treesitter_types::Span::from(node))),
5791            "||" => Ok(Self::PipePipe(::treesitter_types::Span::from(node))),
5792            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
5793        }
5794    }
5795}
5796impl ::treesitter_types::Spanned for BinaryExpressionOperator {
5797    fn span(&self) -> ::treesitter_types::Span {
5798        match self {
5799            Self::NotEq(span) => *span,
5800            Self::BangEqEq(span) => *span,
5801            Self::Percent(span) => *span,
5802            Self::Amp(span) => *span,
5803            Self::AmpAmp(span) => *span,
5804            Self::Star(span) => *span,
5805            Self::StarStar(span) => *span,
5806            Self::Plus(span) => *span,
5807            Self::Minus(span) => *span,
5808            Self::Slash(span) => *span,
5809            Self::Lt(span) => *span,
5810            Self::Shl(span) => *span,
5811            Self::LtEq(span) => *span,
5812            Self::EqEq(span) => *span,
5813            Self::EqEqEq(span) => *span,
5814            Self::Gt(span) => *span,
5815            Self::GtEq(span) => *span,
5816            Self::Shr(span) => *span,
5817            Self::GtGtGt(span) => *span,
5818            Self::QuestionQuestion(span) => *span,
5819            Self::Caret(span) => *span,
5820            Self::In(span) => *span,
5821            Self::Instanceof(span) => *span,
5822            Self::Pipe(span) => *span,
5823            Self::PipePipe(span) => *span,
5824        }
5825    }
5826}
5827#[derive(Debug, Clone)]
5828pub enum CallExpressionArguments<'tree> {
5829    Arguments(::std::boxed::Box<Arguments<'tree>>),
5830    TemplateString(::std::boxed::Box<TemplateString<'tree>>),
5831}
5832impl<'tree> ::treesitter_types::FromNode<'tree> for CallExpressionArguments<'tree> {
5833    #[allow(clippy::collapsible_else_if)]
5834    fn from_node(
5835        node: ::tree_sitter::Node<'tree>,
5836        src: &'tree [u8],
5837    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
5838        match node.kind() {
5839            "arguments" => Ok(Self::Arguments(::std::boxed::Box::new(
5840                <Arguments as ::treesitter_types::FromNode>::from_node(node, src)?,
5841            ))),
5842            "template_string" => Ok(Self::TemplateString(::std::boxed::Box::new(
5843                <TemplateString as ::treesitter_types::FromNode>::from_node(node, src)?,
5844            ))),
5845            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
5846        }
5847    }
5848}
5849impl ::treesitter_types::Spanned for CallExpressionArguments<'_> {
5850    fn span(&self) -> ::treesitter_types::Span {
5851        match self {
5852            Self::Arguments(inner) => inner.span(),
5853            Self::TemplateString(inner) => inner.span(),
5854        }
5855    }
5856}
5857#[derive(Debug, Clone)]
5858pub enum CallExpressionFunction<'tree> {
5859    Expression(::std::boxed::Box<Expression<'tree>>),
5860    Import(::std::boxed::Box<Import<'tree>>),
5861}
5862impl<'tree> ::treesitter_types::FromNode<'tree> for CallExpressionFunction<'tree> {
5863    #[allow(clippy::collapsible_else_if)]
5864    fn from_node(
5865        node: ::tree_sitter::Node<'tree>,
5866        src: &'tree [u8],
5867    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
5868        match node.kind() {
5869            "import" => Ok(Self::Import(::std::boxed::Box::new(
5870                <Import as ::treesitter_types::FromNode>::from_node(node, src)?,
5871            ))),
5872            _other => {
5873                if let Ok(v) = <Expression as ::treesitter_types::FromNode>::from_node(node, src) {
5874                    Ok(Self::Expression(::std::boxed::Box::new(v)))
5875                } else {
5876                    Err(::treesitter_types::ParseError::unexpected_kind(
5877                        _other, node,
5878                    ))
5879                }
5880            }
5881        }
5882    }
5883}
5884impl ::treesitter_types::Spanned for CallExpressionFunction<'_> {
5885    fn span(&self) -> ::treesitter_types::Span {
5886        match self {
5887            Self::Expression(inner) => inner.span(),
5888            Self::Import(inner) => inner.span(),
5889        }
5890    }
5891}
5892#[derive(Debug, Clone)]
5893pub enum CatchClauseParameter<'tree> {
5894    ArrayPattern(::std::boxed::Box<ArrayPattern<'tree>>),
5895    Identifier(::std::boxed::Box<Identifier<'tree>>),
5896    ObjectPattern(::std::boxed::Box<ObjectPattern<'tree>>),
5897}
5898impl<'tree> ::treesitter_types::FromNode<'tree> for CatchClauseParameter<'tree> {
5899    #[allow(clippy::collapsible_else_if)]
5900    fn from_node(
5901        node: ::tree_sitter::Node<'tree>,
5902        src: &'tree [u8],
5903    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
5904        match node.kind() {
5905            "array_pattern" => Ok(Self::ArrayPattern(::std::boxed::Box::new(
5906                <ArrayPattern as ::treesitter_types::FromNode>::from_node(node, src)?,
5907            ))),
5908            "identifier" => Ok(Self::Identifier(::std::boxed::Box::new(
5909                <Identifier as ::treesitter_types::FromNode>::from_node(node, src)?,
5910            ))),
5911            "object_pattern" => Ok(Self::ObjectPattern(::std::boxed::Box::new(
5912                <ObjectPattern as ::treesitter_types::FromNode>::from_node(node, src)?,
5913            ))),
5914            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
5915        }
5916    }
5917}
5918impl ::treesitter_types::Spanned for CatchClauseParameter<'_> {
5919    fn span(&self) -> ::treesitter_types::Span {
5920        match self {
5921            Self::ArrayPattern(inner) => inner.span(),
5922            Self::Identifier(inner) => inner.span(),
5923            Self::ObjectPattern(inner) => inner.span(),
5924        }
5925    }
5926}
5927#[derive(Debug, Clone)]
5928pub enum ClassBodyMember<'tree> {
5929    ClassStaticBlock(::std::boxed::Box<ClassStaticBlock<'tree>>),
5930    FieldDefinition(::std::boxed::Box<FieldDefinition<'tree>>),
5931    MethodDefinition(::std::boxed::Box<MethodDefinition<'tree>>),
5932}
5933impl<'tree> ::treesitter_types::FromNode<'tree> for ClassBodyMember<'tree> {
5934    #[allow(clippy::collapsible_else_if)]
5935    fn from_node(
5936        node: ::tree_sitter::Node<'tree>,
5937        src: &'tree [u8],
5938    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
5939        match node.kind() {
5940            "class_static_block" => Ok(Self::ClassStaticBlock(::std::boxed::Box::new(
5941                <ClassStaticBlock as ::treesitter_types::FromNode>::from_node(node, src)?,
5942            ))),
5943            "field_definition" => Ok(Self::FieldDefinition(::std::boxed::Box::new(
5944                <FieldDefinition as ::treesitter_types::FromNode>::from_node(node, src)?,
5945            ))),
5946            "method_definition" => Ok(Self::MethodDefinition(::std::boxed::Box::new(
5947                <MethodDefinition as ::treesitter_types::FromNode>::from_node(node, src)?,
5948            ))),
5949            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
5950        }
5951    }
5952}
5953impl ::treesitter_types::Spanned for ClassBodyMember<'_> {
5954    fn span(&self) -> ::treesitter_types::Span {
5955        match self {
5956            Self::ClassStaticBlock(inner) => inner.span(),
5957            Self::FieldDefinition(inner) => inner.span(),
5958            Self::MethodDefinition(inner) => inner.span(),
5959        }
5960    }
5961}
5962#[derive(Debug, Clone)]
5963pub enum DecoratorChildren<'tree> {
5964    CallExpression(::std::boxed::Box<CallExpression<'tree>>),
5965    Identifier(::std::boxed::Box<Identifier<'tree>>),
5966    MemberExpression(::std::boxed::Box<MemberExpression<'tree>>),
5967}
5968impl<'tree> ::treesitter_types::FromNode<'tree> for DecoratorChildren<'tree> {
5969    #[allow(clippy::collapsible_else_if)]
5970    fn from_node(
5971        node: ::tree_sitter::Node<'tree>,
5972        src: &'tree [u8],
5973    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
5974        match node.kind() {
5975            "call_expression" => Ok(Self::CallExpression(::std::boxed::Box::new(
5976                <CallExpression as ::treesitter_types::FromNode>::from_node(node, src)?,
5977            ))),
5978            "identifier" => Ok(Self::Identifier(::std::boxed::Box::new(
5979                <Identifier as ::treesitter_types::FromNode>::from_node(node, src)?,
5980            ))),
5981            "member_expression" => Ok(Self::MemberExpression(::std::boxed::Box::new(
5982                <MemberExpression as ::treesitter_types::FromNode>::from_node(node, src)?,
5983            ))),
5984            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
5985        }
5986    }
5987}
5988impl ::treesitter_types::Spanned for DecoratorChildren<'_> {
5989    fn span(&self) -> ::treesitter_types::Span {
5990        match self {
5991            Self::CallExpression(inner) => inner.span(),
5992            Self::Identifier(inner) => inner.span(),
5993            Self::MemberExpression(inner) => inner.span(),
5994        }
5995    }
5996}
5997#[derive(Debug, Clone)]
5998pub enum ExportSpecifierAlias<'tree> {
5999    Default(::treesitter_types::Span),
6000    Identifier(::std::boxed::Box<Identifier<'tree>>),
6001    String(::std::boxed::Box<String<'tree>>),
6002}
6003impl<'tree> ::treesitter_types::FromNode<'tree> for ExportSpecifierAlias<'tree> {
6004    #[allow(clippy::collapsible_else_if)]
6005    fn from_node(
6006        node: ::tree_sitter::Node<'tree>,
6007        src: &'tree [u8],
6008    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
6009        match node.kind() {
6010            "default" => Ok(Self::Default(::treesitter_types::Span::from(node))),
6011            "identifier" => Ok(Self::Identifier(::std::boxed::Box::new(
6012                <Identifier as ::treesitter_types::FromNode>::from_node(node, src)?,
6013            ))),
6014            "string" => Ok(Self::String(::std::boxed::Box::new(
6015                <String as ::treesitter_types::FromNode>::from_node(node, src)?,
6016            ))),
6017            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
6018        }
6019    }
6020}
6021impl ::treesitter_types::Spanned for ExportSpecifierAlias<'_> {
6022    fn span(&self) -> ::treesitter_types::Span {
6023        match self {
6024            Self::Default(span) => *span,
6025            Self::Identifier(inner) => inner.span(),
6026            Self::String(inner) => inner.span(),
6027        }
6028    }
6029}
6030#[derive(Debug, Clone)]
6031pub enum ExportSpecifierName<'tree> {
6032    Default(::treesitter_types::Span),
6033    Identifier(::std::boxed::Box<Identifier<'tree>>),
6034    String(::std::boxed::Box<String<'tree>>),
6035}
6036impl<'tree> ::treesitter_types::FromNode<'tree> for ExportSpecifierName<'tree> {
6037    #[allow(clippy::collapsible_else_if)]
6038    fn from_node(
6039        node: ::tree_sitter::Node<'tree>,
6040        src: &'tree [u8],
6041    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
6042        match node.kind() {
6043            "default" => Ok(Self::Default(::treesitter_types::Span::from(node))),
6044            "identifier" => Ok(Self::Identifier(::std::boxed::Box::new(
6045                <Identifier as ::treesitter_types::FromNode>::from_node(node, src)?,
6046            ))),
6047            "string" => Ok(Self::String(::std::boxed::Box::new(
6048                <String as ::treesitter_types::FromNode>::from_node(node, src)?,
6049            ))),
6050            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
6051        }
6052    }
6053}
6054impl ::treesitter_types::Spanned for ExportSpecifierName<'_> {
6055    fn span(&self) -> ::treesitter_types::Span {
6056        match self {
6057            Self::Default(span) => *span,
6058            Self::Identifier(inner) => inner.span(),
6059            Self::String(inner) => inner.span(),
6060        }
6061    }
6062}
6063#[derive(Debug, Clone)]
6064pub enum ExportStatementChildren<'tree> {
6065    ExportClause(::std::boxed::Box<ExportClause<'tree>>),
6066    NamespaceExport(::std::boxed::Box<NamespaceExport<'tree>>),
6067}
6068impl<'tree> ::treesitter_types::FromNode<'tree> for ExportStatementChildren<'tree> {
6069    #[allow(clippy::collapsible_else_if)]
6070    fn from_node(
6071        node: ::tree_sitter::Node<'tree>,
6072        src: &'tree [u8],
6073    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
6074        match node.kind() {
6075            "export_clause" => Ok(Self::ExportClause(::std::boxed::Box::new(
6076                <ExportClause as ::treesitter_types::FromNode>::from_node(node, src)?,
6077            ))),
6078            "namespace_export" => Ok(Self::NamespaceExport(::std::boxed::Box::new(
6079                <NamespaceExport as ::treesitter_types::FromNode>::from_node(node, src)?,
6080            ))),
6081            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
6082        }
6083    }
6084}
6085impl ::treesitter_types::Spanned for ExportStatementChildren<'_> {
6086    fn span(&self) -> ::treesitter_types::Span {
6087        match self {
6088            Self::ExportClause(inner) => inner.span(),
6089            Self::NamespaceExport(inner) => inner.span(),
6090        }
6091    }
6092}
6093#[derive(Debug, Clone)]
6094pub enum ExpressionStatementChildren<'tree> {
6095    Expression(::std::boxed::Box<Expression<'tree>>),
6096    SequenceExpression(::std::boxed::Box<SequenceExpression<'tree>>),
6097}
6098impl<'tree> ::treesitter_types::FromNode<'tree> for ExpressionStatementChildren<'tree> {
6099    #[allow(clippy::collapsible_else_if)]
6100    fn from_node(
6101        node: ::tree_sitter::Node<'tree>,
6102        src: &'tree [u8],
6103    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
6104        match node.kind() {
6105            "sequence_expression" => Ok(Self::SequenceExpression(::std::boxed::Box::new(
6106                <SequenceExpression as ::treesitter_types::FromNode>::from_node(node, src)?,
6107            ))),
6108            _other => {
6109                if let Ok(v) = <Expression as ::treesitter_types::FromNode>::from_node(node, src) {
6110                    Ok(Self::Expression(::std::boxed::Box::new(v)))
6111                } else {
6112                    Err(::treesitter_types::ParseError::unexpected_kind(
6113                        _other, node,
6114                    ))
6115                }
6116            }
6117        }
6118    }
6119}
6120impl ::treesitter_types::Spanned for ExpressionStatementChildren<'_> {
6121    fn span(&self) -> ::treesitter_types::Span {
6122        match self {
6123            Self::Expression(inner) => inner.span(),
6124            Self::SequenceExpression(inner) => inner.span(),
6125        }
6126    }
6127}
6128#[derive(Debug, Clone)]
6129pub enum FieldDefinitionProperty<'tree> {
6130    ComputedPropertyName(::std::boxed::Box<ComputedPropertyName<'tree>>),
6131    Number(::std::boxed::Box<Number<'tree>>),
6132    PrivatePropertyIdentifier(::std::boxed::Box<PrivatePropertyIdentifier<'tree>>),
6133    PropertyIdentifier(::std::boxed::Box<PropertyIdentifier<'tree>>),
6134    String(::std::boxed::Box<String<'tree>>),
6135}
6136impl<'tree> ::treesitter_types::FromNode<'tree> for FieldDefinitionProperty<'tree> {
6137    #[allow(clippy::collapsible_else_if)]
6138    fn from_node(
6139        node: ::tree_sitter::Node<'tree>,
6140        src: &'tree [u8],
6141    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
6142        match node.kind() {
6143            "computed_property_name" => Ok(Self::ComputedPropertyName(::std::boxed::Box::new(
6144                <ComputedPropertyName as ::treesitter_types::FromNode>::from_node(node, src)?,
6145            ))),
6146            "number" => Ok(Self::Number(::std::boxed::Box::new(
6147                <Number as ::treesitter_types::FromNode>::from_node(node, src)?,
6148            ))),
6149            "private_property_identifier" => {
6150                Ok(Self::PrivatePropertyIdentifier(::std::boxed::Box::new(
6151                    <PrivatePropertyIdentifier as ::treesitter_types::FromNode>::from_node(
6152                        node, src,
6153                    )?,
6154                )))
6155            }
6156            "property_identifier" => Ok(Self::PropertyIdentifier(::std::boxed::Box::new(
6157                <PropertyIdentifier as ::treesitter_types::FromNode>::from_node(node, src)?,
6158            ))),
6159            "string" => Ok(Self::String(::std::boxed::Box::new(
6160                <String as ::treesitter_types::FromNode>::from_node(node, src)?,
6161            ))),
6162            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
6163        }
6164    }
6165}
6166impl ::treesitter_types::Spanned for FieldDefinitionProperty<'_> {
6167    fn span(&self) -> ::treesitter_types::Span {
6168        match self {
6169            Self::ComputedPropertyName(inner) => inner.span(),
6170            Self::Number(inner) => inner.span(),
6171            Self::PrivatePropertyIdentifier(inner) => inner.span(),
6172            Self::PropertyIdentifier(inner) => inner.span(),
6173            Self::String(inner) => inner.span(),
6174        }
6175    }
6176}
6177#[derive(Debug, Clone)]
6178pub enum ForInStatementKind {
6179    Await(::treesitter_types::Span),
6180    Const(::treesitter_types::Span),
6181    Let(::treesitter_types::Span),
6182    Using(::treesitter_types::Span),
6183    Var(::treesitter_types::Span),
6184}
6185impl<'tree> ::treesitter_types::FromNode<'tree> for ForInStatementKind {
6186    #[allow(clippy::collapsible_else_if)]
6187    fn from_node(
6188        node: ::tree_sitter::Node<'tree>,
6189        _src: &'tree [u8],
6190    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
6191        match node.kind() {
6192            "await" => Ok(Self::Await(::treesitter_types::Span::from(node))),
6193            "const" => Ok(Self::Const(::treesitter_types::Span::from(node))),
6194            "let" => Ok(Self::Let(::treesitter_types::Span::from(node))),
6195            "using" => Ok(Self::Using(::treesitter_types::Span::from(node))),
6196            "var" => Ok(Self::Var(::treesitter_types::Span::from(node))),
6197            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
6198        }
6199    }
6200}
6201impl ::treesitter_types::Spanned for ForInStatementKind {
6202    fn span(&self) -> ::treesitter_types::Span {
6203        match self {
6204            Self::Await(span) => *span,
6205            Self::Const(span) => *span,
6206            Self::Let(span) => *span,
6207            Self::Using(span) => *span,
6208            Self::Var(span) => *span,
6209        }
6210    }
6211}
6212#[derive(Debug, Clone)]
6213pub enum ForInStatementLeft<'tree> {
6214    ArrayPattern(::std::boxed::Box<ArrayPattern<'tree>>),
6215    Identifier(::std::boxed::Box<Identifier<'tree>>),
6216    MemberExpression(::std::boxed::Box<MemberExpression<'tree>>),
6217    ObjectPattern(::std::boxed::Box<ObjectPattern<'tree>>),
6218    ParenthesizedExpression(::std::boxed::Box<ParenthesizedExpression<'tree>>),
6219    SubscriptExpression(::std::boxed::Box<SubscriptExpression<'tree>>),
6220    Undefined(::std::boxed::Box<Undefined<'tree>>),
6221}
6222impl<'tree> ::treesitter_types::FromNode<'tree> for ForInStatementLeft<'tree> {
6223    #[allow(clippy::collapsible_else_if)]
6224    fn from_node(
6225        node: ::tree_sitter::Node<'tree>,
6226        src: &'tree [u8],
6227    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
6228        match node.kind() {
6229            "array_pattern" => Ok(Self::ArrayPattern(::std::boxed::Box::new(
6230                <ArrayPattern as ::treesitter_types::FromNode>::from_node(node, src)?,
6231            ))),
6232            "identifier" => Ok(Self::Identifier(::std::boxed::Box::new(
6233                <Identifier as ::treesitter_types::FromNode>::from_node(node, src)?,
6234            ))),
6235            "member_expression" => Ok(Self::MemberExpression(::std::boxed::Box::new(
6236                <MemberExpression as ::treesitter_types::FromNode>::from_node(node, src)?,
6237            ))),
6238            "object_pattern" => Ok(Self::ObjectPattern(::std::boxed::Box::new(
6239                <ObjectPattern as ::treesitter_types::FromNode>::from_node(node, src)?,
6240            ))),
6241            "parenthesized_expression" => {
6242                Ok(Self::ParenthesizedExpression(::std::boxed::Box::new(
6243                    <ParenthesizedExpression as ::treesitter_types::FromNode>::from_node(
6244                        node, src,
6245                    )?,
6246                )))
6247            }
6248            "subscript_expression" => Ok(Self::SubscriptExpression(::std::boxed::Box::new(
6249                <SubscriptExpression as ::treesitter_types::FromNode>::from_node(node, src)?,
6250            ))),
6251            "undefined" => Ok(Self::Undefined(::std::boxed::Box::new(
6252                <Undefined as ::treesitter_types::FromNode>::from_node(node, src)?,
6253            ))),
6254            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
6255        }
6256    }
6257}
6258impl ::treesitter_types::Spanned for ForInStatementLeft<'_> {
6259    fn span(&self) -> ::treesitter_types::Span {
6260        match self {
6261            Self::ArrayPattern(inner) => inner.span(),
6262            Self::Identifier(inner) => inner.span(),
6263            Self::MemberExpression(inner) => inner.span(),
6264            Self::ObjectPattern(inner) => inner.span(),
6265            Self::ParenthesizedExpression(inner) => inner.span(),
6266            Self::SubscriptExpression(inner) => inner.span(),
6267            Self::Undefined(inner) => inner.span(),
6268        }
6269    }
6270}
6271#[derive(Debug, Clone)]
6272pub enum ForInStatementOperator {
6273    In(::treesitter_types::Span),
6274    Of(::treesitter_types::Span),
6275}
6276impl<'tree> ::treesitter_types::FromNode<'tree> for ForInStatementOperator {
6277    #[allow(clippy::collapsible_else_if)]
6278    fn from_node(
6279        node: ::tree_sitter::Node<'tree>,
6280        _src: &'tree [u8],
6281    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
6282        match node.kind() {
6283            "in" => Ok(Self::In(::treesitter_types::Span::from(node))),
6284            "of" => Ok(Self::Of(::treesitter_types::Span::from(node))),
6285            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
6286        }
6287    }
6288}
6289impl ::treesitter_types::Spanned for ForInStatementOperator {
6290    fn span(&self) -> ::treesitter_types::Span {
6291        match self {
6292            Self::In(span) => *span,
6293            Self::Of(span) => *span,
6294        }
6295    }
6296}
6297#[derive(Debug, Clone)]
6298pub enum ForInStatementRight<'tree> {
6299    Expression(::std::boxed::Box<Expression<'tree>>),
6300    SequenceExpression(::std::boxed::Box<SequenceExpression<'tree>>),
6301}
6302impl<'tree> ::treesitter_types::FromNode<'tree> for ForInStatementRight<'tree> {
6303    #[allow(clippy::collapsible_else_if)]
6304    fn from_node(
6305        node: ::tree_sitter::Node<'tree>,
6306        src: &'tree [u8],
6307    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
6308        match node.kind() {
6309            "sequence_expression" => Ok(Self::SequenceExpression(::std::boxed::Box::new(
6310                <SequenceExpression as ::treesitter_types::FromNode>::from_node(node, src)?,
6311            ))),
6312            _other => {
6313                if let Ok(v) = <Expression as ::treesitter_types::FromNode>::from_node(node, src) {
6314                    Ok(Self::Expression(::std::boxed::Box::new(v)))
6315                } else {
6316                    Err(::treesitter_types::ParseError::unexpected_kind(
6317                        _other, node,
6318                    ))
6319                }
6320            }
6321        }
6322    }
6323}
6324impl ::treesitter_types::Spanned for ForInStatementRight<'_> {
6325    fn span(&self) -> ::treesitter_types::Span {
6326        match self {
6327            Self::Expression(inner) => inner.span(),
6328            Self::SequenceExpression(inner) => inner.span(),
6329        }
6330    }
6331}
6332#[derive(Debug, Clone)]
6333pub enum ForStatementCondition<'tree> {
6334    Semicolon(::treesitter_types::Span),
6335    EmptyStatement(::std::boxed::Box<EmptyStatement<'tree>>),
6336    Expression(::std::boxed::Box<Expression<'tree>>),
6337    SequenceExpression(::std::boxed::Box<SequenceExpression<'tree>>),
6338}
6339impl<'tree> ::treesitter_types::FromNode<'tree> for ForStatementCondition<'tree> {
6340    #[allow(clippy::collapsible_else_if)]
6341    fn from_node(
6342        node: ::tree_sitter::Node<'tree>,
6343        src: &'tree [u8],
6344    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
6345        match node.kind() {
6346            ";" => Ok(Self::Semicolon(::treesitter_types::Span::from(node))),
6347            "empty_statement" => Ok(Self::EmptyStatement(::std::boxed::Box::new(
6348                <EmptyStatement as ::treesitter_types::FromNode>::from_node(node, src)?,
6349            ))),
6350            "sequence_expression" => Ok(Self::SequenceExpression(::std::boxed::Box::new(
6351                <SequenceExpression as ::treesitter_types::FromNode>::from_node(node, src)?,
6352            ))),
6353            _other => {
6354                if let Ok(v) = <Expression as ::treesitter_types::FromNode>::from_node(node, src) {
6355                    Ok(Self::Expression(::std::boxed::Box::new(v)))
6356                } else {
6357                    Err(::treesitter_types::ParseError::unexpected_kind(
6358                        _other, node,
6359                    ))
6360                }
6361            }
6362        }
6363    }
6364}
6365impl ::treesitter_types::Spanned for ForStatementCondition<'_> {
6366    fn span(&self) -> ::treesitter_types::Span {
6367        match self {
6368            Self::Semicolon(span) => *span,
6369            Self::EmptyStatement(inner) => inner.span(),
6370            Self::Expression(inner) => inner.span(),
6371            Self::SequenceExpression(inner) => inner.span(),
6372        }
6373    }
6374}
6375#[derive(Debug, Clone)]
6376pub enum ForStatementIncrement<'tree> {
6377    Expression(::std::boxed::Box<Expression<'tree>>),
6378    SequenceExpression(::std::boxed::Box<SequenceExpression<'tree>>),
6379}
6380impl<'tree> ::treesitter_types::FromNode<'tree> for ForStatementIncrement<'tree> {
6381    #[allow(clippy::collapsible_else_if)]
6382    fn from_node(
6383        node: ::tree_sitter::Node<'tree>,
6384        src: &'tree [u8],
6385    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
6386        match node.kind() {
6387            "sequence_expression" => Ok(Self::SequenceExpression(::std::boxed::Box::new(
6388                <SequenceExpression as ::treesitter_types::FromNode>::from_node(node, src)?,
6389            ))),
6390            _other => {
6391                if let Ok(v) = <Expression as ::treesitter_types::FromNode>::from_node(node, src) {
6392                    Ok(Self::Expression(::std::boxed::Box::new(v)))
6393                } else {
6394                    Err(::treesitter_types::ParseError::unexpected_kind(
6395                        _other, node,
6396                    ))
6397                }
6398            }
6399        }
6400    }
6401}
6402impl ::treesitter_types::Spanned for ForStatementIncrement<'_> {
6403    fn span(&self) -> ::treesitter_types::Span {
6404        match self {
6405            Self::Expression(inner) => inner.span(),
6406            Self::SequenceExpression(inner) => inner.span(),
6407        }
6408    }
6409}
6410#[derive(Debug, Clone)]
6411pub enum ForStatementInitializer<'tree> {
6412    EmptyStatement(::std::boxed::Box<EmptyStatement<'tree>>),
6413    Expression(::std::boxed::Box<Expression<'tree>>),
6414    LexicalDeclaration(::std::boxed::Box<LexicalDeclaration<'tree>>),
6415    SequenceExpression(::std::boxed::Box<SequenceExpression<'tree>>),
6416    VariableDeclaration(::std::boxed::Box<VariableDeclaration<'tree>>),
6417}
6418impl<'tree> ::treesitter_types::FromNode<'tree> for ForStatementInitializer<'tree> {
6419    #[allow(clippy::collapsible_else_if)]
6420    fn from_node(
6421        node: ::tree_sitter::Node<'tree>,
6422        src: &'tree [u8],
6423    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
6424        match node.kind() {
6425            "empty_statement" => Ok(Self::EmptyStatement(::std::boxed::Box::new(
6426                <EmptyStatement as ::treesitter_types::FromNode>::from_node(node, src)?,
6427            ))),
6428            "lexical_declaration" => Ok(Self::LexicalDeclaration(::std::boxed::Box::new(
6429                <LexicalDeclaration as ::treesitter_types::FromNode>::from_node(node, src)?,
6430            ))),
6431            "sequence_expression" => Ok(Self::SequenceExpression(::std::boxed::Box::new(
6432                <SequenceExpression as ::treesitter_types::FromNode>::from_node(node, src)?,
6433            ))),
6434            "variable_declaration" => Ok(Self::VariableDeclaration(::std::boxed::Box::new(
6435                <VariableDeclaration as ::treesitter_types::FromNode>::from_node(node, src)?,
6436            ))),
6437            _other => {
6438                if let Ok(v) = <Expression as ::treesitter_types::FromNode>::from_node(node, src) {
6439                    Ok(Self::Expression(::std::boxed::Box::new(v)))
6440                } else {
6441                    Err(::treesitter_types::ParseError::unexpected_kind(
6442                        _other, node,
6443                    ))
6444                }
6445            }
6446        }
6447    }
6448}
6449impl ::treesitter_types::Spanned for ForStatementInitializer<'_> {
6450    fn span(&self) -> ::treesitter_types::Span {
6451        match self {
6452            Self::EmptyStatement(inner) => inner.span(),
6453            Self::Expression(inner) => inner.span(),
6454            Self::LexicalDeclaration(inner) => inner.span(),
6455            Self::SequenceExpression(inner) => inner.span(),
6456            Self::VariableDeclaration(inner) => inner.span(),
6457        }
6458    }
6459}
6460#[derive(Debug, Clone)]
6461pub enum FormalParametersChildren<'tree> {
6462    AssignmentPattern(::std::boxed::Box<AssignmentPattern<'tree>>),
6463    Pattern(::std::boxed::Box<Pattern<'tree>>),
6464}
6465impl<'tree> ::treesitter_types::FromNode<'tree> for FormalParametersChildren<'tree> {
6466    #[allow(clippy::collapsible_else_if)]
6467    fn from_node(
6468        node: ::tree_sitter::Node<'tree>,
6469        src: &'tree [u8],
6470    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
6471        match node.kind() {
6472            "assignment_pattern" => Ok(Self::AssignmentPattern(::std::boxed::Box::new(
6473                <AssignmentPattern as ::treesitter_types::FromNode>::from_node(node, src)?,
6474            ))),
6475            _other => {
6476                if let Ok(v) = <Pattern as ::treesitter_types::FromNode>::from_node(node, src) {
6477                    Ok(Self::Pattern(::std::boxed::Box::new(v)))
6478                } else {
6479                    Err(::treesitter_types::ParseError::unexpected_kind(
6480                        _other, node,
6481                    ))
6482                }
6483            }
6484        }
6485    }
6486}
6487impl ::treesitter_types::Spanned for FormalParametersChildren<'_> {
6488    fn span(&self) -> ::treesitter_types::Span {
6489        match self {
6490            Self::AssignmentPattern(inner) => inner.span(),
6491            Self::Pattern(inner) => inner.span(),
6492        }
6493    }
6494}
6495#[derive(Debug, Clone)]
6496pub enum ImportClauseChildren<'tree> {
6497    Identifier(::std::boxed::Box<Identifier<'tree>>),
6498    NamedImports(::std::boxed::Box<NamedImports<'tree>>),
6499    NamespaceImport(::std::boxed::Box<NamespaceImport<'tree>>),
6500}
6501impl<'tree> ::treesitter_types::FromNode<'tree> for ImportClauseChildren<'tree> {
6502    #[allow(clippy::collapsible_else_if)]
6503    fn from_node(
6504        node: ::tree_sitter::Node<'tree>,
6505        src: &'tree [u8],
6506    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
6507        match node.kind() {
6508            "identifier" => Ok(Self::Identifier(::std::boxed::Box::new(
6509                <Identifier as ::treesitter_types::FromNode>::from_node(node, src)?,
6510            ))),
6511            "named_imports" => Ok(Self::NamedImports(::std::boxed::Box::new(
6512                <NamedImports as ::treesitter_types::FromNode>::from_node(node, src)?,
6513            ))),
6514            "namespace_import" => Ok(Self::NamespaceImport(::std::boxed::Box::new(
6515                <NamespaceImport as ::treesitter_types::FromNode>::from_node(node, src)?,
6516            ))),
6517            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
6518        }
6519    }
6520}
6521impl ::treesitter_types::Spanned for ImportClauseChildren<'_> {
6522    fn span(&self) -> ::treesitter_types::Span {
6523        match self {
6524            Self::Identifier(inner) => inner.span(),
6525            Self::NamedImports(inner) => inner.span(),
6526            Self::NamespaceImport(inner) => inner.span(),
6527        }
6528    }
6529}
6530#[derive(Debug, Clone)]
6531pub enum ImportSpecifierName<'tree> {
6532    Default(::treesitter_types::Span),
6533    Identifier(::std::boxed::Box<Identifier<'tree>>),
6534    String(::std::boxed::Box<String<'tree>>),
6535}
6536impl<'tree> ::treesitter_types::FromNode<'tree> for ImportSpecifierName<'tree> {
6537    #[allow(clippy::collapsible_else_if)]
6538    fn from_node(
6539        node: ::tree_sitter::Node<'tree>,
6540        src: &'tree [u8],
6541    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
6542        match node.kind() {
6543            "default" => Ok(Self::Default(::treesitter_types::Span::from(node))),
6544            "identifier" => Ok(Self::Identifier(::std::boxed::Box::new(
6545                <Identifier as ::treesitter_types::FromNode>::from_node(node, src)?,
6546            ))),
6547            "string" => Ok(Self::String(::std::boxed::Box::new(
6548                <String as ::treesitter_types::FromNode>::from_node(node, src)?,
6549            ))),
6550            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
6551        }
6552    }
6553}
6554impl ::treesitter_types::Spanned for ImportSpecifierName<'_> {
6555    fn span(&self) -> ::treesitter_types::Span {
6556        match self {
6557            Self::Default(span) => *span,
6558            Self::Identifier(inner) => inner.span(),
6559            Self::String(inner) => inner.span(),
6560        }
6561    }
6562}
6563#[derive(Debug, Clone)]
6564pub enum ImportStatementChildren<'tree> {
6565    ImportAttribute(::std::boxed::Box<ImportAttribute<'tree>>),
6566    ImportClause(::std::boxed::Box<ImportClause<'tree>>),
6567}
6568impl<'tree> ::treesitter_types::FromNode<'tree> for ImportStatementChildren<'tree> {
6569    #[allow(clippy::collapsible_else_if)]
6570    fn from_node(
6571        node: ::tree_sitter::Node<'tree>,
6572        src: &'tree [u8],
6573    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
6574        match node.kind() {
6575            "import_attribute" => Ok(Self::ImportAttribute(::std::boxed::Box::new(
6576                <ImportAttribute as ::treesitter_types::FromNode>::from_node(node, src)?,
6577            ))),
6578            "import_clause" => Ok(Self::ImportClause(::std::boxed::Box::new(
6579                <ImportClause as ::treesitter_types::FromNode>::from_node(node, src)?,
6580            ))),
6581            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
6582        }
6583    }
6584}
6585impl ::treesitter_types::Spanned for ImportStatementChildren<'_> {
6586    fn span(&self) -> ::treesitter_types::Span {
6587        match self {
6588            Self::ImportAttribute(inner) => inner.span(),
6589            Self::ImportClause(inner) => inner.span(),
6590        }
6591    }
6592}
6593#[derive(Debug, Clone)]
6594pub enum JsxAttributeChildren<'tree> {
6595    JsxElement(::std::boxed::Box<JsxElement<'tree>>),
6596    JsxExpression(::std::boxed::Box<JsxExpression<'tree>>),
6597    JsxNamespaceName(::std::boxed::Box<JsxNamespaceName<'tree>>),
6598    JsxSelfClosingElement(::std::boxed::Box<JsxSelfClosingElement<'tree>>),
6599    PropertyIdentifier(::std::boxed::Box<PropertyIdentifier<'tree>>),
6600    String(::std::boxed::Box<String<'tree>>),
6601}
6602impl<'tree> ::treesitter_types::FromNode<'tree> for JsxAttributeChildren<'tree> {
6603    #[allow(clippy::collapsible_else_if)]
6604    fn from_node(
6605        node: ::tree_sitter::Node<'tree>,
6606        src: &'tree [u8],
6607    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
6608        match node.kind() {
6609            "jsx_element" => Ok(Self::JsxElement(::std::boxed::Box::new(
6610                <JsxElement as ::treesitter_types::FromNode>::from_node(node, src)?,
6611            ))),
6612            "jsx_expression" => Ok(Self::JsxExpression(::std::boxed::Box::new(
6613                <JsxExpression as ::treesitter_types::FromNode>::from_node(node, src)?,
6614            ))),
6615            "jsx_namespace_name" => Ok(Self::JsxNamespaceName(::std::boxed::Box::new(
6616                <JsxNamespaceName as ::treesitter_types::FromNode>::from_node(node, src)?,
6617            ))),
6618            "jsx_self_closing_element" => Ok(Self::JsxSelfClosingElement(::std::boxed::Box::new(
6619                <JsxSelfClosingElement as ::treesitter_types::FromNode>::from_node(node, src)?,
6620            ))),
6621            "property_identifier" => Ok(Self::PropertyIdentifier(::std::boxed::Box::new(
6622                <PropertyIdentifier as ::treesitter_types::FromNode>::from_node(node, src)?,
6623            ))),
6624            "string" => Ok(Self::String(::std::boxed::Box::new(
6625                <String as ::treesitter_types::FromNode>::from_node(node, src)?,
6626            ))),
6627            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
6628        }
6629    }
6630}
6631impl ::treesitter_types::Spanned for JsxAttributeChildren<'_> {
6632    fn span(&self) -> ::treesitter_types::Span {
6633        match self {
6634            Self::JsxElement(inner) => inner.span(),
6635            Self::JsxExpression(inner) => inner.span(),
6636            Self::JsxNamespaceName(inner) => inner.span(),
6637            Self::JsxSelfClosingElement(inner) => inner.span(),
6638            Self::PropertyIdentifier(inner) => inner.span(),
6639            Self::String(inner) => inner.span(),
6640        }
6641    }
6642}
6643#[derive(Debug, Clone)]
6644pub enum JsxClosingElementName<'tree> {
6645    Identifier(::std::boxed::Box<Identifier<'tree>>),
6646    JsxNamespaceName(::std::boxed::Box<JsxNamespaceName<'tree>>),
6647    MemberExpression(::std::boxed::Box<MemberExpression<'tree>>),
6648}
6649impl<'tree> ::treesitter_types::FromNode<'tree> for JsxClosingElementName<'tree> {
6650    #[allow(clippy::collapsible_else_if)]
6651    fn from_node(
6652        node: ::tree_sitter::Node<'tree>,
6653        src: &'tree [u8],
6654    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
6655        match node.kind() {
6656            "identifier" => Ok(Self::Identifier(::std::boxed::Box::new(
6657                <Identifier as ::treesitter_types::FromNode>::from_node(node, src)?,
6658            ))),
6659            "jsx_namespace_name" => Ok(Self::JsxNamespaceName(::std::boxed::Box::new(
6660                <JsxNamespaceName as ::treesitter_types::FromNode>::from_node(node, src)?,
6661            ))),
6662            "member_expression" => Ok(Self::MemberExpression(::std::boxed::Box::new(
6663                <MemberExpression as ::treesitter_types::FromNode>::from_node(node, src)?,
6664            ))),
6665            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
6666        }
6667    }
6668}
6669impl ::treesitter_types::Spanned for JsxClosingElementName<'_> {
6670    fn span(&self) -> ::treesitter_types::Span {
6671        match self {
6672            Self::Identifier(inner) => inner.span(),
6673            Self::JsxNamespaceName(inner) => inner.span(),
6674            Self::MemberExpression(inner) => inner.span(),
6675        }
6676    }
6677}
6678#[derive(Debug, Clone)]
6679pub enum JsxElementChildren<'tree> {
6680    HtmlCharacterReference(::std::boxed::Box<HtmlCharacterReference<'tree>>),
6681    JsxElement(::std::boxed::Box<JsxElement<'tree>>),
6682    JsxExpression(::std::boxed::Box<JsxExpression<'tree>>),
6683    JsxSelfClosingElement(::std::boxed::Box<JsxSelfClosingElement<'tree>>),
6684    JsxText(::std::boxed::Box<JsxText<'tree>>),
6685}
6686impl<'tree> ::treesitter_types::FromNode<'tree> for JsxElementChildren<'tree> {
6687    #[allow(clippy::collapsible_else_if)]
6688    fn from_node(
6689        node: ::tree_sitter::Node<'tree>,
6690        src: &'tree [u8],
6691    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
6692        match node.kind() {
6693            "html_character_reference" => Ok(Self::HtmlCharacterReference(::std::boxed::Box::new(
6694                <HtmlCharacterReference as ::treesitter_types::FromNode>::from_node(node, src)?,
6695            ))),
6696            "jsx_element" => Ok(Self::JsxElement(::std::boxed::Box::new(
6697                <JsxElement as ::treesitter_types::FromNode>::from_node(node, src)?,
6698            ))),
6699            "jsx_expression" => Ok(Self::JsxExpression(::std::boxed::Box::new(
6700                <JsxExpression as ::treesitter_types::FromNode>::from_node(node, src)?,
6701            ))),
6702            "jsx_self_closing_element" => Ok(Self::JsxSelfClosingElement(::std::boxed::Box::new(
6703                <JsxSelfClosingElement as ::treesitter_types::FromNode>::from_node(node, src)?,
6704            ))),
6705            "jsx_text" => Ok(Self::JsxText(::std::boxed::Box::new(
6706                <JsxText as ::treesitter_types::FromNode>::from_node(node, src)?,
6707            ))),
6708            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
6709        }
6710    }
6711}
6712impl ::treesitter_types::Spanned for JsxElementChildren<'_> {
6713    fn span(&self) -> ::treesitter_types::Span {
6714        match self {
6715            Self::HtmlCharacterReference(inner) => inner.span(),
6716            Self::JsxElement(inner) => inner.span(),
6717            Self::JsxExpression(inner) => inner.span(),
6718            Self::JsxSelfClosingElement(inner) => inner.span(),
6719            Self::JsxText(inner) => inner.span(),
6720        }
6721    }
6722}
6723#[derive(Debug, Clone)]
6724pub enum JsxExpressionChildren<'tree> {
6725    Expression(::std::boxed::Box<Expression<'tree>>),
6726    SequenceExpression(::std::boxed::Box<SequenceExpression<'tree>>),
6727    SpreadElement(::std::boxed::Box<SpreadElement<'tree>>),
6728}
6729impl<'tree> ::treesitter_types::FromNode<'tree> for JsxExpressionChildren<'tree> {
6730    #[allow(clippy::collapsible_else_if)]
6731    fn from_node(
6732        node: ::tree_sitter::Node<'tree>,
6733        src: &'tree [u8],
6734    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
6735        match node.kind() {
6736            "sequence_expression" => Ok(Self::SequenceExpression(::std::boxed::Box::new(
6737                <SequenceExpression as ::treesitter_types::FromNode>::from_node(node, src)?,
6738            ))),
6739            "spread_element" => Ok(Self::SpreadElement(::std::boxed::Box::new(
6740                <SpreadElement as ::treesitter_types::FromNode>::from_node(node, src)?,
6741            ))),
6742            _other => {
6743                if let Ok(v) = <Expression as ::treesitter_types::FromNode>::from_node(node, src) {
6744                    Ok(Self::Expression(::std::boxed::Box::new(v)))
6745                } else {
6746                    Err(::treesitter_types::ParseError::unexpected_kind(
6747                        _other, node,
6748                    ))
6749                }
6750            }
6751        }
6752    }
6753}
6754impl ::treesitter_types::Spanned for JsxExpressionChildren<'_> {
6755    fn span(&self) -> ::treesitter_types::Span {
6756        match self {
6757            Self::Expression(inner) => inner.span(),
6758            Self::SequenceExpression(inner) => inner.span(),
6759            Self::SpreadElement(inner) => inner.span(),
6760        }
6761    }
6762}
6763#[derive(Debug, Clone)]
6764pub enum JsxOpeningElementAttribute<'tree> {
6765    JsxAttribute(::std::boxed::Box<JsxAttribute<'tree>>),
6766    JsxExpression(::std::boxed::Box<JsxExpression<'tree>>),
6767}
6768impl<'tree> ::treesitter_types::FromNode<'tree> for JsxOpeningElementAttribute<'tree> {
6769    #[allow(clippy::collapsible_else_if)]
6770    fn from_node(
6771        node: ::tree_sitter::Node<'tree>,
6772        src: &'tree [u8],
6773    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
6774        match node.kind() {
6775            "jsx_attribute" => Ok(Self::JsxAttribute(::std::boxed::Box::new(
6776                <JsxAttribute as ::treesitter_types::FromNode>::from_node(node, src)?,
6777            ))),
6778            "jsx_expression" => Ok(Self::JsxExpression(::std::boxed::Box::new(
6779                <JsxExpression as ::treesitter_types::FromNode>::from_node(node, src)?,
6780            ))),
6781            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
6782        }
6783    }
6784}
6785impl ::treesitter_types::Spanned for JsxOpeningElementAttribute<'_> {
6786    fn span(&self) -> ::treesitter_types::Span {
6787        match self {
6788            Self::JsxAttribute(inner) => inner.span(),
6789            Self::JsxExpression(inner) => inner.span(),
6790        }
6791    }
6792}
6793#[derive(Debug, Clone)]
6794pub enum JsxOpeningElementName<'tree> {
6795    Identifier(::std::boxed::Box<Identifier<'tree>>),
6796    JsxNamespaceName(::std::boxed::Box<JsxNamespaceName<'tree>>),
6797    MemberExpression(::std::boxed::Box<MemberExpression<'tree>>),
6798}
6799impl<'tree> ::treesitter_types::FromNode<'tree> for JsxOpeningElementName<'tree> {
6800    #[allow(clippy::collapsible_else_if)]
6801    fn from_node(
6802        node: ::tree_sitter::Node<'tree>,
6803        src: &'tree [u8],
6804    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
6805        match node.kind() {
6806            "identifier" => Ok(Self::Identifier(::std::boxed::Box::new(
6807                <Identifier as ::treesitter_types::FromNode>::from_node(node, src)?,
6808            ))),
6809            "jsx_namespace_name" => Ok(Self::JsxNamespaceName(::std::boxed::Box::new(
6810                <JsxNamespaceName as ::treesitter_types::FromNode>::from_node(node, src)?,
6811            ))),
6812            "member_expression" => Ok(Self::MemberExpression(::std::boxed::Box::new(
6813                <MemberExpression as ::treesitter_types::FromNode>::from_node(node, src)?,
6814            ))),
6815            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
6816        }
6817    }
6818}
6819impl ::treesitter_types::Spanned for JsxOpeningElementName<'_> {
6820    fn span(&self) -> ::treesitter_types::Span {
6821        match self {
6822            Self::Identifier(inner) => inner.span(),
6823            Self::JsxNamespaceName(inner) => inner.span(),
6824            Self::MemberExpression(inner) => inner.span(),
6825        }
6826    }
6827}
6828#[derive(Debug, Clone)]
6829pub enum JsxSelfClosingElementAttribute<'tree> {
6830    JsxAttribute(::std::boxed::Box<JsxAttribute<'tree>>),
6831    JsxExpression(::std::boxed::Box<JsxExpression<'tree>>),
6832}
6833impl<'tree> ::treesitter_types::FromNode<'tree> for JsxSelfClosingElementAttribute<'tree> {
6834    #[allow(clippy::collapsible_else_if)]
6835    fn from_node(
6836        node: ::tree_sitter::Node<'tree>,
6837        src: &'tree [u8],
6838    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
6839        match node.kind() {
6840            "jsx_attribute" => Ok(Self::JsxAttribute(::std::boxed::Box::new(
6841                <JsxAttribute as ::treesitter_types::FromNode>::from_node(node, src)?,
6842            ))),
6843            "jsx_expression" => Ok(Self::JsxExpression(::std::boxed::Box::new(
6844                <JsxExpression as ::treesitter_types::FromNode>::from_node(node, src)?,
6845            ))),
6846            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
6847        }
6848    }
6849}
6850impl ::treesitter_types::Spanned for JsxSelfClosingElementAttribute<'_> {
6851    fn span(&self) -> ::treesitter_types::Span {
6852        match self {
6853            Self::JsxAttribute(inner) => inner.span(),
6854            Self::JsxExpression(inner) => inner.span(),
6855        }
6856    }
6857}
6858#[derive(Debug, Clone)]
6859pub enum JsxSelfClosingElementName<'tree> {
6860    Identifier(::std::boxed::Box<Identifier<'tree>>),
6861    JsxNamespaceName(::std::boxed::Box<JsxNamespaceName<'tree>>),
6862    MemberExpression(::std::boxed::Box<MemberExpression<'tree>>),
6863}
6864impl<'tree> ::treesitter_types::FromNode<'tree> for JsxSelfClosingElementName<'tree> {
6865    #[allow(clippy::collapsible_else_if)]
6866    fn from_node(
6867        node: ::tree_sitter::Node<'tree>,
6868        src: &'tree [u8],
6869    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
6870        match node.kind() {
6871            "identifier" => Ok(Self::Identifier(::std::boxed::Box::new(
6872                <Identifier as ::treesitter_types::FromNode>::from_node(node, src)?,
6873            ))),
6874            "jsx_namespace_name" => Ok(Self::JsxNamespaceName(::std::boxed::Box::new(
6875                <JsxNamespaceName as ::treesitter_types::FromNode>::from_node(node, src)?,
6876            ))),
6877            "member_expression" => Ok(Self::MemberExpression(::std::boxed::Box::new(
6878                <MemberExpression as ::treesitter_types::FromNode>::from_node(node, src)?,
6879            ))),
6880            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
6881        }
6882    }
6883}
6884impl ::treesitter_types::Spanned for JsxSelfClosingElementName<'_> {
6885    fn span(&self) -> ::treesitter_types::Span {
6886        match self {
6887            Self::Identifier(inner) => inner.span(),
6888            Self::JsxNamespaceName(inner) => inner.span(),
6889            Self::MemberExpression(inner) => inner.span(),
6890        }
6891    }
6892}
6893#[derive(Debug, Clone)]
6894pub enum LexicalDeclarationKind {
6895    Const(::treesitter_types::Span),
6896    Let(::treesitter_types::Span),
6897}
6898impl<'tree> ::treesitter_types::FromNode<'tree> for LexicalDeclarationKind {
6899    #[allow(clippy::collapsible_else_if)]
6900    fn from_node(
6901        node: ::tree_sitter::Node<'tree>,
6902        _src: &'tree [u8],
6903    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
6904        match node.kind() {
6905            "const" => Ok(Self::Const(::treesitter_types::Span::from(node))),
6906            "let" => Ok(Self::Let(::treesitter_types::Span::from(node))),
6907            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
6908        }
6909    }
6910}
6911impl ::treesitter_types::Spanned for LexicalDeclarationKind {
6912    fn span(&self) -> ::treesitter_types::Span {
6913        match self {
6914            Self::Const(span) => *span,
6915            Self::Let(span) => *span,
6916        }
6917    }
6918}
6919#[derive(Debug, Clone)]
6920pub enum MemberExpressionObject<'tree> {
6921    Expression(::std::boxed::Box<Expression<'tree>>),
6922    Import(::std::boxed::Box<Import<'tree>>),
6923}
6924impl<'tree> ::treesitter_types::FromNode<'tree> for MemberExpressionObject<'tree> {
6925    #[allow(clippy::collapsible_else_if)]
6926    fn from_node(
6927        node: ::tree_sitter::Node<'tree>,
6928        src: &'tree [u8],
6929    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
6930        match node.kind() {
6931            "import" => Ok(Self::Import(::std::boxed::Box::new(
6932                <Import as ::treesitter_types::FromNode>::from_node(node, src)?,
6933            ))),
6934            _other => {
6935                if let Ok(v) = <Expression as ::treesitter_types::FromNode>::from_node(node, src) {
6936                    Ok(Self::Expression(::std::boxed::Box::new(v)))
6937                } else {
6938                    Err(::treesitter_types::ParseError::unexpected_kind(
6939                        _other, node,
6940                    ))
6941                }
6942            }
6943        }
6944    }
6945}
6946impl ::treesitter_types::Spanned for MemberExpressionObject<'_> {
6947    fn span(&self) -> ::treesitter_types::Span {
6948        match self {
6949            Self::Expression(inner) => inner.span(),
6950            Self::Import(inner) => inner.span(),
6951        }
6952    }
6953}
6954#[derive(Debug, Clone)]
6955pub enum MemberExpressionProperty<'tree> {
6956    PrivatePropertyIdentifier(::std::boxed::Box<PrivatePropertyIdentifier<'tree>>),
6957    PropertyIdentifier(::std::boxed::Box<PropertyIdentifier<'tree>>),
6958}
6959impl<'tree> ::treesitter_types::FromNode<'tree> for MemberExpressionProperty<'tree> {
6960    #[allow(clippy::collapsible_else_if)]
6961    fn from_node(
6962        node: ::tree_sitter::Node<'tree>,
6963        src: &'tree [u8],
6964    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
6965        match node.kind() {
6966            "private_property_identifier" => {
6967                Ok(Self::PrivatePropertyIdentifier(::std::boxed::Box::new(
6968                    <PrivatePropertyIdentifier as ::treesitter_types::FromNode>::from_node(
6969                        node, src,
6970                    )?,
6971                )))
6972            }
6973            "property_identifier" => Ok(Self::PropertyIdentifier(::std::boxed::Box::new(
6974                <PropertyIdentifier as ::treesitter_types::FromNode>::from_node(node, src)?,
6975            ))),
6976            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
6977        }
6978    }
6979}
6980impl ::treesitter_types::Spanned for MemberExpressionProperty<'_> {
6981    fn span(&self) -> ::treesitter_types::Span {
6982        match self {
6983            Self::PrivatePropertyIdentifier(inner) => inner.span(),
6984            Self::PropertyIdentifier(inner) => inner.span(),
6985        }
6986    }
6987}
6988#[derive(Debug, Clone)]
6989pub enum MethodDefinitionName<'tree> {
6990    ComputedPropertyName(::std::boxed::Box<ComputedPropertyName<'tree>>),
6991    Number(::std::boxed::Box<Number<'tree>>),
6992    PrivatePropertyIdentifier(::std::boxed::Box<PrivatePropertyIdentifier<'tree>>),
6993    PropertyIdentifier(::std::boxed::Box<PropertyIdentifier<'tree>>),
6994    String(::std::boxed::Box<String<'tree>>),
6995}
6996impl<'tree> ::treesitter_types::FromNode<'tree> for MethodDefinitionName<'tree> {
6997    #[allow(clippy::collapsible_else_if)]
6998    fn from_node(
6999        node: ::tree_sitter::Node<'tree>,
7000        src: &'tree [u8],
7001    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
7002        match node.kind() {
7003            "computed_property_name" => Ok(Self::ComputedPropertyName(::std::boxed::Box::new(
7004                <ComputedPropertyName as ::treesitter_types::FromNode>::from_node(node, src)?,
7005            ))),
7006            "number" => Ok(Self::Number(::std::boxed::Box::new(
7007                <Number as ::treesitter_types::FromNode>::from_node(node, src)?,
7008            ))),
7009            "private_property_identifier" => {
7010                Ok(Self::PrivatePropertyIdentifier(::std::boxed::Box::new(
7011                    <PrivatePropertyIdentifier as ::treesitter_types::FromNode>::from_node(
7012                        node, src,
7013                    )?,
7014                )))
7015            }
7016            "property_identifier" => Ok(Self::PropertyIdentifier(::std::boxed::Box::new(
7017                <PropertyIdentifier as ::treesitter_types::FromNode>::from_node(node, src)?,
7018            ))),
7019            "string" => Ok(Self::String(::std::boxed::Box::new(
7020                <String as ::treesitter_types::FromNode>::from_node(node, src)?,
7021            ))),
7022            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
7023        }
7024    }
7025}
7026impl ::treesitter_types::Spanned for MethodDefinitionName<'_> {
7027    fn span(&self) -> ::treesitter_types::Span {
7028        match self {
7029            Self::ComputedPropertyName(inner) => inner.span(),
7030            Self::Number(inner) => inner.span(),
7031            Self::PrivatePropertyIdentifier(inner) => inner.span(),
7032            Self::PropertyIdentifier(inner) => inner.span(),
7033            Self::String(inner) => inner.span(),
7034        }
7035    }
7036}
7037#[derive(Debug, Clone)]
7038pub enum NamespaceExportChildren<'tree> {
7039    Identifier(::std::boxed::Box<Identifier<'tree>>),
7040    String(::std::boxed::Box<String<'tree>>),
7041}
7042impl<'tree> ::treesitter_types::FromNode<'tree> for NamespaceExportChildren<'tree> {
7043    #[allow(clippy::collapsible_else_if)]
7044    fn from_node(
7045        node: ::tree_sitter::Node<'tree>,
7046        src: &'tree [u8],
7047    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
7048        match node.kind() {
7049            "identifier" => Ok(Self::Identifier(::std::boxed::Box::new(
7050                <Identifier as ::treesitter_types::FromNode>::from_node(node, src)?,
7051            ))),
7052            "string" => Ok(Self::String(::std::boxed::Box::new(
7053                <String as ::treesitter_types::FromNode>::from_node(node, src)?,
7054            ))),
7055            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
7056        }
7057    }
7058}
7059impl ::treesitter_types::Spanned for NamespaceExportChildren<'_> {
7060    fn span(&self) -> ::treesitter_types::Span {
7061        match self {
7062            Self::Identifier(inner) => inner.span(),
7063            Self::String(inner) => inner.span(),
7064        }
7065    }
7066}
7067#[derive(Debug, Clone)]
7068pub enum NewExpressionConstructor<'tree> {
7069    NewExpression(::std::boxed::Box<NewExpression<'tree>>),
7070    PrimaryExpression(::std::boxed::Box<PrimaryExpression<'tree>>),
7071}
7072impl<'tree> ::treesitter_types::FromNode<'tree> for NewExpressionConstructor<'tree> {
7073    #[allow(clippy::collapsible_else_if)]
7074    fn from_node(
7075        node: ::tree_sitter::Node<'tree>,
7076        src: &'tree [u8],
7077    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
7078        match node.kind() {
7079            "new_expression" => Ok(Self::NewExpression(::std::boxed::Box::new(
7080                <NewExpression as ::treesitter_types::FromNode>::from_node(node, src)?,
7081            ))),
7082            _other => {
7083                if let Ok(v) =
7084                    <PrimaryExpression as ::treesitter_types::FromNode>::from_node(node, src)
7085                {
7086                    Ok(Self::PrimaryExpression(::std::boxed::Box::new(v)))
7087                } else {
7088                    Err(::treesitter_types::ParseError::unexpected_kind(
7089                        _other, node,
7090                    ))
7091                }
7092            }
7093        }
7094    }
7095}
7096impl ::treesitter_types::Spanned for NewExpressionConstructor<'_> {
7097    fn span(&self) -> ::treesitter_types::Span {
7098        match self {
7099            Self::NewExpression(inner) => inner.span(),
7100            Self::PrimaryExpression(inner) => inner.span(),
7101        }
7102    }
7103}
7104#[derive(Debug, Clone)]
7105pub enum ObjectChildren<'tree> {
7106    MethodDefinition(::std::boxed::Box<MethodDefinition<'tree>>),
7107    Pair(::std::boxed::Box<Pair<'tree>>),
7108    ShorthandPropertyIdentifier(::std::boxed::Box<ShorthandPropertyIdentifier<'tree>>),
7109    SpreadElement(::std::boxed::Box<SpreadElement<'tree>>),
7110}
7111impl<'tree> ::treesitter_types::FromNode<'tree> for ObjectChildren<'tree> {
7112    #[allow(clippy::collapsible_else_if)]
7113    fn from_node(
7114        node: ::tree_sitter::Node<'tree>,
7115        src: &'tree [u8],
7116    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
7117        match node.kind() {
7118            "method_definition" => Ok(Self::MethodDefinition(::std::boxed::Box::new(
7119                <MethodDefinition as ::treesitter_types::FromNode>::from_node(node, src)?,
7120            ))),
7121            "pair" => Ok(Self::Pair(::std::boxed::Box::new(
7122                <Pair as ::treesitter_types::FromNode>::from_node(node, src)?,
7123            ))),
7124            "shorthand_property_identifier" => {
7125                Ok(Self::ShorthandPropertyIdentifier(::std::boxed::Box::new(
7126                    <ShorthandPropertyIdentifier as ::treesitter_types::FromNode>::from_node(
7127                        node, src,
7128                    )?,
7129                )))
7130            }
7131            "spread_element" => Ok(Self::SpreadElement(::std::boxed::Box::new(
7132                <SpreadElement as ::treesitter_types::FromNode>::from_node(node, src)?,
7133            ))),
7134            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
7135        }
7136    }
7137}
7138impl ::treesitter_types::Spanned for ObjectChildren<'_> {
7139    fn span(&self) -> ::treesitter_types::Span {
7140        match self {
7141            Self::MethodDefinition(inner) => inner.span(),
7142            Self::Pair(inner) => inner.span(),
7143            Self::ShorthandPropertyIdentifier(inner) => inner.span(),
7144            Self::SpreadElement(inner) => inner.span(),
7145        }
7146    }
7147}
7148#[derive(Debug, Clone)]
7149pub enum ObjectAssignmentPatternLeft<'tree> {
7150    ArrayPattern(::std::boxed::Box<ArrayPattern<'tree>>),
7151    ObjectPattern(::std::boxed::Box<ObjectPattern<'tree>>),
7152    ShorthandPropertyIdentifierPattern(
7153        ::std::boxed::Box<ShorthandPropertyIdentifierPattern<'tree>>,
7154    ),
7155}
7156impl<'tree> ::treesitter_types::FromNode<'tree> for ObjectAssignmentPatternLeft<'tree> {
7157    #[allow(clippy::collapsible_else_if)]
7158    fn from_node(
7159        node: ::tree_sitter::Node<'tree>,
7160        src: &'tree [u8],
7161    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
7162        match node.kind() {
7163            "array_pattern" => {
7164                Ok(
7165                    Self::ArrayPattern(
7166                        ::std::boxed::Box::new(
7167                            <ArrayPattern as ::treesitter_types::FromNode>::from_node(
7168                                node,
7169                                src,
7170                            )?,
7171                        ),
7172                    ),
7173                )
7174            }
7175            "object_pattern" => {
7176                Ok(
7177                    Self::ObjectPattern(
7178                        ::std::boxed::Box::new(
7179                            <ObjectPattern as ::treesitter_types::FromNode>::from_node(
7180                                node,
7181                                src,
7182                            )?,
7183                        ),
7184                    ),
7185                )
7186            }
7187            "shorthand_property_identifier_pattern" => {
7188                Ok(
7189                    Self::ShorthandPropertyIdentifierPattern(
7190                        ::std::boxed::Box::new(
7191                            <ShorthandPropertyIdentifierPattern as ::treesitter_types::FromNode>::from_node(
7192                                node,
7193                                src,
7194                            )?,
7195                        ),
7196                    ),
7197                )
7198            }
7199            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
7200        }
7201    }
7202}
7203impl ::treesitter_types::Spanned for ObjectAssignmentPatternLeft<'_> {
7204    fn span(&self) -> ::treesitter_types::Span {
7205        match self {
7206            Self::ArrayPattern(inner) => inner.span(),
7207            Self::ObjectPattern(inner) => inner.span(),
7208            Self::ShorthandPropertyIdentifierPattern(inner) => inner.span(),
7209        }
7210    }
7211}
7212#[derive(Debug, Clone)]
7213pub enum ObjectPatternChildren<'tree> {
7214    ObjectAssignmentPattern(::std::boxed::Box<ObjectAssignmentPattern<'tree>>),
7215    PairPattern(::std::boxed::Box<PairPattern<'tree>>),
7216    RestPattern(::std::boxed::Box<RestPattern<'tree>>),
7217    ShorthandPropertyIdentifierPattern(
7218        ::std::boxed::Box<ShorthandPropertyIdentifierPattern<'tree>>,
7219    ),
7220}
7221impl<'tree> ::treesitter_types::FromNode<'tree> for ObjectPatternChildren<'tree> {
7222    #[allow(clippy::collapsible_else_if)]
7223    fn from_node(
7224        node: ::tree_sitter::Node<'tree>,
7225        src: &'tree [u8],
7226    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
7227        match node.kind() {
7228            "object_assignment_pattern" => {
7229                Ok(
7230                    Self::ObjectAssignmentPattern(
7231                        ::std::boxed::Box::new(
7232                            <ObjectAssignmentPattern as ::treesitter_types::FromNode>::from_node(
7233                                node,
7234                                src,
7235                            )?,
7236                        ),
7237                    ),
7238                )
7239            }
7240            "pair_pattern" => {
7241                Ok(
7242                    Self::PairPattern(
7243                        ::std::boxed::Box::new(
7244                            <PairPattern as ::treesitter_types::FromNode>::from_node(
7245                                node,
7246                                src,
7247                            )?,
7248                        ),
7249                    ),
7250                )
7251            }
7252            "rest_pattern" => {
7253                Ok(
7254                    Self::RestPattern(
7255                        ::std::boxed::Box::new(
7256                            <RestPattern as ::treesitter_types::FromNode>::from_node(
7257                                node,
7258                                src,
7259                            )?,
7260                        ),
7261                    ),
7262                )
7263            }
7264            "shorthand_property_identifier_pattern" => {
7265                Ok(
7266                    Self::ShorthandPropertyIdentifierPattern(
7267                        ::std::boxed::Box::new(
7268                            <ShorthandPropertyIdentifierPattern as ::treesitter_types::FromNode>::from_node(
7269                                node,
7270                                src,
7271                            )?,
7272                        ),
7273                    ),
7274                )
7275            }
7276            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
7277        }
7278    }
7279}
7280impl ::treesitter_types::Spanned for ObjectPatternChildren<'_> {
7281    fn span(&self) -> ::treesitter_types::Span {
7282        match self {
7283            Self::ObjectAssignmentPattern(inner) => inner.span(),
7284            Self::PairPattern(inner) => inner.span(),
7285            Self::RestPattern(inner) => inner.span(),
7286            Self::ShorthandPropertyIdentifierPattern(inner) => inner.span(),
7287        }
7288    }
7289}
7290#[derive(Debug, Clone)]
7291pub enum PairKey<'tree> {
7292    ComputedPropertyName(::std::boxed::Box<ComputedPropertyName<'tree>>),
7293    Number(::std::boxed::Box<Number<'tree>>),
7294    PrivatePropertyIdentifier(::std::boxed::Box<PrivatePropertyIdentifier<'tree>>),
7295    PropertyIdentifier(::std::boxed::Box<PropertyIdentifier<'tree>>),
7296    String(::std::boxed::Box<String<'tree>>),
7297}
7298impl<'tree> ::treesitter_types::FromNode<'tree> for PairKey<'tree> {
7299    #[allow(clippy::collapsible_else_if)]
7300    fn from_node(
7301        node: ::tree_sitter::Node<'tree>,
7302        src: &'tree [u8],
7303    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
7304        match node.kind() {
7305            "computed_property_name" => Ok(Self::ComputedPropertyName(::std::boxed::Box::new(
7306                <ComputedPropertyName as ::treesitter_types::FromNode>::from_node(node, src)?,
7307            ))),
7308            "number" => Ok(Self::Number(::std::boxed::Box::new(
7309                <Number as ::treesitter_types::FromNode>::from_node(node, src)?,
7310            ))),
7311            "private_property_identifier" => {
7312                Ok(Self::PrivatePropertyIdentifier(::std::boxed::Box::new(
7313                    <PrivatePropertyIdentifier as ::treesitter_types::FromNode>::from_node(
7314                        node, src,
7315                    )?,
7316                )))
7317            }
7318            "property_identifier" => Ok(Self::PropertyIdentifier(::std::boxed::Box::new(
7319                <PropertyIdentifier as ::treesitter_types::FromNode>::from_node(node, src)?,
7320            ))),
7321            "string" => Ok(Self::String(::std::boxed::Box::new(
7322                <String as ::treesitter_types::FromNode>::from_node(node, src)?,
7323            ))),
7324            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
7325        }
7326    }
7327}
7328impl ::treesitter_types::Spanned for PairKey<'_> {
7329    fn span(&self) -> ::treesitter_types::Span {
7330        match self {
7331            Self::ComputedPropertyName(inner) => inner.span(),
7332            Self::Number(inner) => inner.span(),
7333            Self::PrivatePropertyIdentifier(inner) => inner.span(),
7334            Self::PropertyIdentifier(inner) => inner.span(),
7335            Self::String(inner) => inner.span(),
7336        }
7337    }
7338}
7339#[derive(Debug, Clone)]
7340pub enum PairPatternKey<'tree> {
7341    ComputedPropertyName(::std::boxed::Box<ComputedPropertyName<'tree>>),
7342    Number(::std::boxed::Box<Number<'tree>>),
7343    PrivatePropertyIdentifier(::std::boxed::Box<PrivatePropertyIdentifier<'tree>>),
7344    PropertyIdentifier(::std::boxed::Box<PropertyIdentifier<'tree>>),
7345    String(::std::boxed::Box<String<'tree>>),
7346}
7347impl<'tree> ::treesitter_types::FromNode<'tree> for PairPatternKey<'tree> {
7348    #[allow(clippy::collapsible_else_if)]
7349    fn from_node(
7350        node: ::tree_sitter::Node<'tree>,
7351        src: &'tree [u8],
7352    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
7353        match node.kind() {
7354            "computed_property_name" => Ok(Self::ComputedPropertyName(::std::boxed::Box::new(
7355                <ComputedPropertyName as ::treesitter_types::FromNode>::from_node(node, src)?,
7356            ))),
7357            "number" => Ok(Self::Number(::std::boxed::Box::new(
7358                <Number as ::treesitter_types::FromNode>::from_node(node, src)?,
7359            ))),
7360            "private_property_identifier" => {
7361                Ok(Self::PrivatePropertyIdentifier(::std::boxed::Box::new(
7362                    <PrivatePropertyIdentifier as ::treesitter_types::FromNode>::from_node(
7363                        node, src,
7364                    )?,
7365                )))
7366            }
7367            "property_identifier" => Ok(Self::PropertyIdentifier(::std::boxed::Box::new(
7368                <PropertyIdentifier as ::treesitter_types::FromNode>::from_node(node, src)?,
7369            ))),
7370            "string" => Ok(Self::String(::std::boxed::Box::new(
7371                <String as ::treesitter_types::FromNode>::from_node(node, src)?,
7372            ))),
7373            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
7374        }
7375    }
7376}
7377impl ::treesitter_types::Spanned for PairPatternKey<'_> {
7378    fn span(&self) -> ::treesitter_types::Span {
7379        match self {
7380            Self::ComputedPropertyName(inner) => inner.span(),
7381            Self::Number(inner) => inner.span(),
7382            Self::PrivatePropertyIdentifier(inner) => inner.span(),
7383            Self::PropertyIdentifier(inner) => inner.span(),
7384            Self::String(inner) => inner.span(),
7385        }
7386    }
7387}
7388#[derive(Debug, Clone)]
7389pub enum PairPatternValue<'tree> {
7390    AssignmentPattern(::std::boxed::Box<AssignmentPattern<'tree>>),
7391    Pattern(::std::boxed::Box<Pattern<'tree>>),
7392}
7393impl<'tree> ::treesitter_types::FromNode<'tree> for PairPatternValue<'tree> {
7394    #[allow(clippy::collapsible_else_if)]
7395    fn from_node(
7396        node: ::tree_sitter::Node<'tree>,
7397        src: &'tree [u8],
7398    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
7399        match node.kind() {
7400            "assignment_pattern" => Ok(Self::AssignmentPattern(::std::boxed::Box::new(
7401                <AssignmentPattern as ::treesitter_types::FromNode>::from_node(node, src)?,
7402            ))),
7403            _other => {
7404                if let Ok(v) = <Pattern as ::treesitter_types::FromNode>::from_node(node, src) {
7405                    Ok(Self::Pattern(::std::boxed::Box::new(v)))
7406                } else {
7407                    Err(::treesitter_types::ParseError::unexpected_kind(
7408                        _other, node,
7409                    ))
7410                }
7411            }
7412        }
7413    }
7414}
7415impl ::treesitter_types::Spanned for PairPatternValue<'_> {
7416    fn span(&self) -> ::treesitter_types::Span {
7417        match self {
7418            Self::AssignmentPattern(inner) => inner.span(),
7419            Self::Pattern(inner) => inner.span(),
7420        }
7421    }
7422}
7423#[derive(Debug, Clone)]
7424pub enum ParenthesizedExpressionChildren<'tree> {
7425    Expression(::std::boxed::Box<Expression<'tree>>),
7426    SequenceExpression(::std::boxed::Box<SequenceExpression<'tree>>),
7427}
7428impl<'tree> ::treesitter_types::FromNode<'tree> for ParenthesizedExpressionChildren<'tree> {
7429    #[allow(clippy::collapsible_else_if)]
7430    fn from_node(
7431        node: ::tree_sitter::Node<'tree>,
7432        src: &'tree [u8],
7433    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
7434        match node.kind() {
7435            "sequence_expression" => Ok(Self::SequenceExpression(::std::boxed::Box::new(
7436                <SequenceExpression as ::treesitter_types::FromNode>::from_node(node, src)?,
7437            ))),
7438            _other => {
7439                if let Ok(v) = <Expression as ::treesitter_types::FromNode>::from_node(node, src) {
7440                    Ok(Self::Expression(::std::boxed::Box::new(v)))
7441                } else {
7442                    Err(::treesitter_types::ParseError::unexpected_kind(
7443                        _other, node,
7444                    ))
7445                }
7446            }
7447        }
7448    }
7449}
7450impl ::treesitter_types::Spanned for ParenthesizedExpressionChildren<'_> {
7451    fn span(&self) -> ::treesitter_types::Span {
7452        match self {
7453            Self::Expression(inner) => inner.span(),
7454            Self::SequenceExpression(inner) => inner.span(),
7455        }
7456    }
7457}
7458#[derive(Debug, Clone)]
7459pub enum ProgramChildren<'tree> {
7460    HashBangLine(::std::boxed::Box<HashBangLine<'tree>>),
7461    Statement(::std::boxed::Box<Statement<'tree>>),
7462}
7463impl<'tree> ::treesitter_types::FromNode<'tree> for ProgramChildren<'tree> {
7464    #[allow(clippy::collapsible_else_if)]
7465    fn from_node(
7466        node: ::tree_sitter::Node<'tree>,
7467        src: &'tree [u8],
7468    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
7469        match node.kind() {
7470            "hash_bang_line" => Ok(Self::HashBangLine(::std::boxed::Box::new(
7471                <HashBangLine as ::treesitter_types::FromNode>::from_node(node, src)?,
7472            ))),
7473            _other => {
7474                if let Ok(v) = <Statement as ::treesitter_types::FromNode>::from_node(node, src) {
7475                    Ok(Self::Statement(::std::boxed::Box::new(v)))
7476                } else {
7477                    Err(::treesitter_types::ParseError::unexpected_kind(
7478                        _other, node,
7479                    ))
7480                }
7481            }
7482        }
7483    }
7484}
7485impl ::treesitter_types::Spanned for ProgramChildren<'_> {
7486    fn span(&self) -> ::treesitter_types::Span {
7487        match self {
7488            Self::HashBangLine(inner) => inner.span(),
7489            Self::Statement(inner) => inner.span(),
7490        }
7491    }
7492}
7493#[derive(Debug, Clone)]
7494pub enum RestPatternChildren<'tree> {
7495    ArrayPattern(::std::boxed::Box<ArrayPattern<'tree>>),
7496    Identifier(::std::boxed::Box<Identifier<'tree>>),
7497    MemberExpression(::std::boxed::Box<MemberExpression<'tree>>),
7498    ObjectPattern(::std::boxed::Box<ObjectPattern<'tree>>),
7499    SubscriptExpression(::std::boxed::Box<SubscriptExpression<'tree>>),
7500    Undefined(::std::boxed::Box<Undefined<'tree>>),
7501}
7502impl<'tree> ::treesitter_types::FromNode<'tree> for RestPatternChildren<'tree> {
7503    #[allow(clippy::collapsible_else_if)]
7504    fn from_node(
7505        node: ::tree_sitter::Node<'tree>,
7506        src: &'tree [u8],
7507    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
7508        match node.kind() {
7509            "array_pattern" => Ok(Self::ArrayPattern(::std::boxed::Box::new(
7510                <ArrayPattern as ::treesitter_types::FromNode>::from_node(node, src)?,
7511            ))),
7512            "identifier" => Ok(Self::Identifier(::std::boxed::Box::new(
7513                <Identifier as ::treesitter_types::FromNode>::from_node(node, src)?,
7514            ))),
7515            "member_expression" => Ok(Self::MemberExpression(::std::boxed::Box::new(
7516                <MemberExpression as ::treesitter_types::FromNode>::from_node(node, src)?,
7517            ))),
7518            "object_pattern" => Ok(Self::ObjectPattern(::std::boxed::Box::new(
7519                <ObjectPattern as ::treesitter_types::FromNode>::from_node(node, src)?,
7520            ))),
7521            "subscript_expression" => Ok(Self::SubscriptExpression(::std::boxed::Box::new(
7522                <SubscriptExpression as ::treesitter_types::FromNode>::from_node(node, src)?,
7523            ))),
7524            "undefined" => Ok(Self::Undefined(::std::boxed::Box::new(
7525                <Undefined as ::treesitter_types::FromNode>::from_node(node, src)?,
7526            ))),
7527            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
7528        }
7529    }
7530}
7531impl ::treesitter_types::Spanned for RestPatternChildren<'_> {
7532    fn span(&self) -> ::treesitter_types::Span {
7533        match self {
7534            Self::ArrayPattern(inner) => inner.span(),
7535            Self::Identifier(inner) => inner.span(),
7536            Self::MemberExpression(inner) => inner.span(),
7537            Self::ObjectPattern(inner) => inner.span(),
7538            Self::SubscriptExpression(inner) => inner.span(),
7539            Self::Undefined(inner) => inner.span(),
7540        }
7541    }
7542}
7543#[derive(Debug, Clone)]
7544pub enum ReturnStatementChildren<'tree> {
7545    Expression(::std::boxed::Box<Expression<'tree>>),
7546    SequenceExpression(::std::boxed::Box<SequenceExpression<'tree>>),
7547}
7548impl<'tree> ::treesitter_types::FromNode<'tree> for ReturnStatementChildren<'tree> {
7549    #[allow(clippy::collapsible_else_if)]
7550    fn from_node(
7551        node: ::tree_sitter::Node<'tree>,
7552        src: &'tree [u8],
7553    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
7554        match node.kind() {
7555            "sequence_expression" => Ok(Self::SequenceExpression(::std::boxed::Box::new(
7556                <SequenceExpression as ::treesitter_types::FromNode>::from_node(node, src)?,
7557            ))),
7558            _other => {
7559                if let Ok(v) = <Expression as ::treesitter_types::FromNode>::from_node(node, src) {
7560                    Ok(Self::Expression(::std::boxed::Box::new(v)))
7561                } else {
7562                    Err(::treesitter_types::ParseError::unexpected_kind(
7563                        _other, node,
7564                    ))
7565                }
7566            }
7567        }
7568    }
7569}
7570impl ::treesitter_types::Spanned for ReturnStatementChildren<'_> {
7571    fn span(&self) -> ::treesitter_types::Span {
7572        match self {
7573            Self::Expression(inner) => inner.span(),
7574            Self::SequenceExpression(inner) => inner.span(),
7575        }
7576    }
7577}
7578#[derive(Debug, Clone)]
7579pub enum StringChildren<'tree> {
7580    EscapeSequence(::std::boxed::Box<EscapeSequence<'tree>>),
7581    HtmlCharacterReference(::std::boxed::Box<HtmlCharacterReference<'tree>>),
7582    StringFragment(::std::boxed::Box<StringFragment<'tree>>),
7583}
7584impl<'tree> ::treesitter_types::FromNode<'tree> for StringChildren<'tree> {
7585    #[allow(clippy::collapsible_else_if)]
7586    fn from_node(
7587        node: ::tree_sitter::Node<'tree>,
7588        src: &'tree [u8],
7589    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
7590        match node.kind() {
7591            "escape_sequence" => Ok(Self::EscapeSequence(::std::boxed::Box::new(
7592                <EscapeSequence as ::treesitter_types::FromNode>::from_node(node, src)?,
7593            ))),
7594            "html_character_reference" => Ok(Self::HtmlCharacterReference(::std::boxed::Box::new(
7595                <HtmlCharacterReference as ::treesitter_types::FromNode>::from_node(node, src)?,
7596            ))),
7597            "string_fragment" => Ok(Self::StringFragment(::std::boxed::Box::new(
7598                <StringFragment as ::treesitter_types::FromNode>::from_node(node, src)?,
7599            ))),
7600            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
7601        }
7602    }
7603}
7604impl ::treesitter_types::Spanned for StringChildren<'_> {
7605    fn span(&self) -> ::treesitter_types::Span {
7606        match self {
7607            Self::EscapeSequence(inner) => inner.span(),
7608            Self::HtmlCharacterReference(inner) => inner.span(),
7609            Self::StringFragment(inner) => inner.span(),
7610        }
7611    }
7612}
7613#[derive(Debug, Clone)]
7614pub enum SubscriptExpressionIndex<'tree> {
7615    Expression(::std::boxed::Box<Expression<'tree>>),
7616    SequenceExpression(::std::boxed::Box<SequenceExpression<'tree>>),
7617}
7618impl<'tree> ::treesitter_types::FromNode<'tree> for SubscriptExpressionIndex<'tree> {
7619    #[allow(clippy::collapsible_else_if)]
7620    fn from_node(
7621        node: ::tree_sitter::Node<'tree>,
7622        src: &'tree [u8],
7623    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
7624        match node.kind() {
7625            "sequence_expression" => Ok(Self::SequenceExpression(::std::boxed::Box::new(
7626                <SequenceExpression as ::treesitter_types::FromNode>::from_node(node, src)?,
7627            ))),
7628            _other => {
7629                if let Ok(v) = <Expression as ::treesitter_types::FromNode>::from_node(node, src) {
7630                    Ok(Self::Expression(::std::boxed::Box::new(v)))
7631                } else {
7632                    Err(::treesitter_types::ParseError::unexpected_kind(
7633                        _other, node,
7634                    ))
7635                }
7636            }
7637        }
7638    }
7639}
7640impl ::treesitter_types::Spanned for SubscriptExpressionIndex<'_> {
7641    fn span(&self) -> ::treesitter_types::Span {
7642        match self {
7643            Self::Expression(inner) => inner.span(),
7644            Self::SequenceExpression(inner) => inner.span(),
7645        }
7646    }
7647}
7648#[derive(Debug, Clone)]
7649pub enum SwitchBodyChildren<'tree> {
7650    SwitchCase(::std::boxed::Box<SwitchCase<'tree>>),
7651    SwitchDefault(::std::boxed::Box<SwitchDefault<'tree>>),
7652}
7653impl<'tree> ::treesitter_types::FromNode<'tree> for SwitchBodyChildren<'tree> {
7654    #[allow(clippy::collapsible_else_if)]
7655    fn from_node(
7656        node: ::tree_sitter::Node<'tree>,
7657        src: &'tree [u8],
7658    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
7659        match node.kind() {
7660            "switch_case" => Ok(Self::SwitchCase(::std::boxed::Box::new(
7661                <SwitchCase as ::treesitter_types::FromNode>::from_node(node, src)?,
7662            ))),
7663            "switch_default" => Ok(Self::SwitchDefault(::std::boxed::Box::new(
7664                <SwitchDefault as ::treesitter_types::FromNode>::from_node(node, src)?,
7665            ))),
7666            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
7667        }
7668    }
7669}
7670impl ::treesitter_types::Spanned for SwitchBodyChildren<'_> {
7671    fn span(&self) -> ::treesitter_types::Span {
7672        match self {
7673            Self::SwitchCase(inner) => inner.span(),
7674            Self::SwitchDefault(inner) => inner.span(),
7675        }
7676    }
7677}
7678#[derive(Debug, Clone)]
7679pub enum SwitchCaseValue<'tree> {
7680    Expression(::std::boxed::Box<Expression<'tree>>),
7681    SequenceExpression(::std::boxed::Box<SequenceExpression<'tree>>),
7682}
7683impl<'tree> ::treesitter_types::FromNode<'tree> for SwitchCaseValue<'tree> {
7684    #[allow(clippy::collapsible_else_if)]
7685    fn from_node(
7686        node: ::tree_sitter::Node<'tree>,
7687        src: &'tree [u8],
7688    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
7689        match node.kind() {
7690            "sequence_expression" => Ok(Self::SequenceExpression(::std::boxed::Box::new(
7691                <SequenceExpression as ::treesitter_types::FromNode>::from_node(node, src)?,
7692            ))),
7693            _other => {
7694                if let Ok(v) = <Expression as ::treesitter_types::FromNode>::from_node(node, src) {
7695                    Ok(Self::Expression(::std::boxed::Box::new(v)))
7696                } else {
7697                    Err(::treesitter_types::ParseError::unexpected_kind(
7698                        _other, node,
7699                    ))
7700                }
7701            }
7702        }
7703    }
7704}
7705impl ::treesitter_types::Spanned for SwitchCaseValue<'_> {
7706    fn span(&self) -> ::treesitter_types::Span {
7707        match self {
7708            Self::Expression(inner) => inner.span(),
7709            Self::SequenceExpression(inner) => inner.span(),
7710        }
7711    }
7712}
7713#[derive(Debug, Clone)]
7714pub enum TemplateStringChildren<'tree> {
7715    EscapeSequence(::std::boxed::Box<EscapeSequence<'tree>>),
7716    StringFragment(::std::boxed::Box<StringFragment<'tree>>),
7717    TemplateSubstitution(::std::boxed::Box<TemplateSubstitution<'tree>>),
7718}
7719impl<'tree> ::treesitter_types::FromNode<'tree> for TemplateStringChildren<'tree> {
7720    #[allow(clippy::collapsible_else_if)]
7721    fn from_node(
7722        node: ::tree_sitter::Node<'tree>,
7723        src: &'tree [u8],
7724    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
7725        match node.kind() {
7726            "escape_sequence" => Ok(Self::EscapeSequence(::std::boxed::Box::new(
7727                <EscapeSequence as ::treesitter_types::FromNode>::from_node(node, src)?,
7728            ))),
7729            "string_fragment" => Ok(Self::StringFragment(::std::boxed::Box::new(
7730                <StringFragment as ::treesitter_types::FromNode>::from_node(node, src)?,
7731            ))),
7732            "template_substitution" => Ok(Self::TemplateSubstitution(::std::boxed::Box::new(
7733                <TemplateSubstitution as ::treesitter_types::FromNode>::from_node(node, src)?,
7734            ))),
7735            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
7736        }
7737    }
7738}
7739impl ::treesitter_types::Spanned for TemplateStringChildren<'_> {
7740    fn span(&self) -> ::treesitter_types::Span {
7741        match self {
7742            Self::EscapeSequence(inner) => inner.span(),
7743            Self::StringFragment(inner) => inner.span(),
7744            Self::TemplateSubstitution(inner) => inner.span(),
7745        }
7746    }
7747}
7748#[derive(Debug, Clone)]
7749pub enum TemplateSubstitutionChildren<'tree> {
7750    Expression(::std::boxed::Box<Expression<'tree>>),
7751    SequenceExpression(::std::boxed::Box<SequenceExpression<'tree>>),
7752}
7753impl<'tree> ::treesitter_types::FromNode<'tree> for TemplateSubstitutionChildren<'tree> {
7754    #[allow(clippy::collapsible_else_if)]
7755    fn from_node(
7756        node: ::tree_sitter::Node<'tree>,
7757        src: &'tree [u8],
7758    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
7759        match node.kind() {
7760            "sequence_expression" => Ok(Self::SequenceExpression(::std::boxed::Box::new(
7761                <SequenceExpression as ::treesitter_types::FromNode>::from_node(node, src)?,
7762            ))),
7763            _other => {
7764                if let Ok(v) = <Expression as ::treesitter_types::FromNode>::from_node(node, src) {
7765                    Ok(Self::Expression(::std::boxed::Box::new(v)))
7766                } else {
7767                    Err(::treesitter_types::ParseError::unexpected_kind(
7768                        _other, node,
7769                    ))
7770                }
7771            }
7772        }
7773    }
7774}
7775impl ::treesitter_types::Spanned for TemplateSubstitutionChildren<'_> {
7776    fn span(&self) -> ::treesitter_types::Span {
7777        match self {
7778            Self::Expression(inner) => inner.span(),
7779            Self::SequenceExpression(inner) => inner.span(),
7780        }
7781    }
7782}
7783#[derive(Debug, Clone)]
7784pub enum ThrowStatementChildren<'tree> {
7785    Expression(::std::boxed::Box<Expression<'tree>>),
7786    SequenceExpression(::std::boxed::Box<SequenceExpression<'tree>>),
7787}
7788impl<'tree> ::treesitter_types::FromNode<'tree> for ThrowStatementChildren<'tree> {
7789    #[allow(clippy::collapsible_else_if)]
7790    fn from_node(
7791        node: ::tree_sitter::Node<'tree>,
7792        src: &'tree [u8],
7793    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
7794        match node.kind() {
7795            "sequence_expression" => Ok(Self::SequenceExpression(::std::boxed::Box::new(
7796                <SequenceExpression as ::treesitter_types::FromNode>::from_node(node, src)?,
7797            ))),
7798            _other => {
7799                if let Ok(v) = <Expression as ::treesitter_types::FromNode>::from_node(node, src) {
7800                    Ok(Self::Expression(::std::boxed::Box::new(v)))
7801                } else {
7802                    Err(::treesitter_types::ParseError::unexpected_kind(
7803                        _other, node,
7804                    ))
7805                }
7806            }
7807        }
7808    }
7809}
7810impl ::treesitter_types::Spanned for ThrowStatementChildren<'_> {
7811    fn span(&self) -> ::treesitter_types::Span {
7812        match self {
7813            Self::Expression(inner) => inner.span(),
7814            Self::SequenceExpression(inner) => inner.span(),
7815        }
7816    }
7817}
7818#[derive(Debug, Clone)]
7819pub enum UnaryExpressionOperator {
7820    Bang(::treesitter_types::Span),
7821    Plus(::treesitter_types::Span),
7822    Minus(::treesitter_types::Span),
7823    Delete(::treesitter_types::Span),
7824    Typeof(::treesitter_types::Span),
7825    Void(::treesitter_types::Span),
7826    Tilde(::treesitter_types::Span),
7827}
7828impl<'tree> ::treesitter_types::FromNode<'tree> for UnaryExpressionOperator {
7829    #[allow(clippy::collapsible_else_if)]
7830    fn from_node(
7831        node: ::tree_sitter::Node<'tree>,
7832        _src: &'tree [u8],
7833    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
7834        match node.kind() {
7835            "!" => Ok(Self::Bang(::treesitter_types::Span::from(node))),
7836            "+" => Ok(Self::Plus(::treesitter_types::Span::from(node))),
7837            "-" => Ok(Self::Minus(::treesitter_types::Span::from(node))),
7838            "delete" => Ok(Self::Delete(::treesitter_types::Span::from(node))),
7839            "typeof" => Ok(Self::Typeof(::treesitter_types::Span::from(node))),
7840            "void" => Ok(Self::Void(::treesitter_types::Span::from(node))),
7841            "~" => Ok(Self::Tilde(::treesitter_types::Span::from(node))),
7842            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
7843        }
7844    }
7845}
7846impl ::treesitter_types::Spanned for UnaryExpressionOperator {
7847    fn span(&self) -> ::treesitter_types::Span {
7848        match self {
7849            Self::Bang(span) => *span,
7850            Self::Plus(span) => *span,
7851            Self::Minus(span) => *span,
7852            Self::Delete(span) => *span,
7853            Self::Typeof(span) => *span,
7854            Self::Void(span) => *span,
7855            Self::Tilde(span) => *span,
7856        }
7857    }
7858}
7859#[derive(Debug, Clone)]
7860pub enum UpdateExpressionOperator {
7861    PlusPlus(::treesitter_types::Span),
7862    MinusMinus(::treesitter_types::Span),
7863}
7864impl<'tree> ::treesitter_types::FromNode<'tree> for UpdateExpressionOperator {
7865    #[allow(clippy::collapsible_else_if)]
7866    fn from_node(
7867        node: ::tree_sitter::Node<'tree>,
7868        _src: &'tree [u8],
7869    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
7870        match node.kind() {
7871            "++" => Ok(Self::PlusPlus(::treesitter_types::Span::from(node))),
7872            "--" => Ok(Self::MinusMinus(::treesitter_types::Span::from(node))),
7873            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
7874        }
7875    }
7876}
7877impl ::treesitter_types::Spanned for UpdateExpressionOperator {
7878    fn span(&self) -> ::treesitter_types::Span {
7879        match self {
7880            Self::PlusPlus(span) => *span,
7881            Self::MinusMinus(span) => *span,
7882        }
7883    }
7884}
7885#[derive(Debug, Clone)]
7886pub enum UsingDeclarationKind {
7887    Await(::treesitter_types::Span),
7888    Using(::treesitter_types::Span),
7889}
7890impl<'tree> ::treesitter_types::FromNode<'tree> for UsingDeclarationKind {
7891    #[allow(clippy::collapsible_else_if)]
7892    fn from_node(
7893        node: ::tree_sitter::Node<'tree>,
7894        _src: &'tree [u8],
7895    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
7896        match node.kind() {
7897            "await" => Ok(Self::Await(::treesitter_types::Span::from(node))),
7898            "using" => Ok(Self::Using(::treesitter_types::Span::from(node))),
7899            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
7900        }
7901    }
7902}
7903impl ::treesitter_types::Spanned for UsingDeclarationKind {
7904    fn span(&self) -> ::treesitter_types::Span {
7905        match self {
7906            Self::Await(span) => *span,
7907            Self::Using(span) => *span,
7908        }
7909    }
7910}
7911#[derive(Debug, Clone)]
7912pub enum VariableDeclaratorName<'tree> {
7913    ArrayPattern(::std::boxed::Box<ArrayPattern<'tree>>),
7914    Identifier(::std::boxed::Box<Identifier<'tree>>),
7915    ObjectPattern(::std::boxed::Box<ObjectPattern<'tree>>),
7916}
7917impl<'tree> ::treesitter_types::FromNode<'tree> for VariableDeclaratorName<'tree> {
7918    #[allow(clippy::collapsible_else_if)]
7919    fn from_node(
7920        node: ::tree_sitter::Node<'tree>,
7921        src: &'tree [u8],
7922    ) -> ::core::result::Result<Self, ::treesitter_types::ParseError> {
7923        match node.kind() {
7924            "array_pattern" => Ok(Self::ArrayPattern(::std::boxed::Box::new(
7925                <ArrayPattern as ::treesitter_types::FromNode>::from_node(node, src)?,
7926            ))),
7927            "identifier" => Ok(Self::Identifier(::std::boxed::Box::new(
7928                <Identifier as ::treesitter_types::FromNode>::from_node(node, src)?,
7929            ))),
7930            "object_pattern" => Ok(Self::ObjectPattern(::std::boxed::Box::new(
7931                <ObjectPattern as ::treesitter_types::FromNode>::from_node(node, src)?,
7932            ))),
7933            other => Err(::treesitter_types::ParseError::unexpected_kind(other, node)),
7934        }
7935    }
7936}
7937impl ::treesitter_types::Spanned for VariableDeclaratorName<'_> {
7938    fn span(&self) -> ::treesitter_types::Span {
7939        match self {
7940            Self::ArrayPattern(inner) => inner.span(),
7941            Self::Identifier(inner) => inner.span(),
7942            Self::ObjectPattern(inner) => inner.span(),
7943        }
7944    }
7945}
7946#[derive(Debug, Clone)]
7947pub enum AnyNode<'tree> {
7948    Declaration(Declaration<'tree>),
7949    Expression(Expression<'tree>),
7950    Pattern(Pattern<'tree>),
7951    PrimaryExpression(PrimaryExpression<'tree>),
7952    Statement(Statement<'tree>),
7953    Arguments(Arguments<'tree>),
7954    Array(Array<'tree>),
7955    ArrayPattern(ArrayPattern<'tree>),
7956    ArrowFunction(ArrowFunction<'tree>),
7957    AssignmentExpression(AssignmentExpression<'tree>),
7958    AssignmentPattern(AssignmentPattern<'tree>),
7959    AugmentedAssignmentExpression(AugmentedAssignmentExpression<'tree>),
7960    AwaitExpression(AwaitExpression<'tree>),
7961    BinaryExpression(BinaryExpression<'tree>),
7962    BreakStatement(BreakStatement<'tree>),
7963    CallExpression(CallExpression<'tree>),
7964    CatchClause(CatchClause<'tree>),
7965    Class(Class<'tree>),
7966    ClassBody(ClassBody<'tree>),
7967    ClassDeclaration(ClassDeclaration<'tree>),
7968    ClassHeritage(ClassHeritage<'tree>),
7969    ClassStaticBlock(ClassStaticBlock<'tree>),
7970    ComputedPropertyName(ComputedPropertyName<'tree>),
7971    ContinueStatement(ContinueStatement<'tree>),
7972    DebuggerStatement(DebuggerStatement<'tree>),
7973    Decorator(Decorator<'tree>),
7974    DoStatement(DoStatement<'tree>),
7975    ElseClause(ElseClause<'tree>),
7976    EmptyStatement(EmptyStatement<'tree>),
7977    ExportClause(ExportClause<'tree>),
7978    ExportSpecifier(ExportSpecifier<'tree>),
7979    ExportStatement(ExportStatement<'tree>),
7980    ExpressionStatement(ExpressionStatement<'tree>),
7981    FieldDefinition(FieldDefinition<'tree>),
7982    FinallyClause(FinallyClause<'tree>),
7983    ForInStatement(ForInStatement<'tree>),
7984    ForStatement(ForStatement<'tree>),
7985    FormalParameters(FormalParameters<'tree>),
7986    FunctionDeclaration(FunctionDeclaration<'tree>),
7987    FunctionExpression(FunctionExpression<'tree>),
7988    GeneratorFunction(GeneratorFunction<'tree>),
7989    GeneratorFunctionDeclaration(GeneratorFunctionDeclaration<'tree>),
7990    IfStatement(IfStatement<'tree>),
7991    Import(Import<'tree>),
7992    ImportAttribute(ImportAttribute<'tree>),
7993    ImportClause(ImportClause<'tree>),
7994    ImportSpecifier(ImportSpecifier<'tree>),
7995    ImportStatement(ImportStatement<'tree>),
7996    JsxAttribute(JsxAttribute<'tree>),
7997    JsxClosingElement(JsxClosingElement<'tree>),
7998    JsxElement(JsxElement<'tree>),
7999    JsxExpression(JsxExpression<'tree>),
8000    JsxNamespaceName(JsxNamespaceName<'tree>),
8001    JsxOpeningElement(JsxOpeningElement<'tree>),
8002    JsxSelfClosingElement(JsxSelfClosingElement<'tree>),
8003    LabeledStatement(LabeledStatement<'tree>),
8004    LexicalDeclaration(LexicalDeclaration<'tree>),
8005    MemberExpression(MemberExpression<'tree>),
8006    MetaProperty(MetaProperty<'tree>),
8007    MethodDefinition(MethodDefinition<'tree>),
8008    NamedImports(NamedImports<'tree>),
8009    NamespaceExport(NamespaceExport<'tree>),
8010    NamespaceImport(NamespaceImport<'tree>),
8011    NewExpression(NewExpression<'tree>),
8012    Object(Object<'tree>),
8013    ObjectAssignmentPattern(ObjectAssignmentPattern<'tree>),
8014    ObjectPattern(ObjectPattern<'tree>),
8015    Pair(Pair<'tree>),
8016    PairPattern(PairPattern<'tree>),
8017    ParenthesizedExpression(ParenthesizedExpression<'tree>),
8018    Program(Program<'tree>),
8019    Regex(Regex<'tree>),
8020    RestPattern(RestPattern<'tree>),
8021    ReturnStatement(ReturnStatement<'tree>),
8022    SequenceExpression(SequenceExpression<'tree>),
8023    SpreadElement(SpreadElement<'tree>),
8024    StatementBlock(StatementBlock<'tree>),
8025    String(String<'tree>),
8026    SubscriptExpression(SubscriptExpression<'tree>),
8027    SwitchBody(SwitchBody<'tree>),
8028    SwitchCase(SwitchCase<'tree>),
8029    SwitchDefault(SwitchDefault<'tree>),
8030    SwitchStatement(SwitchStatement<'tree>),
8031    TemplateString(TemplateString<'tree>),
8032    TemplateSubstitution(TemplateSubstitution<'tree>),
8033    TernaryExpression(TernaryExpression<'tree>),
8034    ThrowStatement(ThrowStatement<'tree>),
8035    TryStatement(TryStatement<'tree>),
8036    UnaryExpression(UnaryExpression<'tree>),
8037    UpdateExpression(UpdateExpression<'tree>),
8038    UsingDeclaration(UsingDeclaration<'tree>),
8039    VariableDeclaration(VariableDeclaration<'tree>),
8040    VariableDeclarator(VariableDeclarator<'tree>),
8041    WhileStatement(WhileStatement<'tree>),
8042    WithStatement(WithStatement<'tree>),
8043    YieldExpression(YieldExpression<'tree>),
8044    Comment(Comment<'tree>),
8045    EscapeSequence(EscapeSequence<'tree>),
8046    False(False<'tree>),
8047    HashBangLine(HashBangLine<'tree>),
8048    HtmlCharacterReference(HtmlCharacterReference<'tree>),
8049    HtmlComment(HtmlComment<'tree>),
8050    Identifier(Identifier<'tree>),
8051    JsxText(JsxText<'tree>),
8052    Null(Null<'tree>),
8053    Number(Number<'tree>),
8054    OptionalChain(OptionalChain<'tree>),
8055    PrivatePropertyIdentifier(PrivatePropertyIdentifier<'tree>),
8056    PropertyIdentifier(PropertyIdentifier<'tree>),
8057    RegexFlags(RegexFlags<'tree>),
8058    RegexPattern(RegexPattern<'tree>),
8059    ShorthandPropertyIdentifier(ShorthandPropertyIdentifier<'tree>),
8060    ShorthandPropertyIdentifierPattern(ShorthandPropertyIdentifierPattern<'tree>),
8061    StatementIdentifier(StatementIdentifier<'tree>),
8062    StringFragment(StringFragment<'tree>),
8063    Super(Super<'tree>),
8064    This(This<'tree>),
8065    True(True<'tree>),
8066    Undefined(Undefined<'tree>),
8067    Unknown(::tree_sitter::Node<'tree>),
8068}
8069impl<'tree> AnyNode<'tree> {
8070    pub fn from_node(node: ::tree_sitter::Node<'tree>, src: &'tree [u8]) -> Self {
8071        match node.kind() {
8072            "declaration" => <Declaration as ::treesitter_types::FromNode>::from_node(node, src)
8073                .map(Self::Declaration)
8074                .unwrap_or(Self::Unknown(node)),
8075            "expression" => <Expression as ::treesitter_types::FromNode>::from_node(node, src)
8076                .map(Self::Expression)
8077                .unwrap_or(Self::Unknown(node)),
8078            "pattern" => <Pattern as ::treesitter_types::FromNode>::from_node(node, src)
8079                .map(Self::Pattern)
8080                .unwrap_or(Self::Unknown(node)),
8081            "primary_expression" => {
8082                <PrimaryExpression as ::treesitter_types::FromNode>::from_node(node, src)
8083                    .map(Self::PrimaryExpression)
8084                    .unwrap_or(Self::Unknown(node))
8085            }
8086            "statement" => <Statement as ::treesitter_types::FromNode>::from_node(node, src)
8087                .map(Self::Statement)
8088                .unwrap_or(Self::Unknown(node)),
8089            "arguments" => <Arguments as ::treesitter_types::FromNode>::from_node(node, src)
8090                .map(Self::Arguments)
8091                .unwrap_or(Self::Unknown(node)),
8092            "array" => <Array as ::treesitter_types::FromNode>::from_node(node, src)
8093                .map(Self::Array)
8094                .unwrap_or(Self::Unknown(node)),
8095            "array_pattern" => <ArrayPattern as ::treesitter_types::FromNode>::from_node(node, src)
8096                .map(Self::ArrayPattern)
8097                .unwrap_or(Self::Unknown(node)),
8098            "arrow_function" => {
8099                <ArrowFunction as ::treesitter_types::FromNode>::from_node(node, src)
8100                    .map(Self::ArrowFunction)
8101                    .unwrap_or(Self::Unknown(node))
8102            }
8103            "assignment_expression" => {
8104                <AssignmentExpression as ::treesitter_types::FromNode>::from_node(node, src)
8105                    .map(Self::AssignmentExpression)
8106                    .unwrap_or(Self::Unknown(node))
8107            }
8108            "assignment_pattern" => {
8109                <AssignmentPattern as ::treesitter_types::FromNode>::from_node(node, src)
8110                    .map(Self::AssignmentPattern)
8111                    .unwrap_or(Self::Unknown(node))
8112            }
8113            "augmented_assignment_expression" => {
8114                <AugmentedAssignmentExpression as ::treesitter_types::FromNode>::from_node(
8115                    node, src,
8116                )
8117                .map(Self::AugmentedAssignmentExpression)
8118                .unwrap_or(Self::Unknown(node))
8119            }
8120            "await_expression" => {
8121                <AwaitExpression as ::treesitter_types::FromNode>::from_node(node, src)
8122                    .map(Self::AwaitExpression)
8123                    .unwrap_or(Self::Unknown(node))
8124            }
8125            "binary_expression" => {
8126                <BinaryExpression as ::treesitter_types::FromNode>::from_node(node, src)
8127                    .map(Self::BinaryExpression)
8128                    .unwrap_or(Self::Unknown(node))
8129            }
8130            "break_statement" => {
8131                <BreakStatement as ::treesitter_types::FromNode>::from_node(node, src)
8132                    .map(Self::BreakStatement)
8133                    .unwrap_or(Self::Unknown(node))
8134            }
8135            "call_expression" => {
8136                <CallExpression as ::treesitter_types::FromNode>::from_node(node, src)
8137                    .map(Self::CallExpression)
8138                    .unwrap_or(Self::Unknown(node))
8139            }
8140            "catch_clause" => <CatchClause as ::treesitter_types::FromNode>::from_node(node, src)
8141                .map(Self::CatchClause)
8142                .unwrap_or(Self::Unknown(node)),
8143            "class" => <Class as ::treesitter_types::FromNode>::from_node(node, src)
8144                .map(Self::Class)
8145                .unwrap_or(Self::Unknown(node)),
8146            "class_body" => <ClassBody as ::treesitter_types::FromNode>::from_node(node, src)
8147                .map(Self::ClassBody)
8148                .unwrap_or(Self::Unknown(node)),
8149            "class_declaration" => {
8150                <ClassDeclaration as ::treesitter_types::FromNode>::from_node(node, src)
8151                    .map(Self::ClassDeclaration)
8152                    .unwrap_or(Self::Unknown(node))
8153            }
8154            "class_heritage" => {
8155                <ClassHeritage as ::treesitter_types::FromNode>::from_node(node, src)
8156                    .map(Self::ClassHeritage)
8157                    .unwrap_or(Self::Unknown(node))
8158            }
8159            "class_static_block" => {
8160                <ClassStaticBlock as ::treesitter_types::FromNode>::from_node(node, src)
8161                    .map(Self::ClassStaticBlock)
8162                    .unwrap_or(Self::Unknown(node))
8163            }
8164            "computed_property_name" => {
8165                <ComputedPropertyName as ::treesitter_types::FromNode>::from_node(node, src)
8166                    .map(Self::ComputedPropertyName)
8167                    .unwrap_or(Self::Unknown(node))
8168            }
8169            "continue_statement" => {
8170                <ContinueStatement as ::treesitter_types::FromNode>::from_node(node, src)
8171                    .map(Self::ContinueStatement)
8172                    .unwrap_or(Self::Unknown(node))
8173            }
8174            "debugger_statement" => {
8175                <DebuggerStatement as ::treesitter_types::FromNode>::from_node(node, src)
8176                    .map(Self::DebuggerStatement)
8177                    .unwrap_or(Self::Unknown(node))
8178            }
8179            "decorator" => <Decorator as ::treesitter_types::FromNode>::from_node(node, src)
8180                .map(Self::Decorator)
8181                .unwrap_or(Self::Unknown(node)),
8182            "do_statement" => <DoStatement as ::treesitter_types::FromNode>::from_node(node, src)
8183                .map(Self::DoStatement)
8184                .unwrap_or(Self::Unknown(node)),
8185            "else_clause" => <ElseClause as ::treesitter_types::FromNode>::from_node(node, src)
8186                .map(Self::ElseClause)
8187                .unwrap_or(Self::Unknown(node)),
8188            "empty_statement" => {
8189                <EmptyStatement as ::treesitter_types::FromNode>::from_node(node, src)
8190                    .map(Self::EmptyStatement)
8191                    .unwrap_or(Self::Unknown(node))
8192            }
8193            "export_clause" => <ExportClause as ::treesitter_types::FromNode>::from_node(node, src)
8194                .map(Self::ExportClause)
8195                .unwrap_or(Self::Unknown(node)),
8196            "export_specifier" => {
8197                <ExportSpecifier as ::treesitter_types::FromNode>::from_node(node, src)
8198                    .map(Self::ExportSpecifier)
8199                    .unwrap_or(Self::Unknown(node))
8200            }
8201            "export_statement" => {
8202                <ExportStatement as ::treesitter_types::FromNode>::from_node(node, src)
8203                    .map(Self::ExportStatement)
8204                    .unwrap_or(Self::Unknown(node))
8205            }
8206            "expression_statement" => {
8207                <ExpressionStatement as ::treesitter_types::FromNode>::from_node(node, src)
8208                    .map(Self::ExpressionStatement)
8209                    .unwrap_or(Self::Unknown(node))
8210            }
8211            "field_definition" => {
8212                <FieldDefinition as ::treesitter_types::FromNode>::from_node(node, src)
8213                    .map(Self::FieldDefinition)
8214                    .unwrap_or(Self::Unknown(node))
8215            }
8216            "finally_clause" => {
8217                <FinallyClause as ::treesitter_types::FromNode>::from_node(node, src)
8218                    .map(Self::FinallyClause)
8219                    .unwrap_or(Self::Unknown(node))
8220            }
8221            "for_in_statement" => {
8222                <ForInStatement as ::treesitter_types::FromNode>::from_node(node, src)
8223                    .map(Self::ForInStatement)
8224                    .unwrap_or(Self::Unknown(node))
8225            }
8226            "for_statement" => <ForStatement as ::treesitter_types::FromNode>::from_node(node, src)
8227                .map(Self::ForStatement)
8228                .unwrap_or(Self::Unknown(node)),
8229            "formal_parameters" => {
8230                <FormalParameters as ::treesitter_types::FromNode>::from_node(node, src)
8231                    .map(Self::FormalParameters)
8232                    .unwrap_or(Self::Unknown(node))
8233            }
8234            "function_declaration" => {
8235                <FunctionDeclaration as ::treesitter_types::FromNode>::from_node(node, src)
8236                    .map(Self::FunctionDeclaration)
8237                    .unwrap_or(Self::Unknown(node))
8238            }
8239            "function_expression" => {
8240                <FunctionExpression as ::treesitter_types::FromNode>::from_node(node, src)
8241                    .map(Self::FunctionExpression)
8242                    .unwrap_or(Self::Unknown(node))
8243            }
8244            "generator_function" => {
8245                <GeneratorFunction as ::treesitter_types::FromNode>::from_node(node, src)
8246                    .map(Self::GeneratorFunction)
8247                    .unwrap_or(Self::Unknown(node))
8248            }
8249            "generator_function_declaration" => {
8250                <GeneratorFunctionDeclaration as ::treesitter_types::FromNode>::from_node(node, src)
8251                    .map(Self::GeneratorFunctionDeclaration)
8252                    .unwrap_or(Self::Unknown(node))
8253            }
8254            "if_statement" => <IfStatement as ::treesitter_types::FromNode>::from_node(node, src)
8255                .map(Self::IfStatement)
8256                .unwrap_or(Self::Unknown(node)),
8257            "import" => <Import as ::treesitter_types::FromNode>::from_node(node, src)
8258                .map(Self::Import)
8259                .unwrap_or(Self::Unknown(node)),
8260            "import_attribute" => {
8261                <ImportAttribute as ::treesitter_types::FromNode>::from_node(node, src)
8262                    .map(Self::ImportAttribute)
8263                    .unwrap_or(Self::Unknown(node))
8264            }
8265            "import_clause" => <ImportClause as ::treesitter_types::FromNode>::from_node(node, src)
8266                .map(Self::ImportClause)
8267                .unwrap_or(Self::Unknown(node)),
8268            "import_specifier" => {
8269                <ImportSpecifier as ::treesitter_types::FromNode>::from_node(node, src)
8270                    .map(Self::ImportSpecifier)
8271                    .unwrap_or(Self::Unknown(node))
8272            }
8273            "import_statement" => {
8274                <ImportStatement as ::treesitter_types::FromNode>::from_node(node, src)
8275                    .map(Self::ImportStatement)
8276                    .unwrap_or(Self::Unknown(node))
8277            }
8278            "jsx_attribute" => <JsxAttribute as ::treesitter_types::FromNode>::from_node(node, src)
8279                .map(Self::JsxAttribute)
8280                .unwrap_or(Self::Unknown(node)),
8281            "jsx_closing_element" => {
8282                <JsxClosingElement as ::treesitter_types::FromNode>::from_node(node, src)
8283                    .map(Self::JsxClosingElement)
8284                    .unwrap_or(Self::Unknown(node))
8285            }
8286            "jsx_element" => <JsxElement as ::treesitter_types::FromNode>::from_node(node, src)
8287                .map(Self::JsxElement)
8288                .unwrap_or(Self::Unknown(node)),
8289            "jsx_expression" => {
8290                <JsxExpression as ::treesitter_types::FromNode>::from_node(node, src)
8291                    .map(Self::JsxExpression)
8292                    .unwrap_or(Self::Unknown(node))
8293            }
8294            "jsx_namespace_name" => {
8295                <JsxNamespaceName as ::treesitter_types::FromNode>::from_node(node, src)
8296                    .map(Self::JsxNamespaceName)
8297                    .unwrap_or(Self::Unknown(node))
8298            }
8299            "jsx_opening_element" => {
8300                <JsxOpeningElement as ::treesitter_types::FromNode>::from_node(node, src)
8301                    .map(Self::JsxOpeningElement)
8302                    .unwrap_or(Self::Unknown(node))
8303            }
8304            "jsx_self_closing_element" => {
8305                <JsxSelfClosingElement as ::treesitter_types::FromNode>::from_node(node, src)
8306                    .map(Self::JsxSelfClosingElement)
8307                    .unwrap_or(Self::Unknown(node))
8308            }
8309            "labeled_statement" => {
8310                <LabeledStatement as ::treesitter_types::FromNode>::from_node(node, src)
8311                    .map(Self::LabeledStatement)
8312                    .unwrap_or(Self::Unknown(node))
8313            }
8314            "lexical_declaration" => {
8315                <LexicalDeclaration as ::treesitter_types::FromNode>::from_node(node, src)
8316                    .map(Self::LexicalDeclaration)
8317                    .unwrap_or(Self::Unknown(node))
8318            }
8319            "member_expression" => {
8320                <MemberExpression as ::treesitter_types::FromNode>::from_node(node, src)
8321                    .map(Self::MemberExpression)
8322                    .unwrap_or(Self::Unknown(node))
8323            }
8324            "meta_property" => <MetaProperty as ::treesitter_types::FromNode>::from_node(node, src)
8325                .map(Self::MetaProperty)
8326                .unwrap_or(Self::Unknown(node)),
8327            "method_definition" => {
8328                <MethodDefinition as ::treesitter_types::FromNode>::from_node(node, src)
8329                    .map(Self::MethodDefinition)
8330                    .unwrap_or(Self::Unknown(node))
8331            }
8332            "named_imports" => <NamedImports as ::treesitter_types::FromNode>::from_node(node, src)
8333                .map(Self::NamedImports)
8334                .unwrap_or(Self::Unknown(node)),
8335            "namespace_export" => {
8336                <NamespaceExport as ::treesitter_types::FromNode>::from_node(node, src)
8337                    .map(Self::NamespaceExport)
8338                    .unwrap_or(Self::Unknown(node))
8339            }
8340            "namespace_import" => {
8341                <NamespaceImport as ::treesitter_types::FromNode>::from_node(node, src)
8342                    .map(Self::NamespaceImport)
8343                    .unwrap_or(Self::Unknown(node))
8344            }
8345            "new_expression" => {
8346                <NewExpression as ::treesitter_types::FromNode>::from_node(node, src)
8347                    .map(Self::NewExpression)
8348                    .unwrap_or(Self::Unknown(node))
8349            }
8350            "object" => <Object as ::treesitter_types::FromNode>::from_node(node, src)
8351                .map(Self::Object)
8352                .unwrap_or(Self::Unknown(node)),
8353            "object_assignment_pattern" => {
8354                <ObjectAssignmentPattern as ::treesitter_types::FromNode>::from_node(node, src)
8355                    .map(Self::ObjectAssignmentPattern)
8356                    .unwrap_or(Self::Unknown(node))
8357            }
8358            "object_pattern" => {
8359                <ObjectPattern as ::treesitter_types::FromNode>::from_node(node, src)
8360                    .map(Self::ObjectPattern)
8361                    .unwrap_or(Self::Unknown(node))
8362            }
8363            "pair" => <Pair as ::treesitter_types::FromNode>::from_node(node, src)
8364                .map(Self::Pair)
8365                .unwrap_or(Self::Unknown(node)),
8366            "pair_pattern" => <PairPattern as ::treesitter_types::FromNode>::from_node(node, src)
8367                .map(Self::PairPattern)
8368                .unwrap_or(Self::Unknown(node)),
8369            "parenthesized_expression" => {
8370                <ParenthesizedExpression as ::treesitter_types::FromNode>::from_node(node, src)
8371                    .map(Self::ParenthesizedExpression)
8372                    .unwrap_or(Self::Unknown(node))
8373            }
8374            "program" => <Program as ::treesitter_types::FromNode>::from_node(node, src)
8375                .map(Self::Program)
8376                .unwrap_or(Self::Unknown(node)),
8377            "regex" => <Regex as ::treesitter_types::FromNode>::from_node(node, src)
8378                .map(Self::Regex)
8379                .unwrap_or(Self::Unknown(node)),
8380            "rest_pattern" => <RestPattern as ::treesitter_types::FromNode>::from_node(node, src)
8381                .map(Self::RestPattern)
8382                .unwrap_or(Self::Unknown(node)),
8383            "return_statement" => {
8384                <ReturnStatement as ::treesitter_types::FromNode>::from_node(node, src)
8385                    .map(Self::ReturnStatement)
8386                    .unwrap_or(Self::Unknown(node))
8387            }
8388            "sequence_expression" => {
8389                <SequenceExpression as ::treesitter_types::FromNode>::from_node(node, src)
8390                    .map(Self::SequenceExpression)
8391                    .unwrap_or(Self::Unknown(node))
8392            }
8393            "spread_element" => {
8394                <SpreadElement as ::treesitter_types::FromNode>::from_node(node, src)
8395                    .map(Self::SpreadElement)
8396                    .unwrap_or(Self::Unknown(node))
8397            }
8398            "statement_block" => {
8399                <StatementBlock as ::treesitter_types::FromNode>::from_node(node, src)
8400                    .map(Self::StatementBlock)
8401                    .unwrap_or(Self::Unknown(node))
8402            }
8403            "string" => <String as ::treesitter_types::FromNode>::from_node(node, src)
8404                .map(Self::String)
8405                .unwrap_or(Self::Unknown(node)),
8406            "subscript_expression" => {
8407                <SubscriptExpression as ::treesitter_types::FromNode>::from_node(node, src)
8408                    .map(Self::SubscriptExpression)
8409                    .unwrap_or(Self::Unknown(node))
8410            }
8411            "switch_body" => <SwitchBody as ::treesitter_types::FromNode>::from_node(node, src)
8412                .map(Self::SwitchBody)
8413                .unwrap_or(Self::Unknown(node)),
8414            "switch_case" => <SwitchCase as ::treesitter_types::FromNode>::from_node(node, src)
8415                .map(Self::SwitchCase)
8416                .unwrap_or(Self::Unknown(node)),
8417            "switch_default" => {
8418                <SwitchDefault as ::treesitter_types::FromNode>::from_node(node, src)
8419                    .map(Self::SwitchDefault)
8420                    .unwrap_or(Self::Unknown(node))
8421            }
8422            "switch_statement" => {
8423                <SwitchStatement as ::treesitter_types::FromNode>::from_node(node, src)
8424                    .map(Self::SwitchStatement)
8425                    .unwrap_or(Self::Unknown(node))
8426            }
8427            "template_string" => {
8428                <TemplateString as ::treesitter_types::FromNode>::from_node(node, src)
8429                    .map(Self::TemplateString)
8430                    .unwrap_or(Self::Unknown(node))
8431            }
8432            "template_substitution" => {
8433                <TemplateSubstitution as ::treesitter_types::FromNode>::from_node(node, src)
8434                    .map(Self::TemplateSubstitution)
8435                    .unwrap_or(Self::Unknown(node))
8436            }
8437            "ternary_expression" => {
8438                <TernaryExpression as ::treesitter_types::FromNode>::from_node(node, src)
8439                    .map(Self::TernaryExpression)
8440                    .unwrap_or(Self::Unknown(node))
8441            }
8442            "throw_statement" => {
8443                <ThrowStatement as ::treesitter_types::FromNode>::from_node(node, src)
8444                    .map(Self::ThrowStatement)
8445                    .unwrap_or(Self::Unknown(node))
8446            }
8447            "try_statement" => <TryStatement as ::treesitter_types::FromNode>::from_node(node, src)
8448                .map(Self::TryStatement)
8449                .unwrap_or(Self::Unknown(node)),
8450            "unary_expression" => {
8451                <UnaryExpression as ::treesitter_types::FromNode>::from_node(node, src)
8452                    .map(Self::UnaryExpression)
8453                    .unwrap_or(Self::Unknown(node))
8454            }
8455            "update_expression" => {
8456                <UpdateExpression as ::treesitter_types::FromNode>::from_node(node, src)
8457                    .map(Self::UpdateExpression)
8458                    .unwrap_or(Self::Unknown(node))
8459            }
8460            "using_declaration" => {
8461                <UsingDeclaration as ::treesitter_types::FromNode>::from_node(node, src)
8462                    .map(Self::UsingDeclaration)
8463                    .unwrap_or(Self::Unknown(node))
8464            }
8465            "variable_declaration" => {
8466                <VariableDeclaration as ::treesitter_types::FromNode>::from_node(node, src)
8467                    .map(Self::VariableDeclaration)
8468                    .unwrap_or(Self::Unknown(node))
8469            }
8470            "variable_declarator" => {
8471                <VariableDeclarator as ::treesitter_types::FromNode>::from_node(node, src)
8472                    .map(Self::VariableDeclarator)
8473                    .unwrap_or(Self::Unknown(node))
8474            }
8475            "while_statement" => {
8476                <WhileStatement as ::treesitter_types::FromNode>::from_node(node, src)
8477                    .map(Self::WhileStatement)
8478                    .unwrap_or(Self::Unknown(node))
8479            }
8480            "with_statement" => {
8481                <WithStatement as ::treesitter_types::FromNode>::from_node(node, src)
8482                    .map(Self::WithStatement)
8483                    .unwrap_or(Self::Unknown(node))
8484            }
8485            "yield_expression" => {
8486                <YieldExpression as ::treesitter_types::FromNode>::from_node(node, src)
8487                    .map(Self::YieldExpression)
8488                    .unwrap_or(Self::Unknown(node))
8489            }
8490            "comment" => <Comment as ::treesitter_types::FromNode>::from_node(node, src)
8491                .map(Self::Comment)
8492                .unwrap_or(Self::Unknown(node)),
8493            "escape_sequence" => {
8494                <EscapeSequence as ::treesitter_types::FromNode>::from_node(node, src)
8495                    .map(Self::EscapeSequence)
8496                    .unwrap_or(Self::Unknown(node))
8497            }
8498            "false" => <False as ::treesitter_types::FromNode>::from_node(node, src)
8499                .map(Self::False)
8500                .unwrap_or(Self::Unknown(node)),
8501            "hash_bang_line" => {
8502                <HashBangLine as ::treesitter_types::FromNode>::from_node(node, src)
8503                    .map(Self::HashBangLine)
8504                    .unwrap_or(Self::Unknown(node))
8505            }
8506            "html_character_reference" => {
8507                <HtmlCharacterReference as ::treesitter_types::FromNode>::from_node(node, src)
8508                    .map(Self::HtmlCharacterReference)
8509                    .unwrap_or(Self::Unknown(node))
8510            }
8511            "html_comment" => <HtmlComment as ::treesitter_types::FromNode>::from_node(node, src)
8512                .map(Self::HtmlComment)
8513                .unwrap_or(Self::Unknown(node)),
8514            "identifier" => <Identifier as ::treesitter_types::FromNode>::from_node(node, src)
8515                .map(Self::Identifier)
8516                .unwrap_or(Self::Unknown(node)),
8517            "jsx_text" => <JsxText as ::treesitter_types::FromNode>::from_node(node, src)
8518                .map(Self::JsxText)
8519                .unwrap_or(Self::Unknown(node)),
8520            "null" => <Null as ::treesitter_types::FromNode>::from_node(node, src)
8521                .map(Self::Null)
8522                .unwrap_or(Self::Unknown(node)),
8523            "number" => <Number as ::treesitter_types::FromNode>::from_node(node, src)
8524                .map(Self::Number)
8525                .unwrap_or(Self::Unknown(node)),
8526            "optional_chain" => {
8527                <OptionalChain as ::treesitter_types::FromNode>::from_node(node, src)
8528                    .map(Self::OptionalChain)
8529                    .unwrap_or(Self::Unknown(node))
8530            }
8531            "private_property_identifier" => {
8532                <PrivatePropertyIdentifier as ::treesitter_types::FromNode>::from_node(node, src)
8533                    .map(Self::PrivatePropertyIdentifier)
8534                    .unwrap_or(Self::Unknown(node))
8535            }
8536            "property_identifier" => {
8537                <PropertyIdentifier as ::treesitter_types::FromNode>::from_node(node, src)
8538                    .map(Self::PropertyIdentifier)
8539                    .unwrap_or(Self::Unknown(node))
8540            }
8541            "regex_flags" => <RegexFlags as ::treesitter_types::FromNode>::from_node(node, src)
8542                .map(Self::RegexFlags)
8543                .unwrap_or(Self::Unknown(node)),
8544            "regex_pattern" => <RegexPattern as ::treesitter_types::FromNode>::from_node(node, src)
8545                .map(Self::RegexPattern)
8546                .unwrap_or(Self::Unknown(node)),
8547            "shorthand_property_identifier" => {
8548                <ShorthandPropertyIdentifier as ::treesitter_types::FromNode>::from_node(node, src)
8549                    .map(Self::ShorthandPropertyIdentifier)
8550                    .unwrap_or(Self::Unknown(node))
8551            }
8552            "shorthand_property_identifier_pattern" => {
8553                <ShorthandPropertyIdentifierPattern as ::treesitter_types::FromNode>::from_node(
8554                    node, src,
8555                )
8556                .map(Self::ShorthandPropertyIdentifierPattern)
8557                .unwrap_or(Self::Unknown(node))
8558            }
8559            "statement_identifier" => {
8560                <StatementIdentifier as ::treesitter_types::FromNode>::from_node(node, src)
8561                    .map(Self::StatementIdentifier)
8562                    .unwrap_or(Self::Unknown(node))
8563            }
8564            "string_fragment" => {
8565                <StringFragment as ::treesitter_types::FromNode>::from_node(node, src)
8566                    .map(Self::StringFragment)
8567                    .unwrap_or(Self::Unknown(node))
8568            }
8569            "super" => <Super as ::treesitter_types::FromNode>::from_node(node, src)
8570                .map(Self::Super)
8571                .unwrap_or(Self::Unknown(node)),
8572            "this" => <This as ::treesitter_types::FromNode>::from_node(node, src)
8573                .map(Self::This)
8574                .unwrap_or(Self::Unknown(node)),
8575            "true" => <True as ::treesitter_types::FromNode>::from_node(node, src)
8576                .map(Self::True)
8577                .unwrap_or(Self::Unknown(node)),
8578            "undefined" => <Undefined as ::treesitter_types::FromNode>::from_node(node, src)
8579                .map(Self::Undefined)
8580                .unwrap_or(Self::Unknown(node)),
8581            _ => Self::Unknown(node),
8582        }
8583    }
8584}
8585impl ::treesitter_types::Spanned for AnyNode<'_> {
8586    fn span(&self) -> ::treesitter_types::Span {
8587        match self {
8588            Self::Declaration(inner) => inner.span(),
8589            Self::Expression(inner) => inner.span(),
8590            Self::Pattern(inner) => inner.span(),
8591            Self::PrimaryExpression(inner) => inner.span(),
8592            Self::Statement(inner) => inner.span(),
8593            Self::Arguments(inner) => inner.span(),
8594            Self::Array(inner) => inner.span(),
8595            Self::ArrayPattern(inner) => inner.span(),
8596            Self::ArrowFunction(inner) => inner.span(),
8597            Self::AssignmentExpression(inner) => inner.span(),
8598            Self::AssignmentPattern(inner) => inner.span(),
8599            Self::AugmentedAssignmentExpression(inner) => inner.span(),
8600            Self::AwaitExpression(inner) => inner.span(),
8601            Self::BinaryExpression(inner) => inner.span(),
8602            Self::BreakStatement(inner) => inner.span(),
8603            Self::CallExpression(inner) => inner.span(),
8604            Self::CatchClause(inner) => inner.span(),
8605            Self::Class(inner) => inner.span(),
8606            Self::ClassBody(inner) => inner.span(),
8607            Self::ClassDeclaration(inner) => inner.span(),
8608            Self::ClassHeritage(inner) => inner.span(),
8609            Self::ClassStaticBlock(inner) => inner.span(),
8610            Self::ComputedPropertyName(inner) => inner.span(),
8611            Self::ContinueStatement(inner) => inner.span(),
8612            Self::DebuggerStatement(inner) => inner.span(),
8613            Self::Decorator(inner) => inner.span(),
8614            Self::DoStatement(inner) => inner.span(),
8615            Self::ElseClause(inner) => inner.span(),
8616            Self::EmptyStatement(inner) => inner.span(),
8617            Self::ExportClause(inner) => inner.span(),
8618            Self::ExportSpecifier(inner) => inner.span(),
8619            Self::ExportStatement(inner) => inner.span(),
8620            Self::ExpressionStatement(inner) => inner.span(),
8621            Self::FieldDefinition(inner) => inner.span(),
8622            Self::FinallyClause(inner) => inner.span(),
8623            Self::ForInStatement(inner) => inner.span(),
8624            Self::ForStatement(inner) => inner.span(),
8625            Self::FormalParameters(inner) => inner.span(),
8626            Self::FunctionDeclaration(inner) => inner.span(),
8627            Self::FunctionExpression(inner) => inner.span(),
8628            Self::GeneratorFunction(inner) => inner.span(),
8629            Self::GeneratorFunctionDeclaration(inner) => inner.span(),
8630            Self::IfStatement(inner) => inner.span(),
8631            Self::Import(inner) => inner.span(),
8632            Self::ImportAttribute(inner) => inner.span(),
8633            Self::ImportClause(inner) => inner.span(),
8634            Self::ImportSpecifier(inner) => inner.span(),
8635            Self::ImportStatement(inner) => inner.span(),
8636            Self::JsxAttribute(inner) => inner.span(),
8637            Self::JsxClosingElement(inner) => inner.span(),
8638            Self::JsxElement(inner) => inner.span(),
8639            Self::JsxExpression(inner) => inner.span(),
8640            Self::JsxNamespaceName(inner) => inner.span(),
8641            Self::JsxOpeningElement(inner) => inner.span(),
8642            Self::JsxSelfClosingElement(inner) => inner.span(),
8643            Self::LabeledStatement(inner) => inner.span(),
8644            Self::LexicalDeclaration(inner) => inner.span(),
8645            Self::MemberExpression(inner) => inner.span(),
8646            Self::MetaProperty(inner) => inner.span(),
8647            Self::MethodDefinition(inner) => inner.span(),
8648            Self::NamedImports(inner) => inner.span(),
8649            Self::NamespaceExport(inner) => inner.span(),
8650            Self::NamespaceImport(inner) => inner.span(),
8651            Self::NewExpression(inner) => inner.span(),
8652            Self::Object(inner) => inner.span(),
8653            Self::ObjectAssignmentPattern(inner) => inner.span(),
8654            Self::ObjectPattern(inner) => inner.span(),
8655            Self::Pair(inner) => inner.span(),
8656            Self::PairPattern(inner) => inner.span(),
8657            Self::ParenthesizedExpression(inner) => inner.span(),
8658            Self::Program(inner) => inner.span(),
8659            Self::Regex(inner) => inner.span(),
8660            Self::RestPattern(inner) => inner.span(),
8661            Self::ReturnStatement(inner) => inner.span(),
8662            Self::SequenceExpression(inner) => inner.span(),
8663            Self::SpreadElement(inner) => inner.span(),
8664            Self::StatementBlock(inner) => inner.span(),
8665            Self::String(inner) => inner.span(),
8666            Self::SubscriptExpression(inner) => inner.span(),
8667            Self::SwitchBody(inner) => inner.span(),
8668            Self::SwitchCase(inner) => inner.span(),
8669            Self::SwitchDefault(inner) => inner.span(),
8670            Self::SwitchStatement(inner) => inner.span(),
8671            Self::TemplateString(inner) => inner.span(),
8672            Self::TemplateSubstitution(inner) => inner.span(),
8673            Self::TernaryExpression(inner) => inner.span(),
8674            Self::ThrowStatement(inner) => inner.span(),
8675            Self::TryStatement(inner) => inner.span(),
8676            Self::UnaryExpression(inner) => inner.span(),
8677            Self::UpdateExpression(inner) => inner.span(),
8678            Self::UsingDeclaration(inner) => inner.span(),
8679            Self::VariableDeclaration(inner) => inner.span(),
8680            Self::VariableDeclarator(inner) => inner.span(),
8681            Self::WhileStatement(inner) => inner.span(),
8682            Self::WithStatement(inner) => inner.span(),
8683            Self::YieldExpression(inner) => inner.span(),
8684            Self::Comment(inner) => inner.span(),
8685            Self::EscapeSequence(inner) => inner.span(),
8686            Self::False(inner) => inner.span(),
8687            Self::HashBangLine(inner) => inner.span(),
8688            Self::HtmlCharacterReference(inner) => inner.span(),
8689            Self::HtmlComment(inner) => inner.span(),
8690            Self::Identifier(inner) => inner.span(),
8691            Self::JsxText(inner) => inner.span(),
8692            Self::Null(inner) => inner.span(),
8693            Self::Number(inner) => inner.span(),
8694            Self::OptionalChain(inner) => inner.span(),
8695            Self::PrivatePropertyIdentifier(inner) => inner.span(),
8696            Self::PropertyIdentifier(inner) => inner.span(),
8697            Self::RegexFlags(inner) => inner.span(),
8698            Self::RegexPattern(inner) => inner.span(),
8699            Self::ShorthandPropertyIdentifier(inner) => inner.span(),
8700            Self::ShorthandPropertyIdentifierPattern(inner) => inner.span(),
8701            Self::StatementIdentifier(inner) => inner.span(),
8702            Self::StringFragment(inner) => inner.span(),
8703            Self::Super(inner) => inner.span(),
8704            Self::This(inner) => inner.span(),
8705            Self::True(inner) => inner.span(),
8706            Self::Undefined(inner) => inner.span(),
8707            Self::Unknown(node) => ::treesitter_types::Span::from(*node),
8708        }
8709    }
8710}