Program {
    items: [
        GlobalVariable(
            GlobalVariable {
                decl_token: Token {
                    kind: Identifier,
                    location: Location {
                        start: 0,
                        end: 3,
                    },
                },
                identifier: Token {
                    kind: Identifier,
                    location: Location {
                        start: 4,
                        end: 6,
                    },
                },
                colon: Token {
                    kind: Symbol,
                    location: Location {
                        start: 6,
                        end: 7,
                    },
                },
                type_token: TypeHint {
                    type_name: Token {
                        kind: Identifier,
                        location: Location {
                            start: 8,
                            end: 13,
                        },
                    },
                },
                equals_token: Token {
                    kind: Symbol,
                    location: Location {
                        start: 14,
                        end: 15,
                    },
                },
                initializer: Expression {
                    expression: Literal {
                        value: Literal {
                            value: Float(
                                3.14,
                            ),
                            location: Location {
                                start: 16,
                                end: 20,
                            },
                        },
                    },
                },
                semicolon: Token {
                    kind: Symbol,
                    location: Location {
                        start: 20,
                        end: 21,
                    },
                },
            },
        ),
        GlobalVariable(
            GlobalVariable {
                decl_token: Token {
                    kind: Identifier,
                    location: Location {
                        start: 23,
                        end: 26,
                    },
                },
                identifier: Token {
                    kind: Identifier,
                    location: Location {
                        start: 27,
                        end: 47,
                    },
                },
                colon: Token {
                    kind: Symbol,
                    location: Location {
                        start: 47,
                        end: 48,
                    },
                },
                type_token: TypeHint {
                    type_name: Token {
                        kind: Identifier,
                        location: Location {
                            start: 49,
                            end: 52,
                        },
                    },
                },
                equals_token: Token {
                    kind: Symbol,
                    location: Location {
                        start: 53,
                        end: 54,
                    },
                },
                initializer: Expression {
                    expression: Literal {
                        value: Literal {
                            value: Integer(
                                42,
                            ),
                            location: Location {
                                start: 55,
                                end: 57,
                            },
                        },
                    },
                },
                semicolon: Token {
                    kind: Symbol,
                    location: Location {
                        start: 57,
                        end: 58,
                    },
                },
            },
        ),
        GlobalVariable(
            GlobalVariable {
                decl_token: Token {
                    kind: Identifier,
                    location: Location {
                        start: 168,
                        end: 171,
                    },
                },
                identifier: Token {
                    kind: Identifier,
                    location: Location {
                        start: 172,
                        end: 191,
                    },
                },
                colon: Token {
                    kind: Symbol,
                    location: Location {
                        start: 191,
                        end: 192,
                    },
                },
                type_token: TypeHint {
                    type_name: Token {
                        kind: Identifier,
                        location: Location {
                            start: 193,
                            end: 199,
                        },
                    },
                },
                equals_token: Token {
                    kind: Symbol,
                    location: Location {
                        start: 200,
                        end: 201,
                    },
                },
                initializer: Expression {
                    expression: UnaryOperator {
                        name: Token {
                            kind: Symbol,
                            location: Location {
                                start: 202,
                                end: 203,
                            },
                        },
                        operand: Variable {
                            variable: Token {
                                kind: Identifier,
                                location: Location {
                                    start: 203,
                                    end: 220,
                                },
                            },
                        },
                    },
                },
                semicolon: Token {
                    kind: Symbol,
                    location: Location {
                        start: 220,
                        end: 221,
                    },
                },
            },
        ),
        GlobalVariable(
            GlobalVariable {
                decl_token: Token {
                    kind: Identifier,
                    location: Location {
                        start: 222,
                        end: 225,
                    },
                },
                identifier: Token {
                    kind: Identifier,
                    location: Location {
                        start: 226,
                        end: 243,
                    },
                },
                colon: Token {
                    kind: Symbol,
                    location: Location {
                        start: 243,
                        end: 244,
                    },
                },
                type_token: TypeHint {
                    type_name: Token {
                        kind: Identifier,
                        location: Location {
                            start: 245,
                            end: 251,
                        },
                    },
                },
                equals_token: Token {
                    kind: Symbol,
                    location: Location {
                        start: 252,
                        end: 253,
                    },
                },
                initializer: Expression {
                    expression: Literal {
                        value: Literal {
                            value: Integer(
                                100,
                            ),
                            location: Location {
                                start: 254,
                                end: 257,
                            },
                        },
                    },
                },
                semicolon: Token {
                    kind: Symbol,
                    location: Location {
                        start: 257,
                        end: 258,
                    },
                },
            },
        ),
        Function(
            Function {
                fn_token: Token {
                    kind: Identifier,
                    location: Location {
                        start: 260,
                        end: 262,
                    },
                },
                name: Token {
                    kind: Identifier,
                    location: Location {
                        start: 263,
                        end: 266,
                    },
                },
                opening_paren: Token {
                    kind: Symbol,
                    location: Location {
                        start: 266,
                        end: 267,
                    },
                },
                arguments: [
                    FunctionArgument {
                        name: Token {
                            kind: Identifier,
                            location: Location {
                                start: 267,
                                end: 268,
                            },
                        },
                        colon: Token {
                            kind: Symbol,
                            location: Location {
                                start: 268,
                                end: 269,
                            },
                        },
                        reference_token: None,
                        arg_type: TypeHint {
                            type_name: Token {
                                kind: Identifier,
                                location: Location {
                                    start: 270,
                                    end: 273,
                                },
                            },
                        },
                    },
                    FunctionArgument {
                        name: Token {
                            kind: Identifier,
                            location: Location {
                                start: 275,
                                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: 281,
                                },
                            },
                        },
                    },
                ],
                closing_paren: Token {
                    kind: Symbol,
                    location: Location {
                        start: 281,
                        end: 282,
                    },
                },
                return_decl: Some(
                    ReturnDecl {
                        return_token: Token {
                            kind: Symbol,
                            location: Location {
                                start: 283,
                                end: 285,
                            },
                        },
                        return_type: TypeHint {
                            type_name: Token {
                                kind: Identifier,
                                location: Location {
                                    start: 286,
                                    end: 289,
                                },
                            },
                        },
                    },
                ),
                body: Body {
                    opening_brace: Token {
                        kind: Symbol,
                        location: Location {
                            start: 290,
                            end: 291,
                        },
                    },
                    statements: [
                        Return(
                            ReturnWithValue {
                                return_token: Token {
                                    kind: Identifier,
                                    location: Location {
                                        start: 292,
                                        end: 298,
                                    },
                                },
                                expression: BinaryOperator {
                                    name: Token {
                                        kind: Symbol,
                                        location: Location {
                                            start: 301,
                                            end: 302,
                                        },
                                    },
                                    operands: [
                                        Variable {
                                            variable: Token {
                                                kind: Identifier,
                                                location: Location {
                                                    start: 299,
                                                    end: 300,
                                                },
                                            },
                                        },
                                        Variable {
                                            variable: Token {
                                                kind: Identifier,
                                                location: Location {
                                                    start: 303,
                                                    end: 304,
                                                },
                                            },
                                        },
                                    ],
                                },
                                semicolon: Token {
                                    kind: Symbol,
                                    location: Location {
                                        start: 304,
                                        end: 305,
                                    },
                                },
                            },
                        ),
                    ],
                    closing_brace: Token {
                        kind: Symbol,
                        location: Location {
                            start: 306,
                            end: 307,
                        },
                    },
                },
            },
        ),
        Function(
            Function {
                fn_token: Token {
                    kind: Identifier,
                    location: Location {
                        start: 374,
                        end: 376,
                    },
                },
                name: Token {
                    kind: Identifier,
                    location: Location {
                        start: 377,
                        end: 380,
                    },
                },
                opening_paren: Token {
                    kind: Symbol,
                    location: Location {
                        start: 380,
                        end: 381,
                    },
                },
                arguments: [
                    FunctionArgument {
                        name: Token {
                            kind: Identifier,
                            location: Location {
                                start: 381,
                                end: 382,
                            },
                        },
                        colon: Token {
                            kind: Symbol,
                            location: Location {
                                start: 382,
                                end: 383,
                            },
                        },
                        reference_token: None,
                        arg_type: TypeHint {
                            type_name: Token {
                                kind: Identifier,
                                location: Location {
                                    start: 384,
                                    end: 390,
                                },
                            },
                        },
                    },
                ],
                closing_paren: Token {
                    kind: Symbol,
                    location: Location {
                        start: 390,
                        end: 391,
                    },
                },
                return_decl: Some(
                    ReturnDecl {
                        return_token: Token {
                            kind: Symbol,
                            location: Location {
                                start: 392,
                                end: 394,
                            },
                        },
                        return_type: TypeHint {
                            type_name: Token {
                                kind: Identifier,
                                location: Location {
                                    start: 395,
                                    end: 401,
                                },
                            },
                        },
                    },
                ),
                body: Body {
                    opening_brace: Token {
                        kind: Symbol,
                        location: Location {
                            start: 402,
                            end: 403,
                        },
                    },
                    statements: [
                        Return(
                            ReturnWithValue {
                                return_token: Token {
                                    kind: Identifier,
                                    location: Location {
                                        start: 408,
                                        end: 414,
                                    },
                                },
                                expression: Literal {
                                    value: Literal {
                                        value: String(
                                            "foo",
                                        ),
                                        location: Location {
                                            start: 415,
                                            end: 420,
                                        },
                                    },
                                },
                                semicolon: Token {
                                    kind: Symbol,
                                    location: Location {
                                        start: 420,
                                        end: 421,
                                    },
                                },
                            },
                        ),
                    ],
                    closing_brace: Token {
                        kind: Symbol,
                        location: Location {
                            start: 422,
                            end: 423,
                        },
                    },
                },
            },
        ),
    ],
}