DefinitionTree { definitions: [ Function( FunctionDefinition { comments: CommentGroup { comments: [], }, attributes: [], function: Keyword { value: "function", position: 0, }, name: Identifier { position: 9, value: "fib", }, templates: None, parameters: FunctionLikeParameterListDefinition { comments: CommentGroup { comments: [], }, left_parenthesis: 12, parameters: CommaSeparated { inner: [ FunctionLikeParameterDefinition { comments: CommentGroup { comments: [], }, attributes: [], type_definition: SignedInteger( Default( Keyword { value: "int", position: 13, }, ), ), ellipsis: None, variable: Variable { position: 17, name: "$n", }, default: None, }, ], commas: [], }, right_parenthesis: 19, }, return_type: FunctionLikeReturnTypeDefinition { colon: 20, type_definition: SignedInteger( Default( Keyword { value: "int", position: 22, }, ), ), }, body: BlockStatement { comments: CommentGroup { comments: [], }, left_brace: 26, statements: [ If( IfStatement { comments: CommentGroup { comments: [], }, if: Keyword { value: "if", position: 32, }, conditions: CommaSeparated { inner: [ Parenthesized( ParenthesizedExpression { comments: CommentGroup { comments: [], }, left_parenthesis: 35, expression: ComparisonOperation( LessThan { comments: CommentGroup { comments: [], }, left: Variable( Variable { position: 36, name: "$n", }, ), less_than: 39, right: Literal( Integer( LiteralInteger { comments: CommentGroup { comments: [], }, value: "2", position: 41, }, ), ), }, ), right_parenthesis: 42, }, ), ], commas: [], }, block: BlockStatement { comments: CommentGroup { comments: [], }, left_brace: 44, statements: [ Return( Explicit { comments: CommentGroup { comments: [], }, return: Keyword { value: "return", position: 54, }, expression: Some( Variable( Variable { position: 61, name: "$n", }, ), ), semicolon: 63, }, ), ], right_brace: 69, }, elseifs: [], else: None, }, ), Return( Explicit { comments: CommentGroup { comments: [], }, return: Keyword { value: "return", position: 76, }, expression: Some( ArithmeticOperation( Addition { comments: CommentGroup { comments: [], }, left: FunctionOperation( Call { comments: CommentGroup { comments: [], }, function: Identifier( Identifier { position: 83, value: "fib", }, ), generics: None, arguments: ArgumentListExpression { comments: CommentGroup { comments: [], }, left_parenthesis: 86, arguments: CommaSeparated { inner: [ Value { comments: CommentGroup { comments: [], }, value: ArithmeticOperation( Subtraction { comments: CommentGroup { comments: [], }, left: Variable( Variable { position: 87, name: "$n", }, ), minus: 90, right: Literal( Integer( LiteralInteger { comments: CommentGroup { comments: [], }, value: "1", position: 92, }, ), ), }, ), }, ], commas: [], }, right_parenthesis: 93, }, }, ), plus: 95, right: FunctionOperation( Call { comments: CommentGroup { comments: [], }, function: Identifier( Identifier { position: 97, value: "fib", }, ), generics: None, arguments: ArgumentListExpression { comments: CommentGroup { comments: [], }, left_parenthesis: 100, arguments: CommaSeparated { inner: [ Value { comments: CommentGroup { comments: [], }, value: ArithmeticOperation( Subtraction { comments: CommentGroup { comments: [], }, left: Variable( Variable { position: 101, name: "$n", }, ), minus: 104, right: Literal( Integer( LiteralInteger { comments: CommentGroup { comments: [], }, value: "2", position: 106, }, ), ), }, ), }, ], commas: [], }, right_parenthesis: 107, }, }, ), }, ), ), semicolon: 108, }, ), ], right_brace: 110, }, }, ), ], eof: 112, }