{
  "programs": [
    "Program {\n    span: 69..1081,\n    kind: Script,\n    body: [\n        _,\n        _,\n        _,\n        _,\n        _,\n        _,\n        _,\n        _,\n        _,\n        _,\n        _,\n        _,\n        _,\n        _,\n        _,\n    ],\n}"
  ],
  "stmts": [
    "Decl(\n    _,\n)",
    "Decl(\n    _,\n)",
    "Decl(\n    _,\n)",
    "Decl(\n    _,\n)",
    "Decl(\n    _,\n)",
    "Decl(\n    _,\n)",
    "Decl(\n    _,\n)",
    "Decl(\n    _,\n)",
    "Decl(\n    _,\n)",
    "Decl(\n    _,\n)",
    "Decl(\n    _,\n)",
    "Decl(\n    _,\n)",
    "Decl(\n    _,\n)",
    "Decl(\n    _,\n)",
    "Decl(\n    _,\n)",
    "Decl(\n    _,\n)",
    "Decl(\n    _,\n)",
    "Decl(\n    _,\n)",
    "Decl(\n    _,\n)",
    "Decl(\n    _,\n)",
    "Decl(\n    _,\n)",
    "Decl(\n    _,\n)",
    "Decl(\n    _,\n)",
    "Decl(\n    _,\n)",
    "Decl(\n    _,\n)",
    "Decl(\n    _,\n)",
    "Decl(\n    _,\n)",
    "Decl(\n    _,\n)",
    "Decl(\n    _,\n)"
  ],
  "decls": [
    "TsInterface(\n    TsInterfaceDecl {\n        span: 69..112,\n        ident: Ident {\n            span: 79..80,\n            sym: \"A\",\n        },\n        declare: false,\n        type_params: [],\n        extends: [],\n        body: [\n            TsTypeMember {\n                span: 87..101,\n                kind: Property,\n                name: Some(\n                    Ident(\n                        Ident {\n                            span: 87..90,\n                            sym: \"foo\",\n                        },\n                    ),\n                ),\n                optional: false,\n                readonly: false,\n                params: [],\n                ty: Some(\n                    _,\n                ),\n            },\n        ],\n    },\n)",
    "TsInterface(\n    TsInterfaceDecl {\n        span: 103..146,\n        ident: Ident {\n            span: 113..114,\n            sym: \"A\",\n        },\n        declare: false,\n        type_params: [],\n        extends: [],\n        body: [\n            TsTypeMember {\n                span: 121..135,\n                kind: Property,\n                name: Some(\n                    Ident(\n                        Ident {\n                            span: 121..124,\n                            sym: \"bar\",\n                        },\n                    ),\n                ),\n                optional: false,\n                readonly: false,\n                params: [],\n                ty: Some(\n                    _,\n                ),\n            },\n        ],\n    },\n)",
    "TsInterface(\n    TsInterfaceDecl {\n        span: 137..175,\n        ident: Ident {\n            span: 147..148,\n            sym: \"A\",\n        },\n        declare: false,\n        type_params: [],\n        extends: [],\n        body: [\n            TsTypeMember {\n                span: 155..170,\n                kind: Property,\n                name: Some(\n                    Ident(\n                        Ident {\n                            span: 155..158,\n                            sym: \"baz\",\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: 172..185,\n        kind: Var,\n        declare: false,\n        declarators: [\n            VarDeclarator {\n                span: 172..181,\n                name: _,\n                init: None,\n            },\n        ],\n    },\n)",
    "Var(\n    VarDecl {\n        span: 182..200,\n        kind: Var,\n        declare: false,\n        declarators: [\n            VarDeclarator {\n                span: 182..200,\n                name: _,\n                init: None,\n            },\n        ],\n    },\n)",
    "Var(\n    VarDecl {\n        span: 197..216,\n        kind: Var,\n        declare: false,\n        declarators: [\n            VarDeclarator {\n                span: 197..212,\n                name: _,\n                init: None,\n            },\n        ],\n    },\n)",
    "Var(\n    VarDecl {\n        span: 213..261,\n        kind: Var,\n        declare: false,\n        declarators: [\n            VarDeclarator {\n                span: 213..228,\n                name: _,\n                init: None,\n            },\n        ],\n    },\n)",
    "TsInterface(\n    TsInterfaceDecl {\n        span: 252..293,\n        ident: Ident {\n            span: 262..263,\n            sym: \"B\",\n        },\n        declare: false,\n        type_params: [\n            Ident {\n                span: 264..265,\n                sym: \"T\",\n            },\n        ],\n        extends: [],\n        body: [\n            TsTypeMember {\n                span: 273..282,\n                kind: Property,\n                name: Some(\n                    Ident(\n                        Ident {\n                            span: 273..276,\n                            sym: \"foo\",\n                        },\n                    ),\n                ),\n                optional: false,\n                readonly: false,\n                params: [],\n                ty: Some(\n                    _,\n                ),\n            },\n        ],\n    },\n)",
    "TsInterface(\n    TsInterfaceDecl {\n        span: 284..325,\n        ident: Ident {\n            span: 294..295,\n            sym: \"B\",\n        },\n        declare: false,\n        type_params: [\n            Ident {\n                span: 296..297,\n                sym: \"T\",\n            },\n        ],\n        extends: [],\n        body: [\n            TsTypeMember {\n                span: 305..314,\n                kind: Property,\n                name: Some(\n                    Ident(\n                        Ident {\n                            span: 305..308,\n                            sym: \"bar\",\n                        },\n                    ),\n                ),\n                optional: false,\n                readonly: false,\n                params: [],\n                ty: Some(\n                    _,\n                ),\n            },\n        ],\n    },\n)",
    "TsInterface(\n    TsInterfaceDecl {\n        span: 316..351,\n        ident: Ident {\n            span: 326..327,\n            sym: \"B\",\n        },\n        declare: false,\n        type_params: [\n            Ident {\n                span: 328..329,\n                sym: \"T\",\n            },\n        ],\n        extends: [],\n        body: [\n            TsTypeMember {\n                span: 337..346,\n                kind: Property,\n                name: Some(\n                    Ident(\n                        Ident {\n                            span: 337..340,\n                            sym: \"baz\",\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: 348..369,\n        kind: Var,\n        declare: false,\n        declarators: [\n            VarDeclarator {\n                span: 348..365,\n                name: _,\n                init: None,\n            },\n        ],\n    },\n)",
    "Var(\n    VarDecl {\n        span: 366..384,\n        kind: Var,\n        declare: false,\n        declarators: [\n            VarDeclarator {\n                span: 366..384,\n                name: _,\n                init: None,\n            },\n        ],\n    },\n)",
    "Var(\n    VarDecl {\n        span: 381..400,\n        kind: Var,\n        declare: false,\n        declarators: [\n            VarDeclarator {\n                span: 381..396,\n                name: _,\n                init: None,\n            },\n        ],\n    },\n)",
    "Var(\n    VarDecl {\n        span: 397..474,\n        kind: Var,\n        declare: false,\n        declarators: [\n            VarDeclarator {\n                span: 397..412,\n                name: _,\n                init: None,\n            },\n        ],\n    },\n)",
    "TsInterface(\n    TsInterfaceDecl {\n        span: 483..538,\n        ident: Ident {\n            span: 493..494,\n            sym: \"A\",\n        },\n        declare: false,\n        type_params: [],\n        extends: [],\n        body: [\n            TsTypeMember {\n                span: 505..523,\n                kind: Property,\n                name: Some(\n                    Ident(\n                        Ident {\n                            span: 505..508,\n                            sym: \"foo\",\n                        },\n                    ),\n                ),\n                optional: false,\n                readonly: false,\n                params: [],\n                ty: Some(\n                    _,\n                ),\n            },\n        ],\n    },\n)",
    "TsInterface(\n    TsInterfaceDecl {\n        span: 529..584,\n        ident: Ident {\n            span: 539..540,\n            sym: \"A\",\n        },\n        declare: false,\n        type_params: [],\n        extends: [],\n        body: [\n            TsTypeMember {\n                span: 551..569,\n                kind: Property,\n                name: Some(\n                    Ident(\n                        Ident {\n                            span: 551..554,\n                            sym: \"bar\",\n                        },\n                    ),\n                ),\n                optional: false,\n                readonly: false,\n                params: [],\n                ty: Some(\n                    _,\n                ),\n            },\n        ],\n    },\n)",
    "TsInterface(\n    TsInterfaceDecl {\n        span: 575..625,\n        ident: Ident {\n            span: 585..586,\n            sym: \"A\",\n        },\n        declare: false,\n        type_params: [],\n        extends: [],\n        body: [\n            TsTypeMember {\n                span: 597..616,\n                kind: Property,\n                name: Some(\n                    Ident(\n                        Ident {\n                            span: 597..600,\n                            sym: \"baz\",\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: 622..639,\n        kind: Var,\n        declare: false,\n        declarators: [\n            VarDeclarator {\n                span: 622..631,\n                name: _,\n                init: None,\n            },\n        ],\n    },\n)",
    "Var(\n    VarDecl {\n        span: 636..677,\n        kind: Var,\n        declare: false,\n        declarators: [\n            VarDeclarator {\n                span: 636..651,\n                name: _,\n                init: None,\n            },\n        ],\n    },\n)",
    "Var(\n    VarDecl {\n        span: 674..740,\n        kind: Var,\n        declare: false,\n        declarators: [\n            VarDeclarator {\n                span: 674..689,\n                name: _,\n                init: None,\n            },\n        ],\n    },\n)",
    "Var(\n    VarDecl {\n        span: 737..793,\n        kind: Var,\n        declare: false,\n        declarators: [\n            VarDeclarator {\n                span: 737..752,\n                name: _,\n                init: None,\n            },\n        ],\n    },\n)",
    "TsInterface(\n    TsInterfaceDecl {\n        span: 784..837,\n        ident: Ident {\n            span: 794..795,\n            sym: \"B\",\n        },\n        declare: false,\n        type_params: [\n            Ident {\n                span: 796..797,\n                sym: \"T\",\n            },\n        ],\n        extends: [],\n        body: [\n            TsTypeMember {\n                span: 809..822,\n                kind: Property,\n                name: Some(\n                    Ident(\n                        Ident {\n                            span: 809..812,\n                            sym: \"foo\",\n                        },\n                    ),\n                ),\n                optional: false,\n                readonly: false,\n                params: [],\n                ty: Some(\n                    _,\n                ),\n            },\n        ],\n    },\n)",
    "TsInterface(\n    TsInterfaceDecl {\n        span: 828..881,\n        ident: Ident {\n            span: 838..839,\n            sym: \"B\",\n        },\n        declare: false,\n        type_params: [\n            Ident {\n                span: 840..841,\n                sym: \"T\",\n            },\n        ],\n        extends: [],\n        body: [\n            TsTypeMember {\n                span: 853..866,\n                kind: Property,\n                name: Some(\n                    Ident(\n                        Ident {\n                            span: 853..856,\n                            sym: \"bar\",\n                        },\n                    ),\n                ),\n                optional: false,\n                readonly: false,\n                params: [],\n                ty: Some(\n                    _,\n                ),\n            },\n        ],\n    },\n)",
    "TsInterface(\n    TsInterfaceDecl {\n        span: 872..919,\n        ident: Ident {\n            span: 882..883,\n            sym: \"B\",\n        },\n        declare: false,\n        type_params: [\n            Ident {\n                span: 884..885,\n                sym: \"T\",\n            },\n        ],\n        extends: [],\n        body: [\n            TsTypeMember {\n                span: 897..910,\n                kind: Property,\n                name: Some(\n                    Ident(\n                        Ident {\n                            span: 897..900,\n                            sym: \"baz\",\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: 916..941,\n        kind: Var,\n        declare: false,\n        declarators: [\n            VarDeclarator {\n                span: 916..933,\n                name: _,\n                init: None,\n            },\n        ],\n    },\n)",
    "Var(\n    VarDecl {\n        span: 938..978,\n        kind: Var,\n        declare: false,\n        declarators: [\n            VarDeclarator {\n                span: 938..978,\n                name: _,\n                init: None,\n            },\n        ],\n    },\n)",
    "Var(\n    VarDecl {\n        span: 975..1041,\n        kind: Var,\n        declare: false,\n        declarators: [\n            VarDeclarator {\n                span: 975..990,\n                name: _,\n                init: None,\n            },\n        ],\n    },\n)",
    "Var(\n    VarDecl {\n        span: 1038..1081,\n        kind: Var,\n        declare: false,\n        declarators: [\n            VarDeclarator {\n                span: 1038..1053,\n                name: _,\n                init: None,\n            },\n        ],\n    },\n)",
    "TsModule(\n    TsModuleDecl {\n        span: 468..1081,\n        declare: false,\n        global: false,\n        namespace: false,\n        id: Ident(\n            Ident {\n                span: 475..476,\n                sym: \"M\",\n            },\n        ),\n        body: Some(\n            ModuleBlock(\n                [\n                    _,\n                    _,\n                    _,\n                    _,\n                    _,\n                    _,\n                    _,\n                    _,\n                    _,\n                    _,\n                    _,\n                    _,\n                    _,\n                    _,\n                ],\n            ),\n        ),\n    },\n)"
  ],
  "pats": [
    "Ident(\n    Ident {\n        span: 176..177,\n        sym: \"a\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 186..188,\n        sym: \"r1\",\n    },\n)",
    "Assign(\n    AssignPat {\n        span: 189..200,\n        left: _,\n        right: _,\n    },\n)",
    "Ident(\n    Ident {\n        span: 201..203,\n        sym: \"r2\",\n    },\n)",
    "Assign(\n    AssignPat {\n        span: 204..212,\n        left: _,\n        right: _,\n    },\n)",
    "Ident(\n    Ident {\n        span: 217..219,\n        sym: \"r3\",\n    },\n)",
    "Assign(\n    AssignPat {\n        span: 220..228,\n        left: _,\n        right: _,\n    },\n)",
    "Ident(\n    Ident {\n        span: 352..353,\n        sym: \"b\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 370..372,\n        sym: \"r4\",\n    },\n)",
    "Assign(\n    AssignPat {\n        span: 373..384,\n        left: _,\n        right: _,\n    },\n)",
    "Ident(\n    Ident {\n        span: 385..387,\n        sym: \"r5\",\n    },\n)",
    "Assign(\n    AssignPat {\n        span: 388..396,\n        left: _,\n        right: _,\n    },\n)",
    "Ident(\n    Ident {\n        span: 401..403,\n        sym: \"r6\",\n    },\n)",
    "Assign(\n    AssignPat {\n        span: 404..412,\n        left: _,\n        right: _,\n    },\n)",
    "Ident(\n    Ident {\n        span: 626..627,\n        sym: \"a\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 640..642,\n        sym: \"r1\",\n    },\n)",
    "Assign(\n    AssignPat {\n        span: 643..651,\n        left: _,\n        right: _,\n    },\n)",
    "Ident(\n    Ident {\n        span: 678..680,\n        sym: \"r2\",\n    },\n)",
    "Assign(\n    AssignPat {\n        span: 681..689,\n        left: _,\n        right: _,\n    },\n)",
    "Ident(\n    Ident {\n        span: 741..743,\n        sym: \"r3\",\n    },\n)",
    "Assign(\n    AssignPat {\n        span: 744..752,\n        left: _,\n        right: _,\n    },\n)",
    "Ident(\n    Ident {\n        span: 920..921,\n        sym: \"b\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 942..944,\n        sym: \"r4\",\n    },\n)",
    "Assign(\n    AssignPat {\n        span: 945..978,\n        left: _,\n        right: _,\n    },\n)",
    "Ident(\n    Ident {\n        span: 979..981,\n        sym: \"r5\",\n    },\n)",
    "Assign(\n    AssignPat {\n        span: 982..990,\n        left: _,\n        right: _,\n    },\n)",
    "Ident(\n    Ident {\n        span: 1042..1044,\n        sym: \"r6\",\n    },\n)",
    "Assign(\n    AssignPat {\n        span: 1045..1053,\n        left: _,\n        right: _,\n    },\n)"
  ],
  "exprs": [
    "Ident(\n    Ident {\n        span: 191..192,\n        sym: \"a\",\n    },\n)",
    "Member(\n    MemberExpr {\n        span: 192..200,\n        obj: _,\n        prop: Ident(\n            Ident {\n                span: 193..196,\n                sym: \"foo\",\n            },\n        ),\n    },\n)",
    "Ident(\n    Ident {\n        span: 206..207,\n        sym: \"a\",\n    },\n)",
    "Member(\n    MemberExpr {\n        span: 207..212,\n        obj: _,\n        prop: Ident(\n            Ident {\n                span: 208..211,\n                sym: \"bar\",\n            },\n        ),\n    },\n)",
    "Ident(\n    Ident {\n        span: 222..223,\n        sym: \"a\",\n    },\n)",
    "Member(\n    MemberExpr {\n        span: 223..228,\n        obj: _,\n        prop: Ident(\n            Ident {\n                span: 224..227,\n                sym: \"baz\",\n            },\n        ),\n    },\n)",
    "Ident(\n    Ident {\n        span: 375..376,\n        sym: \"b\",\n    },\n)",
    "Member(\n    MemberExpr {\n        span: 376..384,\n        obj: _,\n        prop: Ident(\n            Ident {\n                span: 377..380,\n                sym: \"foo\",\n            },\n        ),\n    },\n)",
    "Ident(\n    Ident {\n        span: 390..391,\n        sym: \"b\",\n    },\n)",
    "Member(\n    MemberExpr {\n        span: 391..396,\n        obj: _,\n        prop: Ident(\n            Ident {\n                span: 392..395,\n                sym: \"bar\",\n            },\n        ),\n    },\n)",
    "Ident(\n    Ident {\n        span: 406..407,\n        sym: \"b\",\n    },\n)",
    "Member(\n    MemberExpr {\n        span: 407..412,\n        obj: _,\n        prop: Ident(\n            Ident {\n                span: 408..411,\n                sym: \"baz\",\n            },\n        ),\n    },\n)",
    "Ident(\n    Ident {\n        span: 645..646,\n        sym: \"a\",\n    },\n)",
    "Member(\n    MemberExpr {\n        span: 646..651,\n        obj: _,\n        prop: Ident(\n            Ident {\n                span: 647..650,\n                sym: \"foo\",\n            },\n        ),\n    },\n)",
    "Ident(\n    Ident {\n        span: 683..684,\n        sym: \"a\",\n    },\n)",
    "Member(\n    MemberExpr {\n        span: 684..689,\n        obj: _,\n        prop: Ident(\n            Ident {\n                span: 685..688,\n                sym: \"bar\",\n            },\n        ),\n    },\n)",
    "Ident(\n    Ident {\n        span: 746..747,\n        sym: \"a\",\n    },\n)",
    "Member(\n    MemberExpr {\n        span: 747..752,\n        obj: _,\n        prop: Ident(\n            Ident {\n                span: 748..751,\n                sym: \"baz\",\n            },\n        ),\n    },\n)",
    "Ident(\n    Ident {\n        span: 947..948,\n        sym: \"b\",\n    },\n)",
    "Member(\n    MemberExpr {\n        span: 948..978,\n        obj: _,\n        prop: Ident(\n            Ident {\n                span: 949..952,\n                sym: \"foo\",\n            },\n        ),\n    },\n)",
    "Ident(\n    Ident {\n        span: 984..985,\n        sym: \"b\",\n    },\n)",
    "Member(\n    MemberExpr {\n        span: 985..990,\n        obj: _,\n        prop: Ident(\n            Ident {\n                span: 986..989,\n                sym: \"bar\",\n            },\n        ),\n    },\n)",
    "Ident(\n    Ident {\n        span: 1047..1048,\n        sym: \"b\",\n    },\n)",
    "Member(\n    MemberExpr {\n        span: 1048..1053,\n        obj: _,\n        prop: Ident(\n            Ident {\n                span: 1049..1052,\n                sym: \"baz\",\n            },\n        ),\n    },\n)"
  ],
  "module_decls": [],
  "functions": [],
  "classes": [],
  "class_members": [],
  "jsx_elements": [],
  "ts_types": [
    "Keyword(\n    String,\n)",
    "Keyword(\n    Number,\n)",
    "Keyword(\n    Boolean,\n)",
    "TypeRef(\n    TsTypeRef {\n        span: 278..280,\n        name: Ident {\n            span: 278..280,\n            sym: \"T\",\n        },\n        type_args: [],\n    },\n)",
    "TypeRef(\n    TsTypeRef {\n        span: 310..312,\n        name: Ident {\n            span: 310..312,\n            sym: \"T\",\n        },\n        type_args: [],\n    },\n)",
    "TypeRef(\n    TsTypeRef {\n        span: 342..344,\n        name: Ident {\n            span: 342..344,\n            sym: \"T\",\n        },\n        type_args: [],\n    },\n)",
    "Keyword(\n    String,\n)",
    "Keyword(\n    Number,\n)",
    "Keyword(\n    Boolean,\n)",
    "TypeRef(\n    TsTypeRef {\n        span: 814..816,\n        name: Ident {\n            span: 814..816,\n            sym: \"T\",\n        },\n        type_args: [],\n    },\n)",
    "TypeRef(\n    TsTypeRef {\n        span: 858..860,\n        name: Ident {\n            span: 858..860,\n            sym: \"T\",\n        },\n        type_args: [],\n    },\n)",
    "TypeRef(\n    TsTypeRef {\n        span: 902..904,\n        name: Ident {\n            span: 902..904,\n            sym: \"T\",\n        },\n        type_args: [],\n    },\n)"
  ]
}
