DefinitionTree { definitions: [ Function( FunctionDefinition { comments: CommentGroup { comments: [], }, attributes: [], function: Keyword { value: "function", position: 0, }, name: Identifier { position: 9, value: "foo", }, templates: None, parameters: FunctionLikeParameterListDefinition { comments: CommentGroup { comments: [], }, left_parenthesis: 12, parameters: CommaSeparated { inner: [], commas: [], }, right_parenthesis: 13, }, return_type: FunctionLikeReturnTypeDefinition { colon: 14, type_definition: Void( Keyword { value: "void", position: 16, }, ), }, body: BlockStatement { comments: CommentGroup { comments: [], }, left_brace: 21, statements: [ Expression( ExpressionStatement { comments: CommentGroup { comments: [], }, expression: AssignmentOperation( Assignment { comments: CommentGroup { comments: [], }, left: Variable( Variable { position: 27, name: "$foo", }, ), equals: 32, right: ClassOperation( Initialization { comments: CommentGroup { comments: [], }, new: Keyword { value: "new", position: 34, }, class: Identifier( Identifier { position: 38, value: "Foo", }, ), generics: None, arguments: ArgumentListExpression { comments: CommentGroup { comments: [], }, left_parenthesis: 41, arguments: CommaSeparated { inner: [], commas: [], }, right_parenthesis: 42, }, }, ), }, ), semicolon: 43, }, ), Expression( ExpressionStatement { comments: CommentGroup { comments: [], }, expression: ObjectOperation( MethodCall { comments: CommentGroup { comments: [], }, object: Variable( Variable { position: 49, name: "$foo", }, ), arrow: 53, method: Identifier { position: 55, value: "bar", }, generics: None, arguments: ArgumentListExpression { comments: CommentGroup { comments: [], }, left_parenthesis: 58, arguments: CommaSeparated { inner: [], commas: [], }, right_parenthesis: 59, }, }, ), semicolon: 60, }, ), Expression( ExpressionStatement { comments: CommentGroup { comments: [], }, expression: ObjectOperation( NullsafeMethodCall { comments: CommentGroup { comments: [], }, object: Variable( Variable { position: 66, name: "$foo", }, ), question_arrow: 70, method: Identifier { position: 73, value: "bar", }, generics: None, arguments: ArgumentListExpression { comments: CommentGroup { comments: [], }, left_parenthesis: 76, arguments: CommaSeparated { inner: [], commas: [], }, right_parenthesis: 77, }, }, ), semicolon: 78, }, ), Expression( ExpressionStatement { comments: CommentGroup { comments: [], }, expression: AssignmentOperation( Assignment { comments: CommentGroup { comments: [], }, left: Variable( Variable { position: 84, name: "$bar", }, ), equals: 89, right: ObjectOperation( NullsafePropertyFetch { comments: CommentGroup { comments: [], }, object: Variable( Variable { position: 91, name: "$foo", }, ), question_arrow: 95, property: Identifier { position: 98, value: "bar", }, }, ), }, ), semicolon: 101, }, ), Expression( ExpressionStatement { comments: CommentGroup { comments: [], }, expression: AssignmentOperation( Assignment { comments: CommentGroup { comments: [], }, left: Variable( Variable { position: 107, name: "$baz", }, ), equals: 112, right: ObjectOperation( NullsafePropertyFetch { comments: CommentGroup { comments: [], }, object: ObjectOperation( PropertyFetch { comments: CommentGroup { comments: [], }, object: Variable( Variable { position: 114, name: "$foo", }, ), arrow: 118, property: Identifier { position: 120, value: "bar", }, }, ), question_arrow: 123, property: Identifier { position: 126, value: "baz", }, }, ), }, ), semicolon: 129, }, ), Expression( ExpressionStatement { comments: CommentGroup { comments: [], }, expression: AssignmentOperation( Assignment { comments: CommentGroup { comments: [], }, left: Variable( Variable { position: 135, name: "$a", }, ), equals: 138, right: ObjectOperation( MethodClosureCreation { comments: CommentGroup { comments: [], }, object: Variable( Variable { position: 140, name: "$foo", }, ), arrow: 144, method: Identifier { position: 146, value: "a", }, generics: None, placeholder: ArgumentPlaceholderExpression { comments: CommentGroup { comments: [], }, left_parenthesis: 147, ellipsis: 148, right_parenthesis: 151, }, }, ), }, ), semicolon: 152, }, ), Expression( ExpressionStatement { comments: CommentGroup { comments: [], }, expression: AssignmentOperation( Assignment { comments: CommentGroup { comments: [], }, left: Variable( Variable { position: 158, name: "$b", }, ), equals: 161, right: ClassOperation( StaticMethodClosureCreation { comments: CommentGroup { comments: [], }, class: Variable( Variable { position: 163, name: "$foo", }, ), double_colon: 167, method: Identifier { position: 169, value: "b", }, generics: None, placeholder: ArgumentPlaceholderExpression { comments: CommentGroup { comments: [], }, left_parenthesis: 170, ellipsis: 171, right_parenthesis: 174, }, }, ), }, ), semicolon: 175, }, ), Expression( ExpressionStatement { comments: CommentGroup { comments: [], }, expression: AssignmentOperation( Assignment { comments: CommentGroup { comments: [], }, left: Variable( Variable { position: 181, name: "$c", }, ), equals: 184, right: ClassOperation( StaticMethodCall { comments: CommentGroup { comments: [], }, class: Variable( Variable { position: 186, name: "$foo", }, ), double_colon: 190, method: Identifier { position: 192, value: "c", }, generics: None, arguments: ArgumentListExpression { comments: CommentGroup { comments: [], }, left_parenthesis: 193, arguments: CommaSeparated { inner: [], commas: [], }, right_parenthesis: 194, }, }, ), }, ), semicolon: 195, }, ), Expression( ExpressionStatement { comments: CommentGroup { comments: [], }, expression: AssignmentOperation( Assignment { comments: CommentGroup { comments: [], }, left: Variable( Variable { position: 201, name: "$d", }, ), equals: 204, right: ObjectOperation( PropertyFetch { comments: CommentGroup { comments: [], }, object: Variable( Variable { position: 206, name: "$foo", }, ), arrow: 210, property: Identifier { position: 212, value: "d", }, }, ), }, ), semicolon: 213, }, ), Expression( ExpressionStatement { comments: CommentGroup { comments: [], }, expression: AssignmentOperation( Assignment { comments: CommentGroup { comments: [], }, left: Variable( Variable { position: 219, name: "$e", }, ), equals: 222, right: ClassOperation( StaticPropertyFetch { comments: CommentGroup { comments: [], }, class: Variable( Variable { position: 224, name: "$foo", }, ), double_colon: 228, property: Variable { position: 230, name: "$d", }, }, ), }, ), semicolon: 232, }, ), Expression( ExpressionStatement { comments: CommentGroup { comments: [], }, expression: AssignmentOperation( Assignment { comments: CommentGroup { comments: [], }, left: Variable( Variable { position: 238, name: "$f", }, ), equals: 241, right: ObjectOperation( NullsafeMethodCall { comments: CommentGroup { comments: [], }, object: ObjectOperation( NullsafePropertyFetch { comments: CommentGroup { comments: [], }, object: Variable( Variable { position: 243, name: "$foo", }, ), question_arrow: 247, property: Identifier { position: 250, value: "b", }, }, ), question_arrow: 251, method: Identifier { position: 254, value: "c", }, generics: None, arguments: ArgumentListExpression { comments: CommentGroup { comments: [], }, left_parenthesis: 255, arguments: CommaSeparated { inner: [], commas: [], }, right_parenthesis: 256, }, }, ), }, ), semicolon: 257, }, ), ], right_brace: 259, }, }, ), ], eof: 261, }