[
    Declare(
        Declare {
            span: (
                11,
                1,
            ),
            entries: DeclareEntryGroup {
                start: (
                    11,
                    8,
                ),
                end: (
                    11,
                    23,
                ),
                entries: [
                    DeclareEntry {
                        key: SimpleIdentifier {
                            span: (
                                11,
                                9,
                            ),
                            value: "strict_types",
                        },
                        span: (
                            11,
                            21,
                        ),
                        value: LiteralInteger {
                            span: (
                                11,
                                22,
                            ),
                            value: "1",
                        },
                    },
                ],
            },
            body: Noop {
                span: (
                    11,
                    24,
                ),
            },
        },
    ),
    Namespace(
        Unbraced(
            UnbracedNamespace {
                start: (
                    13,
                    1,
                ),
                end: (
                    13,
                    23,
                ),
                name: SimpleIdentifier {
                    span: (
                        13,
                        11,
                    ),
                    value: "Psl\Internal",
                },
                statements: [
                    Use {
                        uses: [
                            Use {
                                name: SimpleIdentifier {
                                    span: (
                                        15,
                                        5,
                                    ),
                                    value: "Closure",
                                },
                                alias: None,
                                kind: None,
                            },
                        ],
                        kind: Normal,
                    },
                    Use {
                        uses: [
                            Use {
                                name: SimpleIdentifier {
                                    span: (
                                        16,
                                        5,
                                    ),
                                    value: "Psl\Str",
                                },
                                alias: None,
                                kind: None,
                            },
                        ],
                        kind: Normal,
                    },
                    Use {
                        uses: [
                            Use {
                                name: SimpleIdentifier {
                                    span: (
                                        18,
                                        14,
                                    ),
                                    value: "restore_error_handler",
                                },
                                alias: None,
                                kind: None,
                            },
                        ],
                        kind: Function,
                    },
                    Use {
                        uses: [
                            Use {
                                name: SimpleIdentifier {
                                    span: (
                                        19,
                                        14,
                                    ),
                                    value: "set_error_handler",
                                },
                                alias: None,
                                kind: None,
                            },
                        ],
                        kind: Function,
                    },
                    Function(
                        Function {
                            start: (
                                32,
                                1,
                            ),
                            end: (
                                61,
                                1,
                            ),
                            name: SimpleIdentifier {
                                span: (
                                    32,
                                    10,
                                ),
                                value: "box",
                            },
                            attributes: [],
                            parameters: FunctionParameterList {
                                start: (
                                    32,
                                    13,
                                ),
                                end: (
                                    32,
                                    27,
                                ),
                                members: [
                                    FunctionParameter {
                                        start: (
                                            32,
                                            14,
                                        ),
                                        end: (
                                            32,
                                            26,
                                        ),
                                        name: SimpleVariable {
                                            span: (
                                                32,
                                                22,
                                            ),
                                            name: "fun",
                                        },
                                        attributes: [],
                                        type: Some(
                                            Identifier(
                                                SimpleIdentifier {
                                                    span: (
                                                        32,
                                                        14,
                                                    ),
                                                    value: "Closure",
                                                },
                                            ),
                                        ),
                                        variadic: false,
                                        default: None,
                                        by_ref: false,
                                    },
                                ],
                            },
                            return_type: Some(
                                Array,
                            ),
                            by_ref: false,
                            body: [
                                Expression {
                                    expression: AssignmentOperation(
                                        Assign {
                                            left: Variable(
                                                SimpleVariable(
                                                    SimpleVariable {
                                                        span: (
                                                            34,
                                                            5,
                                                        ),
                                                        name: "last_message",
                                                    },
                                                ),
                                            ),
                                            span: (
                                                34,
                                                19,
                                            ),
                                            right: Null,
                                        },
                                    ),
                                    end: (
                                        34,
                                        25,
                                    ),
                                },
                                Expression {
                                    expression: FunctionCall {
                                        target: Identifier(
                                            SimpleIdentifier(
                                                SimpleIdentifier {
                                                    span: (
                                                        36,
                                                        5,
                                                    ),
                                                    value: "set_error_handler",
                                                },
                                            ),
                                        ),
                                        arguments: ArgumentList {
                                            start: (
                                                36,
                                                22,
                                            ),
                                            arguments: [
                                                Positional {
                                                    ellipsis: None,
                                                    value: Closure(
                                                        Closure {
                                                            start: (
                                                                36,
                                                                23,
                                                            ),
                                                            end: (
                                                                38,
                                                                5,
                                                            ),
                                                            attributes: [],
                                                            parameters: FunctionParameterList {
                                                                start: (
                                                                    36,
                                                                    39,
                                                                ),
                                                                end: (
                                                                    36,
                                                                    69,
                                                                ),
                                                                members: [
                                                                    FunctionParameter {
                                                                        start: (
                                                                            36,
                                                                            40,
                                                                        ),
                                                                        end: (
                                                                            36,
                                                                            50,
                                                                        ),
                                                                        name: SimpleVariable {
                                                                            span: (
                                                                                36,
                                                                                44,
                                                                            ),
                                                                            name: "_type",
                                                                        },
                                                                        attributes: [],
                                                                        type: Some(
                                                                            Integer,
                                                                        ),
                                                                        variadic: false,
                                                                        default: None,
                                                                        by_ref: false,
                                                                    },
                                                                    FunctionParameter {
                                                                        start: (
                                                                            36,
                                                                            52,
                                                                        ),
                                                                        end: (
                                                                            36,
                                                                            67,
                                                                        ),
                                                                        name: SimpleVariable {
                                                                            span: (
                                                                                36,
                                                                                59,
                                                                            ),
                                                                            name: "message",
                                                                        },
                                                                        attributes: [],
                                                                        type: Some(
                                                                            String,
                                                                        ),
                                                                        variadic: false,
                                                                        default: None,
                                                                        by_ref: false,
                                                                    },
                                                                ],
                                                            },
                                                            return_ty: None,
                                                            uses: [
                                                                ClosureUse {
                                                                    var: Variable(
                                                                        SimpleVariable(
                                                                            SimpleVariable {
                                                                                span: (
                                                                                    36,
                                                                                    75,
                                                                                ),
                                                                                name: "last_message",
                                                                            },
                                                                        ),
                                                                    ),
                                                                    by_ref: true,
                                                                },
                                                            ],
                                                            by_ref: false,
                                                            body: [
                                                                Expression {
                                                                    expression: AssignmentOperation(
                                                                        Assign {
                                                                            left: Variable(
                                                                                SimpleVariable(
                                                                                    SimpleVariable {
                                                                                        span: (
                                                                                            37,
                                                                                            9,
                                                                                        ),
                                                                                        name: "last_message",
                                                                                    },
                                                                                ),
                                                                            ),
                                                                            span: (
                                                                                37,
                                                                                23,
                                                                            ),
                                                                            right: Variable(
                                                                                SimpleVariable(
                                                                                    SimpleVariable {
                                                                                        span: (
                                                                                            37,
                                                                                            25,
                                                                                        ),
                                                                                        name: "message",
                                                                                    },
                                                                                ),
                                                                            ),
                                                                        },
                                                                    ),
                                                                    end: (
                                                                        37,
                                                                        33,
                                                                    ),
                                                                },
                                                            ],
                                                            static: true,
                                                        },
                                                    ),
                                                },
                                            ],
                                            end: (
                                                38,
                                                6,
                                            ),
                                        },
                                    },
                                    end: (
                                        38,
                                        7,
                                    ),
                                },
                                If {
                                    condition: LogicalOperation(
                                        And {
                                            left: ComparisonOperation(
                                                NotIdentical {
                                                    left: Null,
                                                    span: (
                                                        43,
                                                        14,
                                                    ),
                                                    right: Variable(
                                                        SimpleVariable(
                                                            SimpleVariable {
                                                                span: (
                                                                    43,
                                                                    18,
                                                                ),
                                                                name: "last_message",
                                                            },
                                                        ),
                                                    ),
                                                },
                                            ),
                                            span: (
                                                43,
                                                32,
                                            ),
                                            right: FunctionCall {
                                                target: Identifier(
                                                    SimpleIdentifier(
                                                        SimpleIdentifier {
                                                            span: (
                                                                43,
                                                                35,
                                                            ),
                                                            value: "Str\contains",
                                                        },
                                                    ),
                                                ),
                                                arguments: ArgumentList {
                                                    start: (
                                                        43,
                                                        47,
                                                    ),
                                                    arguments: [
                                                        Positional {
                                                            ellipsis: None,
                                                            value: Variable(
                                                                SimpleVariable(
                                                                    SimpleVariable {
                                                                        span: (
                                                                            43,
                                                                            48,
                                                                        ),
                                                                        name: "last_message",
                                                                    },
                                                                ),
                                                            ),
                                                        },
                                                        Positional {
                                                            ellipsis: None,
                                                            value: LiteralString {
                                                                span: (
                                                                    43,
                                                                    63,
                                                                ),
                                                                value: "): ",
                                                            },
                                                        },
                                                    ],
                                                    end: (
                                                        43,
                                                        68,
                                                    ),
                                                },
                                            },
                                        },
                                    ),
                                    then: [
                                        Expression {
                                            expression: AssignmentOperation(
                                                Assign {
                                                    left: Variable(
                                                        SimpleVariable(
                                                            SimpleVariable {
                                                                span: (
                                                                    44,
                                                                    9,
                                                                ),
                                                                name: "last_message",
                                                            },
                                                        ),
                                                    ),
                                                    span: (
                                                        44,
                                                        23,
                                                    ),
                                                    right: FunctionCall {
                                                        target: Identifier(
                                                            SimpleIdentifier(
                                                                SimpleIdentifier {
                                                                    span: (
                                                                        44,
                                                                        25,
                                                                    ),
                                                                    value: "Str\after",
                                                                },
                                                            ),
                                                        ),
                                                        arguments: ArgumentList {
                                                            start: (
                                                                44,
                                                                34,
                                                            ),
                                                            arguments: [
                                                                Positional {
                                                                    ellipsis: None,
                                                                    value: FunctionCall {
                                                                        target: Identifier(
                                                                            SimpleIdentifier(
                                                                                SimpleIdentifier {
                                                                                    span: (
                                                                                        45,
                                                                                        13,
                                                                                    ),
                                                                                    value: "Str\lowercase",
                                                                                },
                                                                            ),
                                                                        ),
                                                                        arguments: ArgumentList {
                                                                            start: (
                                                                                45,
                                                                                26,
                                                                            ),
                                                                            arguments: [
                                                                                Positional {
                                                                                    ellipsis: None,
                                                                                    value: Variable(
                                                                                        SimpleVariable(
                                                                                            SimpleVariable {
                                                                                                span: (
                                                                                                    45,
                                                                                                    27,
                                                                                                ),
                                                                                                name: "last_message",
                                                                                            },
                                                                                        ),
                                                                                    ),
                                                                                },
                                                                            ],
                                                                            end: (
                                                                                45,
                                                                                40,
                                                                            ),
                                                                        },
                                                                    },
                                                                },
                                                                Positional {
                                                                    ellipsis: None,
                                                                    value: LiteralString {
                                                                        span: (
                                                                            47,
                                                                            13,
                                                                        ),
                                                                        value: "): ",
                                                                    },
                                                                },
                                                            ],
                                                            end: (
                                                                48,
                                                                9,
                                                            ),
                                                        },
                                                    },
                                                },
                                            ),
                                            end: (
                                                48,
                                                10,
                                            ),
                                        },
                                    ],
                                    else_ifs: [],
                                    else: None,
                                },
                                Try(
                                    TryBlock {
                                        start: (
                                            51,
                                            5,
                                        ),
                                        end: (
                                            61,
                                            1,
                                        ),
                                        body: [
                                            Expression {
                                                expression: AssignmentOperation(
                                                    Assign {
                                                        left: Variable(
                                                            SimpleVariable(
                                                                SimpleVariable {
                                                                    span: (
                                                                        52,
                                                                        9,
                                                                    ),
                                                                    name: "value",
                                                                },
                                                            ),
                                                        ),
                                                        span: (
                                                            52,
                                                            16,
                                                        ),
                                                        right: FunctionCall {
                                                            target: Variable(
                                                                SimpleVariable(
                                                                    SimpleVariable {
                                                                        span: (
                                                                            52,
                                                                            18,
                                                                        ),
                                                                        name: "fun",
                                                                    },
                                                                ),
                                                            ),
                                                            arguments: ArgumentList {
                                                                start: (
                                                                    52,
                                                                    22,
                                                                ),
                                                                arguments: [],
                                                                end: (
                                                                    52,
                                                                    23,
                                                                ),
                                                            },
                                                        },
                                                    },
                                                ),
                                                end: (
                                                    52,
                                                    24,
                                                ),
                                            },
                                            Expression {
                                                expression: AssignmentOperation(
                                                    Assign {
                                                        left: Variable(
                                                            SimpleVariable(
                                                                SimpleVariable {
                                                                    span: (
                                                                        55,
                                                                        9,
                                                                    ),
                                                                    name: "result",
                                                                },
                                                            ),
                                                        ),
                                                        span: (
                                                            55,
                                                            17,
                                                        ),
                                                        right: Array {
                                                            items: [
                                                                ArrayItem {
                                                                    key: None,
                                                                    value: Variable(
                                                                        SimpleVariable(
                                                                            SimpleVariable {
                                                                                span: (
                                                                                    55,
                                                                                    20,
                                                                                ),
                                                                                name: "value",
                                                                            },
                                                                        ),
                                                                    ),
                                                                    unpack: false,
                                                                    by_ref: false,
                                                                },
                                                                ArrayItem {
                                                                    key: None,
                                                                    value: Variable(
                                                                        SimpleVariable(
                                                                            SimpleVariable {
                                                                                span: (
                                                                                    55,
                                                                                    28,
                                                                                ),
                                                                                name: "last_message",
                                                                            },
                                                                        ),
                                                                    ),
                                                                    unpack: false,
                                                                    by_ref: false,
                                                                },
                                                            ],
                                                        },
                                                    },
                                                ),
                                                end: (
                                                    55,
                                                    42,
                                                ),
                                            },
                                            Return {
                                                value: Some(
                                                    Variable(
                                                        SimpleVariable(
                                                            SimpleVariable {
                                                                span: (
                                                                    57,
                                                                    16,
                                                                ),
                                                                name: "result",
                                                            },
                                                        ),
                                                    ),
                                                ),
                                            },
                                        ],
                                        catches: [],
                                        finally: Some(
                                            FinallyBlock {
                                                start: (
                                                    58,
                                                    7,
                                                ),
                                                end: (
                                                    61,
                                                    1,
                                                ),
                                                body: [
                                                    Expression {
                                                        expression: FunctionCall {
                                                            target: Identifier(
                                                                SimpleIdentifier(
                                                                    SimpleIdentifier {
                                                                        span: (
                                                                            59,
                                                                            9,
                                                                        ),
                                                                        value: "restore_error_handler",
                                                                    },
                                                                ),
                                                            ),
                                                            arguments: ArgumentList {
                                                                start: (
                                                                    59,
                                                                    30,
                                                                ),
                                                                arguments: [],
                                                                end: (
                                                                    59,
                                                                    31,
                                                                ),
                                                            },
                                                        },
                                                        end: (
                                                            59,
                                                            32,
                                                        ),
                                                    },
                                                ],
                                            },
                                        ),
                                    },
                                ),
                            ],
                        },
                    ),
                ],
            },
        ),
    ),
]
