JsModule { bom_token: missing (optional), interpreter_token: missing (optional), directives: JsDirectiveList [], items: JsModuleItemList [ JsVariableStatement { declaration: JsVariableDeclaration { await_token: missing (optional), kind: LET_KW@0..25 "let" [Comments("// class expressions"), Newline("\n")] [Whitespace(" ")], declarators: JsVariableDeclaratorList [ JsVariableDeclarator { id: JsIdentifierBinding { name_token: IDENT@25..27 "a" [] [Whitespace(" ")], }, variable_annotation: missing (optional), initializer: JsInitializerClause { eq_token: EQ@27..29 "=" [] [Whitespace(" ")], expression: JsClassExpression { decorators: JsDecoratorList [ JsDecorator { at_token: AT@29..30 "@" [] [], expression: JsIdentifierExpression { name: JsReferenceIdentifier { value_token: IDENT@30..40 "decorator" [] [Whitespace(" ")], }, }, }, ], class_token: CLASS_KW@40..46 "class" [] [Whitespace(" ")], id: missing (optional), type_parameters: missing (optional), extends_clause: missing (optional), implements_clause: missing (optional), l_curly_token: L_CURLY@46..47 "{" [] [], members: JsClassMemberList [], r_curly_token: R_CURLY@47..48 "}" [] [], }, }, }, ], }, semicolon_token: SEMICOLON@48..49 ";" [] [], }, JsVariableStatement { declaration: JsVariableDeclaration { await_token: missing (optional), kind: LET_KW@49..54 "let" [Newline("\n")] [Whitespace(" ")], declarators: JsVariableDeclaratorList [ JsVariableDeclarator { id: JsIdentifierBinding { name_token: IDENT@54..56 "b" [] [Whitespace(" ")], }, variable_annotation: missing (optional), initializer: JsInitializerClause { eq_token: EQ@56..58 "=" [] [Whitespace(" ")], expression: JsClassExpression { decorators: JsDecoratorList [ JsDecorator { at_token: AT@58..59 "@" [] [], expression: JsIdentifierExpression { name: JsReferenceIdentifier { value_token: IDENT@59..69 "decorator" [] [Whitespace(" ")], }, }, }, JsDecorator { at_token: AT@69..70 "@" [] [], expression: JsCallExpression { callee: JsIdentifierExpression { name: JsReferenceIdentifier { value_token: IDENT@70..87 "functionDecorator" [] [], }, }, optional_chain_token: missing (optional), type_arguments: missing (optional), arguments: JsCallArguments { l_paren_token: L_PAREN@87..88 "(" [] [], args: JsCallArgumentList [ JsNumberLiteralExpression { value_token: JS_NUMBER_LITERAL@88..89 "1" [] [], }, COMMA@89..90 "," [] [], JsNumberLiteralExpression { value_token: JS_NUMBER_LITERAL@90..91 "2" [] [], }, COMMA@91..92 "," [] [], JsNumberLiteralExpression { value_token: JS_NUMBER_LITERAL@92..93 "3" [] [], }, ], r_paren_token: R_PAREN@93..95 ")" [] [Whitespace(" ")], }, }, }, ], class_token: CLASS_KW@95..101 "class" [] [Whitespace(" ")], id: missing (optional), type_parameters: missing (optional), extends_clause: missing (optional), implements_clause: missing (optional), l_curly_token: L_CURLY@101..102 "{" [] [], members: JsClassMemberList [], r_curly_token: R_CURLY@102..103 "}" [] [], }, }, }, ], }, semicolon_token: SEMICOLON@103..104 ";" [] [], }, JsVariableStatement { declaration: JsVariableDeclaration { await_token: missing (optional), kind: LET_KW@104..109 "let" [Newline("\n")] [Whitespace(" ")], declarators: JsVariableDeclaratorList [ JsVariableDeclarator { id: JsIdentifierBinding { name_token: IDENT@109..111 "c" [] [Whitespace(" ")], }, variable_annotation: missing (optional), initializer: JsInitializerClause { eq_token: EQ@111..113 "=" [] [Whitespace(" ")], expression: JsClassExpression { decorators: JsDecoratorList [ JsDecorator { at_token: AT@113..114 "@" [] [], expression: JsIdentifierExpression { name: JsReferenceIdentifier { value_token: IDENT@114..120 "first" [] [Whitespace(" ")], }, }, }, JsDecorator { at_token: AT@120..121 "@" [] [], expression: JsIdentifierExpression { name: JsReferenceIdentifier { value_token: IDENT@121..128 "second" [] [Whitespace(" ")], }, }, }, ], class_token: CLASS_KW@128..134 "class" [] [Whitespace(" ")], id: JsIdentifierBinding { name_token: IDENT@134..138 "Foo" [] [Whitespace(" ")], }, type_parameters: missing (optional), extends_clause: missing (optional), implements_clause: missing (optional), l_curly_token: L_CURLY@138..139 "{" [] [], members: JsClassMemberList [], r_curly_token: R_CURLY@139..140 "}" [] [], }, }, }, ], }, semicolon_token: missing (optional), }, JsClassDeclaration { decorators: JsDecoratorList [ JsDecorator { at_token: AT@140..164 "@" [Newline("\n"), Comments("// class declarations"), Newline("\n")] [], expression: JsIdentifierExpression { name: JsReferenceIdentifier { value_token: IDENT@164..174 "decorator" [] [Whitespace(" ")], }, }, }, ], abstract_token: missing (optional), class_token: CLASS_KW@174..180 "class" [] [Whitespace(" ")], id: JsIdentifierBinding { name_token: IDENT@180..184 "Foo" [] [Whitespace(" ")], }, type_parameters: missing (optional), extends_clause: missing (optional), implements_clause: missing (optional), l_curly_token: L_CURLY@184..185 "{" [] [], members: JsClassMemberList [], r_curly_token: R_CURLY@185..186 "}" [] [], }, JsEmptyStatement { semicolon_token: SEMICOLON@186..187 ";" [] [], }, JsClassDeclaration { decorators: JsDecoratorList [ JsDecorator { at_token: AT@187..189 "@" [Newline("\n")] [], expression: JsIdentifierExpression { name: JsReferenceIdentifier { value_token: IDENT@189..199 "decorator" [] [Whitespace(" ")], }, }, }, JsDecorator { at_token: AT@199..200 "@" [] [], expression: JsCallExpression { callee: JsIdentifierExpression { name: JsReferenceIdentifier { value_token: IDENT@200..217 "functionDecorator" [] [], }, }, optional_chain_token: missing (optional), type_arguments: missing (optional), arguments: JsCallArguments { l_paren_token: L_PAREN@217..218 "(" [] [], args: JsCallArgumentList [ JsNumberLiteralExpression { value_token: JS_NUMBER_LITERAL@218..219 "1" [] [], }, COMMA@219..220 "," [] [], JsNumberLiteralExpression { value_token: JS_NUMBER_LITERAL@220..221 "2" [] [], }, COMMA@221..222 "," [] [], JsNumberLiteralExpression { value_token: JS_NUMBER_LITERAL@222..223 "3" [] [], }, ], r_paren_token: R_PAREN@223..225 ")" [] [Whitespace(" ")], }, }, }, ], abstract_token: missing (optional), class_token: CLASS_KW@225..231 "class" [] [Whitespace(" ")], id: JsIdentifierBinding { name_token: IDENT@231..235 "Bar" [] [Whitespace(" ")], }, type_parameters: missing (optional), extends_clause: missing (optional), implements_clause: missing (optional), l_curly_token: L_CURLY@235..236 "{" [] [], members: JsClassMemberList [], r_curly_token: R_CURLY@236..237 "}" [] [], }, JsEmptyStatement { semicolon_token: SEMICOLON@237..238 ";" [] [], }, JsClassDeclaration { decorators: JsDecoratorList [ JsDecorator { at_token: AT@238..240 "@" [Newline("\n")] [], expression: JsIdentifierExpression { name: JsReferenceIdentifier { value_token: IDENT@240..246 "first" [] [Whitespace(" ")], }, }, }, JsDecorator { at_token: AT@246..247 "@" [] [], expression: JsIdentifierExpression { name: JsReferenceIdentifier { value_token: IDENT@247..254 "second" [] [Whitespace(" ")], }, }, }, ], abstract_token: missing (optional), class_token: CLASS_KW@254..260 "class" [] [Whitespace(" ")], id: JsIdentifierBinding { name_token: IDENT@260..264 "Baz" [] [Whitespace(" ")], }, type_parameters: missing (optional), extends_clause: missing (optional), implements_clause: missing (optional), l_curly_token: L_CURLY@264..265 "{" [] [], members: JsClassMemberList [], r_curly_token: R_CURLY@265..266 "}" [] [], }, JsClassDeclaration { decorators: JsDecoratorList [ JsDecorator { at_token: AT@266..299 "@" [Newline("\n"), Comments("// abstract class dec ..."), Newline("\n")] [], expression: JsIdentifierExpression { name: JsReferenceIdentifier { value_token: IDENT@299..309 "decorator" [] [Whitespace(" ")], }, }, }, ], abstract_token: ABSTRACT_KW@309..318 "abstract" [] [Whitespace(" ")], class_token: CLASS_KW@318..324 "class" [] [Whitespace(" ")], id: JsIdentifierBinding { name_token: IDENT@324..328 "Foo" [] [Whitespace(" ")], }, type_parameters: missing (optional), extends_clause: missing (optional), implements_clause: missing (optional), l_curly_token: L_CURLY@328..329 "{" [] [], members: JsClassMemberList [], r_curly_token: R_CURLY@329..330 "}" [] [], }, JsEmptyStatement { semicolon_token: SEMICOLON@330..331 ";" [] [], }, JsClassDeclaration { decorators: JsDecoratorList [ JsDecorator { at_token: AT@331..333 "@" [Newline("\n")] [], expression: JsIdentifierExpression { name: JsReferenceIdentifier { value_token: IDENT@333..343 "decorator" [] [Whitespace(" ")], }, }, }, JsDecorator { at_token: AT@343..344 "@" [] [], expression: JsCallExpression { callee: JsIdentifierExpression { name: JsReferenceIdentifier { value_token: IDENT@344..361 "functionDecorator" [] [], }, }, optional_chain_token: missing (optional), type_arguments: missing (optional), arguments: JsCallArguments { l_paren_token: L_PAREN@361..362 "(" [] [], args: JsCallArgumentList [ JsNumberLiteralExpression { value_token: JS_NUMBER_LITERAL@362..363 "1" [] [], }, COMMA@363..364 "," [] [], JsNumberLiteralExpression { value_token: JS_NUMBER_LITERAL@364..365 "2" [] [], }, COMMA@365..366 "," [] [], JsNumberLiteralExpression { value_token: JS_NUMBER_LITERAL@366..367 "3" [] [], }, ], r_paren_token: R_PAREN@367..369 ")" [] [Whitespace(" ")], }, }, }, ], abstract_token: ABSTRACT_KW@369..378 "abstract" [] [Whitespace(" ")], class_token: CLASS_KW@378..384 "class" [] [Whitespace(" ")], id: JsIdentifierBinding { name_token: IDENT@384..388 "Bar" [] [Whitespace(" ")], }, type_parameters: missing (optional), extends_clause: missing (optional), implements_clause: missing (optional), l_curly_token: L_CURLY@388..389 "{" [] [], members: JsClassMemberList [], r_curly_token: R_CURLY@389..390 "}" [] [], }, JsEmptyStatement { semicolon_token: SEMICOLON@390..391 ";" [] [], }, JsClassDeclaration { decorators: JsDecoratorList [ JsDecorator { at_token: AT@391..393 "@" [Newline("\n")] [], expression: JsIdentifierExpression { name: JsReferenceIdentifier { value_token: IDENT@393..399 "first" [] [Whitespace(" ")], }, }, }, JsDecorator { at_token: AT@399..400 "@" [] [], expression: JsIdentifierExpression { name: JsReferenceIdentifier { value_token: IDENT@400..407 "second" [] [Whitespace(" ")], }, }, }, ], abstract_token: ABSTRACT_KW@407..416 "abstract" [] [Whitespace(" ")], class_token: CLASS_KW@416..422 "class" [] [Whitespace(" ")], id: JsIdentifierBinding { name_token: IDENT@422..426 "Baz" [] [Whitespace(" ")], }, type_parameters: missing (optional), extends_clause: missing (optional), implements_clause: missing (optional), l_curly_token: L_CURLY@426..427 "{" [] [], members: JsClassMemberList [], r_curly_token: R_CURLY@427..428 "}" [] [], }, JsExport { decorators: JsDecoratorList [], export_token: EXPORT_KW@428..467 "export" [Newline("\n"), Comments("// exported class dec ..."), Newline("\n")] [Whitespace(" ")], export_clause: JsClassDeclaration { decorators: JsDecoratorList [ JsDecorator { at_token: AT@467..468 "@" [] [], expression: JsIdentifierExpression { name: JsReferenceIdentifier { value_token: IDENT@468..478 "decorator" [] [Whitespace(" ")], }, }, }, ], abstract_token: missing (optional), class_token: CLASS_KW@478..484 "class" [] [Whitespace(" ")], id: JsIdentifierBinding { name_token: IDENT@484..488 "Foo" [] [Whitespace(" ")], }, type_parameters: missing (optional), extends_clause: missing (optional), implements_clause: missing (optional), l_curly_token: L_CURLY@488..489 "{" [] [], members: JsClassMemberList [], r_curly_token: R_CURLY@489..490 "}" [] [], }, }, JsEmptyStatement { semicolon_token: SEMICOLON@490..491 ";" [] [], }, JsExport { decorators: JsDecoratorList [], export_token: EXPORT_KW@491..499 "export" [Newline("\n")] [Whitespace(" ")], export_clause: JsClassDeclaration { decorators: JsDecoratorList [ JsDecorator { at_token: AT@499..500 "@" [] [], expression: JsIdentifierExpression { name: JsReferenceIdentifier { value_token: IDENT@500..510 "decorator" [] [Whitespace(" ")], }, }, }, JsDecorator { at_token: AT@510..511 "@" [] [], expression: JsCallExpression { callee: JsIdentifierExpression { name: JsReferenceIdentifier { value_token: IDENT@511..528 "functionDecorator" [] [], }, }, optional_chain_token: missing (optional), type_arguments: missing (optional), arguments: JsCallArguments { l_paren_token: L_PAREN@528..529 "(" [] [], args: JsCallArgumentList [ JsNumberLiteralExpression { value_token: JS_NUMBER_LITERAL@529..530 "1" [] [], }, COMMA@530..531 "," [] [], JsNumberLiteralExpression { value_token: JS_NUMBER_LITERAL@531..532 "2" [] [], }, COMMA@532..533 "," [] [], JsNumberLiteralExpression { value_token: JS_NUMBER_LITERAL@533..534 "3" [] [], }, ], r_paren_token: R_PAREN@534..536 ")" [] [Whitespace(" ")], }, }, }, ], abstract_token: missing (optional), class_token: CLASS_KW@536..542 "class" [] [Whitespace(" ")], id: JsIdentifierBinding { name_token: IDENT@542..546 "Bar" [] [Whitespace(" ")], }, type_parameters: missing (optional), extends_clause: missing (optional), implements_clause: missing (optional), l_curly_token: L_CURLY@546..547 "{" [] [], members: JsClassMemberList [], r_curly_token: R_CURLY@547..548 "}" [] [], }, }, JsEmptyStatement { semicolon_token: SEMICOLON@548..549 ";" [] [], }, JsExport { decorators: JsDecoratorList [], export_token: EXPORT_KW@549..557 "export" [Newline("\n")] [Whitespace(" ")], export_clause: JsClassDeclaration { decorators: JsDecoratorList [ JsDecorator { at_token: AT@557..558 "@" [] [], expression: JsIdentifierExpression { name: JsReferenceIdentifier { value_token: IDENT@558..564 "first" [] [Whitespace(" ")], }, }, }, JsDecorator { at_token: AT@564..565 "@" [] [], expression: JsIdentifierExpression { name: JsReferenceIdentifier { value_token: IDENT@565..572 "second" [] [Whitespace(" ")], }, }, }, ], abstract_token: missing (optional), class_token: CLASS_KW@572..578 "class" [] [Whitespace(" ")], id: JsIdentifierBinding { name_token: IDENT@578..582 "Baz" [] [Whitespace(" ")], }, type_parameters: missing (optional), extends_clause: missing (optional), implements_clause: missing (optional), l_curly_token: L_CURLY@582..583 "{" [] [], members: JsClassMemberList [], r_curly_token: R_CURLY@583..584 "}" [] [], }, }, JsExport { decorators: JsDecoratorList [ JsDecorator { at_token: AT@584..586 "@" [Newline("\n")] [], expression: JsIdentifierExpression { name: JsReferenceIdentifier { value_token: IDENT@586..595 "decorator" [] [], }, }, }, ], export_token: EXPORT_KW@595..603 "export" [Newline("\n")] [Whitespace(" ")], export_clause: JsClassDeclaration { decorators: JsDecoratorList [], abstract_token: missing (optional), class_token: CLASS_KW@603..609 "class" [] [Whitespace(" ")], id: JsIdentifierBinding { name_token: IDENT@609..613 "Foo" [] [Whitespace(" ")], }, type_parameters: missing (optional), extends_clause: missing (optional), implements_clause: missing (optional), l_curly_token: L_CURLY@613..615 "{" [] [Whitespace(" ")], members: JsClassMemberList [], r_curly_token: R_CURLY@615..616 "}" [] [], }, }, JsExport { decorators: JsDecoratorList [ JsDecorator { at_token: AT@616..618 "@" [Newline("\n")] [], expression: JsStaticMemberExpression { object: JsIdentifierExpression { name: JsReferenceIdentifier { value_token: IDENT@618..623 "first" [] [], }, }, operator_token: DOT@623..624 "." [] [], member: JsName { value_token: IDENT@624..630 "field" [] [Whitespace(" ")], }, }, }, JsDecorator { at_token: AT@630..631 "@" [] [], expression: JsIdentifierExpression { name: JsReferenceIdentifier { value_token: IDENT@631..638 "second" [] [Whitespace(" ")], }, }, }, JsDecorator { at_token: AT@638..639 "@" [] [], expression: JsCallExpression { callee: JsParenthesizedExpression { l_paren_token: L_PAREN@639..640 "(" [] [], expression: JsArrowFunctionExpression { async_token: missing (optional), type_parameters: missing (optional), parameters: JsParameters { l_paren_token: L_PAREN@640..641 "(" [] [], items: JsParameterList [], r_paren_token: R_PAREN@641..643 ")" [] [Whitespace(" ")], }, return_type_annotation: missing (optional), fat_arrow_token: FAT_ARROW@643..646 "=>" [] [Whitespace(" ")], body: JsIdentifierExpression { name: JsReferenceIdentifier { value_token: IDENT@646..655 "decorator" [] [], }, }, }, r_paren_token: R_PAREN@655..656 ")" [] [], }, optional_chain_token: missing (optional), type_arguments: missing (optional), arguments: JsCallArguments { l_paren_token: L_PAREN@656..657 "(" [] [], args: JsCallArgumentList [], r_paren_token: R_PAREN@657..658 ")" [] [], }, }, }, ], export_token: EXPORT_KW@658..666 "export" [Newline("\n")] [Whitespace(" ")], export_clause: JsClassDeclaration { decorators: JsDecoratorList [], abstract_token: missing (optional), class_token: CLASS_KW@666..672 "class" [] [Whitespace(" ")], id: JsIdentifierBinding { name_token: IDENT@672..676 "Bar" [] [Whitespace(" ")], }, type_parameters: missing (optional), extends_clause: missing (optional), implements_clause: missing (optional), l_curly_token: L_CURLY@676..677 "{" [] [], members: JsClassMemberList [], r_curly_token: R_CURLY@677..678 "}" [] [], }, }, JsExport { decorators: JsDecoratorList [ JsDecorator { at_token: AT@678..680 "@" [Newline("\n")] [], expression: JsIdentifierExpression { name: JsReferenceIdentifier { value_token: IDENT@680..686 "before" [] [], }, }, }, ], export_token: EXPORT_KW@686..694 "export" [Newline("\n")] [Whitespace(" ")], export_clause: JsClassDeclaration { decorators: JsDecoratorList [ JsDecorator { at_token: AT@694..695 "@" [] [], expression: JsIdentifierExpression { name: JsReferenceIdentifier { value_token: IDENT@695..701 "after" [] [Whitespace(" ")], }, }, }, ], abstract_token: missing (optional), class_token: CLASS_KW@701..707 "class" [] [Whitespace(" ")], id: JsIdentifierBinding { name_token: IDENT@707..711 "Foo" [] [Whitespace(" ")], }, type_parameters: missing (optional), extends_clause: missing (optional), implements_clause: missing (optional), l_curly_token: L_CURLY@711..713 "{" [] [Whitespace(" ")], members: JsClassMemberList [], r_curly_token: R_CURLY@713..714 "}" [] [], }, }, JsExport { decorators: JsDecoratorList [ JsDecorator { at_token: AT@714..716 "@" [Newline("\n")] [], expression: JsStaticMemberExpression { object: JsIdentifierExpression { name: JsReferenceIdentifier { value_token: IDENT@716..722 "before" [] [], }, }, operator_token: DOT@722..723 "." [] [], member: JsName { value_token: IDENT@723..729 "field" [] [Whitespace(" ")], }, }, }, JsDecorator { at_token: AT@729..730 "@" [] [], expression: JsIdentifierExpression { name: JsReferenceIdentifier { value_token: IDENT@730..737 "before" [] [Whitespace(" ")], }, }, }, JsDecorator { at_token: AT@737..738 "@" [] [], expression: JsCallExpression { callee: JsParenthesizedExpression { l_paren_token: L_PAREN@738..739 "(" [] [], expression: JsArrowFunctionExpression { async_token: missing (optional), type_parameters: missing (optional), parameters: JsParameters { l_paren_token: L_PAREN@739..740 "(" [] [], items: JsParameterList [], r_paren_token: R_PAREN@740..742 ")" [] [Whitespace(" ")], }, return_type_annotation: missing (optional), fat_arrow_token: FAT_ARROW@742..745 "=>" [] [Whitespace(" ")], body: JsIdentifierExpression { name: JsReferenceIdentifier { value_token: IDENT@745..754 "decorator" [] [], }, }, }, r_paren_token: R_PAREN@754..755 ")" [] [], }, optional_chain_token: missing (optional), type_arguments: missing (optional), arguments: JsCallArguments { l_paren_token: L_PAREN@755..756 "(" [] [], args: JsCallArgumentList [], r_paren_token: R_PAREN@756..757 ")" [] [], }, }, }, ], export_token: EXPORT_KW@757..765 "export" [Newline("\n")] [Whitespace(" ")], export_clause: JsClassDeclaration { decorators: JsDecoratorList [ JsDecorator { at_token: AT@765..766 "@" [] [], expression: JsStaticMemberExpression { object: JsIdentifierExpression { name: JsReferenceIdentifier { value_token: IDENT@766..771 "after" [] [], }, }, operator_token: DOT@771..772 "." [] [], member: JsName { value_token: IDENT@772..778 "field" [] [Whitespace(" ")], }, }, }, JsDecorator { at_token: AT@778..779 "@" [] [], expression: JsIdentifierExpression { name: JsReferenceIdentifier { value_token: IDENT@779..785 "after" [] [Whitespace(" ")], }, }, }, JsDecorator { at_token: AT@785..786 "@" [] [], expression: JsCallExpression { callee: JsParenthesizedExpression { l_paren_token: L_PAREN@786..787 "(" [] [], expression: JsArrowFunctionExpression { async_token: missing (optional), type_parameters: missing (optional), parameters: JsParameters { l_paren_token: L_PAREN@787..788 "(" [] [], items: JsParameterList [], r_paren_token: R_PAREN@788..790 ")" [] [Whitespace(" ")], }, return_type_annotation: missing (optional), fat_arrow_token: FAT_ARROW@790..793 "=>" [] [Whitespace(" ")], body: JsIdentifierExpression { name: JsReferenceIdentifier { value_token: IDENT@793..802 "decorator" [] [], }, }, }, r_paren_token: R_PAREN@802..803 ")" [] [], }, optional_chain_token: missing (optional), type_arguments: missing (optional), arguments: JsCallArguments { l_paren_token: L_PAREN@803..804 "(" [] [], args: JsCallArgumentList [], r_paren_token: R_PAREN@804..806 ")" [] [Whitespace(" ")], }, }, }, ], abstract_token: missing (optional), class_token: CLASS_KW@806..812 "class" [] [Whitespace(" ")], id: JsIdentifierBinding { name_token: IDENT@812..816 "Bar" [] [Whitespace(" ")], }, type_parameters: missing (optional), extends_clause: missing (optional), implements_clause: missing (optional), l_curly_token: L_CURLY@816..817 "{" [] [], members: JsClassMemberList [], r_curly_token: R_CURLY@817..818 "}" [] [], }, }, ], eof_token: EOF@818..819 "" [Newline("\n")] [], } 0: JS_MODULE@0..819 0: (empty) 1: (empty) 2: JS_DIRECTIVE_LIST@0..0 3: JS_MODULE_ITEM_LIST@0..818 0: JS_VARIABLE_STATEMENT@0..49 0: JS_VARIABLE_DECLARATION@0..48 0: (empty) 1: LET_KW@0..25 "let" [Comments("// class expressions"), Newline("\n")] [Whitespace(" ")] 2: JS_VARIABLE_DECLARATOR_LIST@25..48 0: JS_VARIABLE_DECLARATOR@25..48 0: JS_IDENTIFIER_BINDING@25..27 0: IDENT@25..27 "a" [] [Whitespace(" ")] 1: (empty) 2: JS_INITIALIZER_CLAUSE@27..48 0: EQ@27..29 "=" [] [Whitespace(" ")] 1: JS_CLASS_EXPRESSION@29..48 0: JS_DECORATOR_LIST@29..40 0: JS_DECORATOR@29..40 0: AT@29..30 "@" [] [] 1: JS_IDENTIFIER_EXPRESSION@30..40 0: JS_REFERENCE_IDENTIFIER@30..40 0: IDENT@30..40 "decorator" [] [Whitespace(" ")] 1: CLASS_KW@40..46 "class" [] [Whitespace(" ")] 2: (empty) 3: (empty) 4: (empty) 5: (empty) 6: L_CURLY@46..47 "{" [] [] 7: JS_CLASS_MEMBER_LIST@47..47 8: R_CURLY@47..48 "}" [] [] 1: SEMICOLON@48..49 ";" [] [] 1: JS_VARIABLE_STATEMENT@49..104 0: JS_VARIABLE_DECLARATION@49..103 0: (empty) 1: LET_KW@49..54 "let" [Newline("\n")] [Whitespace(" ")] 2: JS_VARIABLE_DECLARATOR_LIST@54..103 0: JS_VARIABLE_DECLARATOR@54..103 0: JS_IDENTIFIER_BINDING@54..56 0: IDENT@54..56 "b" [] [Whitespace(" ")] 1: (empty) 2: JS_INITIALIZER_CLAUSE@56..103 0: EQ@56..58 "=" [] [Whitespace(" ")] 1: JS_CLASS_EXPRESSION@58..103 0: JS_DECORATOR_LIST@58..95 0: JS_DECORATOR@58..69 0: AT@58..59 "@" [] [] 1: JS_IDENTIFIER_EXPRESSION@59..69 0: JS_REFERENCE_IDENTIFIER@59..69 0: IDENT@59..69 "decorator" [] [Whitespace(" ")] 1: JS_DECORATOR@69..95 0: AT@69..70 "@" [] [] 1: JS_CALL_EXPRESSION@70..95 0: JS_IDENTIFIER_EXPRESSION@70..87 0: JS_REFERENCE_IDENTIFIER@70..87 0: IDENT@70..87 "functionDecorator" [] [] 1: (empty) 2: (empty) 3: JS_CALL_ARGUMENTS@87..95 0: L_PAREN@87..88 "(" [] [] 1: JS_CALL_ARGUMENT_LIST@88..93 0: JS_NUMBER_LITERAL_EXPRESSION@88..89 0: JS_NUMBER_LITERAL@88..89 "1" [] [] 1: COMMA@89..90 "," [] [] 2: JS_NUMBER_LITERAL_EXPRESSION@90..91 0: JS_NUMBER_LITERAL@90..91 "2" [] [] 3: COMMA@91..92 "," [] [] 4: JS_NUMBER_LITERAL_EXPRESSION@92..93 0: JS_NUMBER_LITERAL@92..93 "3" [] [] 2: R_PAREN@93..95 ")" [] [Whitespace(" ")] 1: CLASS_KW@95..101 "class" [] [Whitespace(" ")] 2: (empty) 3: (empty) 4: (empty) 5: (empty) 6: L_CURLY@101..102 "{" [] [] 7: JS_CLASS_MEMBER_LIST@102..102 8: R_CURLY@102..103 "}" [] [] 1: SEMICOLON@103..104 ";" [] [] 2: JS_VARIABLE_STATEMENT@104..140 0: JS_VARIABLE_DECLARATION@104..140 0: (empty) 1: LET_KW@104..109 "let" [Newline("\n")] [Whitespace(" ")] 2: JS_VARIABLE_DECLARATOR_LIST@109..140 0: JS_VARIABLE_DECLARATOR@109..140 0: JS_IDENTIFIER_BINDING@109..111 0: IDENT@109..111 "c" [] [Whitespace(" ")] 1: (empty) 2: JS_INITIALIZER_CLAUSE@111..140 0: EQ@111..113 "=" [] [Whitespace(" ")] 1: JS_CLASS_EXPRESSION@113..140 0: JS_DECORATOR_LIST@113..128 0: JS_DECORATOR@113..120 0: AT@113..114 "@" [] [] 1: JS_IDENTIFIER_EXPRESSION@114..120 0: JS_REFERENCE_IDENTIFIER@114..120 0: IDENT@114..120 "first" [] [Whitespace(" ")] 1: JS_DECORATOR@120..128 0: AT@120..121 "@" [] [] 1: JS_IDENTIFIER_EXPRESSION@121..128 0: JS_REFERENCE_IDENTIFIER@121..128 0: IDENT@121..128 "second" [] [Whitespace(" ")] 1: CLASS_KW@128..134 "class" [] [Whitespace(" ")] 2: JS_IDENTIFIER_BINDING@134..138 0: IDENT@134..138 "Foo" [] [Whitespace(" ")] 3: (empty) 4: (empty) 5: (empty) 6: L_CURLY@138..139 "{" [] [] 7: JS_CLASS_MEMBER_LIST@139..139 8: R_CURLY@139..140 "}" [] [] 1: (empty) 3: JS_CLASS_DECLARATION@140..186 0: JS_DECORATOR_LIST@140..174 0: JS_DECORATOR@140..174 0: AT@140..164 "@" [Newline("\n"), Comments("// class declarations"), Newline("\n")] [] 1: JS_IDENTIFIER_EXPRESSION@164..174 0: JS_REFERENCE_IDENTIFIER@164..174 0: IDENT@164..174 "decorator" [] [Whitespace(" ")] 1: (empty) 2: CLASS_KW@174..180 "class" [] [Whitespace(" ")] 3: JS_IDENTIFIER_BINDING@180..184 0: IDENT@180..184 "Foo" [] [Whitespace(" ")] 4: (empty) 5: (empty) 6: (empty) 7: L_CURLY@184..185 "{" [] [] 8: JS_CLASS_MEMBER_LIST@185..185 9: R_CURLY@185..186 "}" [] [] 4: JS_EMPTY_STATEMENT@186..187 0: SEMICOLON@186..187 ";" [] [] 5: JS_CLASS_DECLARATION@187..237 0: JS_DECORATOR_LIST@187..225 0: JS_DECORATOR@187..199 0: AT@187..189 "@" [Newline("\n")] [] 1: JS_IDENTIFIER_EXPRESSION@189..199 0: JS_REFERENCE_IDENTIFIER@189..199 0: IDENT@189..199 "decorator" [] [Whitespace(" ")] 1: JS_DECORATOR@199..225 0: AT@199..200 "@" [] [] 1: JS_CALL_EXPRESSION@200..225 0: JS_IDENTIFIER_EXPRESSION@200..217 0: JS_REFERENCE_IDENTIFIER@200..217 0: IDENT@200..217 "functionDecorator" [] [] 1: (empty) 2: (empty) 3: JS_CALL_ARGUMENTS@217..225 0: L_PAREN@217..218 "(" [] [] 1: JS_CALL_ARGUMENT_LIST@218..223 0: JS_NUMBER_LITERAL_EXPRESSION@218..219 0: JS_NUMBER_LITERAL@218..219 "1" [] [] 1: COMMA@219..220 "," [] [] 2: JS_NUMBER_LITERAL_EXPRESSION@220..221 0: JS_NUMBER_LITERAL@220..221 "2" [] [] 3: COMMA@221..222 "," [] [] 4: JS_NUMBER_LITERAL_EXPRESSION@222..223 0: JS_NUMBER_LITERAL@222..223 "3" [] [] 2: R_PAREN@223..225 ")" [] [Whitespace(" ")] 1: (empty) 2: CLASS_KW@225..231 "class" [] [Whitespace(" ")] 3: JS_IDENTIFIER_BINDING@231..235 0: IDENT@231..235 "Bar" [] [Whitespace(" ")] 4: (empty) 5: (empty) 6: (empty) 7: L_CURLY@235..236 "{" [] [] 8: JS_CLASS_MEMBER_LIST@236..236 9: R_CURLY@236..237 "}" [] [] 6: JS_EMPTY_STATEMENT@237..238 0: SEMICOLON@237..238 ";" [] [] 7: JS_CLASS_DECLARATION@238..266 0: JS_DECORATOR_LIST@238..254 0: JS_DECORATOR@238..246 0: AT@238..240 "@" [Newline("\n")] [] 1: JS_IDENTIFIER_EXPRESSION@240..246 0: JS_REFERENCE_IDENTIFIER@240..246 0: IDENT@240..246 "first" [] [Whitespace(" ")] 1: JS_DECORATOR@246..254 0: AT@246..247 "@" [] [] 1: JS_IDENTIFIER_EXPRESSION@247..254 0: JS_REFERENCE_IDENTIFIER@247..254 0: IDENT@247..254 "second" [] [Whitespace(" ")] 1: (empty) 2: CLASS_KW@254..260 "class" [] [Whitespace(" ")] 3: JS_IDENTIFIER_BINDING@260..264 0: IDENT@260..264 "Baz" [] [Whitespace(" ")] 4: (empty) 5: (empty) 6: (empty) 7: L_CURLY@264..265 "{" [] [] 8: JS_CLASS_MEMBER_LIST@265..265 9: R_CURLY@265..266 "}" [] [] 8: JS_CLASS_DECLARATION@266..330 0: JS_DECORATOR_LIST@266..309 0: JS_DECORATOR@266..309 0: AT@266..299 "@" [Newline("\n"), Comments("// abstract class dec ..."), Newline("\n")] [] 1: JS_IDENTIFIER_EXPRESSION@299..309 0: JS_REFERENCE_IDENTIFIER@299..309 0: IDENT@299..309 "decorator" [] [Whitespace(" ")] 1: ABSTRACT_KW@309..318 "abstract" [] [Whitespace(" ")] 2: CLASS_KW@318..324 "class" [] [Whitespace(" ")] 3: JS_IDENTIFIER_BINDING@324..328 0: IDENT@324..328 "Foo" [] [Whitespace(" ")] 4: (empty) 5: (empty) 6: (empty) 7: L_CURLY@328..329 "{" [] [] 8: JS_CLASS_MEMBER_LIST@329..329 9: R_CURLY@329..330 "}" [] [] 9: JS_EMPTY_STATEMENT@330..331 0: SEMICOLON@330..331 ";" [] [] 10: JS_CLASS_DECLARATION@331..390 0: JS_DECORATOR_LIST@331..369 0: JS_DECORATOR@331..343 0: AT@331..333 "@" [Newline("\n")] [] 1: JS_IDENTIFIER_EXPRESSION@333..343 0: JS_REFERENCE_IDENTIFIER@333..343 0: IDENT@333..343 "decorator" [] [Whitespace(" ")] 1: JS_DECORATOR@343..369 0: AT@343..344 "@" [] [] 1: JS_CALL_EXPRESSION@344..369 0: JS_IDENTIFIER_EXPRESSION@344..361 0: JS_REFERENCE_IDENTIFIER@344..361 0: IDENT@344..361 "functionDecorator" [] [] 1: (empty) 2: (empty) 3: JS_CALL_ARGUMENTS@361..369 0: L_PAREN@361..362 "(" [] [] 1: JS_CALL_ARGUMENT_LIST@362..367 0: JS_NUMBER_LITERAL_EXPRESSION@362..363 0: JS_NUMBER_LITERAL@362..363 "1" [] [] 1: COMMA@363..364 "," [] [] 2: JS_NUMBER_LITERAL_EXPRESSION@364..365 0: JS_NUMBER_LITERAL@364..365 "2" [] [] 3: COMMA@365..366 "," [] [] 4: JS_NUMBER_LITERAL_EXPRESSION@366..367 0: JS_NUMBER_LITERAL@366..367 "3" [] [] 2: R_PAREN@367..369 ")" [] [Whitespace(" ")] 1: ABSTRACT_KW@369..378 "abstract" [] [Whitespace(" ")] 2: CLASS_KW@378..384 "class" [] [Whitespace(" ")] 3: JS_IDENTIFIER_BINDING@384..388 0: IDENT@384..388 "Bar" [] [Whitespace(" ")] 4: (empty) 5: (empty) 6: (empty) 7: L_CURLY@388..389 "{" [] [] 8: JS_CLASS_MEMBER_LIST@389..389 9: R_CURLY@389..390 "}" [] [] 11: JS_EMPTY_STATEMENT@390..391 0: SEMICOLON@390..391 ";" [] [] 12: JS_CLASS_DECLARATION@391..428 0: JS_DECORATOR_LIST@391..407 0: JS_DECORATOR@391..399 0: AT@391..393 "@" [Newline("\n")] [] 1: JS_IDENTIFIER_EXPRESSION@393..399 0: JS_REFERENCE_IDENTIFIER@393..399 0: IDENT@393..399 "first" [] [Whitespace(" ")] 1: JS_DECORATOR@399..407 0: AT@399..400 "@" [] [] 1: JS_IDENTIFIER_EXPRESSION@400..407 0: JS_REFERENCE_IDENTIFIER@400..407 0: IDENT@400..407 "second" [] [Whitespace(" ")] 1: ABSTRACT_KW@407..416 "abstract" [] [Whitespace(" ")] 2: CLASS_KW@416..422 "class" [] [Whitespace(" ")] 3: JS_IDENTIFIER_BINDING@422..426 0: IDENT@422..426 "Baz" [] [Whitespace(" ")] 4: (empty) 5: (empty) 6: (empty) 7: L_CURLY@426..427 "{" [] [] 8: JS_CLASS_MEMBER_LIST@427..427 9: R_CURLY@427..428 "}" [] [] 13: JS_EXPORT@428..490 0: JS_DECORATOR_LIST@428..428 1: EXPORT_KW@428..467 "export" [Newline("\n"), Comments("// exported class dec ..."), Newline("\n")] [Whitespace(" ")] 2: JS_CLASS_DECLARATION@467..490 0: JS_DECORATOR_LIST@467..478 0: JS_DECORATOR@467..478 0: AT@467..468 "@" [] [] 1: JS_IDENTIFIER_EXPRESSION@468..478 0: JS_REFERENCE_IDENTIFIER@468..478 0: IDENT@468..478 "decorator" [] [Whitespace(" ")] 1: (empty) 2: CLASS_KW@478..484 "class" [] [Whitespace(" ")] 3: JS_IDENTIFIER_BINDING@484..488 0: IDENT@484..488 "Foo" [] [Whitespace(" ")] 4: (empty) 5: (empty) 6: (empty) 7: L_CURLY@488..489 "{" [] [] 8: JS_CLASS_MEMBER_LIST@489..489 9: R_CURLY@489..490 "}" [] [] 14: JS_EMPTY_STATEMENT@490..491 0: SEMICOLON@490..491 ";" [] [] 15: JS_EXPORT@491..548 0: JS_DECORATOR_LIST@491..491 1: EXPORT_KW@491..499 "export" [Newline("\n")] [Whitespace(" ")] 2: JS_CLASS_DECLARATION@499..548 0: JS_DECORATOR_LIST@499..536 0: JS_DECORATOR@499..510 0: AT@499..500 "@" [] [] 1: JS_IDENTIFIER_EXPRESSION@500..510 0: JS_REFERENCE_IDENTIFIER@500..510 0: IDENT@500..510 "decorator" [] [Whitespace(" ")] 1: JS_DECORATOR@510..536 0: AT@510..511 "@" [] [] 1: JS_CALL_EXPRESSION@511..536 0: JS_IDENTIFIER_EXPRESSION@511..528 0: JS_REFERENCE_IDENTIFIER@511..528 0: IDENT@511..528 "functionDecorator" [] [] 1: (empty) 2: (empty) 3: JS_CALL_ARGUMENTS@528..536 0: L_PAREN@528..529 "(" [] [] 1: JS_CALL_ARGUMENT_LIST@529..534 0: JS_NUMBER_LITERAL_EXPRESSION@529..530 0: JS_NUMBER_LITERAL@529..530 "1" [] [] 1: COMMA@530..531 "," [] [] 2: JS_NUMBER_LITERAL_EXPRESSION@531..532 0: JS_NUMBER_LITERAL@531..532 "2" [] [] 3: COMMA@532..533 "," [] [] 4: JS_NUMBER_LITERAL_EXPRESSION@533..534 0: JS_NUMBER_LITERAL@533..534 "3" [] [] 2: R_PAREN@534..536 ")" [] [Whitespace(" ")] 1: (empty) 2: CLASS_KW@536..542 "class" [] [Whitespace(" ")] 3: JS_IDENTIFIER_BINDING@542..546 0: IDENT@542..546 "Bar" [] [Whitespace(" ")] 4: (empty) 5: (empty) 6: (empty) 7: L_CURLY@546..547 "{" [] [] 8: JS_CLASS_MEMBER_LIST@547..547 9: R_CURLY@547..548 "}" [] [] 16: JS_EMPTY_STATEMENT@548..549 0: SEMICOLON@548..549 ";" [] [] 17: JS_EXPORT@549..584 0: JS_DECORATOR_LIST@549..549 1: EXPORT_KW@549..557 "export" [Newline("\n")] [Whitespace(" ")] 2: JS_CLASS_DECLARATION@557..584 0: JS_DECORATOR_LIST@557..572 0: JS_DECORATOR@557..564 0: AT@557..558 "@" [] [] 1: JS_IDENTIFIER_EXPRESSION@558..564 0: JS_REFERENCE_IDENTIFIER@558..564 0: IDENT@558..564 "first" [] [Whitespace(" ")] 1: JS_DECORATOR@564..572 0: AT@564..565 "@" [] [] 1: JS_IDENTIFIER_EXPRESSION@565..572 0: JS_REFERENCE_IDENTIFIER@565..572 0: IDENT@565..572 "second" [] [Whitespace(" ")] 1: (empty) 2: CLASS_KW@572..578 "class" [] [Whitespace(" ")] 3: JS_IDENTIFIER_BINDING@578..582 0: IDENT@578..582 "Baz" [] [Whitespace(" ")] 4: (empty) 5: (empty) 6: (empty) 7: L_CURLY@582..583 "{" [] [] 8: JS_CLASS_MEMBER_LIST@583..583 9: R_CURLY@583..584 "}" [] [] 18: JS_EXPORT@584..616 0: JS_DECORATOR_LIST@584..595 0: JS_DECORATOR@584..595 0: AT@584..586 "@" [Newline("\n")] [] 1: JS_IDENTIFIER_EXPRESSION@586..595 0: JS_REFERENCE_IDENTIFIER@586..595 0: IDENT@586..595 "decorator" [] [] 1: EXPORT_KW@595..603 "export" [Newline("\n")] [Whitespace(" ")] 2: JS_CLASS_DECLARATION@603..616 0: JS_DECORATOR_LIST@603..603 1: (empty) 2: CLASS_KW@603..609 "class" [] [Whitespace(" ")] 3: JS_IDENTIFIER_BINDING@609..613 0: IDENT@609..613 "Foo" [] [Whitespace(" ")] 4: (empty) 5: (empty) 6: (empty) 7: L_CURLY@613..615 "{" [] [Whitespace(" ")] 8: JS_CLASS_MEMBER_LIST@615..615 9: R_CURLY@615..616 "}" [] [] 19: JS_EXPORT@616..678 0: JS_DECORATOR_LIST@616..658 0: JS_DECORATOR@616..630 0: AT@616..618 "@" [Newline("\n")] [] 1: JS_STATIC_MEMBER_EXPRESSION@618..630 0: JS_IDENTIFIER_EXPRESSION@618..623 0: JS_REFERENCE_IDENTIFIER@618..623 0: IDENT@618..623 "first" [] [] 1: DOT@623..624 "." [] [] 2: JS_NAME@624..630 0: IDENT@624..630 "field" [] [Whitespace(" ")] 1: JS_DECORATOR@630..638 0: AT@630..631 "@" [] [] 1: JS_IDENTIFIER_EXPRESSION@631..638 0: JS_REFERENCE_IDENTIFIER@631..638 0: IDENT@631..638 "second" [] [Whitespace(" ")] 2: JS_DECORATOR@638..658 0: AT@638..639 "@" [] [] 1: JS_CALL_EXPRESSION@639..658 0: JS_PARENTHESIZED_EXPRESSION@639..656 0: L_PAREN@639..640 "(" [] [] 1: JS_ARROW_FUNCTION_EXPRESSION@640..655 0: (empty) 1: (empty) 2: JS_PARAMETERS@640..643 0: L_PAREN@640..641 "(" [] [] 1: JS_PARAMETER_LIST@641..641 2: R_PAREN@641..643 ")" [] [Whitespace(" ")] 3: (empty) 4: FAT_ARROW@643..646 "=>" [] [Whitespace(" ")] 5: JS_IDENTIFIER_EXPRESSION@646..655 0: JS_REFERENCE_IDENTIFIER@646..655 0: IDENT@646..655 "decorator" [] [] 2: R_PAREN@655..656 ")" [] [] 1: (empty) 2: (empty) 3: JS_CALL_ARGUMENTS@656..658 0: L_PAREN@656..657 "(" [] [] 1: JS_CALL_ARGUMENT_LIST@657..657 2: R_PAREN@657..658 ")" [] [] 1: EXPORT_KW@658..666 "export" [Newline("\n")] [Whitespace(" ")] 2: JS_CLASS_DECLARATION@666..678 0: JS_DECORATOR_LIST@666..666 1: (empty) 2: CLASS_KW@666..672 "class" [] [Whitespace(" ")] 3: JS_IDENTIFIER_BINDING@672..676 0: IDENT@672..676 "Bar" [] [Whitespace(" ")] 4: (empty) 5: (empty) 6: (empty) 7: L_CURLY@676..677 "{" [] [] 8: JS_CLASS_MEMBER_LIST@677..677 9: R_CURLY@677..678 "}" [] [] 20: JS_EXPORT@678..714 0: JS_DECORATOR_LIST@678..686 0: JS_DECORATOR@678..686 0: AT@678..680 "@" [Newline("\n")] [] 1: JS_IDENTIFIER_EXPRESSION@680..686 0: JS_REFERENCE_IDENTIFIER@680..686 0: IDENT@680..686 "before" [] [] 1: EXPORT_KW@686..694 "export" [Newline("\n")] [Whitespace(" ")] 2: JS_CLASS_DECLARATION@694..714 0: JS_DECORATOR_LIST@694..701 0: JS_DECORATOR@694..701 0: AT@694..695 "@" [] [] 1: JS_IDENTIFIER_EXPRESSION@695..701 0: JS_REFERENCE_IDENTIFIER@695..701 0: IDENT@695..701 "after" [] [Whitespace(" ")] 1: (empty) 2: CLASS_KW@701..707 "class" [] [Whitespace(" ")] 3: JS_IDENTIFIER_BINDING@707..711 0: IDENT@707..711 "Foo" [] [Whitespace(" ")] 4: (empty) 5: (empty) 6: (empty) 7: L_CURLY@711..713 "{" [] [Whitespace(" ")] 8: JS_CLASS_MEMBER_LIST@713..713 9: R_CURLY@713..714 "}" [] [] 21: JS_EXPORT@714..818 0: JS_DECORATOR_LIST@714..757 0: JS_DECORATOR@714..729 0: AT@714..716 "@" [Newline("\n")] [] 1: JS_STATIC_MEMBER_EXPRESSION@716..729 0: JS_IDENTIFIER_EXPRESSION@716..722 0: JS_REFERENCE_IDENTIFIER@716..722 0: IDENT@716..722 "before" [] [] 1: DOT@722..723 "." [] [] 2: JS_NAME@723..729 0: IDENT@723..729 "field" [] [Whitespace(" ")] 1: JS_DECORATOR@729..737 0: AT@729..730 "@" [] [] 1: JS_IDENTIFIER_EXPRESSION@730..737 0: JS_REFERENCE_IDENTIFIER@730..737 0: IDENT@730..737 "before" [] [Whitespace(" ")] 2: JS_DECORATOR@737..757 0: AT@737..738 "@" [] [] 1: JS_CALL_EXPRESSION@738..757 0: JS_PARENTHESIZED_EXPRESSION@738..755 0: L_PAREN@738..739 "(" [] [] 1: JS_ARROW_FUNCTION_EXPRESSION@739..754 0: (empty) 1: (empty) 2: JS_PARAMETERS@739..742 0: L_PAREN@739..740 "(" [] [] 1: JS_PARAMETER_LIST@740..740 2: R_PAREN@740..742 ")" [] [Whitespace(" ")] 3: (empty) 4: FAT_ARROW@742..745 "=>" [] [Whitespace(" ")] 5: JS_IDENTIFIER_EXPRESSION@745..754 0: JS_REFERENCE_IDENTIFIER@745..754 0: IDENT@745..754 "decorator" [] [] 2: R_PAREN@754..755 ")" [] [] 1: (empty) 2: (empty) 3: JS_CALL_ARGUMENTS@755..757 0: L_PAREN@755..756 "(" [] [] 1: JS_CALL_ARGUMENT_LIST@756..756 2: R_PAREN@756..757 ")" [] [] 1: EXPORT_KW@757..765 "export" [Newline("\n")] [Whitespace(" ")] 2: JS_CLASS_DECLARATION@765..818 0: JS_DECORATOR_LIST@765..806 0: JS_DECORATOR@765..778 0: AT@765..766 "@" [] [] 1: JS_STATIC_MEMBER_EXPRESSION@766..778 0: JS_IDENTIFIER_EXPRESSION@766..771 0: JS_REFERENCE_IDENTIFIER@766..771 0: IDENT@766..771 "after" [] [] 1: DOT@771..772 "." [] [] 2: JS_NAME@772..778 0: IDENT@772..778 "field" [] [Whitespace(" ")] 1: JS_DECORATOR@778..785 0: AT@778..779 "@" [] [] 1: JS_IDENTIFIER_EXPRESSION@779..785 0: JS_REFERENCE_IDENTIFIER@779..785 0: IDENT@779..785 "after" [] [Whitespace(" ")] 2: JS_DECORATOR@785..806 0: AT@785..786 "@" [] [] 1: JS_CALL_EXPRESSION@786..806 0: JS_PARENTHESIZED_EXPRESSION@786..803 0: L_PAREN@786..787 "(" [] [] 1: JS_ARROW_FUNCTION_EXPRESSION@787..802 0: (empty) 1: (empty) 2: JS_PARAMETERS@787..790 0: L_PAREN@787..788 "(" [] [] 1: JS_PARAMETER_LIST@788..788 2: R_PAREN@788..790 ")" [] [Whitespace(" ")] 3: (empty) 4: FAT_ARROW@790..793 "=>" [] [Whitespace(" ")] 5: JS_IDENTIFIER_EXPRESSION@793..802 0: JS_REFERENCE_IDENTIFIER@793..802 0: IDENT@793..802 "decorator" [] [] 2: R_PAREN@802..803 ")" [] [] 1: (empty) 2: (empty) 3: JS_CALL_ARGUMENTS@803..806 0: L_PAREN@803..804 "(" [] [] 1: JS_CALL_ARGUMENT_LIST@804..804 2: R_PAREN@804..806 ")" [] [Whitespace(" ")] 1: (empty) 2: CLASS_KW@806..812 "class" [] [Whitespace(" ")] 3: JS_IDENTIFIER_BINDING@812..816 0: IDENT@812..816 "Bar" [] [Whitespace(" ")] 4: (empty) 5: (empty) 6: (empty) 7: L_CURLY@816..817 "{" [] [] 8: JS_CLASS_MEMBER_LIST@817..817 9: R_CURLY@817..818 "}" [] [] 4: EOF@818..819 "" [Newline("\n")] []