{
  "programs": [
    "Program {\n    span: 85..1363,\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        _,\n        _,\n        _,\n        _,\n        _,\n        _,\n    ],\n}"
  ],
  "stmts": [
    "Return(\n    ReturnStmt {\n        span: 115..127,\n        arg: Some(\n            _,\n        ),\n    },\n)",
    "Decl(\n    _,\n)",
    "Return(\n    ReturnStmt {\n        span: 179..195,\n        arg: Some(\n            _,\n        ),\n    },\n)",
    "Decl(\n    _,\n)",
    "Decl(\n    _,\n)",
    "Return(\n    ReturnStmt {\n        span: 341..366,\n        arg: Some(\n            _,\n        ),\n    },\n)",
    "Expr(\n    ExprStmt {\n        span: 365..373,\n        expr: _,\n    },\n)",
    "Return(\n    ReturnStmt {\n        span: 460..485,\n        arg: Some(\n            _,\n        ),\n    },\n)",
    "Expr(\n    ExprStmt {\n        span: 484..487,\n        expr: _,\n    },\n)",
    "Expr(\n    ExprStmt {\n        span: 486..492,\n        expr: _,\n    },\n)",
    "Decl(\n    _,\n)",
    "Decl(\n    _,\n)",
    "Decl(\n    _,\n)",
    "Decl(\n    _,\n)",
    "Decl(\n    _,\n)",
    "Decl(\n    _,\n)",
    "Expr(\n    ExprStmt {\n        span: 728..730,\n        expr: _,\n    },\n)",
    "Expr(\n    ExprStmt {\n        span: 729..738,\n        expr: _,\n    },\n)",
    "Expr(\n    ExprStmt {\n        span: 731..740,\n        expr: _,\n    },\n)",
    "Expr(\n    ExprStmt {\n        span: 739..751,\n        expr: _,\n    },\n)",
    "Expr(\n    ExprStmt {\n        span: 744..753,\n        expr: _,\n    },\n)",
    "Expr(\n    ExprStmt {\n        span: 765..770,\n        expr: _,\n    },\n)",
    "Decl(\n    _,\n)",
    "Decl(\n    _,\n)",
    "Decl(\n    _,\n)",
    "Decl(\n    _,\n)",
    "Decl(\n    _,\n)",
    "Return(\n    ReturnStmt {\n        span: 1273..1298,\n        arg: Some(\n            _,\n        ),\n    },\n)",
    "Decl(\n    _,\n)",
    "Decl(\n    _,\n)"
  ],
  "decls": [
    "Class(\n    ClassDecl {\n        span: 85..136,\n        ident: Ident {\n            span: 91..92,\n            sym: \"A\",\n        },\n        declare: false,\n        class: _,\n    },\n)",
    "Class(\n    ClassDecl {\n        span: 131..204,\n        ident: Ident {\n            span: 137..138,\n            sym: \"B\",\n        },\n        declare: false,\n        class: _,\n    },\n)",
    "Var(\n    VarDecl {\n        span: 293..347,\n        kind: Var,\n        declare: false,\n        declarators: [\n            VarDeclarator {\n                span: 293..312,\n                name: _,\n                init: None,\n            },\n        ],\n    },\n)",
    "Var(\n    VarDecl {\n        span: 489..523,\n        kind: Var,\n        declare: false,\n        declarators: [\n            VarDeclarator {\n                span: 489..519,\n                name: _,\n                init: None,\n            },\n        ],\n    },\n)",
    "Var(\n    VarDecl {\n        span: 520..568,\n        kind: Var,\n        declare: false,\n        declarators: [\n            VarDeclarator {\n                span: 520..557,\n                name: _,\n                init: None,\n            },\n        ],\n    },\n)",
    "TsInterface(\n    TsInterfaceDecl {\n        span: 559..616,\n        ident: Ident {\n            span: 569..570,\n            sym: \"I\",\n        },\n        declare: false,\n        type_params: [\n            Ident {\n                span: 571..572,\n                sym: \"U\",\n            },\n            Ident {\n                span: 584..585,\n                sym: \"T\",\n            },\n        ],\n        extends: [],\n        body: [\n            TsTypeMember {\n                span: 603..612,\n                kind: Property,\n                name: Some(\n                    Ident(\n                        Ident {\n                            span: 603..606,\n                            sym: \"foo\",\n                        },\n                    ),\n                ),\n                optional: false,\n                readonly: false,\n                params: [],\n                ty: Some(\n                    _,\n                ),\n            },\n        ],\n    },\n)",
    "Var(\n    VarDecl {\n        span: 613..632,\n        kind: Var,\n        declare: false,\n        declarators: [\n            VarDeclarator {\n                span: 613..628,\n                name: _,\n                init: None,\n            },\n        ],\n    },\n)",
    "Var(\n    VarDecl {\n        span: 629..654,\n        kind: Var,\n        declare: false,\n        declarators: [\n            VarDeclarator {\n                span: 629..650,\n                name: _,\n                init: None,\n            },\n        ],\n    },\n)",
    "Var(\n    VarDecl {\n        span: 651..681,\n        kind: Var,\n        declare: false,\n        declarators: [\n            VarDeclarator {\n                span: 651..676,\n                name: _,\n                init: None,\n            },\n        ],\n    },\n)",
    "Var(\n    VarDecl {\n        span: 767..853,\n        kind: Var,\n        declare: false,\n        declarators: [\n            VarDeclarator {\n                span: 767..786,\n                name: _,\n                init: None,\n            },\n        ],\n    },\n)",
    "Var(\n    VarDecl {\n        span: 850..933,\n        kind: Var,\n        declare: false,\n        declarators: [\n            VarDeclarator {\n                span: 850..873,\n                name: _,\n                init: None,\n            },\n        ],\n    },\n)",
    "Var(\n    VarDecl {\n        span: 930..1035,\n        kind: Var,\n        declare: false,\n        declarators: [\n            VarDeclarator {\n                span: 930..957,\n                name: _,\n                init: None,\n            },\n        ],\n    },\n)",
    "Var(\n    VarDecl {\n        span: 1032..1141,\n        kind: Var,\n        declare: false,\n        declarators: [\n            VarDeclarator {\n                span: 1032..1062,\n                name: _,\n                init: None,\n            },\n        ],\n    },\n)",
    "Var(\n    VarDecl {\n        span: 1225..1279,\n        kind: Var,\n        declare: false,\n        declarators: [\n            VarDeclarator {\n                span: 1225..1244,\n                name: _,\n                init: None,\n            },\n        ],\n    },\n)",
    "Var(\n    VarDecl {\n        span: 1138..1305,\n        kind: Var,\n        declare: false,\n        declarators: [\n            VarDeclarator {\n                span: 1138..1305,\n                name: _,\n                init: None,\n            },\n        ],\n    },\n)",
    "Var(\n    VarDecl {\n        span: 1302..1363,\n        kind: Var,\n        declare: false,\n        declarators: [\n            VarDeclarator {\n                span: 1302..1326,\n                name: _,\n                init: None,\n            },\n        ],\n    },\n)"
  ],
  "pats": [
    "Ident(\n    Ident {\n        span: 297..298,\n        sym: \"a\",\n    },\n)",
    "Assign(\n    AssignPat {\n        span: 299..312,\n        left: _,\n        right: _,\n    },\n)",
    "Ident(\n    Ident {\n        span: 493..496,\n        sym: \"r1a\",\n    },\n)",
    "Assign(\n    AssignPat {\n        span: 497..519,\n        left: _,\n        right: _,\n    },\n)",
    "Ident(\n    Ident {\n        span: 524..527,\n        sym: \"r1b\",\n    },\n)",
    "Assign(\n    AssignPat {\n        span: 528..557,\n        left: _,\n        right: _,\n    },\n)",
    "Ident(\n    Ident {\n        span: 617..618,\n        sym: \"i\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 633..635,\n        sym: \"r2\",\n    },\n)",
    "Assign(\n    AssignPat {\n        span: 636..650,\n        left: _,\n        right: _,\n    },\n)",
    "Ident(\n    Ident {\n        span: 655..658,\n        sym: \"r2b\",\n    },\n)",
    "Assign(\n    AssignPat {\n        span: 659..676,\n        left: _,\n        right: _,\n    },\n)",
    "Ident(\n    Ident {\n        span: 771..773,\n        sym: \"r3\",\n    },\n)",
    "Assign(\n    AssignPat {\n        span: 774..786,\n        left: _,\n        right: _,\n    },\n)",
    "Ident(\n    Ident {\n        span: 854..857,\n        sym: \"r3b\",\n    },\n)",
    "Assign(\n    AssignPat {\n        span: 858..873,\n        left: _,\n        right: _,\n    },\n)",
    "Ident(\n    Ident {\n        span: 934..937,\n        sym: \"r3c\",\n    },\n)",
    "Assign(\n    AssignPat {\n        span: 938..957,\n        left: _,\n        right: _,\n    },\n)",
    "Ident(\n    Ident {\n        span: 1036..1039,\n        sym: \"r3d\",\n    },\n)",
    "Assign(\n    AssignPat {\n        span: 1040..1062,\n        left: _,\n        right: _,\n    },\n)",
    "Ident(\n    Ident {\n        span: 1142..1143,\n        sym: \"b\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 1184..1185,\n        sym: \"x\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 1229..1230,\n        sym: \"a\",\n    },\n)",
    "Assign(\n    AssignPat {\n        span: 1231..1244,\n        left: _,\n        right: _,\n    },\n)",
    "Assign(\n    AssignPat {\n        span: 1144..1305,\n        left: _,\n        right: _,\n    },\n)",
    "Ident(\n    Ident {\n        span: 1306..1308,\n        sym: \"r4\",\n    },\n)",
    "Assign(\n    AssignPat {\n        span: 1309..1326,\n        left: _,\n        right: _,\n    },\n)"
  ],
  "exprs": [
    "Lit(\n    Str(\n        StrLit {\n            span: 122..124,\n            value: \"\",\n        },\n    ),\n)",
    "Ident(\n    Ident {\n        span: 147..148,\n        sym: \"A\",\n    },\n)",
    "Lit(\n    Str(\n        StrLit {\n            span: 186..188,\n            value: \"\",\n        },\n    ),\n)",
    "Ident(\n    Ident {\n        span: 301..302,\n        sym: \"x\",\n    },\n)",
    "Lit(\n    Str(\n        StrLit {\n            span: 303..308,\n            value: \"foo\",\n        },\n    ),\n)",
    "Member(\n    MemberExpr {\n        span: 302..310,\n        obj: _,\n        prop: Computed(\n            _,\n        ),\n    },\n)",
    "Call(\n    CallExpr {\n        span: 309..312,\n        callee: _,\n        args: [],\n    },\n)",
    "Ident(\n    Ident {\n        span: 348..349,\n        sym: \"a\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 352..353,\n        sym: \"x\",\n    },\n)",
    "Member(\n    MemberExpr {\n        span: 353..358,\n        obj: _,\n        prop: Ident(\n            Ident {\n                span: 354..357,\n                sym: \"foo\",\n            },\n        ),\n    },\n)",
    "Call(\n    CallExpr {\n        span: 357..360,\n        callee: _,\n        args: [],\n    },\n)",
    "Binary(\n    BinaryExpr {\n        span: 350..360,\n        op: Add,\n        left: _,\n        right: _,\n    },\n)",
    "Lit(\n    Null(\n        NullLit {\n            span: 0..0,\n        },\n    ),\n)",
    "Ident(\n    Ident {\n        span: 467..468,\n        sym: \"a\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 471..472,\n        sym: \"x\",\n    },\n)",
    "Member(\n    MemberExpr {\n        span: 472..477,\n        obj: _,\n        prop: Ident(\n            Ident {\n                span: 473..476,\n                sym: \"foo\",\n            },\n        ),\n    },\n)",
    "Call(\n    CallExpr {\n        span: 476..479,\n        callee: _,\n        args: [],\n    },\n)",
    "Binary(\n    BinaryExpr {\n        span: 469..479,\n        op: Add,\n        left: _,\n        right: _,\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: 504..505,\n        sym: \"C\",\n    },\n)",
    "Call(\n    CallExpr {\n        span: 511..514,\n        callee: _,\n        args: [],\n    },\n)",
    "New(\n    NewExpr {\n        span: 500..514,\n        callee: _,\n        args: [],\n    },\n)",
    "Paren(\n    ParenExpr {\n        span: 499..515,\n        expr: _,\n    },\n)",
    "Member(\n    MemberExpr {\n        span: 514..517,\n        obj: _,\n        prop: Ident(\n            Ident {\n                span: 515..516,\n                sym: \"f\",\n            },\n        ),\n    },\n)",
    "Call(\n    CallExpr {\n        span: 516..519,\n        callee: _,\n        args: [],\n    },\n)",
    "Ident(\n    Ident {\n        span: 535..536,\n        sym: \"C\",\n    },\n)",
    "Call(\n    CallExpr {\n        span: 542..545,\n        callee: _,\n        args: [],\n    },\n)",
    "New(\n    NewExpr {\n        span: 531..545,\n        callee: _,\n        args: [],\n    },\n)",
    "Paren(\n    ParenExpr {\n        span: 530..546,\n        expr: _,\n    },\n)",
    "Member(\n    MemberExpr {\n        span: 545..548,\n        obj: _,\n        prop: Ident(\n            Ident {\n                span: 546..547,\n                sym: \"g\",\n            },\n        ),\n    },\n)",
    "Ident(\n    Ident {\n        span: 552..553,\n        sym: \"B\",\n    },\n)",
    "Call(\n    CallExpr {\n        span: 553..556,\n        callee: _,\n        args: [],\n    },\n)",
    "New(\n    NewExpr {\n        span: 548..556,\n        callee: _,\n        args: [],\n    },\n)",
    "Call(\n    CallExpr {\n        span: 547..557,\n        callee: _,\n        args: [\n            ExprOrSpread {\n                spread: false,\n                expr: _,\n            },\n        ],\n    },\n)",
    "Ident(\n    Ident {\n        span: 638..639,\n        sym: \"i\",\n    },\n)",
    "Member(\n    MemberExpr {\n        span: 639..644,\n        obj: _,\n        prop: Ident(\n            Ident {\n                span: 640..643,\n                sym: \"foo\",\n            },\n        ),\n    },\n)",
    "Member(\n    MemberExpr {\n        span: 643..648,\n        obj: _,\n        prop: Ident(\n            Ident {\n                span: 644..647,\n                sym: \"foo\",\n            },\n        ),\n    },\n)",
    "Call(\n    CallExpr {\n        span: 647..650,\n        callee: _,\n        args: [],\n    },\n)",
    "Ident(\n    Ident {\n        span: 661..662,\n        sym: \"i\",\n    },\n)",
    "Member(\n    MemberExpr {\n        span: 662..667,\n        obj: _,\n        prop: Ident(\n            Ident {\n                span: 663..666,\n                sym: \"foo\",\n            },\n        ),\n    },\n)",
    "Lit(\n    Str(\n        StrLit {\n            span: 667..672,\n            value: \"foo\",\n        },\n    ),\n)",
    "Member(\n    MemberExpr {\n        span: 666..674,\n        obj: _,\n        prop: Computed(\n            _,\n        ),\n    },\n)",
    "Call(\n    CallExpr {\n        span: 673..676,\n        callee: _,\n        args: [],\n    },\n)",
    "Lit(\n    Null(\n        NullLit {\n            span: 0..0,\n        },\n    ),\n)",
    "Ident(\n    Ident {\n        span: 729..730,\n        sym: \"U\",\n    },\n)",
    "Lit(\n    Null(\n        NullLit {\n            span: 0..0,\n        },\n    ),\n)",
    "Ident(\n    Ident {\n        span: 739..740,\n        sym: \"T\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 742..743,\n        sym: \"T\",\n    },\n)",
    "Seq(\n    SeqExpr {\n        span: 739..751,\n        exprs: [\n            _,\n            _,\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: 776..777,\n        sym: \"a\",\n    },\n)",
    "Call(\n    CallExpr {\n        span: 777..780,\n        callee: _,\n        args: [],\n    },\n)",
    "Member(\n    MemberExpr {\n        span: 779..784,\n        obj: _,\n        prop: Ident(\n            Ident {\n                span: 780..783,\n                sym: \"foo\",\n            },\n        ),\n    },\n)",
    "Call(\n    CallExpr {\n        span: 783..786,\n        callee: _,\n        args: [],\n    },\n)",
    "Ident(\n    Ident {\n        span: 860..861,\n        sym: \"a\",\n    },\n)",
    "Call(\n    CallExpr {\n        span: 861..864,\n        callee: _,\n        args: [],\n    },\n)",
    "Lit(\n    Str(\n        StrLit {\n            span: 864..869,\n            value: \"foo\",\n        },\n    ),\n)",
    "Member(\n    MemberExpr {\n        span: 863..871,\n        obj: _,\n        prop: Computed(\n            _,\n        ),\n    },\n)",
    "Call(\n    CallExpr {\n        span: 870..873,\n        callee: _,\n        args: [],\n    },\n)",
    "Ident(\n    Ident {\n        span: 940..941,\n        sym: \"a\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 946..947,\n        sym: \"B\",\n    },\n)",
    "Call(\n    CallExpr {\n        span: 947..950,\n        callee: _,\n        args: [],\n    },\n)",
    "New(\n    NewExpr {\n        span: 942..950,\n        callee: _,\n        args: [],\n    },\n)",
    "Call(\n    CallExpr {\n        span: 941..951,\n        callee: _,\n        args: [\n            ExprOrSpread {\n                spread: false,\n                expr: _,\n            },\n        ],\n    },\n)",
    "Member(\n    MemberExpr {\n        span: 950..955,\n        obj: _,\n        prop: Ident(\n            Ident {\n                span: 951..954,\n                sym: \"foo\",\n            },\n        ),\n    },\n)",
    "Call(\n    CallExpr {\n        span: 954..957,\n        callee: _,\n        args: [],\n    },\n)",
    "Ident(\n    Ident {\n        span: 1042..1043,\n        sym: \"a\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 1048..1049,\n        sym: \"B\",\n    },\n)",
    "Call(\n    CallExpr {\n        span: 1049..1052,\n        callee: _,\n        args: [],\n    },\n)",
    "New(\n    NewExpr {\n        span: 1044..1052,\n        callee: _,\n        args: [],\n    },\n)",
    "Call(\n    CallExpr {\n        span: 1043..1053,\n        callee: _,\n        args: [\n            ExprOrSpread {\n                spread: false,\n                expr: _,\n            },\n        ],\n    },\n)",
    "Lit(\n    Str(\n        StrLit {\n            span: 1053..1058,\n            value: \"foo\",\n        },\n    ),\n)",
    "Member(\n    MemberExpr {\n        span: 1052..1060,\n        obj: _,\n        prop: Computed(\n            _,\n        ),\n    },\n)",
    "Call(\n    CallExpr {\n        span: 1059..1062,\n        callee: _,\n        args: [],\n    },\n)",
    "Ident(\n    Ident {\n        span: 1233..1234,\n        sym: \"x\",\n    },\n)",
    "Lit(\n    Str(\n        StrLit {\n            span: 1235..1240,\n            value: \"foo\",\n        },\n    ),\n)",
    "Member(\n    MemberExpr {\n        span: 1234..1242,\n        obj: _,\n        prop: Computed(\n            _,\n        ),\n    },\n)",
    "Call(\n    CallExpr {\n        span: 1241..1244,\n        callee: _,\n        args: [],\n    },\n)",
    "Ident(\n    Ident {\n        span: 1280..1281,\n        sym: \"a\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 1284..1285,\n        sym: \"x\",\n    },\n)",
    "Member(\n    MemberExpr {\n        span: 1285..1290,\n        obj: _,\n        prop: Ident(\n            Ident {\n                span: 1286..1289,\n                sym: \"foo\",\n            },\n        ),\n    },\n)",
    "Call(\n    CallExpr {\n        span: 1289..1292,\n        callee: _,\n        args: [],\n    },\n)",
    "Binary(\n    BinaryExpr {\n        span: 1282..1292,\n        op: Add,\n        left: _,\n        right: _,\n    },\n)",
    "Arrow(\n    ArrowExpr {\n        span: 1183..1300,\n        params: [\n            _,\n        ],\n        body: Block(\n            [\n                _,\n                _,\n            ],\n        ),\n        is_async: false,\n    },\n)",
    "Object(\n    ObjectExpr {\n        span: 1146..1305,\n        props: [\n            KeyValueProp {\n                span: 1152..1300,\n                key: Ident(\n                    Ident {\n                        span: 1152..1155,\n                        sym: \"foo\",\n                    },\n                ),\n                value: _,\n            },\n        ],\n    },\n)",
    "Ident(\n    Ident {\n        span: 1311..1312,\n        sym: \"b\",\n    },\n)",
    "Member(\n    MemberExpr {\n        span: 1312..1317,\n        obj: _,\n        prop: Ident(\n            Ident {\n                span: 1313..1316,\n                sym: \"foo\",\n            },\n        ),\n    },\n)",
    "Ident(\n    Ident {\n        span: 1321..1322,\n        sym: \"B\",\n    },\n)",
    "Call(\n    CallExpr {\n        span: 1322..1325,\n        callee: _,\n        args: [],\n    },\n)",
    "New(\n    NewExpr {\n        span: 1317..1325,\n        callee: _,\n        args: [],\n    },\n)",
    "Call(\n    CallExpr {\n        span: 1316..1326,\n        callee: _,\n        args: [\n            ExprOrSpread {\n                spread: false,\n                expr: _,\n            },\n        ],\n    },\n)"
  ],
  "module_decls": [],
  "functions": [
    "Function {\n    span: 99..129,\n    params: [],\n    body: [\n        _,\n    ],\n    is_async: false,\n    is_generator: false,\n}",
    "Function {\n    span: 155..197,\n    params: [],\n    body: [\n        _,\n    ],\n    is_async: false,\n    is_generator: false,\n}"
  ],
  "classes": [
    "Class {\n    span: 85..136,\n    decorators: [],\n    ident: Some(\n        Ident {\n            span: 91..92,\n            sym: \"A\",\n        },\n    ),\n    super_class: None,\n    body: [\n        _,\n    ],\n}",
    "Class {\n    span: 131..204,\n    decorators: [],\n    ident: Some(\n        Ident {\n            span: 137..138,\n            sym: \"B\",\n        },\n    ),\n    super_class: Some(\n        _,\n    ),\n    body: [\n        _,\n    ],\n}"
  ],
  "class_members": [
    "Method(\n    ClassMethod {\n        span: 99..129,\n        decorators: [],\n        key: Ident(\n            Ident {\n                span: 99..102,\n                sym: \"foo\",\n            },\n        ),\n        function: _,\n        is_static: false,\n        kind: Method,\n    },\n)",
    "Method(\n    ClassMethod {\n        span: 155..197,\n        decorators: [],\n        key: Ident(\n            Ident {\n                span: 155..158,\n                sym: \"bar\",\n            },\n        ),\n        function: _,\n        is_static: false,\n        kind: Method,\n    },\n)"
  ],
  "jsx_elements": [],
  "ts_types": [
    "TypeRef(\n    TsTypeRef {\n        span: 608..610,\n        name: Ident {\n            span: 608..610,\n            sym: \"T\",\n        },\n        type_args: [],\n    },\n)"
  ]
}
