Program {
    items: [
        GlobalVariable(
            GlobalVariable {
                decl_token: Token {
                    kind: Identifier,
                    location: Location {
                        start: 0,
                        end: 3,
                    },
                },
                identifier: Token {
                    kind: Identifier,
                    location: Location {
                        start: 4,
                        end: 10,
                    },
                },
                colon: Token {
                    kind: Symbol,
                    location: Location {
                        start: 10,
                        end: 11,
                    },
                },
                type_token: TypeHint {
                    type_name: Token {
                        kind: Identifier,
                        location: Location {
                            start: 12,
                            end: 15,
                        },
                    },
                },
                equals_token: Token {
                    kind: Symbol,
                    location: Location {
                        start: 16,
                        end: 17,
                    },
                },
                initializer: Expression {
                    expression: Literal {
                        value: Literal {
                            value: Integer(
                                42,
                            ),
                            location: Location {
                                start: 18,
                                end: 20,
                            },
                        },
                    },
                },
                semicolon: Token {
                    kind: Symbol,
                    location: Location {
                        start: 20,
                        end: 21,
                    },
                },
            },
        ),
        GlobalVariable(
            GlobalVariable {
                decl_token: Token {
                    kind: Identifier,
                    location: Location {
                        start: 22,
                        end: 25,
                    },
                },
                identifier: Token {
                    kind: Identifier,
                    location: Location {
                        start: 26,
                        end: 36,
                    },
                },
                colon: Token {
                    kind: Symbol,
                    location: Location {
                        start: 36,
                        end: 37,
                    },
                },
                type_token: TypeHint {
                    type_name: Token {
                        kind: Identifier,
                        location: Location {
                            start: 38,
                            end: 41,
                        },
                    },
                },
                equals_token: Token {
                    kind: Symbol,
                    location: Location {
                        start: 42,
                        end: 43,
                    },
                },
                initializer: Expression {
                    expression: Literal {
                        value: Literal {
                            value: Integer(
                                100,
                            ),
                            location: Location {
                                start: 44,
                                end: 47,
                            },
                        },
                    },
                },
                semicolon: Token {
                    kind: Symbol,
                    location: Location {
                        start: 47,
                        end: 48,
                    },
                },
            },
        ),
        GlobalVariable(
            GlobalVariable {
                decl_token: Token {
                    kind: Identifier,
                    location: Location {
                        start: 49,
                        end: 52,
                    },
                },
                identifier: Token {
                    kind: Identifier,
                    location: Location {
                        start: 53,
                        end: 70,
                    },
                },
                colon: Token {
                    kind: Symbol,
                    location: Location {
                        start: 70,
                        end: 71,
                    },
                },
                type_token: TypeHint {
                    type_name: Token {
                        kind: Identifier,
                        location: Location {
                            start: 72,
                            end: 78,
                        },
                    },
                },
                equals_token: Token {
                    kind: Symbol,
                    location: Location {
                        start: 79,
                        end: 80,
                    },
                },
                initializer: Expression {
                    expression: Literal {
                        value: Literal {
                            value: Integer(
                                100,
                            ),
                            location: Location {
                                start: 81,
                                end: 84,
                            },
                        },
                    },
                },
                semicolon: Token {
                    kind: Symbol,
                    location: Location {
                        start: 84,
                        end: 85,
                    },
                },
            },
        ),
        GlobalVariable(
            GlobalVariable {
                decl_token: Token {
                    kind: Identifier,
                    location: Location {
                        start: 86,
                        end: 89,
                    },
                },
                identifier: Token {
                    kind: Identifier,
                    location: Location {
                        start: 90,
                        end: 116,
                    },
                },
                colon: Token {
                    kind: Symbol,
                    location: Location {
                        start: 116,
                        end: 117,
                    },
                },
                type_token: TypeHint {
                    type_name: Token {
                        kind: Identifier,
                        location: Location {
                            start: 118,
                            end: 124,
                        },
                    },
                },
                equals_token: Token {
                    kind: Symbol,
                    location: Location {
                        start: 125,
                        end: 126,
                    },
                },
                initializer: Expression {
                    expression: UnaryOperator {
                        name: Token {
                            kind: Symbol,
                            location: Location {
                                start: 127,
                                end: 128,
                            },
                        },
                        operand: Literal {
                            value: Literal {
                                value: Integer(
                                    100,
                                ),
                                location: Location {
                                    start: 128,
                                    end: 131,
                                },
                            },
                        },
                    },
                },
                semicolon: Token {
                    kind: Symbol,
                    location: Location {
                        start: 131,
                        end: 132,
                    },
                },
            },
        ),
        Function(
            Function {
                fn_token: Token {
                    kind: Identifier,
                    location: Location {
                        start: 153,
                        end: 155,
                    },
                },
                name: Token {
                    kind: Identifier,
                    location: Location {
                        start: 156,
                        end: 167,
                    },
                },
                opening_paren: Token {
                    kind: Symbol,
                    location: Location {
                        start: 167,
                        end: 168,
                    },
                },
                arguments: [],
                closing_paren: Token {
                    kind: Symbol,
                    location: Location {
                        start: 168,
                        end: 169,
                    },
                },
                return_decl: None,
                body: Body {
                    opening_brace: Token {
                        kind: Symbol,
                        location: Location {
                            start: 170,
                            end: 171,
                        },
                    },
                    statements: [],
                    closing_brace: Token {
                        kind: Symbol,
                        location: Location {
                            start: 171,
                            end: 172,
                        },
                    },
                },
            },
        ),
        Function(
            Function {
                fn_token: Token {
                    kind: Identifier,
                    location: Location {
                        start: 203,
                        end: 205,
                    },
                },
                name: Token {
                    kind: Identifier,
                    location: Location {
                        start: 206,
                        end: 217,
                    },
                },
                opening_paren: Token {
                    kind: Symbol,
                    location: Location {
                        start: 217,
                        end: 218,
                    },
                },
                arguments: [],
                closing_paren: Token {
                    kind: Symbol,
                    location: Location {
                        start: 218,
                        end: 219,
                    },
                },
                return_decl: Some(
                    ReturnDecl {
                        return_token: Token {
                            kind: Symbol,
                            location: Location {
                                start: 220,
                                end: 222,
                            },
                        },
                        return_type: TypeHint {
                            type_name: Token {
                                kind: Identifier,
                                location: Location {
                                    start: 223,
                                    end: 227,
                                },
                            },
                        },
                    },
                ),
                body: Body {
                    opening_brace: Token {
                        kind: Symbol,
                        location: Location {
                            start: 228,
                            end: 229,
                        },
                    },
                    statements: [],
                    closing_brace: Token {
                        kind: Symbol,
                        location: Location {
                            start: 229,
                            end: 230,
                        },
                    },
                },
            },
        ),
        Function(
            Function {
                fn_token: Token {
                    kind: Identifier,
                    location: Location {
                        start: 258,
                        end: 260,
                    },
                },
                name: Token {
                    kind: Identifier,
                    location: Location {
                        start: 261,
                        end: 272,
                    },
                },
                opening_paren: Token {
                    kind: Symbol,
                    location: Location {
                        start: 272,
                        end: 273,
                    },
                },
                arguments: [
                    FunctionArgument {
                        name: Token {
                            kind: Identifier,
                            location: Location {
                                start: 273,
                                end: 276,
                            },
                        },
                        colon: Token {
                            kind: Symbol,
                            location: Location {
                                start: 276,
                                end: 277,
                            },
                        },
                        reference_token: None,
                        arg_type: TypeHint {
                            type_name: Token {
                                kind: Identifier,
                                location: Location {
                                    start: 278,
                                    end: 282,
                                },
                            },
                        },
                    },
                ],
                closing_paren: Token {
                    kind: Symbol,
                    location: Location {
                        start: 282,
                        end: 283,
                    },
                },
                return_decl: Some(
                    ReturnDecl {
                        return_token: Token {
                            kind: Symbol,
                            location: Location {
                                start: 284,
                                end: 286,
                            },
                        },
                        return_type: TypeHint {
                            type_name: Token {
                                kind: Identifier,
                                location: Location {
                                    start: 287,
                                    end: 291,
                                },
                            },
                        },
                    },
                ),
                body: Body {
                    opening_brace: Token {
                        kind: Symbol,
                        location: Location {
                            start: 292,
                            end: 293,
                        },
                    },
                    statements: [],
                    closing_brace: Token {
                        kind: Symbol,
                        location: Location {
                            start: 293,
                            end: 294,
                        },
                    },
                },
            },
        ),
        Function(
            Function {
                fn_token: Token {
                    kind: Identifier,
                    location: Location {
                        start: 341,
                        end: 343,
                    },
                },
                name: Token {
                    kind: Identifier,
                    location: Location {
                        start: 344,
                        end: 355,
                    },
                },
                opening_paren: Token {
                    kind: Symbol,
                    location: Location {
                        start: 355,
                        end: 356,
                    },
                },
                arguments: [
                    FunctionArgument {
                        name: Token {
                            kind: Identifier,
                            location: Location {
                                start: 356,
                                end: 360,
                            },
                        },
                        colon: Token {
                            kind: Symbol,
                            location: Location {
                                start: 360,
                                end: 361,
                            },
                        },
                        reference_token: None,
                        arg_type: TypeHint {
                            type_name: Token {
                                kind: Identifier,
                                location: Location {
                                    start: 362,
                                    end: 366,
                                },
                            },
                        },
                    },
                ],
                closing_paren: Token {
                    kind: Symbol,
                    location: Location {
                        start: 367,
                        end: 368,
                    },
                },
                return_decl: Some(
                    ReturnDecl {
                        return_token: Token {
                            kind: Symbol,
                            location: Location {
                                start: 369,
                                end: 371,
                            },
                        },
                        return_type: TypeHint {
                            type_name: Token {
                                kind: Identifier,
                                location: Location {
                                    start: 372,
                                    end: 376,
                                },
                            },
                        },
                    },
                ),
                body: Body {
                    opening_brace: Token {
                        kind: Symbol,
                        location: Location {
                            start: 377,
                            end: 378,
                        },
                    },
                    statements: [],
                    closing_brace: Token {
                        kind: Symbol,
                        location: Location {
                            start: 378,
                            end: 379,
                        },
                    },
                },
            },
        ),
        Function(
            Function {
                fn_token: Token {
                    kind: Identifier,
                    location: Location {
                        start: 417,
                        end: 419,
                    },
                },
                name: Token {
                    kind: Identifier,
                    location: Location {
                        start: 420,
                        end: 431,
                    },
                },
                opening_paren: Token {
                    kind: Symbol,
                    location: Location {
                        start: 431,
                        end: 432,
                    },
                },
                arguments: [
                    FunctionArgument {
                        name: Token {
                            kind: Identifier,
                            location: Location {
                                start: 432,
                                end: 436,
                            },
                        },
                        colon: Token {
                            kind: Symbol,
                            location: Location {
                                start: 436,
                                end: 437,
                            },
                        },
                        reference_token: None,
                        arg_type: TypeHint {
                            type_name: Token {
                                kind: Identifier,
                                location: Location {
                                    start: 438,
                                    end: 442,
                                },
                            },
                        },
                    },
                    FunctionArgument {
                        name: Token {
                            kind: Identifier,
                            location: Location {
                                start: 444,
                                end: 448,
                            },
                        },
                        colon: Token {
                            kind: Symbol,
                            location: Location {
                                start: 448,
                                end: 449,
                            },
                        },
                        reference_token: None,
                        arg_type: TypeHint {
                            type_name: Token {
                                kind: Identifier,
                                location: Location {
                                    start: 450,
                                    end: 454,
                                },
                            },
                        },
                    },
                ],
                closing_paren: Token {
                    kind: Symbol,
                    location: Location {
                        start: 454,
                        end: 455,
                    },
                },
                return_decl: Some(
                    ReturnDecl {
                        return_token: Token {
                            kind: Symbol,
                            location: Location {
                                start: 456,
                                end: 458,
                            },
                        },
                        return_type: TypeHint {
                            type_name: Token {
                                kind: Identifier,
                                location: Location {
                                    start: 459,
                                    end: 463,
                                },
                            },
                        },
                    },
                ),
                body: Body {
                    opening_brace: Token {
                        kind: Symbol,
                        location: Location {
                            start: 464,
                            end: 465,
                        },
                    },
                    statements: [],
                    closing_brace: Token {
                        kind: Symbol,
                        location: Location {
                            start: 466,
                            end: 467,
                        },
                    },
                },
            },
        ),
        ExternFunction(
            ExternalFunction {
                extern_fn_token: Token {
                    kind: Identifier,
                    location: Location {
                        start: 565,
                        end: 571,
                    },
                },
                fn_token: Token {
                    kind: Identifier,
                    location: Location {
                        start: 572,
                        end: 574,
                    },
                },
                name: Token {
                    kind: Identifier,
                    location: Location {
                        start: 575,
                        end: 592,
                    },
                },
                opening_paren: Token {
                    kind: Symbol,
                    location: Location {
                        start: 592,
                        end: 593,
                    },
                },
                arguments: [
                    FunctionArgument {
                        name: Token {
                            kind: Identifier,
                            location: Location {
                                start: 593,
                                end: 597,
                            },
                        },
                        colon: Token {
                            kind: Symbol,
                            location: Location {
                                start: 597,
                                end: 598,
                            },
                        },
                        reference_token: None,
                        arg_type: TypeHint {
                            type_name: Token {
                                kind: Identifier,
                                location: Location {
                                    start: 599,
                                    end: 603,
                                },
                            },
                        },
                    },
                    FunctionArgument {
                        name: Token {
                            kind: Identifier,
                            location: Location {
                                start: 605,
                                end: 609,
                            },
                        },
                        colon: Token {
                            kind: Symbol,
                            location: Location {
                                start: 609,
                                end: 610,
                            },
                        },
                        reference_token: None,
                        arg_type: TypeHint {
                            type_name: Token {
                                kind: Identifier,
                                location: Location {
                                    start: 611,
                                    end: 615,
                                },
                            },
                        },
                    },
                ],
                closing_paren: Token {
                    kind: Symbol,
                    location: Location {
                        start: 615,
                        end: 616,
                    },
                },
                return_decl: Some(
                    ReturnDecl {
                        return_token: Token {
                            kind: Symbol,
                            location: Location {
                                start: 617,
                                end: 619,
                            },
                        },
                        return_type: TypeHint {
                            type_name: Token {
                                kind: Identifier,
                                location: Location {
                                    start: 620,
                                    end: 624,
                                },
                            },
                        },
                    },
                ),
                semicolon: Token {
                    kind: Symbol,
                    location: Location {
                        start: 624,
                        end: 625,
                    },
                },
            },
        ),
        Function(
            Function {
                fn_token: Token {
                    kind: Identifier,
                    location: Location {
                        start: 664,
                        end: 666,
                    },
                },
                name: Token {
                    kind: Identifier,
                    location: Location {
                        start: 667,
                        end: 678,
                    },
                },
                opening_paren: Token {
                    kind: Symbol,
                    location: Location {
                        start: 678,
                        end: 679,
                    },
                },
                arguments: [
                    FunctionArgument {
                        name: Token {
                            kind: Identifier,
                            location: Location {
                                start: 706,
                                end: 710,
                            },
                        },
                        colon: Token {
                            kind: Symbol,
                            location: Location {
                                start: 710,
                                end: 711,
                            },
                        },
                        reference_token: Some(
                            Token {
                                kind: Symbol,
                                location: Location {
                                    start: 712,
                                    end: 713,
                                },
                            },
                        ),
                        arg_type: TypeHint {
                            type_name: Token {
                                kind: Identifier,
                                location: Location {
                                    start: 713,
                                    end: 717,
                                },
                            },
                        },
                    },
                    FunctionArgument {
                        name: Token {
                            kind: Identifier,
                            location: Location {
                                start: 746,
                                end: 750,
                            },
                        },
                        colon: Token {
                            kind: Symbol,
                            location: Location {
                                start: 750,
                                end: 751,
                            },
                        },
                        reference_token: Some(
                            Token {
                                kind: Symbol,
                                location: Location {
                                    start: 752,
                                    end: 753,
                                },
                            },
                        ),
                        arg_type: TypeHint {
                            type_name: Token {
                                kind: Identifier,
                                location: Location {
                                    start: 753,
                                    end: 757,
                                },
                            },
                        },
                    },
                ],
                closing_paren: Token {
                    kind: Symbol,
                    location: Location {
                        start: 757,
                        end: 758,
                    },
                },
                return_decl: Some(
                    ReturnDecl {
                        return_token: Token {
                            kind: Symbol,
                            location: Location {
                                start: 759,
                                end: 761,
                            },
                        },
                        return_type: TypeHint {
                            type_name: Token {
                                kind: Identifier,
                                location: Location {
                                    start: 810,
                                    end: 814,
                                },
                            },
                        },
                    },
                ),
                body: Body {
                    opening_brace: Token {
                        kind: Symbol,
                        location: Location {
                            start: 815,
                            end: 816,
                        },
                    },
                    statements: [],
                    closing_brace: Token {
                        kind: Symbol,
                        location: Location {
                            start: 840,
                            end: 841,
                        },
                    },
                },
            },
        ),
        Function(
            Function {
                fn_token: Token {
                    kind: Identifier,
                    location: Location {
                        start: 883,
                        end: 885,
                    },
                },
                name: Token {
                    kind: Identifier,
                    location: Location {
                        start: 886,
                        end: 897,
                    },
                },
                opening_paren: Token {
                    kind: Symbol,
                    location: Location {
                        start: 897,
                        end: 898,
                    },
                },
                arguments: [],
                closing_paren: Token {
                    kind: Symbol,
                    location: Location {
                        start: 898,
                        end: 899,
                    },
                },
                return_decl: Some(
                    ReturnDecl {
                        return_token: Token {
                            kind: Symbol,
                            location: Location {
                                start: 900,
                                end: 902,
                            },
                        },
                        return_type: TypeHint {
                            type_name: Token {
                                kind: Identifier,
                                location: Location {
                                    start: 903,
                                    end: 907,
                                },
                            },
                        },
                    },
                ),
                body: Body {
                    opening_brace: Token {
                        kind: Symbol,
                        location: Location {
                            start: 908,
                            end: 909,
                        },
                    },
                    statements: [
                        EmptyReturn(
                            EmptyReturn {
                                return_token: Token {
                                    kind: Identifier,
                                    location: Location {
                                        start: 914,
                                        end: 920,
                                    },
                                },
                                semicolon: Token {
                                    kind: Symbol,
                                    location: Location {
                                        start: 920,
                                        end: 921,
                                    },
                                },
                            },
                        ),
                    ],
                    closing_brace: Token {
                        kind: Symbol,
                        location: Location {
                            start: 922,
                            end: 923,
                        },
                    },
                },
            },
        ),
        Function(
            Function {
                fn_token: Token {
                    kind: Identifier,
                    location: Location {
                        start: 944,
                        end: 946,
                    },
                },
                name: Token {
                    kind: Identifier,
                    location: Location {
                        start: 947,
                        end: 958,
                    },
                },
                opening_paren: Token {
                    kind: Symbol,
                    location: Location {
                        start: 958,
                        end: 959,
                    },
                },
                arguments: [],
                closing_paren: Token {
                    kind: Symbol,
                    location: Location {
                        start: 959,
                        end: 960,
                    },
                },
                return_decl: Some(
                    ReturnDecl {
                        return_token: Token {
                            kind: Symbol,
                            location: Location {
                                start: 961,
                                end: 963,
                            },
                        },
                        return_type: TypeHint {
                            type_name: Token {
                                kind: Identifier,
                                location: Location {
                                    start: 964,
                                    end: 968,
                                },
                            },
                        },
                    },
                ),
                body: Body {
                    opening_brace: Token {
                        kind: Symbol,
                        location: Location {
                            start: 969,
                            end: 970,
                        },
                    },
                    statements: [
                        If(
                            If {
                                if_token: Token {
                                    kind: Identifier,
                                    location: Location {
                                        start: 975,
                                        end: 977,
                                    },
                                },
                                condition: Variable {
                                    variable: Token {
                                        kind: Identifier,
                                        location: Location {
                                            start: 978,
                                            end: 981,
                                        },
                                    },
                                },
                                body: Body {
                                    opening_brace: Token {
                                        kind: Symbol,
                                        location: Location {
                                            start: 982,
                                            end: 983,
                                        },
                                    },
                                    statements: [
                                        EmptyReturn(
                                            EmptyReturn {
                                                return_token: Token {
                                                    kind: Identifier,
                                                    location: Location {
                                                        start: 992,
                                                        end: 998,
                                                    },
                                                },
                                                semicolon: Token {
                                                    kind: Symbol,
                                                    location: Location {
                                                        start: 998,
                                                        end: 999,
                                                    },
                                                },
                                            },
                                        ),
                                    ],
                                    closing_brace: Token {
                                        kind: Symbol,
                                        location: Location {
                                            start: 1004,
                                            end: 1005,
                                        },
                                    },
                                },
                                else_branch: Some(
                                    Else {
                                        else_token: Token {
                                            kind: Identifier,
                                            location: Location {
                                                start: 1006,
                                                end: 1010,
                                            },
                                        },
                                        else_body: Body {
                                            opening_brace: Token {
                                                kind: Symbol,
                                                location: Location {
                                                    start: 1011,
                                                    end: 1012,
                                                },
                                            },
                                            statements: [
                                                If(
                                                    If {
                                                        if_token: Token {
                                                            kind: Identifier,
                                                            location: Location {
                                                                start: 1021,
                                                                end: 1023,
                                                            },
                                                        },
                                                        condition: Variable {
                                                            variable: Token {
                                                                kind: Identifier,
                                                                location: Location {
                                                                    start: 1024,
                                                                    end: 1036,
                                                                },
                                                            },
                                                        },
                                                        body: Body {
                                                            opening_brace: Token {
                                                                kind: Symbol,
                                                                location: Location {
                                                                    start: 1037,
                                                                    end: 1038,
                                                                },
                                                            },
                                                            statements: [],
                                                            closing_brace: Token {
                                                                kind: Symbol,
                                                                location: Location {
                                                                    start: 1038,
                                                                    end: 1039,
                                                                },
                                                            },
                                                        },
                                                        else_branch: None,
                                                    },
                                                ),
                                                Loop(
                                                    Loop {
                                                        loop_token: Token {
                                                            kind: Identifier,
                                                            location: Location {
                                                                start: 1048,
                                                                end: 1052,
                                                            },
                                                        },
                                                        body: Body {
                                                            opening_brace: Token {
                                                                kind: Symbol,
                                                                location: Location {
                                                                    start: 1053,
                                                                    end: 1054,
                                                                },
                                                            },
                                                            statements: [
                                                                Break(
                                                                    Break {
                                                                        break_token: Token {
                                                                            kind: Identifier,
                                                                            location: Location {
                                                                                start: 1067,
                                                                                end: 1072,
                                                                            },
                                                                        },
                                                                        semicolon: Token {
                                                                            kind: Symbol,
                                                                            location: Location {
                                                                                start: 1072,
                                                                                end: 1073,
                                                                            },
                                                                        },
                                                                    },
                                                                ),
                                                            ],
                                                            closing_brace: Token {
                                                                kind: Symbol,
                                                                location: Location {
                                                                    start: 1082,
                                                                    end: 1083,
                                                                },
                                                            },
                                                        },
                                                    },
                                                ),
                                                Loop(
                                                    Loop {
                                                        loop_token: Token {
                                                            kind: Identifier,
                                                            location: Location {
                                                                start: 1093,
                                                                end: 1098,
                                                            },
                                                        },
                                                        body: Body {
                                                            opening_brace: Token {
                                                                kind: Symbol,
                                                                location: Location {
                                                                    start: 1105,
                                                                    end: 1106,
                                                                },
                                                            },
                                                            statements: [
                                                                If(
                                                                    If {
                                                                        if_token: Token {
                                                                            kind: Identifier,
                                                                            location: Location {
                                                                                start: 1093,
                                                                                end: 1098,
                                                                            },
                                                                        },
                                                                        condition: Literal {
                                                                            value: Literal {
                                                                                value: Boolean(
                                                                                    false,
                                                                                ),
                                                                                location: Location {
                                                                                    start: 1099,
                                                                                    end: 1104,
                                                                                },
                                                                            },
                                                                        },
                                                                        body: Body {
                                                                            opening_brace: Token {
                                                                                kind: Symbol,
                                                                                location: Location {
                                                                                    start: 1105,
                                                                                    end: 1106,
                                                                                },
                                                                            },
                                                                            statements: [
                                                                                Continue(
                                                                                    Continue {
                                                                                        continue_token: Token {
                                                                                            kind: Identifier,
                                                                                            location: Location {
                                                                                                start: 1119,
                                                                                                end: 1127,
                                                                                            },
                                                                                        },
                                                                                        semicolon: Token {
                                                                                            kind: Symbol,
                                                                                            location: Location {
                                                                                                start: 1127,
                                                                                                end: 1128,
                                                                                            },
                                                                                        },
                                                                                    },
                                                                                ),
                                                                            ],
                                                                            closing_brace: Token {
                                                                                kind: Symbol,
                                                                                location: Location {
                                                                                    start: 1137,
                                                                                    end: 1138,
                                                                                },
                                                                            },
                                                                        },
                                                                        else_branch: Some(
                                                                            Else {
                                                                                else_token: Token {
                                                                                    kind: Identifier,
                                                                                    location: Location {
                                                                                        start: 1093,
                                                                                        end: 1098,
                                                                                    },
                                                                                },
                                                                                else_body: Body {
                                                                                    opening_brace: Token {
                                                                                        kind: Symbol,
                                                                                        location: Location {
                                                                                            start: 1105,
                                                                                            end: 1106,
                                                                                        },
                                                                                    },
                                                                                    statements: [
                                                                                        Break(
                                                                                            Break {
                                                                                                break_token: Token {
                                                                                                    kind: Identifier,
                                                                                                    location: Location {
                                                                                                        start: 1093,
                                                                                                        end: 1098,
                                                                                                    },
                                                                                                },
                                                                                                semicolon: Token {
                                                                                                    kind: Identifier,
                                                                                                    location: Location {
                                                                                                        start: 1093,
                                                                                                        end: 1098,
                                                                                                    },
                                                                                                },
                                                                                            },
                                                                                        ),
                                                                                    ],
                                                                                    closing_brace: Token {
                                                                                        kind: Symbol,
                                                                                        location: Location {
                                                                                            start: 1137,
                                                                                            end: 1138,
                                                                                        },
                                                                                    },
                                                                                },
                                                                            },
                                                                        ),
                                                                    },
                                                                ),
                                                            ],
                                                            closing_brace: Token {
                                                                kind: Symbol,
                                                                location: Location {
                                                                    start: 1137,
                                                                    end: 1138,
                                                                },
                                                            },
                                                        },
                                                    },
                                                ),
                                            ],
                                            closing_brace: Token {
                                                kind: Symbol,
                                                location: Location {
                                                    start: 1143,
                                                    end: 1144,
                                                },
                                            },
                                        },
                                    },
                                ),
                            },
                        ),
                    ],
                    closing_brace: Token {
                        kind: Symbol,
                        location: Location {
                            start: 1145,
                            end: 1146,
                        },
                    },
                },
            },
        ),
        Function(
            Function {
                fn_token: Token {
                    kind: Identifier,
                    location: Location {
                        start: 1148,
                        end: 1150,
                    },
                },
                name: Token {
                    kind: Identifier,
                    location: Location {
                        start: 1151,
                        end: 1154,
                    },
                },
                opening_paren: Token {
                    kind: Symbol,
                    location: Location {
                        start: 1154,
                        end: 1155,
                    },
                },
                arguments: [
                    FunctionArgument {
                        name: Token {
                            kind: Identifier,
                            location: Location {
                                start: 1155,
                                end: 1156,
                            },
                        },
                        colon: Token {
                            kind: Symbol,
                            location: Location {
                                start: 1156,
                                end: 1157,
                            },
                        },
                        reference_token: None,
                        arg_type: TypeHint {
                            type_name: Token {
                                kind: Identifier,
                                location: Location {
                                    start: 1158,
                                    end: 1161,
                                },
                            },
                        },
                    },
                    FunctionArgument {
                        name: Token {
                            kind: Identifier,
                            location: Location {
                                start: 1163,
                                end: 1164,
                            },
                        },
                        colon: Token {
                            kind: Symbol,
                            location: Location {
                                start: 1164,
                                end: 1165,
                            },
                        },
                        reference_token: None,
                        arg_type: TypeHint {
                            type_name: Token {
                                kind: Identifier,
                                location: Location {
                                    start: 1166,
                                    end: 1169,
                                },
                            },
                        },
                    },
                ],
                closing_paren: Token {
                    kind: Symbol,
                    location: Location {
                        start: 1169,
                        end: 1170,
                    },
                },
                return_decl: Some(
                    ReturnDecl {
                        return_token: Token {
                            kind: Symbol,
                            location: Location {
                                start: 1171,
                                end: 1173,
                            },
                        },
                        return_type: TypeHint {
                            type_name: Token {
                                kind: Identifier,
                                location: Location {
                                    start: 1174,
                                    end: 1177,
                                },
                            },
                        },
                    },
                ),
                body: Body {
                    opening_brace: Token {
                        kind: Symbol,
                        location: Location {
                            start: 1178,
                            end: 1179,
                        },
                    },
                    statements: [
                        Return(
                            ReturnWithValue {
                                return_token: Token {
                                    kind: Identifier,
                                    location: Location {
                                        start: 1184,
                                        end: 1190,
                                    },
                                },
                                expression: BinaryOperator {
                                    name: Token {
                                        kind: Symbol,
                                        location: Location {
                                            start: 1193,
                                            end: 1194,
                                        },
                                    },
                                    operands: [
                                        Variable {
                                            variable: Token {
                                                kind: Identifier,
                                                location: Location {
                                                    start: 1191,
                                                    end: 1192,
                                                },
                                            },
                                        },
                                        Variable {
                                            variable: Token {
                                                kind: Identifier,
                                                location: Location {
                                                    start: 1195,
                                                    end: 1196,
                                                },
                                            },
                                        },
                                    ],
                                },
                                semicolon: Token {
                                    kind: Symbol,
                                    location: Location {
                                        start: 1196,
                                        end: 1197,
                                    },
                                },
                            },
                        ),
                    ],
                    closing_brace: Token {
                        kind: Symbol,
                        location: Location {
                            start: 1198,
                            end: 1199,
                        },
                    },
                },
            },
        ),
        Function(
            Function {
                fn_token: Token {
                    kind: Identifier,
                    location: Location {
                        start: 1201,
                        end: 1203,
                    },
                },
                name: Token {
                    kind: Identifier,
                    location: Location {
                        start: 1204,
                        end: 1210,
                    },
                },
                opening_paren: Token {
                    kind: Symbol,
                    location: Location {
                        start: 1210,
                        end: 1211,
                    },
                },
                arguments: [
                    FunctionArgument {
                        name: Token {
                            kind: Identifier,
                            location: Location {
                                start: 1211,
                                end: 1212,
                            },
                        },
                        colon: Token {
                            kind: Symbol,
                            location: Location {
                                start: 1212,
                                end: 1213,
                            },
                        },
                        reference_token: None,
                        arg_type: TypeHint {
                            type_name: Token {
                                kind: Identifier,
                                location: Location {
                                    start: 1214,
                                    end: 1217,
                                },
                            },
                        },
                    },
                ],
                closing_paren: Token {
                    kind: Symbol,
                    location: Location {
                        start: 1217,
                        end: 1218,
                    },
                },
                return_decl: Some(
                    ReturnDecl {
                        return_token: Token {
                            kind: Symbol,
                            location: Location {
                                start: 1219,
                                end: 1221,
                            },
                        },
                        return_type: TypeHint {
                            type_name: Token {
                                kind: Identifier,
                                location: Location {
                                    start: 1222,
                                    end: 1225,
                                },
                            },
                        },
                    },
                ),
                body: Body {
                    opening_brace: Token {
                        kind: Symbol,
                        location: Location {
                            start: 1226,
                            end: 1227,
                        },
                    },
                    statements: [
                        VariableDefinition(
                            VariableDefinition {
                                decl_token: Token {
                                    kind: Identifier,
                                    location: Location {
                                        start: 1232,
                                        end: 1235,
                                    },
                                },
                                identifier: Token {
                                    kind: Identifier,
                                    location: Location {
                                        start: 1236,
                                        end: 1242,
                                    },
                                },
                                type_token: None,
                                equals_token: Token {
                                    kind: Symbol,
                                    location: Location {
                                        start: 1243,
                                        end: 1244,
                                    },
                                },
                                initializer: BinaryOperator {
                                    name: Token {
                                        kind: Symbol,
                                        location: Location {
                                            start: 1247,
                                            end: 1248,
                                        },
                                    },
                                    operands: [
                                        Variable {
                                            variable: Token {
                                                kind: Identifier,
                                                location: Location {
                                                    start: 1245,
                                                    end: 1246,
                                                },
                                            },
                                        },
                                        FunctionCall {
                                            name: Token {
                                                kind: Identifier,
                                                location: Location {
                                                    start: 1249,
                                                    end: 1252,
                                                },
                                            },
                                            arguments: [
                                                Literal {
                                                    value: Literal {
                                                        value: Integer(
                                                            1,
                                                        ),
                                                        location: Location {
                                                            start: 1253,
                                                            end: 1254,
                                                        },
                                                    },
                                                },
                                                UnaryOperator {
                                                    name: Token {
                                                        kind: Symbol,
                                                        location: Location {
                                                            start: 1256,
                                                            end: 1257,
                                                        },
                                                    },
                                                    operand: UnaryOperator {
                                                        name: Token {
                                                            kind: Symbol,
                                                            location: Location {
                                                                start: 1257,
                                                                end: 1258,
                                                            },
                                                        },
                                                        operand: Literal {
                                                            value: Literal {
                                                                value: Integer(
                                                                    1,
                                                                ),
                                                                location: Location {
                                                                    start: 1258,
                                                                    end: 1259,
                                                                },
                                                            },
                                                        },
                                                    },
                                                },
                                            ],
                                        },
                                    ],
                                },
                                semicolon: Token {
                                    kind: Symbol,
                                    location: Location {
                                        start: 1260,
                                        end: 1261,
                                    },
                                },
                            },
                        ),
                        Return(
                            ReturnWithValue {
                                return_token: Token {
                                    kind: Identifier,
                                    location: Location {
                                        start: 1266,
                                        end: 1272,
                                    },
                                },
                                expression: Variable {
                                    variable: Token {
                                        kind: Identifier,
                                        location: Location {
                                            start: 1273,
                                            end: 1279,
                                        },
                                    },
                                },
                                semicolon: Token {
                                    kind: Symbol,
                                    location: Location {
                                        start: 1279,
                                        end: 1280,
                                    },
                                },
                            },
                        ),
                    ],
                    closing_brace: Token {
                        kind: Symbol,
                        location: Location {
                            start: 1281,
                            end: 1282,
                        },
                    },
                },
            },
        ),
        Function(
            Function {
                fn_token: Token {
                    kind: Identifier,
                    location: Location {
                        start: 1284,
                        end: 1286,
                    },
                },
                name: Token {
                    kind: Identifier,
                    location: Location {
                        start: 1287,
                        end: 1293,
                    },
                },
                opening_paren: Token {
                    kind: Symbol,
                    location: Location {
                        start: 1293,
                        end: 1294,
                    },
                },
                arguments: [
                    FunctionArgument {
                        name: Token {
                            kind: Identifier,
                            location: Location {
                                start: 1294,
                                end: 1295,
                            },
                        },
                        colon: Token {
                            kind: Symbol,
                            location: Location {
                                start: 1295,
                                end: 1296,
                            },
                        },
                        reference_token: None,
                        arg_type: TypeHint {
                            type_name: Token {
                                kind: Identifier,
                                location: Location {
                                    start: 1297,
                                    end: 1300,
                                },
                            },
                        },
                    },
                ],
                closing_paren: Token {
                    kind: Symbol,
                    location: Location {
                        start: 1300,
                        end: 1301,
                    },
                },
                return_decl: Some(
                    ReturnDecl {
                        return_token: Token {
                            kind: Symbol,
                            location: Location {
                                start: 1302,
                                end: 1304,
                            },
                        },
                        return_type: TypeHint {
                            type_name: Token {
                                kind: Identifier,
                                location: Location {
                                    start: 1305,
                                    end: 1308,
                                },
                            },
                        },
                    },
                ),
                body: Body {
                    opening_brace: Token {
                        kind: Symbol,
                        location: Location {
                            start: 1309,
                            end: 1310,
                        },
                    },
                    statements: [
                        VariableDefinition(
                            VariableDefinition {
                                decl_token: Token {
                                    kind: Identifier,
                                    location: Location {
                                        start: 1315,
                                        end: 1318,
                                    },
                                },
                                identifier: Token {
                                    kind: Identifier,
                                    location: Location {
                                        start: 1319,
                                        end: 1325,
                                    },
                                },
                                type_token: None,
                                equals_token: Token {
                                    kind: Symbol,
                                    location: Location {
                                        start: 1326,
                                        end: 1327,
                                    },
                                },
                                initializer: BinaryOperator {
                                    name: Token {
                                        kind: Symbol,
                                        location: Location {
                                            start: 1330,
                                            end: 1331,
                                        },
                                    },
                                    operands: [
                                        Variable {
                                            variable: Token {
                                                kind: Identifier,
                                                location: Location {
                                                    start: 1328,
                                                    end: 1329,
                                                },
                                            },
                                        },
                                        FunctionCall {
                                            name: Token {
                                                kind: Identifier,
                                                location: Location {
                                                    start: 1332,
                                                    end: 1338,
                                                },
                                            },
                                            arguments: [
                                                Variable {
                                                    variable: Token {
                                                        kind: Identifier,
                                                        location: Location {
                                                            start: 1339,
                                                            end: 1340,
                                                        },
                                                    },
                                                },
                                            ],
                                        },
                                    ],
                                },
                                semicolon: Token {
                                    kind: Symbol,
                                    location: Location {
                                        start: 1341,
                                        end: 1342,
                                    },
                                },
                            },
                        ),
                        Return(
                            ReturnWithValue {
                                return_token: Token {
                                    kind: Identifier,
                                    location: Location {
                                        start: 1347,
                                        end: 1353,
                                    },
                                },
                                expression: Variable {
                                    variable: Token {
                                        kind: Identifier,
                                        location: Location {
                                            start: 1354,
                                            end: 1360,
                                        },
                                    },
                                },
                                semicolon: Token {
                                    kind: Symbol,
                                    location: Location {
                                        start: 1360,
                                        end: 1361,
                                    },
                                },
                            },
                        ),
                    ],
                    closing_brace: Token {
                        kind: Symbol,
                        location: Location {
                            start: 1362,
                            end: 1363,
                        },
                    },
                },
            },
        ),
        Function(
            Function {
                fn_token: Token {
                    kind: Identifier,
                    location: Location {
                        start: 1365,
                        end: 1367,
                    },
                },
                name: Token {
                    kind: Identifier,
                    location: Location {
                        start: 1368,
                        end: 1384,
                    },
                },
                opening_paren: Token {
                    kind: Symbol,
                    location: Location {
                        start: 1384,
                        end: 1385,
                    },
                },
                arguments: [
                    FunctionArgument {
                        name: Token {
                            kind: Identifier,
                            location: Location {
                                start: 1385,
                                end: 1386,
                            },
                        },
                        colon: Token {
                            kind: Symbol,
                            location: Location {
                                start: 1386,
                                end: 1387,
                            },
                        },
                        reference_token: None,
                        arg_type: TypeHint {
                            type_name: Token {
                                kind: Identifier,
                                location: Location {
                                    start: 1388,
                                    end: 1391,
                                },
                            },
                        },
                    },
                ],
                closing_paren: Token {
                    kind: Symbol,
                    location: Location {
                        start: 1391,
                        end: 1392,
                    },
                },
                return_decl: Some(
                    ReturnDecl {
                        return_token: Token {
                            kind: Symbol,
                            location: Location {
                                start: 1393,
                                end: 1395,
                            },
                        },
                        return_type: TypeHint {
                            type_name: Token {
                                kind: Identifier,
                                location: Location {
                                    start: 1396,
                                    end: 1399,
                                },
                            },
                        },
                    },
                ),
                body: Body {
                    opening_brace: Token {
                        kind: Symbol,
                        location: Location {
                            start: 1400,
                            end: 1401,
                        },
                    },
                    statements: [
                        VariableDefinition(
                            VariableDefinition {
                                decl_token: Token {
                                    kind: Identifier,
                                    location: Location {
                                        start: 1406,
                                        end: 1409,
                                    },
                                },
                                identifier: Token {
                                    kind: Identifier,
                                    location: Location {
                                        start: 1410,
                                        end: 1416,
                                    },
                                },
                                type_token: Some(
                                    TypeHint {
                                        type_name: Token {
                                            kind: Identifier,
                                            location: Location {
                                                start: 1418,
                                                end: 1421,
                                            },
                                        },
                                    },
                                ),
                                equals_token: Token {
                                    kind: Symbol,
                                    location: Location {
                                        start: 1422,
                                        end: 1423,
                                    },
                                },
                                initializer: BinaryOperator {
                                    name: Token {
                                        kind: Symbol,
                                        location: Location {
                                            start: 1426,
                                            end: 1427,
                                        },
                                    },
                                    operands: [
                                        Variable {
                                            variable: Token {
                                                kind: Identifier,
                                                location: Location {
                                                    start: 1424,
                                                    end: 1425,
                                                },
                                            },
                                        },
                                        FunctionCall {
                                            name: Token {
                                                kind: Identifier,
                                                location: Location {
                                                    start: 1428,
                                                    end: 1434,
                                                },
                                            },
                                            arguments: [
                                                Variable {
                                                    variable: Token {
                                                        kind: Identifier,
                                                        location: Location {
                                                            start: 1435,
                                                            end: 1436,
                                                        },
                                                    },
                                                },
                                            ],
                                        },
                                    ],
                                },
                                semicolon: Token {
                                    kind: Symbol,
                                    location: Location {
                                        start: 1437,
                                        end: 1438,
                                    },
                                },
                            },
                        ),
                        Return(
                            ReturnWithValue {
                                return_token: Token {
                                    kind: Identifier,
                                    location: Location {
                                        start: 1443,
                                        end: 1449,
                                    },
                                },
                                expression: Variable {
                                    variable: Token {
                                        kind: Identifier,
                                        location: Location {
                                            start: 1450,
                                            end: 1456,
                                        },
                                    },
                                },
                                semicolon: Token {
                                    kind: Symbol,
                                    location: Location {
                                        start: 1456,
                                        end: 1457,
                                    },
                                },
                            },
                        ),
                    ],
                    closing_brace: Token {
                        kind: Symbol,
                        location: Location {
                            start: 1458,
                            end: 1459,
                        },
                    },
                },
            },
        ),
        Function(
            Function {
                fn_token: Token {
                    kind: Identifier,
                    location: Location {
                        start: 1461,
                        end: 1463,
                    },
                },
                name: Token {
                    kind: Identifier,
                    location: Location {
                        start: 1464,
                        end: 1473,
                    },
                },
                opening_paren: Token {
                    kind: Symbol,
                    location: Location {
                        start: 1473,
                        end: 1474,
                    },
                },
                arguments: [
                    FunctionArgument {
                        name: Token {
                            kind: Identifier,
                            location: Location {
                                start: 1474,
                                end: 1475,
                            },
                        },
                        colon: Token {
                            kind: Symbol,
                            location: Location {
                                start: 1475,
                                end: 1476,
                            },
                        },
                        reference_token: None,
                        arg_type: TypeHint {
                            type_name: Token {
                                kind: Identifier,
                                location: Location {
                                    start: 1477,
                                    end: 1480,
                                },
                            },
                        },
                    },
                ],
                closing_paren: Token {
                    kind: Symbol,
                    location: Location {
                        start: 1480,
                        end: 1481,
                    },
                },
                return_decl: Some(
                    ReturnDecl {
                        return_token: Token {
                            kind: Symbol,
                            location: Location {
                                start: 1482,
                                end: 1484,
                            },
                        },
                        return_type: TypeHint {
                            type_name: Token {
                                kind: Identifier,
                                location: Location {
                                    start: 1485,
                                    end: 1488,
                                },
                            },
                        },
                    },
                ),
                body: Body {
                    opening_brace: Token {
                        kind: Symbol,
                        location: Location {
                            start: 1489,
                            end: 1490,
                        },
                    },
                    statements: [
                        Return(
                            ReturnWithValue {
                                return_token: Token {
                                    kind: Identifier,
                                    location: Location {
                                        start: 1495,
                                        end: 1501,
                                    },
                                },
                                expression: FunctionCall {
                                    name: Token {
                                        kind: Identifier,
                                        location: Location {
                                            start: 1502,
                                            end: 1508,
                                        },
                                    },
                                    arguments: [
                                        BinaryOperator {
                                            name: Token {
                                                kind: Symbol,
                                                location: Location {
                                                    start: 1515,
                                                    end: 1516,
                                                },
                                            },
                                            operands: [
                                                FunctionCall {
                                                    name: Token {
                                                        kind: Identifier,
                                                        location: Location {
                                                            start: 1509,
                                                            end: 1512,
                                                        },
                                                    },
                                                    arguments: [],
                                                },
                                                Variable {
                                                    variable: Token {
                                                        kind: Identifier,
                                                        location: Location {
                                                            start: 1517,
                                                            end: 1518,
                                                        },
                                                    },
                                                },
                                            ],
                                        },
                                    ],
                                },
                                semicolon: Token {
                                    kind: Symbol,
                                    location: Location {
                                        start: 1519,
                                        end: 1520,
                                    },
                                },
                            },
                        ),
                    ],
                    closing_brace: Token {
                        kind: Symbol,
                        location: Location {
                            start: 1521,
                            end: 1522,
                        },
                    },
                },
            },
        ),
        Function(
            Function {
                fn_token: Token {
                    kind: Identifier,
                    location: Location {
                        start: 1524,
                        end: 1526,
                    },
                },
                name: Token {
                    kind: Identifier,
                    location: Location {
                        start: 1527,
                        end: 1532,
                    },
                },
                opening_paren: Token {
                    kind: Symbol,
                    location: Location {
                        start: 1532,
                        end: 1533,
                    },
                },
                arguments: [
                    FunctionArgument {
                        name: Token {
                            kind: Identifier,
                            location: Location {
                                start: 1533,
                                end: 1534,
                            },
                        },
                        colon: Token {
                            kind: Symbol,
                            location: Location {
                                start: 1534,
                                end: 1535,
                            },
                        },
                        reference_token: None,
                        arg_type: TypeHint {
                            type_name: Token {
                                kind: Identifier,
                                location: Location {
                                    start: 1536,
                                    end: 1540,
                                },
                            },
                        },
                    },
                ],
                closing_paren: Token {
                    kind: Symbol,
                    location: Location {
                        start: 1540,
                        end: 1541,
                    },
                },
                return_decl: Some(
                    ReturnDecl {
                        return_token: Token {
                            kind: Symbol,
                            location: Location {
                                start: 1542,
                                end: 1544,
                            },
                        },
                        return_type: TypeHint {
                            type_name: Token {
                                kind: Identifier,
                                location: Location {
                                    start: 1545,
                                    end: 1549,
                                },
                            },
                        },
                    },
                ),
                body: Body {
                    opening_brace: Token {
                        kind: Symbol,
                        location: Location {
                            start: 1550,
                            end: 1551,
                        },
                    },
                    statements: [
                        Return(
                            ReturnWithValue {
                                return_token: Token {
                                    kind: Identifier,
                                    location: Location {
                                        start: 1556,
                                        end: 1562,
                                    },
                                },
                                expression: UnaryOperator {
                                    name: Token {
                                        kind: Symbol,
                                        location: Location {
                                            start: 1563,
                                            end: 1564,
                                        },
                                    },
                                    operand: Variable {
                                        variable: Token {
                                            kind: Identifier,
                                            location: Location {
                                                start: 1564,
                                                end: 1565,
                                            },
                                        },
                                    },
                                },
                                semicolon: Token {
                                    kind: Symbol,
                                    location: Location {
                                        start: 1565,
                                        end: 1566,
                                    },
                                },
                            },
                        ),
                    ],
                    closing_brace: Token {
                        kind: Symbol,
                        location: Location {
                            start: 1567,
                            end: 1568,
                        },
                    },
                },
            },
        ),
        Function(
            Function {
                fn_token: Token {
                    kind: Identifier,
                    location: Location {
                        start: 1570,
                        end: 1572,
                    },
                },
                name: Token {
                    kind: Identifier,
                    location: Location {
                        start: 1573,
                        end: 1579,
                    },
                },
                opening_paren: Token {
                    kind: Symbol,
                    location: Location {
                        start: 1579,
                        end: 1580,
                    },
                },
                arguments: [
                    FunctionArgument {
                        name: Token {
                            kind: Identifier,
                            location: Location {
                                start: 1580,
                                end: 1581,
                            },
                        },
                        colon: Token {
                            kind: Symbol,
                            location: Location {
                                start: 1581,
                                end: 1582,
                            },
                        },
                        reference_token: None,
                        arg_type: TypeHint {
                            type_name: Token {
                                kind: Identifier,
                                location: Location {
                                    start: 1583,
                                    end: 1586,
                                },
                            },
                        },
                    },
                ],
                closing_paren: Token {
                    kind: Symbol,
                    location: Location {
                        start: 1586,
                        end: 1587,
                    },
                },
                return_decl: Some(
                    ReturnDecl {
                        return_token: Token {
                            kind: Symbol,
                            location: Location {
                                start: 1588,
                                end: 1590,
                            },
                        },
                        return_type: TypeHint {
                            type_name: Token {
                                kind: Identifier,
                                location: Location {
                                    start: 1591,
                                    end: 1594,
                                },
                            },
                        },
                    },
                ),
                body: Body {
                    opening_brace: Token {
                        kind: Symbol,
                        location: Location {
                            start: 1595,
                            end: 1596,
                        },
                    },
                    statements: [
                        VariableDefinition(
                            VariableDefinition {
                                decl_token: Token {
                                    kind: Identifier,
                                    location: Location {
                                        start: 1601,
                                        end: 1604,
                                    },
                                },
                                identifier: Token {
                                    kind: Identifier,
                                    location: Location {
                                        start: 1605,
                                        end: 1608,
                                    },
                                },
                                type_token: None,
                                equals_token: Token {
                                    kind: Symbol,
                                    location: Location {
                                        start: 1609,
                                        end: 1610,
                                    },
                                },
                                initializer: Literal {
                                    value: Literal {
                                        value: String(
                                            "bar",
                                        ),
                                        location: Location {
                                            start: 1611,
                                            end: 1616,
                                        },
                                    },
                                },
                                semicolon: Token {
                                    kind: Symbol,
                                    location: Location {
                                        start: 1616,
                                        end: 1617,
                                    },
                                },
                            },
                        ),
                        VariableDefinition(
                            VariableDefinition {
                                decl_token: Token {
                                    kind: Identifier,
                                    location: Location {
                                        start: 1622,
                                        end: 1625,
                                    },
                                },
                                identifier: Token {
                                    kind: Identifier,
                                    location: Location {
                                        start: 1626,
                                        end: 1627,
                                    },
                                },
                                type_token: None,
                                equals_token: Token {
                                    kind: Symbol,
                                    location: Location {
                                        start: 1628,
                                        end: 1629,
                                    },
                                },
                                initializer: Literal {
                                    value: Literal {
                                        value: Integer(
                                            2,
                                        ),
                                        location: Location {
                                            start: 1630,
                                            end: 1631,
                                        },
                                    },
                                },
                                semicolon: Token {
                                    kind: Symbol,
                                    location: Location {
                                        start: 1631,
                                        end: 1632,
                                    },
                                },
                            },
                        ),
                        Return(
                            ReturnWithValue {
                                return_token: Token {
                                    kind: Identifier,
                                    location: Location {
                                        start: 1637,
                                        end: 1643,
                                    },
                                },
                                expression: FunctionCall {
                                    name: Token {
                                        kind: Identifier,
                                        location: Location {
                                            start: 1644,
                                            end: 1650,
                                        },
                                    },
                                    arguments: [
                                        BinaryOperator {
                                            name: Token {
                                                kind: Symbol,
                                                location: Location {
                                                    start: 1657,
                                                    end: 1658,
                                                },
                                            },
                                            operands: [
                                                FunctionCall {
                                                    name: Token {
                                                        kind: Identifier,
                                                        location: Location {
                                                            start: 1651,
                                                            end: 1654,
                                                        },
                                                    },
                                                    arguments: [],
                                                },
                                                UnaryOperator {
                                                    name: Token {
                                                        kind: Symbol,
                                                        location: Location {
                                                            start: 1659,
                                                            end: 1660,
                                                        },
                                                    },
                                                    operand: UnaryOperator {
                                                        name: Token {
                                                            kind: Symbol,
                                                            location: Location {
                                                                start: 1660,
                                                                end: 1661,
                                                            },
                                                        },
                                                        operand: Variable {
                                                            variable: Token {
                                                                kind: Identifier,
                                                                location: Location {
                                                                    start: 1661,
                                                                    end: 1662,
                                                                },
                                                            },
                                                        },
                                                    },
                                                },
                                            ],
                                        },
                                    ],
                                },
                                semicolon: Token {
                                    kind: Symbol,
                                    location: Location {
                                        start: 1663,
                                        end: 1664,
                                    },
                                },
                            },
                        ),
                    ],
                    closing_brace: Token {
                        kind: Symbol,
                        location: Location {
                            start: 1665,
                            end: 1666,
                        },
                    },
                },
            },
        ),
        Function(
            Function {
                fn_token: Token {
                    kind: Identifier,
                    location: Location {
                        start: 1668,
                        end: 1670,
                    },
                },
                name: Token {
                    kind: Identifier,
                    location: Location {
                        start: 1671,
                        end: 1688,
                    },
                },
                opening_paren: Token {
                    kind: Symbol,
                    location: Location {
                        start: 1688,
                        end: 1689,
                    },
                },
                arguments: [
                    FunctionArgument {
                        name: Token {
                            kind: Identifier,
                            location: Location {
                                start: 1689,
                                end: 1690,
                            },
                        },
                        colon: Token {
                            kind: Symbol,
                            location: Location {
                                start: 1690,
                                end: 1691,
                            },
                        },
                        reference_token: Some(
                            Token {
                                kind: Symbol,
                                location: Location {
                                    start: 1692,
                                    end: 1693,
                                },
                            },
                        ),
                        arg_type: TypeHint {
                            type_name: Token {
                                kind: Identifier,
                                location: Location {
                                    start: 1693,
                                    end: 1696,
                                },
                            },
                        },
                    },
                ],
                closing_paren: Token {
                    kind: Symbol,
                    location: Location {
                        start: 1696,
                        end: 1697,
                    },
                },
                return_decl: Some(
                    ReturnDecl {
                        return_token: Token {
                            kind: Symbol,
                            location: Location {
                                start: 1698,
                                end: 1700,
                            },
                        },
                        return_type: TypeHint {
                            type_name: Token {
                                kind: Identifier,
                                location: Location {
                                    start: 1701,
                                    end: 1704,
                                },
                            },
                        },
                    },
                ),
                body: Body {
                    opening_brace: Token {
                        kind: Symbol,
                        location: Location {
                            start: 1705,
                            end: 1706,
                        },
                    },
                    statements: [
                        Return(
                            ReturnWithValue {
                                return_token: Token {
                                    kind: Identifier,
                                    location: Location {
                                        start: 1711,
                                        end: 1717,
                                    },
                                },
                                expression: UnaryOperator {
                                    name: Token {
                                        kind: Symbol,
                                        location: Location {
                                            start: 1718,
                                            end: 1719,
                                        },
                                    },
                                    operand: UnaryOperator {
                                        name: Token {
                                            kind: Symbol,
                                            location: Location {
                                                start: 1719,
                                                end: 1720,
                                            },
                                        },
                                        operand: Variable {
                                            variable: Token {
                                                kind: Identifier,
                                                location: Location {
                                                    start: 1720,
                                                    end: 1721,
                                                },
                                            },
                                        },
                                    },
                                },
                                semicolon: Token {
                                    kind: Symbol,
                                    location: Location {
                                        start: 1721,
                                        end: 1722,
                                    },
                                },
                            },
                        ),
                    ],
                    closing_brace: Token {
                        kind: Symbol,
                        location: Location {
                            start: 1723,
                            end: 1724,
                        },
                    },
                },
            },
        ),
        Function(
            Function {
                fn_token: Token {
                    kind: Identifier,
                    location: Location {
                        start: 1726,
                        end: 1728,
                    },
                },
                name: Token {
                    kind: Identifier,
                    location: Location {
                        start: 1729,
                        end: 1746,
                    },
                },
                opening_paren: Token {
                    kind: Symbol,
                    location: Location {
                        start: 1746,
                        end: 1747,
                    },
                },
                arguments: [
                    FunctionArgument {
                        name: Token {
                            kind: Identifier,
                            location: Location {
                                start: 1747,
                                end: 1748,
                            },
                        },
                        colon: Token {
                            kind: Symbol,
                            location: Location {
                                start: 1748,
                                end: 1749,
                            },
                        },
                        reference_token: None,
                        arg_type: TypeHint {
                            type_name: Token {
                                kind: Identifier,
                                location: Location {
                                    start: 1750,
                                    end: 1753,
                                },
                            },
                        },
                    },
                ],
                closing_paren: Token {
                    kind: Symbol,
                    location: Location {
                        start: 1753,
                        end: 1754,
                    },
                },
                return_decl: Some(
                    ReturnDecl {
                        return_token: Token {
                            kind: Symbol,
                            location: Location {
                                start: 1755,
                                end: 1757,
                            },
                        },
                        return_type: TypeHint {
                            type_name: Token {
                                kind: Identifier,
                                location: Location {
                                    start: 1758,
                                    end: 1761,
                                },
                            },
                        },
                    },
                ),
                body: Body {
                    opening_brace: Token {
                        kind: Symbol,
                        location: Location {
                            start: 1762,
                            end: 1763,
                        },
                    },
                    statements: [
                        Return(
                            ReturnWithValue {
                                return_token: Token {
                                    kind: Identifier,
                                    location: Location {
                                        start: 1768,
                                        end: 1774,
                                    },
                                },
                                expression: FunctionCall {
                                    name: Token {
                                        kind: Identifier,
                                        location: Location {
                                            start: 1775,
                                            end: 1792,
                                        },
                                    },
                                    arguments: [
                                        UnaryOperator {
                                            name: Token {
                                                kind: Symbol,
                                                location: Location {
                                                    start: 1793,
                                                    end: 1794,
                                                },
                                            },
                                            operand: Variable {
                                                variable: Token {
                                                    kind: Identifier,
                                                    location: Location {
                                                        start: 1794,
                                                        end: 1795,
                                                    },
                                                },
                                            },
                                        },
                                    ],
                                },
                                semicolon: Token {
                                    kind: Symbol,
                                    location: Location {
                                        start: 1796,
                                        end: 1797,
                                    },
                                },
                            },
                        ),
                    ],
                    closing_brace: Token {
                        kind: Symbol,
                        location: Location {
                            start: 1798,
                            end: 1799,
                        },
                    },
                },
            },
        ),
        Function(
            Function {
                fn_token: Token {
                    kind: Identifier,
                    location: Location {
                        start: 1801,
                        end: 1803,
                    },
                },
                name: Token {
                    kind: Identifier,
                    location: Location {
                        start: 1804,
                        end: 1814,
                    },
                },
                opening_paren: Token {
                    kind: Symbol,
                    location: Location {
                        start: 1814,
                        end: 1815,
                    },
                },
                arguments: [],
                closing_paren: Token {
                    kind: Symbol,
                    location: Location {
                        start: 1815,
                        end: 1816,
                    },
                },
                return_decl: None,
                body: Body {
                    opening_brace: Token {
                        kind: Symbol,
                        location: Location {
                            start: 1817,
                            end: 1818,
                        },
                    },
                    statements: [
                        VariableDefinition(
                            VariableDefinition {
                                decl_token: Token {
                                    kind: Identifier,
                                    location: Location {
                                        start: 1823,
                                        end: 1826,
                                    },
                                },
                                identifier: Token {
                                    kind: Identifier,
                                    location: Location {
                                        start: 1827,
                                        end: 1828,
                                    },
                                },
                                type_token: None,
                                equals_token: Token {
                                    kind: Symbol,
                                    location: Location {
                                        start: 1829,
                                        end: 1830,
                                    },
                                },
                                initializer: Literal {
                                    value: Literal {
                                        value: Integer(
                                            0,
                                        ),
                                        location: Location {
                                            start: 1831,
                                            end: 1832,
                                        },
                                    },
                                },
                                semicolon: Token {
                                    kind: Symbol,
                                    location: Location {
                                        start: 1832,
                                        end: 1833,
                                    },
                                },
                            },
                        ),
                        Scope(
                            Body {
                                opening_brace: Token {
                                    kind: Symbol,
                                    location: Location {
                                        start: 1838,
                                        end: 1839,
                                    },
                                },
                                statements: [
                                    VariableDefinition(
                                        VariableDefinition {
                                            decl_token: Token {
                                                kind: Identifier,
                                                location: Location {
                                                    start: 1848,
                                                    end: 1851,
                                                },
                                            },
                                            identifier: Token {
                                                kind: Identifier,
                                                location: Location {
                                                    start: 1852,
                                                    end: 1853,
                                                },
                                            },
                                            type_token: None,
                                            equals_token: Token {
                                                kind: Symbol,
                                                location: Location {
                                                    start: 1854,
                                                    end: 1855,
                                                },
                                            },
                                            initializer: Literal {
                                                value: Literal {
                                                    value: Integer(
                                                        1,
                                                    ),
                                                    location: Location {
                                                        start: 1856,
                                                        end: 1857,
                                                    },
                                                },
                                            },
                                            semicolon: Token {
                                                kind: Symbol,
                                                location: Location {
                                                    start: 1857,
                                                    end: 1858,
                                                },
                                            },
                                        },
                                    ),
                                ],
                                closing_brace: Token {
                                    kind: Symbol,
                                    location: Location {
                                        start: 1863,
                                        end: 1864,
                                    },
                                },
                            },
                        ),
                    ],
                    closing_brace: Token {
                        kind: Symbol,
                        location: Location {
                            start: 1865,
                            end: 1866,
                        },
                    },
                },
            },
        ),
    ],
}