DefinitionTree { definitions: [ Function( FunctionDefinition { comments: CommentGroup { comments: [], }, attributes: [], function: Keyword { value: "function", position: 2, }, name: Identifier { position: 11, value: "foo", }, templates: None, parameters: FunctionLikeParameterListDefinition { comments: CommentGroup { comments: [], }, left_parenthesis: 14, parameters: CommaSeparated { inner: [], commas: [], }, right_parenthesis: 15, }, return_type: FunctionLikeReturnTypeDefinition { colon: 16, type_definition: Void( Keyword { value: "void", position: 18, }, ), }, body: BlockStatement { comments: CommentGroup { comments: [], }, left_brace: 23, statements: [ DoWhile( DoWhileStatement { comments: CommentGroup { comments: [], }, do: Keyword { value: "do", position: 29, }, block: BlockStatement { comments: CommentGroup { comments: [], }, left_brace: 32, statements: [], right_brace: 34, }, while: Keyword { value: "while", position: 36, }, conditions: CommaSeparated { inner: [ Parenthesized( ParenthesizedExpression { comments: CommentGroup { comments: [], }, left_parenthesis: 42, expression: Variable( Variable { position: 43, name: "$a", }, ), right_parenthesis: 45, }, ), ], commas: [], }, semicolon: 46, }, ), ], right_brace: 48, }, }, ), ], eof: 50, }