[
    FullOpeningTag(
        Span {
            line: 1,
            column: 1,
            position: 0,
        },
    ),
    Constant(
        ConstantStatement {
            comments: CommentGroup {
                comments: [],
            },
            const: Span {
                line: 3,
                column: 1,
                position: 7,
            },
            entries: [
                ConstantEntry {
                    name: SimpleIdentifier {
                        span: Span {
                            line: 3,
                            column: 7,
                            position: 13,
                        },
                        value: "\xe2\x86\xaa",
                    },
                    equals: Span {
                        line: 3,
                        column: 11,
                        position: 17,
                    },
                    value: Literal(
                        String(
                            LiteralString {
                                value: ""\n"",
                                span: Span {
                                    line: 3,
                                    column: 13,
                                    position: 19,
                                },
                            },
                        ),
                    ),
                },
            ],
            semicolon: Span {
                line: 3,
                column: 17,
                position: 23,
            },
        },
    ),
    Interface(
        InterfaceStatement {
            attributes: [],
            interface: Span {
                line: 5,
                column: 1,
                position: 26,
            },
            name: SimpleIdentifier {
                span: Span {
                    line: 5,
                    column: 11,
                    position: 36,
                },
                value: "\xf0\x9f\x94\x8a",
            },
            extends: None,
            body: InterfaceBody {
                left_brace: Span {
                    line: 5,
                    column: 16,
                    position: 41,
                },
                members: [
                    Method(
                        AbstractMethod {
                            comments: CommentGroup {
                                comments: [],
                            },
                            attributes: [],
                            modifiers: MethodModifierGroup {
                                modifiers: [
                                    Public(
                                        Span {
                                            line: 6,
                                            column: 3,
                                            position: 45,
                                        },
                                    ),
                                ],
                            },
                            function: Span {
                                line: 6,
                                column: 10,
                                position: 52,
                            },
                            ampersand: None,
                            name: SimpleIdentifier {
                                span: Span {
                                    line: 6,
                                    column: 19,
                                    position: 61,
                                },
                                value: "\xf0\x9f\x93\x9d",
                            },
                            parameters: FunctionParameterList {
                                comments: CommentGroup {
                                    comments: [],
                                },
                                left_parenthesis: Span {
                                    line: 6,
                                    column: 23,
                                    position: 65,
                                },
                                parameters: CommaSeparated {
                                    inner: [
                                        FunctionParameter {
                                            comments: CommentGroup {
                                                comments: [],
                                            },
                                            name: SimpleVariable {
                                                span: Span {
                                                    line: 6,
                                                    column: 31,
                                                    position: 73,
                                                },
                                                name: "$\xf0\x9f\x93\x83",
                                            },
                                            attributes: [],
                                            data_type: Some(
                                                String(
                                                    Span {
                                                        line: 6,
                                                        column: 24,
                                                        position: 66,
                                                    },
                                                ),
                                            ),
                                            ellipsis: None,
                                            default: None,
                                            ampersand: None,
                                        },
                                    ],
                                    commas: [],
                                },
                                right_parenthesis: Span {
                                    line: 6,
                                    column: 36,
                                    position: 78,
                                },
                            },
                            return_type: Some(
                                ReturnType {
                                    colon: Span {
                                        line: 6,
                                        column: 37,
                                        position: 79,
                                    },
                                    data_type: Void(
                                        Span {
                                            line: 6,
                                            column: 39,
                                            position: 81,
                                        },
                                    ),
                                },
                            ),
                            semicolon: Span {
                                line: 6,
                                column: 43,
                                position: 85,
                            },
                        },
                    ),
                ],
                right_brace: Span {
                    line: 7,
                    column: 1,
                    position: 87,
                },
            },
        },
    ),
    Class(
        ClassStatement {
            attributes: [],
            modifiers: ClassModifierGroup {
                modifiers: [
                    Final(
                        Span {
                            line: 9,
                            column: 1,
                            position: 90,
                        },
                    ),
                ],
            },
            class: Span {
                line: 9,
                column: 7,
                position: 96,
            },
            name: SimpleIdentifier {
                span: Span {
                    line: 9,
                    column: 13,
                    position: 102,
                },
                value: "\xf0\x9f\x92\xbb",
            },
            extends: None,
            implements: Some(
                ClassImplements {
                    implements: Span {
                        line: 9,
                        column: 18,
                        position: 107,
                    },
                    interfaces: CommaSeparated {
                        inner: [
                            SimpleIdentifier {
                                span: Span {
                                    line: 9,
                                    column: 29,
                                    position: 118,
                                },
                                value: "\xf0\x9f\x94\x8a",
                            },
                        ],
                        commas: [],
                    },
                },
            ),
            body: ClassBody {
                left_brace: Span {
                    line: 9,
                    column: 34,
                    position: 123,
                },
                members: [
                    ConcreteMethod(
                        ConcreteMethod {
                            comments: CommentGroup {
                                comments: [],
                            },
                            attributes: [],
                            modifiers: MethodModifierGroup {
                                modifiers: [
                                    Public(
                                        Span {
                                            line: 10,
                                            column: 3,
                                            position: 127,
                                        },
                                    ),
                                ],
                            },
                            function: Span {
                                line: 10,
                                column: 10,
                                position: 134,
                            },
                            ampersand: None,
                            name: SimpleIdentifier {
                                span: Span {
                                    line: 10,
                                    column: 19,
                                    position: 143,
                                },
                                value: "\xf0\x9f\x93\x9d",
                            },
                            parameters: FunctionParameterList {
                                comments: CommentGroup {
                                    comments: [],
                                },
                                left_parenthesis: Span {
                                    line: 10,
                                    column: 23,
                                    position: 147,
                                },
                                parameters: CommaSeparated {
                                    inner: [
                                        FunctionParameter {
                                            comments: CommentGroup {
                                                comments: [],
                                            },
                                            name: SimpleVariable {
                                                span: Span {
                                                    line: 10,
                                                    column: 31,
                                                    position: 155,
                                                },
                                                name: "$\xf0\x9f\x93\x83",
                                            },
                                            attributes: [],
                                            data_type: Some(
                                                String(
                                                    Span {
                                                        line: 10,
                                                        column: 24,
                                                        position: 148,
                                                    },
                                                ),
                                            ),
                                            ellipsis: None,
                                            default: None,
                                            ampersand: None,
                                        },
                                    ],
                                    commas: [],
                                },
                                right_parenthesis: Span {
                                    line: 10,
                                    column: 36,
                                    position: 160,
                                },
                            },
                            return_type: Some(
                                ReturnType {
                                    colon: Span {
                                        line: 10,
                                        column: 37,
                                        position: 161,
                                    },
                                    data_type: Void(
                                        Span {
                                            line: 10,
                                            column: 39,
                                            position: 163,
                                        },
                                    ),
                                },
                            ),
                            body: MethodBody {
                                comments: CommentGroup {
                                    comments: [],
                                },
                                left_brace: Span {
                                    line: 10,
                                    column: 44,
                                    position: 168,
                                },
                                statements: [
                                    Expression(
                                        ExpressionStatement {
                                            expression: Print {
                                                print: Span {
                                                    line: 11,
                                                    column: 5,
                                                    position: 174,
                                                },
                                                value: None,
                                                argument: Some(
                                                    SingleArgument {
                                                        comments: CommentGroup {
                                                            comments: [],
                                                        },
                                                        left_parenthesis: Span {
                                                            line: 11,
                                                            column: 10,
                                                            position: 179,
                                                        },
                                                        argument: Positional {
                                                            comments: CommentGroup {
                                                                comments: [],
                                                            },
                                                            ellipsis: None,
                                                            value: Concat {
                                                                left: Variable(
                                                                    SimpleVariable(
                                                                        SimpleVariable {
                                                                            span: Span {
                                                                                line: 11,
                                                                                column: 11,
                                                                                position: 180,
                                                                            },
                                                                            name: "$\xf0\x9f\x93\x83",
                                                                        },
                                                                    ),
                                                                ),
                                                                dot: Span {
                                                                    line: 11,
                                                                    column: 17,
                                                                    position: 186,
                                                                },
                                                                right: Identifier(
                                                                    SimpleIdentifier(
                                                                        SimpleIdentifier {
                                                                            span: Span {
                                                                                line: 11,
                                                                                column: 19,
                                                                                position: 188,
                                                                            },
                                                                            value: "\xe2\x86\xaa",
                                                                        },
                                                                    ),
                                                                ),
                                                            },
                                                        },
                                                        right_parenthesis: Span {
                                                            line: 11,
                                                            column: 22,
                                                            position: 191,
                                                        },
                                                    },
                                                ),
                                            },
                                            ending: Semicolon(
                                                Span {
                                                    line: 11,
                                                    column: 23,
                                                    position: 192,
                                                },
                                            ),
                                        },
                                    ),
                                ],
                                right_brace: Span {
                                    line: 12,
                                    column: 3,
                                    position: 196,
                                },
                            },
                        },
                    ),
                ],
                right_brace: Span {
                    line: 13,
                    column: 1,
                    position: 198,
                },
            },
        },
    ),
    Function(
        FunctionStatement {
            comments: CommentGroup {
                comments: [],
            },
            attributes: [],
            function: Span {
                line: 15,
                column: 1,
                position: 201,
            },
            ampersand: None,
            name: SimpleIdentifier {
                span: Span {
                    line: 15,
                    column: 10,
                    position: 210,
                },
                value: "\xf0\x9f\x9a\xaa",
            },
            parameters: FunctionParameterList {
                comments: CommentGroup {
                    comments: [],
                },
                left_parenthesis: Span {
                    line: 15,
                    column: 14,
                    position: 214,
                },
                parameters: CommaSeparated {
                    inner: [],
                    commas: [],
                },
                right_parenthesis: Span {
                    line: 15,
                    column: 15,
                    position: 215,
                },
            },
            return_type: Some(
                ReturnType {
                    colon: Span {
                        line: 15,
                        column: 16,
                        position: 216,
                    },
                    data_type: Void(
                        Span {
                            line: 15,
                            column: 18,
                            position: 218,
                        },
                    ),
                },
            ),
            body: FunctionBody {
                comments: CommentGroup {
                    comments: [],
                },
                left_brace: Span {
                    line: 15,
                    column: 23,
                    position: 223,
                },
                statements: [
                    Expression(
                        ExpressionStatement {
                            expression: AssignmentOperation(
                                Assign {
                                    left: Variable(
                                        SimpleVariable(
                                            SimpleVariable {
                                                span: Span {
                                                    line: 16,
                                                    column: 3,
                                                    position: 227,
                                                },
                                                name: "$\xf0\x9f\x92\xbb",
                                            },
                                        ),
                                    ),
                                    equals: Span {
                                        line: 16,
                                        column: 9,
                                        position: 233,
                                    },
                                    right: New {
                                        new: Span {
                                            line: 16,
                                            column: 11,
                                            position: 235,
                                        },
                                        target: Identifier(
                                            SimpleIdentifier(
                                                SimpleIdentifier {
                                                    span: Span {
                                                        line: 16,
                                                        column: 15,
                                                        position: 239,
                                                    },
                                                    value: "\xf0\x9f\x92\xbb",
                                                },
                                            ),
                                        ),
                                        arguments: Some(
                                            ArgumentList {
                                                comments: CommentGroup {
                                                    comments: [],
                                                },
                                                left_parenthesis: Span {
                                                    line: 16,
                                                    column: 19,
                                                    position: 243,
                                                },
                                                arguments: [],
                                                right_parenthesis: Span {
                                                    line: 16,
                                                    column: 20,
                                                    position: 244,
                                                },
                                            },
                                        ),
                                    },
                                },
                            ),
                            ending: Semicolon(
                                Span {
                                    line: 16,
                                    column: 21,
                                    position: 245,
                                },
                            ),
                        },
                    ),
                    Expression(
                        ExpressionStatement {
                            expression: AssignmentOperation(
                                Assign {
                                    left: Variable(
                                        SimpleVariable(
                                            SimpleVariable {
                                                span: Span {
                                                    line: 17,
                                                    column: 3,
                                                    position: 249,
                                                },
                                                name: "$\xf0\x9f\x93\x84",
                                            },
                                        ),
                                    ),
                                    equals: Span {
                                        line: 17,
                                        column: 9,
                                        position: 255,
                                    },
                                    right: Literal(
                                        String(
                                            LiteralString {
                                                value: ""hello, world"",
                                                span: Span {
                                                    line: 17,
                                                    column: 11,
                                                    position: 257,
                                                },
                                            },
                                        ),
                                    ),
                                },
                            ),
                            ending: Semicolon(
                                Span {
                                    line: 17,
                                    column: 25,
                                    position: 271,
                                },
                            ),
                        },
                    ),
                    Expression(
                        ExpressionStatement {
                            expression: MethodCall {
                                target: Variable(
                                    SimpleVariable(
                                        SimpleVariable {
                                            span: Span {
                                                line: 18,
                                                column: 3,
                                                position: 275,
                                            },
                                            name: "$\xf0\x9f\x92\xbb",
                                        },
                                    ),
                                ),
                                arrow: Span {
                                    line: 18,
                                    column: 8,
                                    position: 280,
                                },
                                method: Identifier(
                                    SimpleIdentifier(
                                        SimpleIdentifier {
                                            span: Span {
                                                line: 18,
                                                column: 10,
                                                position: 282,
                                            },
                                            value: "\xf0\x9f\x93\x9d",
                                        },
                                    ),
                                ),
                                arguments: ArgumentList {
                                    comments: CommentGroup {
                                        comments: [],
                                    },
                                    left_parenthesis: Span {
                                        line: 18,
                                        column: 14,
                                        position: 286,
                                    },
                                    arguments: [
                                        Named {
                                            comments: CommentGroup {
                                                comments: [],
                                            },
                                            name: SimpleIdentifier {
                                                span: Span {
                                                    line: 18,
                                                    column: 15,
                                                    position: 287,
                                                },
                                                value: "\xf0\x9f\x93\x83",
                                            },
                                            colon: Span {
                                                line: 18,
                                                column: 19,
                                                position: 291,
                                            },
                                            ellipsis: None,
                                            value: Variable(
                                                SimpleVariable(
                                                    SimpleVariable {
                                                        span: Span {
                                                            line: 18,
                                                            column: 21,
                                                            position: 293,
                                                        },
                                                        name: "$\xf0\x9f\x93\x84",
                                                    },
                                                ),
                                            ),
                                        },
                                    ],
                                    right_parenthesis: Span {
                                        line: 18,
                                        column: 26,
                                        position: 298,
                                    },
                                },
                            },
                            ending: Semicolon(
                                Span {
                                    line: 18,
                                    column: 27,
                                    position: 299,
                                },
                            ),
                        },
                    ),
                ],
                right_brace: Span {
                    line: 19,
                    column: 1,
                    position: 301,
                },
            },
        },
    ),
    Expression(
        ExpressionStatement {
            expression: FunctionCall {
                target: Identifier(
                    SimpleIdentifier(
                        SimpleIdentifier {
                            span: Span {
                                line: 21,
                                column: 1,
                                position: 304,
                            },
                            value: "\xf0\x9f\x9a\xaa",
                        },
                    ),
                ),
                arguments: ArgumentList {
                    comments: CommentGroup {
                        comments: [],
                    },
                    left_parenthesis: Span {
                        line: 21,
                        column: 5,
                        position: 308,
                    },
                    arguments: [],
                    right_parenthesis: Span {
                        line: 21,
                        column: 6,
                        position: 309,
                    },
                },
            },
            ending: Semicolon(
                Span {
                    line: 21,
                    column: 7,
                    position: 310,
                },
            ),
        },
    ),
    Expression(
        ExpressionStatement {
            expression: AssignmentOperation(
                Assign {
                    left: Variable(
                        SimpleVariable(
                            SimpleVariable {
                                span: Span {
                                    line: 23,
                                    column: 1,
                                    position: 313,
                                },
                                name: "$var\xef\xbf\xbd",
                            },
                        ),
                    ),
                    equals: Span {
                        line: 23,
                        column: 9,
                        position: 321,
                    },
                    right: Literal(
                        Integer(
                            LiteralInteger {
                                value: "1",
                                span: Span {
                                    line: 23,
                                    column: 11,
                                    position: 323,
                                },
                            },
                        ),
                    ),
                },
            ),
            ending: Semicolon(
                Span {
                    line: 23,
                    column: 12,
                    position: 324,
                },
            ),
        },
    ),
    Echo(
        EchoStatement {
            echo: Span {
                line: 23,
                column: 14,
                position: 326,
            },
            values: [
                Variable(
                    SimpleVariable(
                        SimpleVariable {
                            span: Span {
                                line: 23,
                                column: 19,
                                position: 331,
                            },
                            name: "$var\xef\xbf\xbd",
                        },
                    ),
                ),
            ],
            ending: Semicolon(
                Span {
                    line: 23,
                    column: 26,
                    position: 338,
                },
            ),
        },
    ),
]
