DefinitionTree { definitions: [ Class( ClassDefinition { comments: CommentGroup { comments: [], }, attributes: [], modifiers: ModifierGroupDefinition { position: 0, modifiers: [], }, class: Keyword { value: "class", position: 0, }, name: Identifier { position: 6, value: "s", }, templates: None, extends: None, implements: None, body: ClassDefinitionBody { left_brace: 8, members: [], right_brace: 9, }, }, ), Class( ClassDefinition { comments: CommentGroup { comments: [], }, attributes: [], modifiers: ModifierGroupDefinition { position: 12, modifiers: [], }, class: Keyword { value: "class", position: 12, }, name: Identifier { position: 18, value: "foo", }, templates: None, extends: Some( ClassDefinitionExtends { extends: Keyword { value: "extends", position: 22, }, parent: TemplatedIdentifier { name: Identifier { position: 30, value: "s", }, templates: None, }, }, ), implements: None, body: ClassDefinitionBody { left_brace: 32, members: [ Method( MethodDefinition { comments: CommentGroup { comments: [], }, attributes: [], modifiers: ModifierGroupDefinition { position: 45, modifiers: [ Public( Keyword { value: "public", position: 38, }, ), ], }, function: Keyword { value: "function", position: 45, }, name: Identifier { position: 54, value: "bar", }, templates: None, parameters: MethodParameterListDefinition { comments: CommentGroup { comments: [], }, left_parenthesis: 57, parameters: CommaSeparated { inner: [], commas: [], }, right_parenthesis: 58, }, return_type: Some( FunctionLikeReturnTypeDefinition { colon: 59, type_definition: Identifier( TemplatedIdentifier { name: Identifier { position: 61, value: "parent", }, templates: None, }, ), }, ), constraints: None, body: Concrete( BlockStatement { comments: CommentGroup { comments: [], }, left_brace: 68, statements: [ Return( Explicit { comments: CommentGroup { comments: [], }, return: Keyword { value: "return", position: 78, }, expression: Some( ClassOperation( Initialization { comments: CommentGroup { comments: [], }, new: Keyword { value: "new", position: 85, }, class: Identifier( Identifier { position: 89, value: "s", }, ), generics: None, arguments: ArgumentListExpression { comments: CommentGroup { comments: [], }, left_parenthesis: 90, arguments: CommaSeparated { inner: [], commas: [], }, right_parenthesis: 91, }, }, ), ), semicolon: 92, }, ), ], right_brace: 98, }, ), }, ), ], right_brace: 100, }, }, ), ], eof: 102, }