DefinitionTree { definitions: [ Function( FunctionDefinition { comments: CommentGroup { comments: [], }, attributes: [], function: Keyword { value: "function", position: 0, }, name: Identifier { position: 9, value: "main", }, templates: None, parameters: FunctionLikeParameterListDefinition { comments: CommentGroup { comments: [], }, left_parenthesis: 13, parameters: CommaSeparated { inner: [], commas: [], }, right_parenthesis: 14, }, return_type: FunctionLikeReturnTypeDefinition { colon: 15, type_definition: Void( Keyword { value: "void", position: 17, }, ), }, body: BlockStatement { comments: CommentGroup { comments: [], }, left_brace: 22, statements: [ If( IfStatement { comments: CommentGroup { comments: [], }, if: Keyword { value: "if", position: 28, }, conditions: CommaSeparated { inner: [ Parenthesized( ParenthesizedExpression { comments: CommentGroup { comments: [], }, left_parenthesis: 30, expression: Variable( Variable { position: 31, name: "$foo", }, ), right_parenthesis: 35, }, ), ], commas: [], }, block: BlockStatement { comments: CommentGroup { comments: [], }, left_brace: 37, statements: [ Return( Explicit { comments: CommentGroup { comments: [], }, return: Keyword { value: "return", position: 47, }, expression: Some( Variable( Variable { position: 54, name: "$foo", }, ), ), semicolon: 58, }, ), ], right_brace: 64, }, elseifs: [ IfElseIfStatement { comments: CommentGroup { comments: [], }, elseif: Keyword { value: "elseif", position: 66, }, condition: Parenthesized( ParenthesizedExpression { comments: CommentGroup { comments: [], }, left_parenthesis: 72, expression: Variable( Variable { position: 73, name: "$foo", }, ), right_parenthesis: 77, }, ), block: BlockStatement { comments: CommentGroup { comments: [], }, left_brace: 79, statements: [ Return( Explicit { comments: CommentGroup { comments: [], }, return: Keyword { value: "return", position: 89, }, expression: Some( Variable( Variable { position: 96, name: "$foo", }, ), ), semicolon: 100, }, ), ], right_brace: 106, }, }, ], else: Some( IfElseStatement { comments: CommentGroup { comments: [], }, else: Keyword { value: "else", position: 108, }, block: Block( BlockStatement { comments: CommentGroup { comments: [], }, left_brace: 113, statements: [ Return( Explicit { comments: CommentGroup { comments: [], }, return: Keyword { value: "return", position: 123, }, expression: Some( Variable( Variable { position: 130, name: "$foo", }, ), ), semicolon: 134, }, ), ], right_brace: 140, }, ), }, ), }, ), ], right_brace: 142, }, }, ), ], eof: 144, }