JsModule { bom_token: missing (optional), interpreter_token: missing (optional), directives: JsDirectiveList [], items: JsModuleItemList [ JsClassDeclaration { decorators: JsDecoratorList [], abstract_token: missing (optional), class_token: CLASS_KW@0..6 "class" [] [Whitespace(" ")], id: JsIdentifierBinding { name_token: IDENT@6..10 "Foo" [] [Whitespace(" ")], }, type_parameters: missing (optional), extends_clause: missing (optional), implements_clause: missing (optional), l_curly_token: L_CURLY@10..11 "{" [] [], members: JsClassMemberList [ JsConstructorClassMember { modifiers: JsConstructorModifierList [], name: JsLiteralMemberName { value: IDENT@11..25 "constructor" [Newline("\n"), Whitespace(" ")] [], }, parameters: JsConstructorParameters { l_paren_token: L_PAREN@25..26 "(" [] [], parameters: JsConstructorParameterList [ JsFormalParameter { decorators: JsDecoratorList [], binding: JsIdentifierBinding { name_token: IDENT@26..27 "a" [] [], }, question_mark_token: missing (optional), type_annotation: missing (optional), initializer: missing (optional), }, ], r_paren_token: R_PAREN@27..29 ")" [] [Whitespace(" ")], }, body: JsFunctionBody { l_curly_token: L_CURLY@29..30 "{" [] [], directives: JsDirectiveList [], statements: JsStatementList [ JsExpressionStatement { expression: JsAssignmentExpression { left: JsStaticMemberAssignment { object: JsThisExpression { this_token: THIS_KW@30..39 "this" [Newline("\n"), Whitespace(" ")] [], }, dot_token: DOT@39..40 "." [] [], member: JsName { value_token: IDENT@40..42 "a" [] [Whitespace(" ")], }, }, operator_token: EQ@42..44 "=" [] [Whitespace(" ")], right: JsIdentifierExpression { name: JsReferenceIdentifier { value_token: IDENT@44..45 "a" [] [], }, }, }, semicolon_token: SEMICOLON@45..46 ";" [] [], }, ], r_curly_token: R_CURLY@46..50 "}" [Newline("\n"), Whitespace(" ")] [], }, }, ], r_curly_token: R_CURLY@50..52 "}" [Newline("\n")] [], }, JsClassDeclaration { decorators: JsDecoratorList [], abstract_token: missing (optional), class_token: CLASS_KW@52..59 "class" [Newline("\n")] [Whitespace(" ")], id: JsIdentifierBinding { name_token: IDENT@59..63 "Bar" [] [Whitespace(" ")], }, type_parameters: missing (optional), extends_clause: missing (optional), implements_clause: missing (optional), l_curly_token: L_CURLY@63..64 "{" [] [], members: JsClassMemberList [ JsConstructorClassMember { modifiers: JsConstructorModifierList [], name: JsLiteralMemberName { value: JS_STRING_LITERAL@64..80 "\"constructor\"" [Newline("\n"), Whitespace(" ")] [], }, parameters: JsConstructorParameters { l_paren_token: L_PAREN@80..81 "(" [] [], parameters: JsConstructorParameterList [ JsFormalParameter { decorators: JsDecoratorList [], binding: JsIdentifierBinding { name_token: IDENT@81..82 "b" [] [], }, question_mark_token: missing (optional), type_annotation: missing (optional), initializer: missing (optional), }, ], r_paren_token: R_PAREN@82..84 ")" [] [Whitespace(" ")], }, body: JsFunctionBody { l_curly_token: L_CURLY@84..85 "{" [] [], directives: JsDirectiveList [], statements: JsStatementList [ JsExpressionStatement { expression: JsAssignmentExpression { left: JsStaticMemberAssignment { object: JsThisExpression { this_token: THIS_KW@85..94 "this" [Newline("\n"), Whitespace(" ")] [], }, dot_token: DOT@94..95 "." [] [], member: JsName { value_token: IDENT@95..97 "b" [] [Whitespace(" ")], }, }, operator_token: EQ@97..99 "=" [] [Whitespace(" ")], right: JsIdentifierExpression { name: JsReferenceIdentifier { value_token: IDENT@99..100 "b" [] [], }, }, }, semicolon_token: SEMICOLON@100..101 ";" [] [], }, ], r_curly_token: R_CURLY@101..105 "}" [Newline("\n"), Whitespace(" ")] [], }, }, ], r_curly_token: R_CURLY@105..107 "}" [Newline("\n")] [], }, ], eof_token: EOF@107..108 "" [Newline("\n")] [], } 0: JS_MODULE@0..108 0: (empty) 1: (empty) 2: JS_DIRECTIVE_LIST@0..0 3: JS_MODULE_ITEM_LIST@0..107 0: JS_CLASS_DECLARATION@0..52 0: JS_DECORATOR_LIST@0..0 1: (empty) 2: CLASS_KW@0..6 "class" [] [Whitespace(" ")] 3: JS_IDENTIFIER_BINDING@6..10 0: IDENT@6..10 "Foo" [] [Whitespace(" ")] 4: (empty) 5: (empty) 6: (empty) 7: L_CURLY@10..11 "{" [] [] 8: JS_CLASS_MEMBER_LIST@11..50 0: JS_CONSTRUCTOR_CLASS_MEMBER@11..50 0: JS_CONSTRUCTOR_MODIFIER_LIST@11..11 1: JS_LITERAL_MEMBER_NAME@11..25 0: IDENT@11..25 "constructor" [Newline("\n"), Whitespace(" ")] [] 2: JS_CONSTRUCTOR_PARAMETERS@25..29 0: L_PAREN@25..26 "(" [] [] 1: JS_CONSTRUCTOR_PARAMETER_LIST@26..27 0: JS_FORMAL_PARAMETER@26..27 0: JS_DECORATOR_LIST@26..26 1: JS_IDENTIFIER_BINDING@26..27 0: IDENT@26..27 "a" [] [] 2: (empty) 3: (empty) 4: (empty) 2: R_PAREN@27..29 ")" [] [Whitespace(" ")] 3: JS_FUNCTION_BODY@29..50 0: L_CURLY@29..30 "{" [] [] 1: JS_DIRECTIVE_LIST@30..30 2: JS_STATEMENT_LIST@30..46 0: JS_EXPRESSION_STATEMENT@30..46 0: JS_ASSIGNMENT_EXPRESSION@30..45 0: JS_STATIC_MEMBER_ASSIGNMENT@30..42 0: JS_THIS_EXPRESSION@30..39 0: THIS_KW@30..39 "this" [Newline("\n"), Whitespace(" ")] [] 1: DOT@39..40 "." [] [] 2: JS_NAME@40..42 0: IDENT@40..42 "a" [] [Whitespace(" ")] 1: EQ@42..44 "=" [] [Whitespace(" ")] 2: JS_IDENTIFIER_EXPRESSION@44..45 0: JS_REFERENCE_IDENTIFIER@44..45 0: IDENT@44..45 "a" [] [] 1: SEMICOLON@45..46 ";" [] [] 3: R_CURLY@46..50 "}" [Newline("\n"), Whitespace(" ")] [] 9: R_CURLY@50..52 "}" [Newline("\n")] [] 1: JS_CLASS_DECLARATION@52..107 0: JS_DECORATOR_LIST@52..52 1: (empty) 2: CLASS_KW@52..59 "class" [Newline("\n")] [Whitespace(" ")] 3: JS_IDENTIFIER_BINDING@59..63 0: IDENT@59..63 "Bar" [] [Whitespace(" ")] 4: (empty) 5: (empty) 6: (empty) 7: L_CURLY@63..64 "{" [] [] 8: JS_CLASS_MEMBER_LIST@64..105 0: JS_CONSTRUCTOR_CLASS_MEMBER@64..105 0: JS_CONSTRUCTOR_MODIFIER_LIST@64..64 1: JS_LITERAL_MEMBER_NAME@64..80 0: JS_STRING_LITERAL@64..80 "\"constructor\"" [Newline("\n"), Whitespace(" ")] [] 2: JS_CONSTRUCTOR_PARAMETERS@80..84 0: L_PAREN@80..81 "(" [] [] 1: JS_CONSTRUCTOR_PARAMETER_LIST@81..82 0: JS_FORMAL_PARAMETER@81..82 0: JS_DECORATOR_LIST@81..81 1: JS_IDENTIFIER_BINDING@81..82 0: IDENT@81..82 "b" [] [] 2: (empty) 3: (empty) 4: (empty) 2: R_PAREN@82..84 ")" [] [Whitespace(" ")] 3: JS_FUNCTION_BODY@84..105 0: L_CURLY@84..85 "{" [] [] 1: JS_DIRECTIVE_LIST@85..85 2: JS_STATEMENT_LIST@85..101 0: JS_EXPRESSION_STATEMENT@85..101 0: JS_ASSIGNMENT_EXPRESSION@85..100 0: JS_STATIC_MEMBER_ASSIGNMENT@85..97 0: JS_THIS_EXPRESSION@85..94 0: THIS_KW@85..94 "this" [Newline("\n"), Whitespace(" ")] [] 1: DOT@94..95 "." [] [] 2: JS_NAME@95..97 0: IDENT@95..97 "b" [] [Whitespace(" ")] 1: EQ@97..99 "=" [] [Whitespace(" ")] 2: JS_IDENTIFIER_EXPRESSION@99..100 0: JS_REFERENCE_IDENTIFIER@99..100 0: IDENT@99..100 "b" [] [] 1: SEMICOLON@100..101 ";" [] [] 3: R_CURLY@101..105 "}" [Newline("\n"), Whitespace(" ")] [] 9: R_CURLY@105..107 "}" [Newline("\n")] [] 4: EOF@107..108 "" [Newline("\n")] []