[
    FullOpeningTag(
        FullOpeningTagStatement {
            span: Span {
                line: 1,
                column: 1,
                position: 0,
            },
        },
    ),
    Function(
        FunctionStatement {
            comments: CommentGroup {
                comments: [],
            },
            attributes: [],
            function: Span {
                line: 3,
                column: 1,
                position: 8,
            },
            ampersand: None,
            name: SimpleIdentifier {
                span: Span {
                    line: 3,
                    column: 10,
                    position: 17,
                },
                value: "foo",
            },
            parameters: FunctionParameterList {
                comments: CommentGroup {
                    comments: [],
                },
                left_parenthesis: Span {
                    line: 3,
                    column: 13,
                    position: 20,
                },
                parameters: CommaSeparated {
                    inner: [
                        FunctionParameter {
                            comments: CommentGroup {
                                comments: [],
                            },
                            name: SimpleVariable {
                                span: Span {
                                    line: 3,
                                    column: 14,
                                    position: 21,
                                },
                                name: "$a",
                            },
                            attributes: [],
                            data_type: None,
                            ellipsis: None,
                            default: None,
                            ampersand: None,
                        },
                    ],
                    commas: [],
                },
                right_parenthesis: Span {
                    line: 3,
                    column: 16,
                    position: 23,
                },
            },
            return_type: None,
            body: FunctionBody {
                comments: CommentGroup {
                    comments: [],
                },
                left_brace: Span {
                    line: 3,
                    column: 18,
                    position: 25,
                },
                statements: [
                    Global(
                        GlobalStatement {
                            global: Span {
                                line: 4,
                                column: 5,
                                position: 31,
                            },
                            variables: [
                                SimpleVariable(
                                    SimpleVariable {
                                        span: Span {
                                            line: 4,
                                            column: 12,
                                            position: 38,
                                        },
                                        name: "$f",
                                    },
                                ),
                            ],
                        },
                    ),
                    Global(
                        GlobalStatement {
                            global: Span {
                                line: 5,
                                column: 5,
                                position: 46,
                            },
                            variables: [
                                BracedVariableVariable(
                                    BracedVariableVariable {
                                        start: Span {
                                            line: 5,
                                            column: 12,
                                            position: 53,
                                        },
                                        variable: ArrayIndex(
                                            ArrayIndexExpression {
                                                array: Variable(
                                                    SimpleVariable(
                                                        SimpleVariable {
                                                            span: Span {
                                                                line: 5,
                                                                column: 14,
                                                                position: 55,
                                                            },
                                                            name: "$a",
                                                        },
                                                    ),
                                                ),
                                                left_bracket: Span {
                                                    line: 5,
                                                    column: 16,
                                                    position: 57,
                                                },
                                                index: Some(
                                                    Literal(
                                                        Integer(
                                                            LiteralInteger {
                                                                value: "3",
                                                                span: Span {
                                                                    line: 5,
                                                                    column: 17,
                                                                    position: 58,
                                                                },
                                                            },
                                                        ),
                                                    ),
                                                ),
                                                right_bracket: Span {
                                                    line: 5,
                                                    column: 18,
                                                    position: 59,
                                                },
                                            },
                                        ),
                                        end: Span {
                                            line: 5,
                                            column: 19,
                                            position: 60,
                                        },
                                    },
                                ),
                            ],
                        },
                    ),
                    Global(
                        GlobalStatement {
                            global: Span {
                                line: 6,
                                column: 5,
                                position: 67,
                            },
                            variables: [
                                BracedVariableVariable(
                                    BracedVariableVariable {
                                        start: Span {
                                            line: 6,
                                            column: 12,
                                            position: 74,
                                        },
                                        variable: Variable(
                                            BracedVariableVariable(
                                                BracedVariableVariable {
                                                    start: Span {
                                                        line: 6,
                                                        column: 14,
                                                        position: 76,
                                                    },
                                                    variable: ArrayIndex(
                                                        ArrayIndexExpression {
                                                            array: Variable(
                                                                SimpleVariable(
                                                                    SimpleVariable {
                                                                        span: Span {
                                                                            line: 6,
                                                                            column: 16,
                                                                            position: 78,
                                                                        },
                                                                        name: "$a",
                                                                    },
                                                                ),
                                                            ),
                                                            left_bracket: Span {
                                                                line: 6,
                                                                column: 18,
                                                                position: 80,
                                                            },
                                                            index: Some(
                                                                Literal(
                                                                    Integer(
                                                                        LiteralInteger {
                                                                            value: "3",
                                                                            span: Span {
                                                                                line: 6,
                                                                                column: 19,
                                                                                position: 81,
                                                                            },
                                                                        },
                                                                    ),
                                                                ),
                                                            ),
                                                            right_bracket: Span {
                                                                line: 6,
                                                                column: 20,
                                                                position: 82,
                                                            },
                                                        },
                                                    ),
                                                    end: Span {
                                                        line: 6,
                                                        column: 21,
                                                        position: 83,
                                                    },
                                                },
                                            ),
                                        ),
                                        end: Span {
                                            line: 6,
                                            column: 22,
                                            position: 84,
                                        },
                                    },
                                ),
                                BracedVariableVariable(
                                    BracedVariableVariable {
                                        start: Span {
                                            line: 6,
                                            column: 25,
                                            position: 87,
                                        },
                                        variable: Variable(
                                            BracedVariableVariable(
                                                BracedVariableVariable {
                                                    start: Span {
                                                        line: 6,
                                                        column: 27,
                                                        position: 89,
                                                    },
                                                    variable: Variable(
                                                        BracedVariableVariable(
                                                            BracedVariableVariable {
                                                                start: Span {
                                                                    line: 6,
                                                                    column: 29,
                                                                    position: 91,
                                                                },
                                                                variable: ArrayIndex(
                                                                    ArrayIndexExpression {
                                                                        array: Variable(
                                                                            SimpleVariable(
                                                                                SimpleVariable {
                                                                                    span: Span {
                                                                                        line: 6,
                                                                                        column: 31,
                                                                                        position: 93,
                                                                                    },
                                                                                    name: "$a",
                                                                                },
                                                                            ),
                                                                        ),
                                                                        left_bracket: Span {
                                                                            line: 6,
                                                                            column: 33,
                                                                            position: 95,
                                                                        },
                                                                        index: Some(
                                                                            Literal(
                                                                                Integer(
                                                                                    LiteralInteger {
                                                                                        value: "3",
                                                                                        span: Span {
                                                                                            line: 6,
                                                                                            column: 34,
                                                                                            position: 96,
                                                                                        },
                                                                                    },
                                                                                ),
                                                                            ),
                                                                        ),
                                                                        right_bracket: Span {
                                                                            line: 6,
                                                                            column: 35,
                                                                            position: 97,
                                                                        },
                                                                    },
                                                                ),
                                                                end: Span {
                                                                    line: 6,
                                                                    column: 36,
                                                                    position: 98,
                                                                },
                                                            },
                                                        ),
                                                    ),
                                                    end: Span {
                                                        line: 6,
                                                        column: 37,
                                                        position: 99,
                                                    },
                                                },
                                            ),
                                        ),
                                        end: Span {
                                            line: 6,
                                            column: 38,
                                            position: 100,
                                        },
                                    },
                                ),
                                BracedVariableVariable(
                                    BracedVariableVariable {
                                        start: Span {
                                            line: 6,
                                            column: 41,
                                            position: 103,
                                        },
                                        variable: Variable(
                                            BracedVariableVariable(
                                                BracedVariableVariable {
                                                    start: Span {
                                                        line: 6,
                                                        column: 43,
                                                        position: 105,
                                                    },
                                                    variable: Variable(
                                                        BracedVariableVariable(
                                                            BracedVariableVariable {
                                                                start: Span {
                                                                    line: 6,
                                                                    column: 45,
                                                                    position: 107,
                                                                },
                                                                variable: Variable(
                                                                    BracedVariableVariable(
                                                                        BracedVariableVariable {
                                                                            start: Span {
                                                                                line: 6,
                                                                                column: 47,
                                                                                position: 109,
                                                                            },
                                                                            variable: ArrayIndex(
                                                                                ArrayIndexExpression {
                                                                                    array: Variable(
                                                                                        SimpleVariable(
                                                                                            SimpleVariable {
                                                                                                span: Span {
                                                                                                    line: 6,
                                                                                                    column: 49,
                                                                                                    position: 111,
                                                                                                },
                                                                                                name: "$a",
                                                                                            },
                                                                                        ),
                                                                                    ),
                                                                                    left_bracket: Span {
                                                                                        line: 6,
                                                                                        column: 51,
                                                                                        position: 113,
                                                                                    },
                                                                                    index: Some(
                                                                                        Literal(
                                                                                            Integer(
                                                                                                LiteralInteger {
                                                                                                    value: "3",
                                                                                                    span: Span {
                                                                                                        line: 6,
                                                                                                        column: 52,
                                                                                                        position: 114,
                                                                                                    },
                                                                                                },
                                                                                            ),
                                                                                        ),
                                                                                    ),
                                                                                    right_bracket: Span {
                                                                                        line: 6,
                                                                                        column: 53,
                                                                                        position: 115,
                                                                                    },
                                                                                },
                                                                            ),
                                                                            end: Span {
                                                                                line: 6,
                                                                                column: 54,
                                                                                position: 116,
                                                                            },
                                                                        },
                                                                    ),
                                                                ),
                                                                end: Span {
                                                                    line: 6,
                                                                    column: 55,
                                                                    position: 117,
                                                                },
                                                            },
                                                        ),
                                                    ),
                                                    end: Span {
                                                        line: 6,
                                                        column: 56,
                                                        position: 118,
                                                    },
                                                },
                                            ),
                                        ),
                                        end: Span {
                                            line: 6,
                                            column: 57,
                                            position: 119,
                                        },
                                    },
                                ),
                            ],
                        },
                    ),
                    Echo(
                        EchoStatement {
                            echo: Span {
                                line: 8,
                                column: 5,
                                position: 131,
                            },
                            values: [
                                Variable(
                                    SimpleVariable(
                                        SimpleVariable {
                                            span: Span {
                                                line: 8,
                                                column: 10,
                                                position: 136,
                                            },
                                            name: "$p",
                                        },
                                    ),
                                ),
                            ],
                            ending: Semicolon(
                                Span {
                                    line: 8,
                                    column: 12,
                                    position: 138,
                                },
                            ),
                        },
                    ),
                ],
                right_brace: Span {
                    line: 9,
                    column: 1,
                    position: 140,
                },
            },
        },
    ),
    Expression(
        ExpressionStatement {
            expression: AssignmentOperation(
                Assign {
                    left: Variable(
                        SimpleVariable(
                            SimpleVariable {
                                span: Span {
                                    line: 11,
                                    column: 1,
                                    position: 143,
                                },
                                name: "$p",
                            },
                        ),
                    ),
                    equals: Span {
                        line: 11,
                        column: 4,
                        position: 146,
                    },
                    right: Literal(
                        String(
                            LiteralString {
                                value: "'why!'",
                                span: Span {
                                    line: 11,
                                    column: 6,
                                    position: 148,
                                },
                            },
                        ),
                    ),
                },
            ),
            ending: Semicolon(
                Span {
                    line: 11,
                    column: 12,
                    position: 154,
                },
            ),
        },
    ),
    Expression(
        ExpressionStatement {
            expression: AssignmentOperation(
                Assign {
                    left: Variable(
                        SimpleVariable(
                            SimpleVariable {
                                span: Span {
                                    line: 12,
                                    column: 1,
                                    position: 156,
                                },
                                name: "$s",
                            },
                        ),
                    ),
                    equals: Span {
                        line: 12,
                        column: 4,
                        position: 159,
                    },
                    right: Literal(
                        String(
                            LiteralString {
                                value: "'p'",
                                span: Span {
                                    line: 12,
                                    column: 6,
                                    position: 161,
                                },
                            },
                        ),
                    ),
                },
            ),
            ending: Semicolon(
                Span {
                    line: 12,
                    column: 9,
                    position: 164,
                },
            ),
        },
    ),
    Expression(
        ExpressionStatement {
            expression: AssignmentOperation(
                Assign {
                    left: Variable(
                        SimpleVariable(
                            SimpleVariable {
                                span: Span {
                                    line: 13,
                                    column: 1,
                                    position: 166,
                                },
                                name: "$m",
                            },
                        ),
                    ),
                    equals: Span {
                        line: 13,
                        column: 4,
                        position: 169,
                    },
                    right: Literal(
                        String(
                            LiteralString {
                                value: "'s'",
                                span: Span {
                                    line: 13,
                                    column: 6,
                                    position: 171,
                                },
                            },
                        ),
                    ),
                },
            ),
            ending: Semicolon(
                Span {
                    line: 13,
                    column: 9,
                    position: 174,
                },
            ),
        },
    ),
    Expression(
        ExpressionStatement {
            expression: AssignmentOperation(
                Assign {
                    left: Variable(
                        SimpleVariable(
                            SimpleVariable {
                                span: Span {
                                    line: 14,
                                    column: 1,
                                    position: 176,
                                },
                                name: "$f",
                            },
                        ),
                    ),
                    equals: Span {
                        line: 14,
                        column: 4,
                        position: 179,
                    },
                    right: Literal(
                        String(
                            LiteralString {
                                value: "'m'",
                                span: Span {
                                    line: 14,
                                    column: 6,
                                    position: 181,
                                },
                            },
                        ),
                    ),
                },
            ),
            ending: Semicolon(
                Span {
                    line: 14,
                    column: 9,
                    position: 184,
                },
            ),
        },
    ),
    Expression(
        ExpressionStatement {
            expression: FunctionCall(
                FunctionCallExpression {
                    target: Identifier(
                        SimpleIdentifier(
                            SimpleIdentifier {
                                span: Span {
                                    line: 15,
                                    column: 1,
                                    position: 186,
                                },
                                value: "foo",
                            },
                        ),
                    ),
                    arguments: ArgumentList {
                        comments: CommentGroup {
                            comments: [],
                        },
                        left_parenthesis: Span {
                            line: 15,
                            column: 4,
                            position: 189,
                        },
                        arguments: [
                            Positional(
                                PositionalArgument {
                                    comments: CommentGroup {
                                        comments: [],
                                    },
                                    ellipsis: None,
                                    value: ShortArray(
                                        ShortArrayExpression {
                                            start: Span {
                                                line: 15,
                                                column: 5,
                                                position: 190,
                                            },
                                            items: CommaSeparated {
                                                inner: [
                                                    KeyValue {
                                                        key: Literal(
                                                            Integer(
                                                                LiteralInteger {
                                                                    value: "3",
                                                                    span: Span {
                                                                        line: 15,
                                                                        column: 6,
                                                                        position: 191,
                                                                    },
                                                                },
                                                            ),
                                                        ),
                                                        double_arrow: Span {
                                                            line: 15,
                                                            column: 8,
                                                            position: 193,
                                                        },
                                                        value: Literal(
                                                            String(
                                                                LiteralString {
                                                                    value: "'f'",
                                                                    span: Span {
                                                                        line: 15,
                                                                        column: 11,
                                                                        position: 196,
                                                                    },
                                                                },
                                                            ),
                                                        ),
                                                    },
                                                ],
                                                commas: [],
                                            },
                                            end: Span {
                                                line: 15,
                                                column: 14,
                                                position: 199,
                                            },
                                        },
                                    ),
                                },
                            ),
                        ],
                        right_parenthesis: Span {
                            line: 15,
                            column: 15,
                            position: 200,
                        },
                    },
                },
            ),
            ending: Semicolon(
                Span {
                    line: 15,
                    column: 16,
                    position: 201,
                },
            ),
        },
    ),
]
