DefinitionTree { definitions: [ Function( FunctionDefinition { comments: CommentGroup { comments: [], }, attributes: [], function: Keyword { value: "function", position: 0, }, name: Identifier { position: 9, value: "q", }, templates: None, parameters: FunctionLikeParameterListDefinition { comments: CommentGroup { comments: [], }, left_parenthesis: 10, parameters: CommaSeparated { inner: [], commas: [], }, right_parenthesis: 11, }, return_type: FunctionLikeReturnTypeDefinition { colon: 12, type_definition: Void( Keyword { value: "void", position: 14, }, ), }, body: BlockStatement { comments: CommentGroup { comments: [], }, left_brace: 19, statements: [ Expression( ExpressionStatement { comments: CommentGroup { comments: [], }, expression: FunctionOperation( ClosureCreation { comments: CommentGroup { comments: [], }, function: Identifier( Identifier { position: 25, value: "foo", }, ), generics: None, placeholder: ArgumentPlaceholderExpression { comments: CommentGroup { comments: [], }, left_parenthesis: 28, ellipsis: 29, right_parenthesis: 32, }, }, ), semicolon: 33, }, ), Expression( ExpressionStatement { comments: CommentGroup { comments: [], }, expression: ObjectOperation( MethodClosureCreation { comments: CommentGroup { comments: [], }, object: Variable( Variable { position: 40, name: "$foo", }, ), arrow: 44, method: Identifier { position: 46, value: "bar", }, generics: None, placeholder: ArgumentPlaceholderExpression { comments: CommentGroup { comments: [], }, left_parenthesis: 49, ellipsis: 50, right_parenthesis: 53, }, }, ), semicolon: 54, }, ), Expression( ExpressionStatement { comments: CommentGroup { comments: [], }, expression: ClassOperation( StaticMethodClosureCreation { comments: CommentGroup { comments: [], }, class: Identifier( Identifier { position: 61, value: "Foo", }, ), double_colon: 64, method: Identifier { position: 66, value: "bar", }, generics: None, placeholder: ArgumentPlaceholderExpression { comments: CommentGroup { comments: [], }, left_parenthesis: 69, ellipsis: 70, right_parenthesis: 73, }, }, ), semicolon: 74, }, ), Expression( ExpressionStatement { comments: CommentGroup { comments: [], }, expression: FunctionOperation( Call { comments: CommentGroup { comments: [], }, function: Identifier( Identifier { position: 81, value: "foo", }, ), generics: None, arguments: ArgumentListExpression { comments: CommentGroup { comments: [], }, left_parenthesis: 84, arguments: CommaSeparated { inner: [ Value { comments: CommentGroup { comments: [], }, value: Literal( Integer( LiteralInteger { comments: CommentGroup { comments: [], }, value: "1", position: 85, }, ), ), }, Value { comments: CommentGroup { comments: [], }, value: Literal( Integer( LiteralInteger { comments: CommentGroup { comments: [], }, value: "2", position: 88, }, ), ), }, ], commas: [ 86, ], }, right_parenthesis: 89, }, }, ), semicolon: 90, }, ), Expression( ExpressionStatement { comments: CommentGroup { comments: [], }, expression: ObjectOperation( MethodCall { comments: CommentGroup { comments: [], }, object: Variable( Variable { position: 97, name: "$foo", }, ), arrow: 101, method: Identifier { position: 103, value: "bar", }, generics: None, arguments: ArgumentListExpression { comments: CommentGroup { comments: [], }, left_parenthesis: 106, arguments: CommaSeparated { inner: [ Value { comments: CommentGroup { comments: [], }, value: Literal( Integer( LiteralInteger { comments: CommentGroup { comments: [], }, value: "1", position: 107, }, ), ), }, Value { comments: CommentGroup { comments: [], }, value: Literal( Integer( LiteralInteger { comments: CommentGroup { comments: [], }, value: "2", position: 110, }, ), ), }, ], commas: [ 108, ], }, right_parenthesis: 111, }, }, ), semicolon: 112, }, ), Expression( ExpressionStatement { comments: CommentGroup { comments: [], }, expression: ClassOperation( StaticMethodCall { comments: CommentGroup { comments: [], }, class: Identifier( Identifier { position: 119, value: "Foo", }, ), double_colon: 122, method: Identifier { position: 124, value: "bar", }, generics: None, arguments: ArgumentListExpression { comments: CommentGroup { comments: [], }, left_parenthesis: 127, arguments: CommaSeparated { inner: [ Value { comments: CommentGroup { comments: [], }, value: Literal( Integer( LiteralInteger { comments: CommentGroup { comments: [], }, value: "1", position: 128, }, ), ), }, Value { comments: CommentGroup { comments: [], }, value: Literal( Integer( LiteralInteger { comments: CommentGroup { comments: [], }, value: "2", position: 131, }, ), ), }, ], commas: [ 129, ], }, right_parenthesis: 132, }, }, ), semicolon: 133, }, ), ], right_brace: 135, }, }, ), ], eof: 137, }