[
    FullOpeningTag(
        Span(
            1,
            1,
        ),
    ),
    Constant(
        Constant {
            comments: CommentGroup {
                comments: [],
            },
            const: Span(
                3,
                1,
            ),
            entries: [
                ConstantEntry {
                    name: SimpleIdentifier {
                        span: Span(
                            3,
                            7,
                        ),
                        value: "\xe2\x86\xaa",
                    },
                    equals: Span(
                        3,
                        11,
                    ),
                    value: Literal(
                        String(
                            LiteralString {
                                value: "\n",
                                span: Span(
                                    3,
                                    13,
                                ),
                            },
                        ),
                    ),
                },
            ],
            semicolon: Span(
                3,
                17,
            ),
        },
    ),
    Interface(
        Interface {
            attributes: [],
            span: Span(
                5,
                1,
            ),
            name: SimpleIdentifier {
                span: Span(
                    5,
                    11,
                ),
                value: "\xf0\x9f\x94\x8a",
            },
            extends: None,
            body: InterfaceBody {
                left_brace: Span(
                    5,
                    16,
                ),
                members: [
                    Method(
                        AbstractMethod {
                            comments: CommentGroup {
                                comments: [],
                            },
                            attributes: [],
                            modifiers: MethodModifierGroup {
                                modifiers: [
                                    Public(
                                        Span(
                                            6,
                                            3,
                                        ),
                                    ),
                                ],
                            },
                            function: Span(
                                6,
                                10,
                            ),
                            ampersand: None,
                            name: SimpleIdentifier {
                                span: Span(
                                    6,
                                    19,
                                ),
                                value: "\xf0\x9f\x93\x9d",
                            },
                            parameters: FunctionParameterList {
                                comments: CommentGroup {
                                    comments: [],
                                },
                                left_parenthesis: Span(
                                    6,
                                    23,
                                ),
                                parameters: CommaSeparated {
                                    inner: [
                                        FunctionParameter {
                                            comments: CommentGroup {
                                                comments: [],
                                            },
                                            name: SimpleVariable {
                                                span: Span(
                                                    6,
                                                    31,
                                                ),
                                                name: "\xf0\x9f\x93\x83",
                                            },
                                            attributes: [],
                                            data_type: Some(
                                                String(
                                                    Span(
                                                        6,
                                                        24,
                                                    ),
                                                ),
                                            ),
                                            ellipsis: None,
                                            default: None,
                                            ampersand: None,
                                        },
                                    ],
                                    commas: [],
                                },
                                right_parenthesis: Span(
                                    6,
                                    36,
                                ),
                            },
                            return_type: Some(
                                ReturnType {
                                    colon: Span(
                                        6,
                                        37,
                                    ),
                                    data_type: Void(
                                        Span(
                                            6,
                                            39,
                                        ),
                                    ),
                                },
                            ),
                            semicolon: Span(
                                6,
                                43,
                            ),
                        },
                    ),
                ],
                right_brace: Span(
                    7,
                    1,
                ),
            },
        },
    ),
    Class(
        Class {
            attributes: [],
            modifiers: ClassModifierGroup {
                modifiers: [
                    Final(
                        Span(
                            9,
                            1,
                        ),
                    ),
                ],
            },
            class: Span(
                9,
                7,
            ),
            name: SimpleIdentifier {
                span: Span(
                    9,
                    13,
                ),
                value: "\xf0\x9f\x92\xbb",
            },
            extends: None,
            implements: Some(
                ClassImplements {
                    implements: Span(
                        9,
                        18,
                    ),
                    interfaces: CommaSeparated {
                        inner: [
                            SimpleIdentifier {
                                span: Span(
                                    9,
                                    29,
                                ),
                                value: "\xf0\x9f\x94\x8a",
                            },
                        ],
                        commas: [],
                    },
                },
            ),
            body: ClassBody {
                left_brace: Span(
                    9,
                    34,
                ),
                members: [
                    ConcreteMethod(
                        ConcreteMethod {
                            comments: CommentGroup {
                                comments: [],
                            },
                            attributes: [],
                            modifiers: MethodModifierGroup {
                                modifiers: [
                                    Public(
                                        Span(
                                            10,
                                            3,
                                        ),
                                    ),
                                ],
                            },
                            function: Span(
                                10,
                                10,
                            ),
                            ampersand: None,
                            name: SimpleIdentifier {
                                span: Span(
                                    10,
                                    19,
                                ),
                                value: "\xf0\x9f\x93\x9d",
                            },
                            parameters: FunctionParameterList {
                                comments: CommentGroup {
                                    comments: [],
                                },
                                left_parenthesis: Span(
                                    10,
                                    23,
                                ),
                                parameters: CommaSeparated {
                                    inner: [
                                        FunctionParameter {
                                            comments: CommentGroup {
                                                comments: [],
                                            },
                                            name: SimpleVariable {
                                                span: Span(
                                                    10,
                                                    31,
                                                ),
                                                name: "\xf0\x9f\x93\x83",
                                            },
                                            attributes: [],
                                            data_type: Some(
                                                String(
                                                    Span(
                                                        10,
                                                        24,
                                                    ),
                                                ),
                                            ),
                                            ellipsis: None,
                                            default: None,
                                            ampersand: None,
                                        },
                                    ],
                                    commas: [],
                                },
                                right_parenthesis: Span(
                                    10,
                                    36,
                                ),
                            },
                            return_type: Some(
                                ReturnType {
                                    colon: Span(
                                        10,
                                        37,
                                    ),
                                    data_type: Void(
                                        Span(
                                            10,
                                            39,
                                        ),
                                    ),
                                },
                            ),
                            body: MethodBody {
                                comments: CommentGroup {
                                    comments: [],
                                },
                                left_brace: Span(
                                    10,
                                    44,
                                ),
                                statements: [
                                    Expression {
                                        expression: Print {
                                            span: Span(
                                                11,
                                                5,
                                            ),
                                            value: Parenthesized {
                                                start: Span(
                                                    11,
                                                    10,
                                                ),
                                                expr: Concat {
                                                    left: Variable(
                                                        SimpleVariable(
                                                            SimpleVariable {
                                                                span: Span(
                                                                    11,
                                                                    11,
                                                                ),
                                                                name: "\xf0\x9f\x93\x83",
                                                            },
                                                        ),
                                                    ),
                                                    span: Span(
                                                        11,
                                                        17,
                                                    ),
                                                    right: Identifier(
                                                        SimpleIdentifier(
                                                            SimpleIdentifier {
                                                                span: Span(
                                                                    11,
                                                                    19,
                                                                ),
                                                                value: "\xe2\x86\xaa",
                                                            },
                                                        ),
                                                    ),
                                                },
                                                end: Span(
                                                    11,
                                                    22,
                                                ),
                                            },
                                        },
                                        ending: Semicolon(
                                            Span(
                                                11,
                                                23,
                                            ),
                                        ),
                                    },
                                ],
                                right_brace: Span(
                                    12,
                                    3,
                                ),
                            },
                        },
                    ),
                ],
                right_brace: Span(
                    13,
                    1,
                ),
            },
        },
    ),
    Function(
        Function {
            comments: CommentGroup {
                comments: [],
            },
            attributes: [],
            function: Span(
                15,
                1,
            ),
            ampersand: None,
            name: SimpleIdentifier {
                span: Span(
                    15,
                    10,
                ),
                value: "\xf0\x9f\x9a\xaa",
            },
            parameters: FunctionParameterList {
                comments: CommentGroup {
                    comments: [],
                },
                left_parenthesis: Span(
                    15,
                    14,
                ),
                parameters: CommaSeparated {
                    inner: [],
                    commas: [],
                },
                right_parenthesis: Span(
                    15,
                    15,
                ),
            },
            return_type: Some(
                ReturnType {
                    colon: Span(
                        15,
                        16,
                    ),
                    data_type: Void(
                        Span(
                            15,
                            18,
                        ),
                    ),
                },
            ),
            body: FunctionBody {
                comments: CommentGroup {
                    comments: [],
                },
                left_brace: Span(
                    15,
                    23,
                ),
                statements: [
                    Expression {
                        expression: AssignmentOperation(
                            Assign {
                                left: Variable(
                                    SimpleVariable(
                                        SimpleVariable {
                                            span: Span(
                                                16,
                                                3,
                                            ),
                                            name: "\xf0\x9f\x92\xbb",
                                        },
                                    ),
                                ),
                                equals: Span(
                                    16,
                                    9,
                                ),
                                right: New {
                                    new: Span(
                                        16,
                                        11,
                                    ),
                                    target: Identifier(
                                        SimpleIdentifier(
                                            SimpleIdentifier {
                                                span: Span(
                                                    16,
                                                    15,
                                                ),
                                                value: "\xf0\x9f\x92\xbb",
                                            },
                                        ),
                                    ),
                                    arguments: Some(
                                        ArgumentList {
                                            comments: CommentGroup {
                                                comments: [],
                                            },
                                            left_parenthesis: Span(
                                                16,
                                                19,
                                            ),
                                            arguments: [],
                                            right_parenthesis: Span(
                                                16,
                                                20,
                                            ),
                                        },
                                    ),
                                },
                            },
                        ),
                        ending: Semicolon(
                            Span(
                                16,
                                21,
                            ),
                        ),
                    },
                    Expression {
                        expression: AssignmentOperation(
                            Assign {
                                left: Variable(
                                    SimpleVariable(
                                        SimpleVariable {
                                            span: Span(
                                                17,
                                                3,
                                            ),
                                            name: "\xf0\x9f\x93\x84",
                                        },
                                    ),
                                ),
                                equals: Span(
                                    17,
                                    9,
                                ),
                                right: Literal(
                                    String(
                                        LiteralString {
                                            value: "hello, world",
                                            span: Span(
                                                17,
                                                11,
                                            ),
                                        },
                                    ),
                                ),
                            },
                        ),
                        ending: Semicolon(
                            Span(
                                17,
                                25,
                            ),
                        ),
                    },
                    Expression {
                        expression: MethodCall {
                            target: Variable(
                                SimpleVariable(
                                    SimpleVariable {
                                        span: Span(
                                            18,
                                            3,
                                        ),
                                        name: "\xf0\x9f\x92\xbb",
                                    },
                                ),
                            ),
                            arrow: Span(
                                18,
                                8,
                            ),
                            method: Identifier(
                                SimpleIdentifier(
                                    SimpleIdentifier {
                                        span: Span(
                                            18,
                                            10,
                                        ),
                                        value: "\xf0\x9f\x93\x9d",
                                    },
                                ),
                            ),
                            arguments: ArgumentList {
                                comments: CommentGroup {
                                    comments: [],
                                },
                                left_parenthesis: Span(
                                    18,
                                    14,
                                ),
                                arguments: [
                                    Named {
                                        comments: CommentGroup {
                                            comments: [],
                                        },
                                        name: SimpleIdentifier {
                                            span: Span(
                                                18,
                                                15,
                                            ),
                                            value: "\xf0\x9f\x93\x83",
                                        },
                                        colon: Span(
                                            18,
                                            19,
                                        ),
                                        ellipsis: None,
                                        value: Variable(
                                            SimpleVariable(
                                                SimpleVariable {
                                                    span: Span(
                                                        18,
                                                        21,
                                                    ),
                                                    name: "\xf0\x9f\x93\x84",
                                                },
                                            ),
                                        ),
                                    },
                                ],
                                right_parenthesis: Span(
                                    18,
                                    26,
                                ),
                            },
                        },
                        ending: Semicolon(
                            Span(
                                18,
                                27,
                            ),
                        ),
                    },
                ],
                right_brace: Span(
                    19,
                    1,
                ),
            },
        },
    ),
    Expression {
        expression: FunctionCall {
            target: Identifier(
                SimpleIdentifier(
                    SimpleIdentifier {
                        span: Span(
                            21,
                            1,
                        ),
                        value: "\xf0\x9f\x9a\xaa",
                    },
                ),
            ),
            arguments: ArgumentList {
                comments: CommentGroup {
                    comments: [],
                },
                left_parenthesis: Span(
                    21,
                    5,
                ),
                arguments: [],
                right_parenthesis: Span(
                    21,
                    6,
                ),
            },
        },
        ending: Semicolon(
            Span(
                21,
                7,
            ),
        ),
    },
    Expression {
        expression: AssignmentOperation(
            Assign {
                left: Variable(
                    SimpleVariable(
                        SimpleVariable {
                            span: Span(
                                23,
                                1,
                            ),
                            name: "var\xef\xbf\xbd",
                        },
                    ),
                ),
                equals: Span(
                    23,
                    9,
                ),
                right: Literal(
                    Integer(
                        LiteralInteger {
                            value: "1",
                            span: Span(
                                23,
                                11,
                            ),
                        },
                    ),
                ),
            },
        ),
        ending: Semicolon(
            Span(
                23,
                12,
            ),
        ),
    },
    Echo {
        echo: Span(
            23,
            14,
        ),
        values: [
            Variable(
                SimpleVariable(
                    SimpleVariable {
                        span: Span(
                            23,
                            19,
                        ),
                        name: "var\xef\xbf\xbd",
                    },
                ),
            ),
        ],
        ending: Semicolon(
            Span(
                23,
                26,
            ),
        ),
    },
]
