{
  "programs": [
    "Program {\n    span: 208..2536,\n    kind: Script,\n    body: [\n        _,\n        _,\n        _,\n        _,\n        _,\n        _,\n        _,\n        _,\n        _,\n        _,\n        _,\n        _,\n        _,\n        _,\n        _,\n        _,\n        _,\n        _,\n        _,\n    ],\n}"
  ],
  "stmts": [
    "Expr(\n    ExprStmt {\n        span: 234..241,\n        expr: _,\n    },\n)",
    "Expr(\n    ExprStmt {\n        span: 278..285,\n        expr: _,\n    },\n)",
    "Expr(\n    ExprStmt {\n        span: 326..333,\n        expr: _,\n    },\n)",
    "Expr(\n    ExprStmt {\n        span: 376..388,\n        expr: _,\n    },\n)",
    "Decl(\n    _,\n)",
    "Expr(\n    ExprStmt {\n        span: 1219..1238,\n        expr: _,\n    },\n)",
    "Expr(\n    ExprStmt {\n        span: 1391..1443,\n        expr: _,\n    },\n)",
    "Labeled(\n    LabeledStmt {\n        span: 1387..1443,\n        label: Ident {\n            span: 1387..1389,\n            sym: \"a3\",\n        },\n        body: _,\n    },\n)",
    "Expr(\n    ExprStmt {\n        span: 1445..1546,\n        expr: _,\n    },\n)",
    "Labeled(\n    LabeledStmt {\n        span: 1441..1546,\n        label: Ident {\n            span: 1441..1443,\n            sym: \"a4\",\n        },\n        body: _,\n    },\n)",
    "Expr(\n    ExprStmt {\n        span: 1548..1647,\n        expr: _,\n    },\n)",
    "Labeled(\n    LabeledStmt {\n        span: 1544..1647,\n        label: Ident {\n            span: 1544..1546,\n            sym: \"a5\",\n        },\n        body: _,\n    },\n)",
    "Expr(\n    ExprStmt {\n        span: 1649..1764,\n        expr: _,\n    },\n)",
    "Labeled(\n    LabeledStmt {\n        span: 1645..1764,\n        label: Ident {\n            span: 1645..1647,\n            sym: \"a6\",\n        },\n        body: _,\n    },\n)",
    "Expr(\n    ExprStmt {\n        span: 1766..1848,\n        expr: _,\n    },\n)",
    "Labeled(\n    LabeledStmt {\n        span: 1762..1848,\n        label: Ident {\n            span: 1762..1764,\n            sym: \"a7\",\n        },\n        body: _,\n    },\n)",
    "Expr(\n    ExprStmt {\n        span: 1850..1951,\n        expr: _,\n    },\n)",
    "Labeled(\n    LabeledStmt {\n        span: 1846..1951,\n        label: Ident {\n            span: 1846..1848,\n            sym: \"a8\",\n        },\n        body: _,\n    },\n)",
    "Expr(\n    ExprStmt {\n        span: 1953..2126,\n        expr: _,\n    },\n)",
    "Labeled(\n    LabeledStmt {\n        span: 1949..2126,\n        label: Ident {\n            span: 1949..1951,\n            sym: \"a9\",\n        },\n        body: _,\n    },\n)",
    "Expr(\n    ExprStmt {\n        span: 2128..2178,\n        expr: _,\n    },\n)",
    "Labeled(\n    LabeledStmt {\n        span: 2123..2178,\n        label: Ident {\n            span: 2123..2126,\n            sym: \"a10\",\n        },\n        body: _,\n    },\n)",
    "Expr(\n    ExprStmt {\n        span: 2180..2228,\n        expr: _,\n    },\n)",
    "Labeled(\n    LabeledStmt {\n        span: 2175..2228,\n        label: Ident {\n            span: 2175..2178,\n            sym: \"a11\",\n        },\n        body: _,\n    },\n)",
    "Expr(\n    ExprStmt {\n        span: 2230..2338,\n        expr: _,\n    },\n)",
    "Labeled(\n    LabeledStmt {\n        span: 2225..2338,\n        label: Ident {\n            span: 2225..2228,\n            sym: \"a12\",\n        },\n        body: _,\n    },\n)",
    "Expr(\n    ExprStmt {\n        span: 2340..2495,\n        expr: _,\n    },\n)",
    "Labeled(\n    LabeledStmt {\n        span: 2335..2495,\n        label: Ident {\n            span: 2335..2338,\n            sym: \"a13\",\n        },\n        body: _,\n    },\n)",
    "Expr(\n    ExprStmt {\n        span: 2497..2536,\n        expr: _,\n    },\n)",
    "Labeled(\n    LabeledStmt {\n        span: 2492..2536,\n        label: Ident {\n            span: 2492..2495,\n            sym: \"a14\",\n        },\n        body: _,\n    },\n)",
    "Expr(\n    ExprStmt {\n        span: 2535..2536,\n        expr: _,\n    },\n)"
  ],
  "decls": [
    "TsInterface(\n    TsInterfaceDecl {\n        span: 379..1179,\n        ident: Ident {\n            span: 389..390,\n            sym: \"A\",\n        },\n        declare: false,\n        type_params: [],\n        extends: [],\n        body: [\n            TsTypeMember {\n                span: 413..447,\n                kind: Property,\n                name: Some(\n                    Ident(\n                        Ident {\n                            span: 413..414,\n                            sym: \"a\",\n                        },\n                    ),\n                ),\n                optional: false,\n                readonly: false,\n                params: [],\n                ty: Some(\n                    _,\n                ),\n            },\n            TsTypeMember {\n                span: 445..480,\n                kind: Property,\n                name: Some(\n                    Ident(\n                        Ident {\n                            span: 445..447,\n                            sym: \"a2\",\n                        },\n                    ),\n                ),\n                optional: false,\n                readonly: false,\n                params: [],\n                ty: Some(\n                    _,\n                ),\n            },\n            TsTypeMember {\n                span: 478..509,\n                kind: Property,\n                name: Some(\n                    Ident(\n                        Ident {\n                            span: 478..480,\n                            sym: \"a3\",\n                        },\n                    ),\n                ),\n                optional: false,\n                readonly: false,\n                params: [],\n                ty: Some(\n                    _,\n                ),\n            },\n            TsTypeMember {\n                span: 507..551,\n                kind: Property,\n                name: Some(\n                    Ident(\n                        Ident {\n                            span: 507..509,\n                            sym: \"a4\",\n                        },\n                    ),\n                ),\n                optional: false,\n                readonly: false,\n                params: [],\n                ty: Some(\n                    _,\n                ),\n            },\n            TsTypeMember {\n                span: 549..599,\n                kind: Property,\n                name: Some(\n                    Ident(\n                        Ident {\n                            span: 549..551,\n                            sym: \"a5\",\n                        },\n                    ),\n                ),\n                optional: false,\n                readonly: false,\n                params: [],\n                ty: Some(\n                    _,\n                ),\n            },\n            TsTypeMember {\n                span: 597..644,\n                kind: Property,\n                name: Some(\n                    Ident(\n                        Ident {\n                            span: 597..599,\n                            sym: \"a6\",\n                        },\n                    ),\n                ),\n                optional: false,\n                readonly: false,\n                params: [],\n                ty: Some(\n                    _,\n                ),\n            },\n            TsTypeMember {\n                span: 642..705,\n                kind: Property,\n                name: Some(\n                    Ident(\n                        Ident {\n                            span: 642..644,\n                            sym: \"a7\",\n                        },\n                    ),\n                ),\n                optional: false,\n                readonly: false,\n                params: [],\n                ty: Some(\n                    _,\n                ),\n            },\n            TsTypeMember {\n                span: 703..794,\n                kind: Property,\n                name: Some(\n                    Ident(\n                        Ident {\n                            span: 703..705,\n                            sym: \"a8\",\n                        },\n                    ),\n                ),\n                optional: false,\n                readonly: false,\n                params: [],\n                ty: Some(\n                    _,\n                ),\n            },\n            TsTypeMember {\n                span: 792..884,\n                kind: Property,\n                name: Some(\n                    Ident(\n                        Ident {\n                            span: 792..794,\n                            sym: \"a9\",\n                        },\n                    ),\n                ),\n                optional: false,\n                readonly: false,\n                params: [],\n                ty: Some(\n                    _,\n                ),\n            },\n            TsTypeMember {\n                span: 881..923,\n                kind: Property,\n                name: Some(\n                    Ident(\n                        Ident {\n                            span: 881..884,\n                            sym: \"a10\",\n                        },\n                    ),\n                ),\n                optional: false,\n                readonly: false,\n                params: [],\n                ty: Some(\n                    _,\n                ),\n            },\n            TsTypeMember {\n                span: 920..995,\n                kind: Property,\n                name: Some(\n                    Ident(\n                        Ident {\n                            span: 920..923,\n                            sym: \"a11\",\n                        },\n                    ),\n                ),\n                optional: false,\n                readonly: false,\n                params: [],\n                ty: Some(\n                    _,\n                ),\n            },\n            TsTypeMember {\n                span: 992..1060,\n                kind: Property,\n                name: Some(\n                    Ident(\n                        Ident {\n                            span: 992..995,\n                            sym: \"a12\",\n                        },\n                    ),\n                ),\n                optional: false,\n                readonly: false,\n                params: [],\n                ty: Some(\n                    _,\n                ),\n            },\n            TsTypeMember {\n                span: 1057..1124,\n                kind: Property,\n                name: Some(\n                    Ident(\n                        Ident {\n                            span: 1057..1060,\n                            sym: \"a13\",\n                        },\n                    ),\n                ),\n                optional: false,\n                readonly: false,\n                params: [],\n                ty: Some(\n                    _,\n                ),\n            },\n            TsTypeMember {\n                span: 1121..1168,\n                kind: Property,\n                name: Some(\n                    Ident(\n                        Ident {\n                            span: 1121..1124,\n                            sym: \"a14\",\n                        },\n                    ),\n                ),\n                optional: false,\n                readonly: false,\n                params: [],\n                ty: Some(\n                    _,\n                ),\n            },\n        ],\n    },\n)"
  ],
  "pats": [
    "Ident(\n    Ident {\n        span: 1395..1396,\n        sym: \"x\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 1452..1453,\n        sym: \"x\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 1458..1459,\n        sym: \"y\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 1555..1556,\n        sym: \"x\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 1685..1686,\n        sym: \"x\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 1802..1803,\n        sym: \"x\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 1824..1825,\n        sym: \"r\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 1886..1887,\n        sym: \"x\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 1904..1905,\n        sym: \"y\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 1927..1928,\n        sym: \"r\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 1989..1990,\n        sym: \"x\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 2007..2008,\n        sym: \"y\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 2058..2059,\n        sym: \"r\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 2151..2152,\n        sym: \"x\",\n    },\n)",
    "Rest(\n    RestPat {\n        span: 2148..2153,\n        arg: _,\n    },\n)",
    "Ident(\n    Ident {\n        span: 2197..2198,\n        sym: \"x\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 2203..2204,\n        sym: \"y\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 2254..2255,\n        sym: \"x\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 2270..2271,\n        sym: \"y\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 2367..2368,\n        sym: \"x\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 2383..2384,\n        sym: \"y\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 2504..2505,\n        sym: \"x\",\n    },\n)"
  ],
  "exprs": [
    "Lit(\n    Null(\n        NullLit {\n            span: 0..0,\n        },\n    ),\n)",
    "Lit(\n    Null(\n        NullLit {\n            span: 0..0,\n        },\n    ),\n)",
    "Lit(\n    Null(\n        NullLit {\n            span: 0..0,\n        },\n    ),\n)",
    "Lit(\n    Null(\n        NullLit {\n            span: 0..0,\n        },\n    ),\n)",
    "Lit(\n    Null(\n        NullLit {\n            span: 0..0,\n        },\n    ),\n)",
    "Ident(\n    Ident {\n        span: 1404..1405,\n        sym: \"T\",\n    },\n)",
    "Arrow(\n    ArrowExpr {\n        span: 1394..1406,\n        params: [\n            _,\n        ],\n        body: Expr(\n            _,\n        ),\n        is_async: false,\n    },\n)",
    "Ident(\n    Ident {\n        span: 1467..1468,\n        sym: \"T\",\n    },\n)",
    "Arrow(\n    ArrowExpr {\n        span: 1451..1469,\n        params: [\n            _,\n            _,\n        ],\n        body: Expr(\n            _,\n        ),\n        is_async: false,\n    },\n)",
    "Ident(\n    Ident {\n        span: 1576..1577,\n        sym: \"T\",\n    },\n)",
    "Arrow(\n    ArrowExpr {\n        span: 1554..1578,\n        params: [\n            _,\n        ],\n        body: Expr(\n            _,\n        ),\n        is_async: false,\n    },\n)",
    "Ident(\n    Ident {\n        span: 1706..1707,\n        sym: \"T\",\n    },\n)",
    "Arrow(\n    ArrowExpr {\n        span: 1684..1708,\n        params: [\n            _,\n        ],\n        body: Expr(\n            _,\n        ),\n        is_async: false,\n    },\n)",
    "Ident(\n    Ident {\n        span: 1833..1834,\n        sym: \"U\",\n    },\n)",
    "Arrow(\n    ArrowExpr {\n        span: 1823..1835,\n        params: [\n            _,\n        ],\n        body: Expr(\n            _,\n        ),\n        is_async: false,\n    },\n)",
    "Arrow(\n    ArrowExpr {\n        span: 1801..1835,\n        params: [\n            _,\n        ],\n        body: Expr(\n            _,\n        ),\n        is_async: false,\n    },\n)",
    "Ident(\n    Ident {\n        span: 1936..1937,\n        sym: \"U\",\n    },\n)",
    "Arrow(\n    ArrowExpr {\n        span: 1926..1938,\n        params: [\n            _,\n        ],\n        body: Expr(\n            _,\n        ),\n        is_async: false,\n    },\n)",
    "Arrow(\n    ArrowExpr {\n        span: 1885..1938,\n        params: [\n            _,\n            _,\n        ],\n        body: Expr(\n            _,\n        ),\n        is_async: false,\n    },\n)",
    "Ident(\n    Ident {\n        span: 2067..2068,\n        sym: \"U\",\n    },\n)",
    "Arrow(\n    ArrowExpr {\n        span: 2057..2069,\n        params: [\n            _,\n        ],\n        body: Expr(\n            _,\n        ),\n        is_async: false,\n    },\n)",
    "Arrow(\n    ArrowExpr {\n        span: 1988..2069,\n        params: [\n            _,\n            _,\n        ],\n        body: Expr(\n            _,\n        ),\n        is_async: false,\n    },\n)",
    "Ident(\n    Ident {\n        span: 2162..2163,\n        sym: \"T\",\n    },\n)",
    "Arrow(\n    ArrowExpr {\n        span: 2147..2164,\n        params: [\n            _,\n        ],\n        body: Expr(\n            _,\n        ),\n        is_async: false,\n    },\n)",
    "Ident(\n    Ident {\n        span: 2212..2213,\n        sym: \"T\",\n    },\n)",
    "Arrow(\n    ArrowExpr {\n        span: 2196..2214,\n        params: [\n            _,\n            _,\n        ],\n        body: Expr(\n            _,\n        ),\n        is_async: false,\n    },\n)",
    "Ident(\n    Ident {\n        span: 2279..2284,\n        sym: \"Array\",\n    },\n)",
    "Arrow(\n    ArrowExpr {\n        span: 2253..2294,\n        params: [\n            _,\n            _,\n        ],\n        body: Expr(\n            _,\n        ),\n        is_async: false,\n    },\n)",
    "Ident(\n    Ident {\n        span: 2392..2393,\n        sym: \"T\",\n    },\n)",
    "Arrow(\n    ArrowExpr {\n        span: 2366..2394,\n        params: [\n            _,\n            _,\n        ],\n        body: Expr(\n            _,\n        ),\n        is_async: false,\n    },\n)",
    "Ident(\n    Ident {\n        span: 2526..2527,\n        sym: \"T\",\n    },\n)",
    "Arrow(\n    ArrowExpr {\n        span: 2503..2528,\n        params: [\n            _,\n        ],\n        body: Expr(\n            _,\n        ),\n        is_async: false,\n    },\n)",
    "Lit(\n    Null(\n        NullLit {\n            span: 0..0,\n        },\n    ),\n)"
  ],
  "module_decls": [],
  "functions": [],
  "classes": [],
  "class_members": [],
  "jsx_elements": [],
  "ts_types": [
    "Keyword(\n    Number,\n)",
    "Keyword(\n    Number,\n)",
    "Array(\n    TsArrayType {\n        span: 431..440,\n        elem_type: _,\n    },\n)",
    "Fn(\n    TsFnType {\n        span: 416..440,\n        params: [\n            TsFnParam {\n                span: 417..427,\n                name: Some(\n                    Ident {\n                        span: 417..418,\n                        sym: \"x\",\n                    },\n                ),\n                ty: Some(\n                    _,\n                ),\n                is_rest: false,\n                optional: false,\n            },\n        ],\n        return_type: _,\n    },\n)",
    "Keyword(\n    Number,\n)",
    "Keyword(\n    String,\n)",
    "Array(\n    TsArrayType {\n        span: 464..473,\n        elem_type: _,\n    },\n)",
    "Fn(\n    TsFnType {\n        span: 449..473,\n        params: [\n            TsFnParam {\n                span: 450..460,\n                name: Some(\n                    Ident {\n                        span: 450..451,\n                        sym: \"x\",\n                    },\n                ),\n                ty: Some(\n                    _,\n                ),\n                is_rest: false,\n                optional: false,\n            },\n        ],\n        return_type: _,\n    },\n)",
    "Keyword(\n    Number,\n)",
    "Keyword(\n    Void,\n)",
    "Fn(\n    TsFnType {\n        span: 482..502,\n        params: [\n            TsFnParam {\n                span: 483..493,\n                name: Some(\n                    Ident {\n                        span: 483..484,\n                        sym: \"x\",\n                    },\n                ),\n                ty: Some(\n                    _,\n                ),\n                is_rest: false,\n                optional: false,\n            },\n        ],\n        return_type: _,\n    },\n)",
    "Keyword(\n    String,\n)",
    "Keyword(\n    Number,\n)",
    "Keyword(\n    String,\n)",
    "Fn(\n    TsFnType {\n        span: 511..544,\n        params: [\n            TsFnParam {\n                span: 512..522,\n                name: Some(\n                    Ident {\n                        span: 512..513,\n                        sym: \"x\",\n                    },\n                ),\n                ty: Some(\n                    _,\n                ),\n                is_rest: false,\n                optional: false,\n            },\n            TsFnParam {\n                span: 523..533,\n                name: Some(\n                    Ident {\n                        span: 523..524,\n                        sym: \"y\",\n                    },\n                ),\n                ty: Some(\n                    _,\n                ),\n                is_rest: false,\n                optional: false,\n            },\n        ],\n        return_type: _,\n    },\n)",
    "Keyword(\n    String,\n)",
    "Keyword(\n    Number,\n)",
    "Fn(\n    TsFnType {\n        span: 557..581,\n        params: [\n            TsFnParam {\n                span: 558..570,\n                name: Some(\n                    Ident {\n                        span: 558..561,\n                        sym: \"arg\",\n                    },\n                ),\n                ty: Some(\n                    _,\n                ),\n                is_rest: false,\n                optional: false,\n            },\n        ],\n        return_type: _,\n    },\n)",
    "Keyword(\n    String,\n)",
    "Fn(\n    TsFnType {\n        span: 553..592,\n        params: [\n            TsFnParam {\n                span: 554..581,\n                name: Some(\n                    Ident {\n                        span: 554..555,\n                        sym: \"x\",\n                    },\n                ),\n                ty: Some(\n                    _,\n                ),\n                is_rest: false,\n                optional: false,\n            },\n        ],\n        return_type: _,\n    },\n)",
    "TypeRef(\n    TsTypeRef {\n        span: 611..616,\n        name: Ident {\n            span: 611..616,\n            sym: \"Base\",\n        },\n        type_args: [],\n    },\n)",
    "TypeRef(\n    TsTypeRef {\n        span: 620..628,\n        name: Ident {\n            span: 620..628,\n            sym: \"Derived\",\n        },\n        type_args: [],\n    },\n)",
    "Fn(\n    TsFnType {\n        span: 605..628,\n        params: [\n            TsFnParam {\n                span: 606..616,\n                name: Some(\n                    Ident {\n                        span: 606..609,\n                        sym: \"arg\",\n                    },\n                ),\n                ty: Some(\n                    _,\n                ),\n                is_rest: false,\n                optional: false,\n            },\n        ],\n        return_type: _,\n    },\n)",
    "TypeRef(\n    TsTypeRef {\n        span: 632..637,\n        name: Ident {\n            span: 632..637,\n            sym: \"Base\",\n        },\n        type_args: [],\n    },\n)",
    "Fn(\n    TsFnType {\n        span: 601..637,\n        params: [\n            TsFnParam {\n                span: 602..628,\n                name: Some(\n                    Ident {\n                        span: 602..603,\n                        sym: \"x\",\n                    },\n                ),\n                ty: Some(\n                    _,\n                ),\n                is_rest: false,\n                optional: false,\n            },\n        ],\n        return_type: _,\n    },\n)",
    "TypeRef(\n    TsTypeRef {\n        span: 656..661,\n        name: Ident {\n            span: 656..661,\n            sym: \"Base\",\n        },\n        type_args: [],\n    },\n)",
    "TypeRef(\n    TsTypeRef {\n        span: 665..673,\n        name: Ident {\n            span: 665..673,\n            sym: \"Derived\",\n        },\n        type_args: [],\n    },\n)",
    "Fn(\n    TsFnType {\n        span: 650..673,\n        params: [\n            TsFnParam {\n                span: 651..661,\n                name: Some(\n                    Ident {\n                        span: 651..654,\n                        sym: \"arg\",\n                    },\n                ),\n                ty: Some(\n                    _,\n                ),\n                is_rest: false,\n                optional: false,\n            },\n        ],\n        return_type: _,\n    },\n)",
    "TypeRef(\n    TsTypeRef {\n        span: 681..686,\n        name: Ident {\n            span: 681..686,\n            sym: \"Base\",\n        },\n        type_args: [],\n    },\n)",
    "TypeRef(\n    TsTypeRef {\n        span: 690..698,\n        name: Ident {\n            span: 690..698,\n            sym: \"Derived\",\n        },\n        type_args: [],\n    },\n)",
    "Fn(\n    TsFnType {\n        span: 677..698,\n        params: [\n            TsFnParam {\n                span: 678..686,\n                name: Some(\n                    Ident {\n                        span: 678..679,\n                        sym: \"r\",\n                    },\n                ),\n                ty: Some(\n                    _,\n                ),\n                is_rest: false,\n                optional: false,\n            },\n        ],\n        return_type: _,\n    },\n)",
    "Fn(\n    TsFnType {\n        span: 646..698,\n        params: [\n            TsFnParam {\n                span: 647..673,\n                name: Some(\n                    Ident {\n                        span: 647..648,\n                        sym: \"x\",\n                    },\n                ),\n                ty: Some(\n                    _,\n                ),\n                is_rest: false,\n                optional: false,\n            },\n        ],\n        return_type: _,\n    },\n)",
    "TypeRef(\n    TsTypeRef {\n        span: 717..722,\n        name: Ident {\n            span: 717..722,\n            sym: \"Base\",\n        },\n        type_args: [],\n    },\n)",
    "TypeRef(\n    TsTypeRef {\n        span: 726..734,\n        name: Ident {\n            span: 726..734,\n            sym: \"Derived\",\n        },\n        type_args: [],\n    },\n)",
    "Fn(\n    TsFnType {\n        span: 711..734,\n        params: [\n            TsFnParam {\n                span: 712..722,\n                name: Some(\n                    Ident {\n                        span: 712..715,\n                        sym: \"arg\",\n                    },\n                ),\n                ty: Some(\n                    _,\n                ),\n                is_rest: false,\n                optional: false,\n            },\n        ],\n        return_type: _,\n    },\n)",
    "TypeRef(\n    TsTypeRef {\n        span: 745..750,\n        name: Ident {\n            span: 745..750,\n            sym: \"Base\",\n        },\n        type_args: [],\n    },\n)",
    "TypeRef(\n    TsTypeRef {\n        span: 754..762,\n        name: Ident {\n            span: 754..762,\n            sym: \"Derived\",\n        },\n        type_args: [],\n    },\n)",
    "Fn(\n    TsFnType {\n        span: 738..762,\n        params: [\n            TsFnParam {\n                span: 739..750,\n                name: Some(\n                    Ident {\n                        span: 739..743,\n                        sym: \"arg2\",\n                    },\n                ),\n                ty: Some(\n                    _,\n                ),\n                is_rest: false,\n                optional: false,\n            },\n        ],\n        return_type: _,\n    },\n)",
    "TypeRef(\n    TsTypeRef {\n        span: 770..775,\n        name: Ident {\n            span: 770..775,\n            sym: \"Base\",\n        },\n        type_args: [],\n    },\n)",
    "TypeRef(\n    TsTypeRef {\n        span: 779..787,\n        name: Ident {\n            span: 779..787,\n            sym: \"Derived\",\n        },\n        type_args: [],\n    },\n)",
    "Fn(\n    TsFnType {\n        span: 766..787,\n        params: [\n            TsFnParam {\n                span: 767..775,\n                name: Some(\n                    Ident {\n                        span: 767..768,\n                        sym: \"r\",\n                    },\n                ),\n                ty: Some(\n                    _,\n                ),\n                is_rest: false,\n                optional: false,\n            },\n        ],\n        return_type: _,\n    },\n)",
    "Fn(\n    TsFnType {\n        span: 707..787,\n        params: [\n            TsFnParam {\n                span: 708..734,\n                name: Some(\n                    Ident {\n                        span: 708..709,\n                        sym: \"x\",\n                    },\n                ),\n                ty: Some(\n                    _,\n                ),\n                is_rest: false,\n                optional: false,\n            },\n            TsFnParam {\n                span: 735..762,\n                name: Some(\n                    Ident {\n                        span: 735..736,\n                        sym: \"y\",\n                    },\n                ),\n                ty: Some(\n                    _,\n                ),\n                is_rest: false,\n                optional: false,\n            },\n        ],\n        return_type: _,\n    },\n)",
    "TypeRef(\n    TsTypeRef {\n        span: 806..811,\n        name: Ident {\n            span: 806..811,\n            sym: \"Base\",\n        },\n        type_args: [],\n    },\n)",
    "TypeRef(\n    TsTypeRef {\n        span: 815..823,\n        name: Ident {\n            span: 815..823,\n            sym: \"Derived\",\n        },\n        type_args: [],\n    },\n)",
    "Fn(\n    TsFnType {\n        span: 800..823,\n        params: [\n            TsFnParam {\n                span: 801..811,\n                name: Some(\n                    Ident {\n                        span: 801..804,\n                        sym: \"arg\",\n                    },\n                ),\n                ty: Some(\n                    _,\n                ),\n                is_rest: false,\n                optional: false,\n            },\n        ],\n        return_type: _,\n    },\n)",
    "TypeRef(\n    TsTypeRef {\n        span: 834..839,\n        name: Ident {\n            span: 834..839,\n            sym: \"Base\",\n        },\n        type_args: [],\n    },\n)",
    "TypeRef(\n    TsTypeRef {\n        span: 843..851,\n        name: Ident {\n            span: 843..851,\n            sym: \"Derived\",\n        },\n        type_args: [],\n    },\n)",
    "Fn(\n    TsFnType {\n        span: 827..851,\n        params: [\n            TsFnParam {\n                span: 828..839,\n                name: Some(\n                    Ident {\n                        span: 828..832,\n                        sym: \"arg2\",\n                    },\n                ),\n                ty: Some(\n                    _,\n                ),\n                is_rest: false,\n                optional: false,\n            },\n        ],\n        return_type: _,\n    },\n)",
    "TypeRef(\n    TsTypeRef {\n        span: 859..864,\n        name: Ident {\n            span: 859..864,\n            sym: \"Base\",\n        },\n        type_args: [],\n    },\n)",
    "TypeRef(\n    TsTypeRef {\n        span: 868..876,\n        name: Ident {\n            span: 868..876,\n            sym: \"Derived\",\n        },\n        type_args: [],\n    },\n)",
    "Fn(\n    TsFnType {\n        span: 855..876,\n        params: [\n            TsFnParam {\n                span: 856..864,\n                name: Some(\n                    Ident {\n                        span: 856..857,\n                        sym: \"r\",\n                    },\n                ),\n                ty: Some(\n                    _,\n                ),\n                is_rest: false,\n                optional: false,\n            },\n        ],\n        return_type: _,\n    },\n)",
    "Fn(\n    TsFnType {\n        span: 796..876,\n        params: [\n            TsFnParam {\n                span: 797..823,\n                name: Some(\n                    Ident {\n                        span: 797..798,\n                        sym: \"x\",\n                    },\n                ),\n                ty: Some(\n                    _,\n                ),\n                is_rest: false,\n                optional: false,\n            },\n            TsFnParam {\n                span: 824..851,\n                name: Some(\n                    Ident {\n                        span: 824..825,\n                        sym: \"y\",\n                    },\n                ),\n                ty: Some(\n                    _,\n                ),\n                is_rest: false,\n                optional: false,\n            },\n        ],\n        return_type: _,\n    },\n)",
    "TypeRef(\n    TsTypeRef {\n        span: 893..901,\n        name: Ident {\n            span: 893..901,\n            sym: \"Derived\",\n        },\n        type_args: [],\n    },\n)",
    "Array(\n    TsArrayType {\n        span: 893..903,\n        elem_type: _,\n    },\n)",
    "TypeRef(\n    TsTypeRef {\n        span: 907..915,\n        name: Ident {\n            span: 907..915,\n            sym: \"Derived\",\n        },\n        type_args: [],\n    },\n)",
    "Fn(\n    TsFnType {\n        span: 886..915,\n        params: [\n            TsFnParam {\n                span: 887..903,\n                name: Some(\n                    Ident {\n                        span: 890..891,\n                        sym: \"x\",\n                    },\n                ),\n                ty: Some(\n                    _,\n                ),\n                is_rest: true,\n                optional: false,\n            },\n        ],\n        return_type: _,\n    },\n)",
    "Keyword(\n    String,\n)",
    "TypeLit(\n    TsTypeLit {\n        span: 929..945,\n        members: [\n            TsTypeMember {\n                span: 931..944,\n                kind: Property,\n                name: Some(\n                    Ident(\n                        Ident {\n                            span: 931..934,\n                            sym: \"foo\",\n                        },\n                    ),\n                ),\n                optional: false,\n                readonly: false,\n                params: [],\n                ty: Some(\n                    _,\n                ),\n            },\n        ],\n    },\n)",
    "Keyword(\n    String,\n)",
    "Keyword(\n    String,\n)",
    "TypeLit(\n    TsTypeLit {\n        span: 949..978,\n        members: [\n            TsTypeMember {\n                span: 951..967,\n                kind: Property,\n                name: Some(\n                    Ident(\n                        Ident {\n                            span: 951..954,\n                            sym: \"foo\",\n                        },\n                    ),\n                ),\n                optional: false,\n                readonly: false,\n                params: [],\n                ty: Some(\n                    _,\n                ),\n            },\n            TsTypeMember {\n                span: 964..977,\n                kind: Property,\n                name: Some(\n                    Ident(\n                        Ident {\n                            span: 964..967,\n                            sym: \"bar\",\n                        },\n                    ),\n                ),\n                optional: false,\n                readonly: false,\n                params: [],\n                ty: Some(\n                    _,\n                ),\n            },\n        ],\n    },\n)",
    "TypeRef(\n    TsTypeRef {\n        span: 982..987,\n        name: Ident {\n            span: 982..987,\n            sym: \"Base\",\n        },\n        type_args: [],\n    },\n)",
    "Fn(\n    TsFnType {\n        span: 925..987,\n        params: [\n            TsFnParam {\n                span: 926..945,\n                name: Some(\n                    Ident {\n                        span: 926..927,\n                        sym: \"x\",\n                    },\n                ),\n                ty: Some(\n                    _,\n                ),\n                is_rest: false,\n                optional: false,\n            },\n            TsFnParam {\n                span: 946..978,\n                name: Some(\n                    Ident {\n                        span: 946..947,\n                        sym: \"y\",\n                    },\n                ),\n                ty: Some(\n                    _,\n                ),\n                is_rest: false,\n                optional: false,\n            },\n        ],\n        return_type: _,\n    },\n)",
    "TypeRef(\n    TsTypeRef {\n        span: 1007..1012,\n        name: Ident {\n            span: 1007..1012,\n            sym: \"Base\",\n        },\n        type_args: [],\n    },\n)",
    "TypeRef(\n    TsTypeRef {\n        span: 1001..1013,\n        name: Ident {\n            span: 1001..1007,\n            sym: \"Array\",\n        },\n        type_args: [\n            _,\n        ],\n    },\n)",
    "TypeRef(\n    TsTypeRef {\n        span: 1023..1032,\n        name: Ident {\n            span: 1023..1032,\n            sym: \"Derived2\",\n        },\n        type_args: [],\n    },\n)",
    "TypeRef(\n    TsTypeRef {\n        span: 1017..1033,\n        name: Ident {\n            span: 1017..1023,\n            sym: \"Array\",\n        },\n        type_args: [\n            _,\n        ],\n    },\n)",
    "TypeRef(\n    TsTypeRef {\n        span: 1043..1051,\n        name: Ident {\n            span: 1043..1051,\n            sym: \"Derived\",\n        },\n        type_args: [],\n    },\n)",
    "TypeRef(\n    TsTypeRef {\n        span: 1037..1052,\n        name: Ident {\n            span: 1037..1043,\n            sym: \"Array\",\n        },\n        type_args: [\n            _,\n        ],\n    },\n)",
    "Fn(\n    TsFnType {\n        span: 997..1052,\n        params: [\n            TsFnParam {\n                span: 998..1013,\n                name: Some(\n                    Ident {\n                        span: 998..999,\n                        sym: \"x\",\n                    },\n                ),\n                ty: Some(\n                    _,\n                ),\n                is_rest: false,\n                optional: false,\n            },\n            TsFnParam {\n                span: 1014..1033,\n                name: Some(\n                    Ident {\n                        span: 1014..1015,\n                        sym: \"y\",\n                    },\n                ),\n                ty: Some(\n                    _,\n                ),\n                is_rest: false,\n                optional: false,\n            },\n        ],\n        return_type: _,\n    },\n)",
    "TypeRef(\n    TsTypeRef {\n        span: 1072..1077,\n        name: Ident {\n            span: 1072..1077,\n            sym: \"Base\",\n        },\n        type_args: [],\n    },\n)",
    "TypeRef(\n    TsTypeRef {\n        span: 1066..1078,\n        name: Ident {\n            span: 1066..1072,\n            sym: \"Array\",\n        },\n        type_args: [\n            _,\n        ],\n    },\n)",
    "TypeRef(\n    TsTypeRef {\n        span: 1088..1096,\n        name: Ident {\n            span: 1088..1096,\n            sym: \"Derived\",\n        },\n        type_args: [],\n    },\n)",
    "TypeRef(\n    TsTypeRef {\n        span: 1082..1097,\n        name: Ident {\n            span: 1082..1088,\n            sym: \"Array\",\n        },\n        type_args: [\n            _,\n        ],\n    },\n)",
    "TypeRef(\n    TsTypeRef {\n        span: 1107..1115,\n        name: Ident {\n            span: 1107..1115,\n            sym: \"Derived\",\n        },\n        type_args: [],\n    },\n)",
    "TypeRef(\n    TsTypeRef {\n        span: 1101..1116,\n        name: Ident {\n            span: 1101..1107,\n            sym: \"Array\",\n        },\n        type_args: [\n            _,\n        ],\n    },\n)",
    "Fn(\n    TsFnType {\n        span: 1062..1116,\n        params: [\n            TsFnParam {\n                span: 1063..1078,\n                name: Some(\n                    Ident {\n                        span: 1063..1064,\n                        sym: \"x\",\n                    },\n                ),\n                ty: Some(\n                    _,\n                ),\n                is_rest: false,\n                optional: false,\n            },\n            TsFnParam {\n                span: 1079..1097,\n                name: Some(\n                    Ident {\n                        span: 1079..1080,\n                        sym: \"y\",\n                    },\n                ),\n                ty: Some(\n                    _,\n                ),\n                is_rest: false,\n                optional: false,\n            },\n        ],\n        return_type: _,\n    },\n)",
    "Keyword(\n    String,\n)",
    "Keyword(\n    Number,\n)",
    "TypeLit(\n    TsTypeLit {\n        span: 1130..1155,\n        members: [\n            TsTypeMember {\n                span: 1132..1144,\n                kind: Property,\n                name: Some(\n                    Ident(\n                        Ident {\n                            span: 1132..1133,\n                            sym: \"a\",\n                        },\n                    ),\n                ),\n                optional: false,\n                readonly: false,\n                params: [],\n                ty: Some(\n                    _,\n                ),\n            },\n            TsTypeMember {\n                span: 1143..1154,\n                kind: Property,\n                name: Some(\n                    Ident(\n                        Ident {\n                            span: 1143..1144,\n                            sym: \"b\",\n                        },\n                    ),\n                ),\n                optional: false,\n                readonly: false,\n                params: [],\n                ty: Some(\n                    _,\n                ),\n            },\n        ],\n    },\n)",
    "TypeRef(\n    TsTypeRef {\n        span: 1159..1166,\n        name: Ident {\n            span: 1159..1166,\n            sym: \"Object\",\n        },\n        type_args: [],\n    },\n)",
    "Fn(\n    TsFnType {\n        span: 1126..1166,\n        params: [\n            TsFnParam {\n                span: 1127..1155,\n                name: Some(\n                    Ident {\n                        span: 1127..1128,\n                        sym: \"x\",\n                    },\n                ),\n                ty: Some(\n                    _,\n                ),\n                is_rest: false,\n                optional: false,\n            },\n        ],\n        return_type: _,\n    },\n)"
  ]
}
