[
    FullOpeningTag(
        FullOpeningTagStatement {
            span: Span {
                line: 1,
                column: 1,
                position: 0,
            },
        },
    ),
    Interface(
        InterfaceStatement {
            attributes: [],
            interface: Span {
                line: 3,
                column: 1,
                position: 7,
            },
            name: SimpleIdentifier {
                span: Span {
                    line: 3,
                    column: 11,
                    position: 17,
                },
                value: "A",
            },
            extends: None,
            body: InterfaceBody {
                left_brace: Span {
                    line: 3,
                    column: 13,
                    position: 19,
                },
                members: [],
                right_brace: Span {
                    line: 3,
                    column: 14,
                    position: 20,
                },
            },
        },
    ),
    Interface(
        InterfaceStatement {
            attributes: [],
            interface: Span {
                line: 4,
                column: 1,
                position: 22,
            },
            name: SimpleIdentifier {
                span: Span {
                    line: 4,
                    column: 11,
                    position: 32,
                },
                value: "B",
            },
            extends: None,
            body: InterfaceBody {
                left_brace: Span {
                    line: 4,
                    column: 13,
                    position: 34,
                },
                members: [],
                right_brace: Span {
                    line: 4,
                    column: 14,
                    position: 35,
                },
            },
        },
    ),
    Interface(
        InterfaceStatement {
            attributes: [],
            interface: Span {
                line: 5,
                column: 1,
                position: 37,
            },
            name: SimpleIdentifier {
                span: Span {
                    line: 5,
                    column: 11,
                    position: 47,
                },
                value: "C",
            },
            extends: None,
            body: InterfaceBody {
                left_brace: Span {
                    line: 5,
                    column: 13,
                    position: 49,
                },
                members: [],
                right_brace: Span {
                    line: 5,
                    column: 14,
                    position: 50,
                },
            },
        },
    ),
    Interface(
        InterfaceStatement {
            attributes: [],
            interface: Span {
                line: 6,
                column: 1,
                position: 52,
            },
            name: SimpleIdentifier {
                span: Span {
                    line: 6,
                    column: 11,
                    position: 62,
                },
                value: "D",
            },
            extends: None,
            body: InterfaceBody {
                left_brace: Span {
                    line: 6,
                    column: 13,
                    position: 64,
                },
                members: [],
                right_brace: Span {
                    line: 6,
                    column: 14,
                    position: 65,
                },
            },
        },
    ),
    Function(
        FunctionStatement {
            comments: CommentGroup {
                comments: [],
            },
            attributes: [],
            function: Span {
                line: 8,
                column: 1,
                position: 68,
            },
            ampersand: None,
            name: SimpleIdentifier {
                span: Span {
                    line: 8,
                    column: 10,
                    position: 77,
                },
                value: "foo",
            },
            parameters: FunctionParameterList {
                comments: CommentGroup {
                    comments: [],
                },
                left_parenthesis: Span {
                    line: 8,
                    column: 13,
                    position: 80,
                },
                parameters: CommaSeparated {
                    inner: [
                        FunctionParameter {
                            comments: CommentGroup {
                                comments: [],
                            },
                            name: SimpleVariable {
                                span: Span {
                                    line: 8,
                                    column: 24,
                                    position: 91,
                                },
                                name: "$a",
                            },
                            attributes: [],
                            data_type: Some(
                                Union(
                                    [
                                        Named(
                                            Span {
                                                line: 8,
                                                column: 14,
                                                position: 81,
                                            },
                                            "A",
                                        ),
                                        Intersection(
                                            [
                                                Named(
                                                    Span {
                                                        line: 8,
                                                        column: 17,
                                                        position: 84,
                                                    },
                                                    "B",
                                                ),
                                                Named(
                                                    Span {
                                                        line: 8,
                                                        column: 19,
                                                        position: 86,
                                                    },
                                                    "C",
                                                ),
                                                Named(
                                                    Span {
                                                        line: 8,
                                                        column: 21,
                                                        position: 88,
                                                    },
                                                    "D",
                                                ),
                                            ],
                                        ),
                                    ],
                                ),
                            ),
                            ellipsis: None,
                            default: None,
                            ampersand: None,
                        },
                    ],
                    commas: [],
                },
                right_parenthesis: Span {
                    line: 8,
                    column: 26,
                    position: 93,
                },
            },
            return_type: Some(
                ReturnType {
                    colon: Span {
                        line: 8,
                        column: 27,
                        position: 94,
                    },
                    data_type: Intersection(
                        [
                            Named(
                                Span {
                                    line: 8,
                                    column: 29,
                                    position: 96,
                                },
                                "A",
                            ),
                            Union(
                                [
                                    Named(
                                        Span {
                                            line: 8,
                                            column: 32,
                                            position: 99,
                                        },
                                        "B",
                                    ),
                                    Named(
                                        Span {
                                            line: 8,
                                            column: 34,
                                            position: 101,
                                        },
                                        "C",
                                    ),
                                    Named(
                                        Span {
                                            line: 8,
                                            column: 36,
                                            position: 103,
                                        },
                                        "D",
                                    ),
                                ],
                            ),
                        ],
                    ),
                },
            ),
            body: FunctionBody {
                comments: CommentGroup {
                    comments: [],
                },
                left_brace: Span {
                    line: 8,
                    column: 39,
                    position: 106,
                },
                statements: [
                    Expression(
                        ExpressionStatement {
                            expression: Exit(
                                ExitExpression {
                                    exit: Span {
                                        line: 9,
                                        column: 5,
                                        position: 112,
                                    },
                                    argument: Some(
                                        SingleArgument {
                                            comments: CommentGroup {
                                                comments: [],
                                            },
                                            left_parenthesis: Span {
                                                line: 9,
                                                column: 9,
                                                position: 116,
                                            },
                                            argument: Positional(
                                                PositionalArgument {
                                                    comments: CommentGroup {
                                                        comments: [],
                                                    },
                                                    ellipsis: None,
                                                    value: Literal(
                                                        Integer(
                                                            LiteralInteger {
                                                                value: "0",
                                                                span: Span {
                                                                    line: 9,
                                                                    column: 10,
                                                                    position: 117,
                                                                },
                                                            },
                                                        ),
                                                    ),
                                                },
                                            ),
                                            right_parenthesis: Span {
                                                line: 9,
                                                column: 11,
                                                position: 118,
                                            },
                                        },
                                    ),
                                },
                            ),
                            ending: Semicolon(
                                Span {
                                    line: 9,
                                    column: 12,
                                    position: 119,
                                },
                            ),
                        },
                    ),
                ],
                right_brace: Span {
                    line: 10,
                    column: 1,
                    position: 121,
                },
            },
        },
    ),
]
