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..11 "Test" [] [Whitespace(" ")], }, type_parameters: missing (optional), extends_clause: missing (optional), implements_clause: missing (optional), l_curly_token: L_CURLY@11..12 "{" [] [], members: JsClassMemberList [ JsMethodClassMember { modifiers: JsMethodModifierList [], async_token: missing (optional), star_token: missing (optional), name: JsLiteralMemberName { value: IDENT@12..19 "test" [Newline("\n"), Whitespace(" ")] [], }, question_mark_token: missing (optional), type_parameters: TsTypeParameters { l_angle_token: L_ANGLE@19..20 "<" [] [], items: TsTypeParameterList [ TsTypeParameter { modifiers: TsTypeParameterModifierList [], name: TsTypeParameterName { ident_token: IDENT@20..21 "A" [] [], }, constraint: missing (optional), default: missing (optional), }, COMMA@21..23 "," [] [Whitespace(" ")], TsTypeParameter { modifiers: TsTypeParameterModifierList [], name: TsTypeParameterName { ident_token: IDENT@23..25 "B" [] [Whitespace(" ")], }, constraint: TsTypeConstraintClause { extends_token: EXTENDS_KW@25..33 "extends" [] [Whitespace(" ")], ty: TsReferenceType { name: JsReferenceIdentifier { value_token: IDENT@33..34 "A" [] [], }, type_arguments: missing (optional), }, }, default: missing (optional), }, COMMA@34..36 "," [] [Whitespace(" ")], TsTypeParameter { modifiers: TsTypeParameterModifierList [], name: TsTypeParameterName { ident_token: IDENT@36..37 "R" [] [], }, constraint: missing (optional), default: missing (optional), }, ], r_angle_token: R_ANGLE@37..38 ">" [] [], }, parameters: JsParameters { l_paren_token: L_PAREN@38..39 "(" [] [], items: JsParameterList [ JsFormalParameter { decorators: JsDecoratorList [], binding: JsIdentifierBinding { name_token: IDENT@39..40 "a" [] [], }, question_mark_token: missing (optional), type_annotation: TsTypeAnnotation { colon_token: COLON@40..42 ":" [] [Whitespace(" ")], ty: TsReferenceType { name: JsReferenceIdentifier { value_token: IDENT@42..43 "A" [] [], }, type_arguments: missing (optional), }, }, initializer: missing (optional), }, COMMA@43..45 "," [] [Whitespace(" ")], JsFormalParameter { decorators: JsDecoratorList [], binding: JsIdentifierBinding { name_token: IDENT@45..46 "b" [] [], }, question_mark_token: missing (optional), type_annotation: TsTypeAnnotation { colon_token: COLON@46..48 ":" [] [Whitespace(" ")], ty: TsReferenceType { name: JsReferenceIdentifier { value_token: IDENT@48..49 "B" [] [], }, type_arguments: missing (optional), }, }, initializer: missing (optional), }, ], r_paren_token: R_PAREN@49..50 ")" [] [], }, return_type_annotation: TsReturnTypeAnnotation { colon_token: COLON@50..52 ":" [] [Whitespace(" ")], ty: TsReferenceType { name: JsReferenceIdentifier { value_token: IDENT@52..54 "R" [] [Whitespace(" ")], }, type_arguments: missing (optional), }, }, body: JsFunctionBody { l_curly_token: L_CURLY@54..55 "{" [] [], directives: JsDirectiveList [], statements: JsStatementList [], r_curly_token: R_CURLY@55..56 "}" [] [], }, }, ], r_curly_token: R_CURLY@56..58 "}" [Newline("\n")] [], }, ], eof_token: EOF@58..59 "" [Newline("\n")] [], } 0: JS_MODULE@0..59 0: (empty) 1: (empty) 2: JS_DIRECTIVE_LIST@0..0 3: JS_MODULE_ITEM_LIST@0..58 0: JS_CLASS_DECLARATION@0..58 0: JS_DECORATOR_LIST@0..0 1: (empty) 2: CLASS_KW@0..6 "class" [] [Whitespace(" ")] 3: JS_IDENTIFIER_BINDING@6..11 0: IDENT@6..11 "Test" [] [Whitespace(" ")] 4: (empty) 5: (empty) 6: (empty) 7: L_CURLY@11..12 "{" [] [] 8: JS_CLASS_MEMBER_LIST@12..56 0: JS_METHOD_CLASS_MEMBER@12..56 0: JS_METHOD_MODIFIER_LIST@12..12 1: (empty) 2: (empty) 3: JS_LITERAL_MEMBER_NAME@12..19 0: IDENT@12..19 "test" [Newline("\n"), Whitespace(" ")] [] 4: (empty) 5: TS_TYPE_PARAMETERS@19..38 0: L_ANGLE@19..20 "<" [] [] 1: TS_TYPE_PARAMETER_LIST@20..37 0: TS_TYPE_PARAMETER@20..21 0: TS_TYPE_PARAMETER_MODIFIER_LIST@20..20 1: TS_TYPE_PARAMETER_NAME@20..21 0: IDENT@20..21 "A" [] [] 2: (empty) 3: (empty) 1: COMMA@21..23 "," [] [Whitespace(" ")] 2: TS_TYPE_PARAMETER@23..34 0: TS_TYPE_PARAMETER_MODIFIER_LIST@23..23 1: TS_TYPE_PARAMETER_NAME@23..25 0: IDENT@23..25 "B" [] [Whitespace(" ")] 2: TS_TYPE_CONSTRAINT_CLAUSE@25..34 0: EXTENDS_KW@25..33 "extends" [] [Whitespace(" ")] 1: TS_REFERENCE_TYPE@33..34 0: JS_REFERENCE_IDENTIFIER@33..34 0: IDENT@33..34 "A" [] [] 1: (empty) 3: (empty) 3: COMMA@34..36 "," [] [Whitespace(" ")] 4: TS_TYPE_PARAMETER@36..37 0: TS_TYPE_PARAMETER_MODIFIER_LIST@36..36 1: TS_TYPE_PARAMETER_NAME@36..37 0: IDENT@36..37 "R" [] [] 2: (empty) 3: (empty) 2: R_ANGLE@37..38 ">" [] [] 6: JS_PARAMETERS@38..50 0: L_PAREN@38..39 "(" [] [] 1: JS_PARAMETER_LIST@39..49 0: JS_FORMAL_PARAMETER@39..43 0: JS_DECORATOR_LIST@39..39 1: JS_IDENTIFIER_BINDING@39..40 0: IDENT@39..40 "a" [] [] 2: (empty) 3: TS_TYPE_ANNOTATION@40..43 0: COLON@40..42 ":" [] [Whitespace(" ")] 1: TS_REFERENCE_TYPE@42..43 0: JS_REFERENCE_IDENTIFIER@42..43 0: IDENT@42..43 "A" [] [] 1: (empty) 4: (empty) 1: COMMA@43..45 "," [] [Whitespace(" ")] 2: JS_FORMAL_PARAMETER@45..49 0: JS_DECORATOR_LIST@45..45 1: JS_IDENTIFIER_BINDING@45..46 0: IDENT@45..46 "b" [] [] 2: (empty) 3: TS_TYPE_ANNOTATION@46..49 0: COLON@46..48 ":" [] [Whitespace(" ")] 1: TS_REFERENCE_TYPE@48..49 0: JS_REFERENCE_IDENTIFIER@48..49 0: IDENT@48..49 "B" [] [] 1: (empty) 4: (empty) 2: R_PAREN@49..50 ")" [] [] 7: TS_RETURN_TYPE_ANNOTATION@50..54 0: COLON@50..52 ":" [] [Whitespace(" ")] 1: TS_REFERENCE_TYPE@52..54 0: JS_REFERENCE_IDENTIFIER@52..54 0: IDENT@52..54 "R" [] [Whitespace(" ")] 1: (empty) 8: JS_FUNCTION_BODY@54..56 0: L_CURLY@54..55 "{" [] [] 1: JS_DIRECTIVE_LIST@55..55 2: JS_STATEMENT_LIST@55..55 3: R_CURLY@55..56 "}" [] [] 9: R_CURLY@56..58 "}" [Newline("\n")] [] 4: EOF@58..59 "" [Newline("\n")] []