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: [ FunctionLikeParameterDefinition { comments: CommentGroup { comments: [], }, attributes: [], type_definition: String( Keyword { value: "string", position: 13, }, ), ellipsis: None, variable: Variable { position: 20, name: "$a", }, default: None, }, FunctionLikeParameterDefinition { comments: CommentGroup { comments: [], }, attributes: [], type_definition: String( Keyword { value: "string", position: 24, }, ), ellipsis: None, variable: Variable { position: 31, name: "$b", }, default: None, }, FunctionLikeParameterDefinition { comments: CommentGroup { comments: [], }, attributes: [], type_definition: String( Keyword { value: "string", position: 35, }, ), ellipsis: None, variable: Variable { position: 42, name: "$c", }, default: None, }, FunctionLikeParameterDefinition { comments: CommentGroup { comments: [], }, attributes: [], type_definition: String( Keyword { value: "string", position: 46, }, ), ellipsis: Some( 53, ), variable: Variable { position: 56, name: "$d", }, default: None, }, ], commas: [ 22, 33, 44, ], }, right_parenthesis: 58, }, return_type: FunctionLikeReturnTypeDefinition { colon: 59, type_definition: Void( Keyword { value: "void", position: 61, }, ), }, body: BlockStatement { comments: CommentGroup { comments: [], }, left_brace: 66, statements: [ Expression( ExpressionStatement { comments: CommentGroup { comments: [], }, expression: FunctionOperation( Call { comments: CommentGroup { comments: [], }, function: Identifier( Identifier { position: 72, value: "foo", }, ), generics: None, arguments: ArgumentListExpression { comments: CommentGroup { comments: [], }, left_parenthesis: 75, arguments: CommaSeparated { inner: [ Value { comments: CommentGroup { comments: [], }, value: Variable( Variable { position: 76, name: "$a", }, ), }, Value { comments: CommentGroup { comments: [], }, value: Variable( Variable { position: 80, name: "$b", }, ), }, Value { comments: CommentGroup { comments: [], }, value: Variable( Variable { position: 84, name: "$c", }, ), }, Spread { comments: CommentGroup { comments: [], }, ellipsis: 88, value: Variable( Variable { position: 91, name: "$d", }, ), }, ], commas: [ 78, 82, 86, ], }, right_parenthesis: 93, }, }, ), semicolon: 94, }, ), ], right_brace: 96, }, }, ), ], eof: 98, }