[
    FullOpeningTag(
        Span {
            line: 1,
            column: 1,
            position: 0,
        },
    ),
    Function(
        FunctionStatement {
            comments: CommentGroup {
                comments: [
                    Comment {
                        span: Span {
                            line: 3,
                            column: 1,
                            position: 7,
                        },
                        format: Document,
                        content: "/**\n * A function with a lot of comments.\n */",
                    },
                ],
            },
            attributes: [],
            function: Span {
                line: 6,
                column: 1,
                position: 53,
            },
            ampersand: None,
            name: SimpleIdentifier {
                span: Span {
                    line: 6,
                    column: 10,
                    position: 62,
                },
                value: "foo",
            },
            parameters: FunctionParameterList {
                comments: CommentGroup {
                    comments: [
                        Comment {
                            span: Span {
                                line: 7,
                                column: 5,
                                position: 70,
                            },
                            format: SingleLine,
                            content: "// a single line comment on all parameters",
                        },
                    ],
                },
                left_parenthesis: Span {
                    line: 8,
                    column: 5,
                    position: 117,
                },
                parameters: CommaSeparated {
                    inner: [
                        FunctionParameter {
                            comments: CommentGroup {
                                comments: [
                                    Comment {
                                        span: Span {
                                            line: 9,
                                            column: 9,
                                            position: 127,
                                        },
                                        format: SingleLine,
                                        content: "// a single line comment on the first parameter",
                                    },
                                    Comment {
                                        span: Span {
                                            line: 10,
                                            column: 16,
                                            position: 190,
                                        },
                                        format: MultiLine,
                                        content: "/* a comment between `string` and `$a` */",
                                    },
                                ],
                            },
                            name: SimpleVariable {
                                span: Span {
                                    line: 10,
                                    column: 58,
                                    position: 232,
                                },
                                name: "$a",
                            },
                            attributes: [],
                            data_type: Some(
                                String(
                                    Span {
                                        line: 10,
                                        column: 9,
                                        position: 183,
                                    },
                                ),
                            ),
                            ellipsis: None,
                            default: None,
                            ampersand: None,
                        },
                        FunctionParameter {
                            comments: CommentGroup {
                                comments: [
                                    Comment {
                                        span: Span {
                                            line: 11,
                                            column: 9,
                                            position: 244,
                                        },
                                        format: HashMark,
                                        content: "# a hash comment on the second parameter",
                                    },
                                    Comment {
                                        span: Span {
                                            line: 12,
                                            column: 16,
                                            position: 300,
                                        },
                                        format: MultiLine,
                                        content: "/* a comment between `string` and `$b` */",
                                    },
                                ],
                            },
                            name: SimpleVariable {
                                span: Span {
                                    line: 12,
                                    column: 58,
                                    position: 342,
                                },
                                name: "$b",
                            },
                            attributes: [],
                            data_type: Some(
                                String(
                                    Span {
                                        line: 12,
                                        column: 9,
                                        position: 293,
                                    },
                                ),
                            ),
                            ellipsis: None,
                            default: None,
                            ampersand: None,
                        },
                        FunctionParameter {
                            comments: CommentGroup {
                                comments: [
                                    Comment {
                                        span: Span {
                                            line: 13,
                                            column: 9,
                                            position: 354,
                                        },
                                        format: MultiLine,
                                        content: "/* a multi-line comment on the third parameter */",
                                    },
                                    Comment {
                                        span: Span {
                                            line: 14,
                                            column: 16,
                                            position: 419,
                                        },
                                        format: MultiLine,
                                        content: "/* a comment between `string` and `$c` */",
                                    },
                                ],
                            },
                            name: SimpleVariable {
                                span: Span {
                                    line: 14,
                                    column: 58,
                                    position: 461,
                                },
                                name: "$c",
                            },
                            attributes: [],
                            data_type: Some(
                                String(
                                    Span {
                                        line: 14,
                                        column: 9,
                                        position: 412,
                                    },
                                ),
                            ),
                            ellipsis: None,
                            default: None,
                            ampersand: None,
                        },
                        FunctionParameter {
                            comments: CommentGroup {
                                comments: [
                                    Comment {
                                        span: Span {
                                            line: 15,
                                            column: 9,
                                            position: 473,
                                        },
                                        format: Document,
                                        content: "/** a document comment on the fourth parameter */",
                                    },
                                    Comment {
                                        span: Span {
                                            line: 16,
                                            column: 16,
                                            position: 538,
                                        },
                                        format: MultiLine,
                                        content: "/* a comment between `string` and `$d` */",
                                    },
                                ],
                            },
                            name: SimpleVariable {
                                span: Span {
                                    line: 16,
                                    column: 58,
                                    position: 580,
                                },
                                name: "$d",
                            },
                            attributes: [],
                            data_type: Some(
                                String(
                                    Span {
                                        line: 16,
                                        column: 9,
                                        position: 531,
                                    },
                                ),
                            ),
                            ellipsis: None,
                            default: None,
                            ampersand: None,
                        },
                    ],
                    commas: [
                        Span {
                            line: 10,
                            column: 60,
                            position: 234,
                        },
                        Span {
                            line: 12,
                            column: 60,
                            position: 344,
                        },
                        Span {
                            line: 14,
                            column: 60,
                            position: 463,
                        },
                        Span {
                            line: 16,
                            column: 60,
                            position: 582,
                        },
                    ],
                },
                right_parenthesis: Span {
                    line: 17,
                    column: 5,
                    position: 588,
                },
            },
            return_type: None,
            body: FunctionBody {
                comments: CommentGroup {
                    comments: [],
                },
                left_brace: Span {
                    line: 18,
                    column: 1,
                    position: 590,
                },
                statements: [],
                right_brace: Span {
                    line: 18,
                    column: 2,
                    position: 591,
                },
            },
        },
    ),
]
