[
    FullOpeningTag(
        Span(
            1,
            1,
        ),
    ),
    Function(
        Function {
            comments: CommentGroup {
                comments: [],
            },
            attributes: [],
            function: Span(
                3,
                1,
            ),
            ampersand: None,
            name: SimpleIdentifier {
                span: Span(
                    3,
                    10,
                ),
                value: "foo",
            },
            parameters: FunctionParameterList {
                comments: CommentGroup {
                    comments: [],
                },
                left_parenthesis: Span(
                    3,
                    13,
                ),
                parameters: CommaSeparated {
                    inner: [
                        FunctionParameter {
                            comments: CommentGroup {
                                comments: [],
                            },
                            name: SimpleVariable {
                                span: Span(
                                    3,
                                    14,
                                ),
                                name: "a",
                            },
                            attributes: [],
                            data_type: None,
                            ellipsis: None,
                            default: None,
                            ampersand: None,
                        },
                    ],
                    commas: [],
                },
                right_parenthesis: Span(
                    3,
                    16,
                ),
            },
            return_type: None,
            body: FunctionBody {
                comments: CommentGroup {
                    comments: [],
                },
                left_brace: Span(
                    3,
                    18,
                ),
                statements: [
                    Global {
                        span: Span(
                            4,
                            5,
                        ),
                        variables: [
                            BracedVariableVariable(
                                BracedVariableVariable {
                                    start: Span(
                                        4,
                                        12,
                                    ),
                                    variable: New {
                                        new: Span(
                                            4,
                                            14,
                                        ),
                                        target: AnonymousClass(
                                            AnonymousClass {
                                                attributes: [],
                                                class: Span(
                                                    4,
                                                    18,
                                                ),
                                                extends: None,
                                                implements: None,
                                                body: AnonymousClassBody {
                                                    left_brace: Span(
                                                        4,
                                                        26,
                                                    ),
                                                    members: [
                                                        ConcreteMethod(
                                                            ConcreteMethod {
                                                                comments: CommentGroup {
                                                                    comments: [],
                                                                },
                                                                attributes: [],
                                                                modifiers: MethodModifierGroup {
                                                                    modifiers: [
                                                                        Public(
                                                                            Span(
                                                                                5,
                                                                                9,
                                                                            ),
                                                                        ),
                                                                    ],
                                                                },
                                                                function: Span(
                                                                    5,
                                                                    16,
                                                                ),
                                                                ampersand: None,
                                                                name: SimpleIdentifier {
                                                                    span: Span(
                                                                        5,
                                                                        25,
                                                                    ),
                                                                    value: "__toString",
                                                                },
                                                                parameters: FunctionParameterList {
                                                                    comments: CommentGroup {
                                                                        comments: [],
                                                                    },
                                                                    left_parenthesis: Span(
                                                                        5,
                                                                        35,
                                                                    ),
                                                                    parameters: CommaSeparated {
                                                                        inner: [],
                                                                        commas: [],
                                                                    },
                                                                    right_parenthesis: Span(
                                                                        5,
                                                                        36,
                                                                    ),
                                                                },
                                                                return_type: None,
                                                                body: MethodBody {
                                                                    comments: CommentGroup {
                                                                        comments: [],
                                                                    },
                                                                    left_brace: Span(
                                                                        5,
                                                                        38,
                                                                    ),
                                                                    statements: [
                                                                        Return {
                                                                            return: Span(
                                                                                6,
                                                                                13,
                                                                            ),
                                                                            value: Some(
                                                                                Literal(
                                                                                    String(
                                                                                        LiteralString {
                                                                                            value: "p",
                                                                                            span: Span(
                                                                                                6,
                                                                                                20,
                                                                                            ),
                                                                                        },
                                                                                    ),
                                                                                ),
                                                                            ),
                                                                            ending: Semicolon(
                                                                                Span(
                                                                                    6,
                                                                                    23,
                                                                                ),
                                                                            ),
                                                                        },
                                                                    ],
                                                                    right_brace: Span(
                                                                        7,
                                                                        9,
                                                                    ),
                                                                },
                                                            },
                                                        ),
                                                    ],
                                                    right_brace: Span(
                                                        8,
                                                        5,
                                                    ),
                                                },
                                            },
                                        ),
                                        arguments: Some(
                                            ArgumentList {
                                                comments: CommentGroup {
                                                    comments: [],
                                                },
                                                left_parenthesis: Span(
                                                    4,
                                                    23,
                                                ),
                                                arguments: [],
                                                right_parenthesis: Span(
                                                    4,
                                                    24,
                                                ),
                                            },
                                        ),
                                    },
                                    end: Span(
                                        8,
                                        6,
                                    ),
                                },
                            ),
                        ],
                    },
                    Echo {
                        echo: Span(
                            10,
                            5,
                        ),
                        values: [
                            Variable(
                                SimpleVariable(
                                    SimpleVariable {
                                        span: Span(
                                            10,
                                            10,
                                        ),
                                        name: "p",
                                    },
                                ),
                            ),
                        ],
                        ending: Semicolon(
                            Span(
                                10,
                                12,
                            ),
                        ),
                    },
                ],
                right_brace: Span(
                    11,
                    1,
                ),
            },
        },
    ),
    Expression {
        expression: AssignmentOperation(
            Assign {
                left: Variable(
                    SimpleVariable(
                        SimpleVariable {
                            span: Span(
                                13,
                                1,
                            ),
                            name: "p",
                        },
                    ),
                ),
                equals: Span(
                    13,
                    4,
                ),
                right: Literal(
                    String(
                        LiteralString {
                            value: "why!",
                            span: Span(
                                13,
                                6,
                            ),
                        },
                    ),
                ),
            },
        ),
        ending: Semicolon(
            Span(
                13,
                12,
            ),
        ),
    },
    Expression {
        expression: AssignmentOperation(
            Assign {
                left: Variable(
                    SimpleVariable(
                        SimpleVariable {
                            span: Span(
                                14,
                                1,
                            ),
                            name: "m",
                        },
                    ),
                ),
                equals: Span(
                    14,
                    4,
                ),
                right: Literal(
                    String(
                        LiteralString {
                            value: "foo",
                            span: Span(
                                14,
                                6,
                            ),
                        },
                    ),
                ),
            },
        ),
        ending: Semicolon(
            Span(
                14,
                11,
            ),
        ),
    },
    Expression {
        expression: FunctionCall {
            target: Variable(
                BracedVariableVariable(
                    BracedVariableVariable {
                        start: Span(
                            16,
                            1,
                        ),
                        variable: FunctionCall {
                            target: Parenthesized {
                                start: Span(
                                    16,
                                    3,
                                ),
                                expr: Closure(
                                    Closure {
                                        comments: CommentGroup {
                                            comments: [],
                                        },
                                        attributes: [],
                                        static: None,
                                        function: Span(
                                            16,
                                            4,
                                        ),
                                        ampersand: None,
                                        parameters: FunctionParameterList {
                                            comments: CommentGroup {
                                                comments: [],
                                            },
                                            left_parenthesis: Span(
                                                16,
                                                12,
                                            ),
                                            parameters: CommaSeparated {
                                                inner: [],
                                                commas: [],
                                            },
                                            right_parenthesis: Span(
                                                16,
                                                13,
                                            ),
                                        },
                                        uses: None,
                                        return_type: None,
                                        body: FunctionBody {
                                            comments: CommentGroup {
                                                comments: [],
                                            },
                                            left_brace: Span(
                                                16,
                                                15,
                                            ),
                                            statements: [
                                                Return {
                                                    return: Span(
                                                        17,
                                                        5,
                                                    ),
                                                    value: Some(
                                                        Literal(
                                                            String(
                                                                LiteralString {
                                                                    value: "m",
                                                                    span: Span(
                                                                        17,
                                                                        12,
                                                                    ),
                                                                },
                                                            ),
                                                        ),
                                                    ),
                                                    ending: Semicolon(
                                                        Span(
                                                            17,
                                                            15,
                                                        ),
                                                    ),
                                                },
                                            ],
                                            right_brace: Span(
                                                18,
                                                1,
                                            ),
                                        },
                                    },
                                ),
                                end: Span(
                                    18,
                                    2,
                                ),
                            },
                            arguments: ArgumentList {
                                comments: CommentGroup {
                                    comments: [],
                                },
                                left_parenthesis: Span(
                                    18,
                                    3,
                                ),
                                arguments: [],
                                right_parenthesis: Span(
                                    18,
                                    4,
                                ),
                            },
                        },
                        end: Span(
                            18,
                            5,
                        ),
                    },
                ),
            ),
            arguments: ArgumentList {
                comments: CommentGroup {
                    comments: [],
                },
                left_parenthesis: Span(
                    18,
                    6,
                ),
                arguments: [
                    Positional {
                        comments: CommentGroup {
                            comments: [],
                        },
                        ellipsis: None,
                        value: ShortArray(
                            Bracketed {
                                left_bracket: Span(
                                    18,
                                    7,
                                ),
                                inner: CommaSeparated {
                                    inner: [],
                                    commas: [],
                                },
                                right_bracket: Span(
                                    18,
                                    8,
                                ),
                            },
                        ),
                    },
                ],
                right_parenthesis: Span(
                    18,
                    9,
                ),
            },
        },
        ending: Semicolon(
            Span(
                18,
                10,
            ),
        ),
    },
]
