DefinitionTree { definitions: [ Function( FunctionDefinition { comments: CommentGroup { comments: [], }, attributes: [], function: Keyword { value: "function", position: 1, }, name: Identifier { position: 10, value: "foo", }, templates: None, parameters: FunctionLikeParameterListDefinition { comments: CommentGroup { comments: [], }, left_parenthesis: 13, parameters: CommaSeparated { inner: [], commas: [], }, right_parenthesis: 14, }, return_type: FunctionLikeReturnTypeDefinition { colon: 15, type_definition: Object( Keyword { value: "object", position: 17, }, ), }, body: BlockStatement { comments: CommentGroup { comments: [], }, left_brace: 24, statements: [ Return( Explicit { comments: CommentGroup { comments: [], }, return: Keyword { value: "return", position: 30, }, expression: Some( ClassOperation( AnonymousInitialization { comments: CommentGroup { comments: [], }, new: Keyword { value: "new", position: 37, }, class: AnonymousClassExpression { comments: CommentGroup { comments: [], }, attributes: [], class: Keyword { value: "class", position: 41, }, arguments: ArgumentListExpression { comments: CommentGroup { comments: [], }, left_parenthesis: 46, arguments: CommaSeparated { inner: [], commas: [], }, right_parenthesis: 47, }, extends: None, implements: Some( ClassDefinitionImplements { implements: Keyword { value: "implements", position: 49, }, interfaces: CommaSeparated { inner: [ TemplatedIdentifier { name: Identifier { position: 60, value: "Foo", }, templates: None, }, TemplatedIdentifier { name: Identifier { position: 65, value: "Bar", }, templates: None, }, ], commas: [ 63, ], }, }, ), body: ClassDefinitionBody { left_brace: 69, members: [], right_brace: 70, }, }, }, ), ), semicolon: 71, }, ), ], right_brace: 73, }, }, ), ], eof: 75, }