DefinitionTree { definitions: [ Class( ClassDefinition { comments: CommentGroup { comments: [], }, attributes: [], modifiers: ModifierGroupDefinition { position: 0, modifiers: [], }, class: Keyword { value: "class", position: 0, }, name: Identifier { position: 6, value: "foo", }, templates: None, extends: None, implements: None, body: ClassDefinitionBody { left_brace: 10, members: [ Method( MethodDefinition { comments: CommentGroup { comments: [], }, attributes: [], modifiers: ModifierGroupDefinition { position: 23, modifiers: [ Public( Keyword { value: "public", position: 16, }, ), ], }, function: Keyword { value: "function", position: 23, }, name: Identifier { position: 32, value: "__construct", }, templates: None, parameters: MethodParameterListDefinition { comments: CommentGroup { comments: [], }, left_parenthesis: 43, parameters: CommaSeparated { inner: [ MethodParameterDefinition { attributes: [], comments: CommentGroup { comments: [], }, modifiers: ModifierGroupDefinition { position: 69, modifiers: [ Readonly( Keyword { value: "readonly", position: 53, }, ), Public( Keyword { value: "public", position: 62, }, ), ], }, type_definition: String( Keyword { value: "string", position: 69, }, ), ellipsis: None, variable: Variable { position: 76, name: "$s", }, default: Some( FunctionLikeParameterDefaultValueDefinition { equals: 79, value: Literal( String( LiteralString { comments: CommentGroup { comments: [], }, value: "'h'", position: 81, }, ), ), }, ), }, ], commas: [ 84, ], }, right_parenthesis: 90, }, return_type: None, constraints: None, body: Concrete( BlockStatement { comments: CommentGroup { comments: [], }, left_brace: 92, statements: [], right_brace: 93, }, ), }, ), ], right_brace: 95, }, }, ), ], eof: 97, }