{
  "programs": [
    "Program {\n    span: 69..1601,\n    kind: Script,\n    body: [\n        _,\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)",
    "Expr(\n    ExprStmt {\n        span: 1125..1131,\n        expr: _,\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)",
    "Empty(\n    EmptyStmt {\n        span: 1572..1573,\n    },\n)",
    "Decl(\n    _,\n)",
    "Expr(\n    ExprStmt {\n        span: 1600..1601,\n        expr: _,\n    },\n)"
  ],
  "decls": [
    "TsInterface(\n    TsInterfaceDecl {\n        span: 69..110,\n        ident: Ident {\n            span: 79..83,\n            sym: \"Base\",\n        },\n        declare: false,\n        type_params: [],\n        extends: [],\n        body: [\n            TsTypeMember {\n                span: 86..100,\n                kind: Property,\n                name: Some(\n                    Ident(\n                        Ident {\n                            span: 86..89,\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: 101..158,\n        ident: Ident {\n            span: 111..118,\n            sym: \"Derived\",\n        },\n        declare: false,\n        type_params: [],\n        extends: [\n            Ident {\n                span: 127..133,\n                sym: \"Base\",\n            },\n        ],\n        body: [\n            TsTypeMember {\n                span: 134..148,\n                kind: Property,\n                name: Some(\n                    Ident(\n                        Ident {\n                            span: 134..137,\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: 149..821,\n        ident: Ident {\n            span: 159..167,\n            sym: \"Derived2\",\n        },\n        declare: false,\n        type_params: [],\n        extends: [\n            Ident {\n                span: 176..185,\n                sym: \"Derived\",\n            },\n        ],\n        body: [\n            TsTypeMember {\n                span: 186..200,\n                kind: Property,\n                name: Some(\n                    Ident(\n                        Ident {\n                            span: 186..189,\n                            sym: \"baz\",\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: 812..854,\n        ident: Ident {\n            span: 822..823,\n            sym: \"T\",\n        },\n        declare: false,\n        type_params: [],\n        extends: [],\n        body: [\n            TsTypeMember {\n                span: 830..843,\n                kind: Property,\n                name: Some(\n                    Ident(\n                        Ident {\n                            span: 830..833,\n                            sym: \"Foo\",\n                        },\n                    ),\n                ),\n                optional: true,\n                readonly: false,\n                params: [],\n                ty: Some(\n                    _,\n                ),\n            },\n        ],\n    },\n)",
    "TsInterface(\n    TsInterfaceDecl {\n        span: 845..898,\n        ident: Ident {\n            span: 855..856,\n            sym: \"S\",\n        },\n        declare: false,\n        type_params: [],\n        extends: [\n            Ident {\n                span: 865..868,\n                sym: \"T\",\n            },\n        ],\n        body: [\n            TsTypeMember {\n                span: 873..887,\n                kind: Property,\n                name: Some(\n                    Ident(\n                        Ident {\n                            span: 873..876,\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: 889..931,\n        ident: Ident {\n            span: 899..901,\n            sym: \"T2\",\n        },\n        declare: false,\n        type_params: [],\n        extends: [],\n        body: [\n            TsTypeMember {\n                span: 908..920,\n                kind: Property,\n                name: Some(\n                    Num(\n                        NumberLit {\n                            span: 908..909,\n                            value: 1.0,\n                        },\n                    ),\n                ),\n                optional: true,\n                readonly: false,\n                params: [],\n                ty: Some(\n                    _,\n                ),\n            },\n        ],\n    },\n)",
    "TsInterface(\n    TsInterfaceDecl {\n        span: 922..976,\n        ident: Ident {\n            span: 932..934,\n            sym: \"S2\",\n        },\n        declare: false,\n        type_params: [],\n        extends: [\n            Ident {\n                span: 943..947,\n                sym: \"T2\",\n            },\n        ],\n        body: [\n            TsTypeMember {\n                span: 952..965,\n                kind: Property,\n                name: Some(\n                    Num(\n                        NumberLit {\n                            span: 952..953,\n                            value: 1.0,\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: 967..1010,\n        ident: Ident {\n            span: 977..979,\n            sym: \"T3\",\n        },\n        declare: false,\n        type_params: [],\n        extends: [],\n        body: [\n            TsTypeMember {\n                span: 986..999,\n                kind: Property,\n                name: Some(\n                    Str(\n                        StrLit {\n                            span: 986..989,\n                            value: \"1\",\n                        },\n                    ),\n                ),\n                optional: true,\n                readonly: false,\n                params: [],\n                ty: Some(\n                    _,\n                ),\n            },\n        ],\n    },\n)",
    "TsInterface(\n    TsInterfaceDecl {\n        span: 1001..1075,\n        ident: Ident {\n            span: 1011..1013,\n            sym: \"S3\",\n        },\n        declare: false,\n        type_params: [],\n        extends: [\n            Ident {\n                span: 1022..1026,\n                sym: \"T3\",\n            },\n        ],\n        body: [\n            TsTypeMember {\n                span: 1031..1047,\n                kind: Property,\n                name: Some(\n                    Str(\n                        StrLit {\n                            span: 1031..1035,\n                            value: \"1.\",\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: 1072..1099,\n        kind: Var,\n        declare: false,\n        declarators: [\n            VarDeclarator {\n                span: 1072..1095,\n                name: _,\n                init: None,\n            },\n        ],\n    },\n)",
    "Var(\n    VarDecl {\n        span: 1128..1157,\n        kind: Var,\n        declare: false,\n        declarators: [\n            VarDeclarator {\n                span: 1128..1149,\n                name: _,\n                init: None,\n            },\n        ],\n    },\n)",
    "TsInterface(\n    TsInterfaceDecl {\n        span: 1174..1228,\n        ident: Ident {\n            span: 1184..1185,\n            sym: \"T\",\n        },\n        declare: false,\n        type_params: [],\n        extends: [],\n        body: [\n            TsTypeMember {\n                span: 1196..1213,\n                kind: Property,\n                name: Some(\n                    Ident(\n                        Ident {\n                            span: 1196..1199,\n                            sym: \"Foo\",\n                        },\n                    ),\n                ),\n                optional: true,\n                readonly: false,\n                params: [],\n                ty: Some(\n                    _,\n                ),\n            },\n        ],\n    },\n)",
    "TsInterface(\n    TsInterfaceDecl {\n        span: 1219..1286,\n        ident: Ident {\n            span: 1229..1230,\n            sym: \"S\",\n        },\n        declare: false,\n        type_params: [],\n        extends: [\n            Ident {\n                span: 1239..1242,\n                sym: \"T\",\n            },\n        ],\n        body: [\n            TsTypeMember {\n                span: 1251..1271,\n                kind: Property,\n                name: Some(\n                    Ident(\n                        Ident {\n                            span: 1251..1254,\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: 1277..1330,\n        ident: Ident {\n            span: 1287..1289,\n            sym: \"T2\",\n        },\n        declare: false,\n        type_params: [],\n        extends: [],\n        body: [\n            TsTypeMember {\n                span: 1300..1315,\n                kind: Property,\n                name: Some(\n                    Num(\n                        NumberLit {\n                            span: 1300..1301,\n                            value: 1.0,\n                        },\n                    ),\n                ),\n                optional: true,\n                readonly: false,\n                params: [],\n                ty: Some(\n                    _,\n                ),\n            },\n        ],\n    },\n)",
    "TsInterface(\n    TsInterfaceDecl {\n        span: 1321..1388,\n        ident: Ident {\n            span: 1331..1333,\n            sym: \"S2\",\n        },\n        declare: false,\n        type_params: [],\n        extends: [\n            Ident {\n                span: 1342..1346,\n                sym: \"T2\",\n            },\n        ],\n        body: [\n            TsTypeMember {\n                span: 1355..1373,\n                kind: Property,\n                name: Some(\n                    Num(\n                        NumberLit {\n                            span: 1355..1356,\n                            value: 1.0,\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: 1379..1434,\n        ident: Ident {\n            span: 1389..1391,\n            sym: \"T3\",\n        },\n        declare: false,\n        type_params: [],\n        extends: [],\n        body: [\n            TsTypeMember {\n                span: 1402..1419,\n                kind: Property,\n                name: Some(\n                    Str(\n                        StrLit {\n                            span: 1402..1405,\n                            value: \"1\",\n                        },\n                    ),\n                ),\n                optional: true,\n                readonly: false,\n                params: [],\n                ty: Some(\n                    _,\n                ),\n            },\n        ],\n    },\n)",
    "TsInterface(\n    TsInterfaceDecl {\n        span: 1425..1516,\n        ident: Ident {\n            span: 1435..1437,\n            sym: \"S3\",\n        },\n        declare: false,\n        type_params: [],\n        extends: [\n            Ident {\n                span: 1446..1450,\n                sym: \"T3\",\n            },\n        ],\n        body: [\n            TsTypeMember {\n                span: 1459..1480,\n                kind: Property,\n                name: Some(\n                    Str(\n                        StrLit {\n                            span: 1459..1463,\n                            value: \"1.\",\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: 1513..1544,\n        kind: Var,\n        declare: false,\n        declarators: [\n            VarDeclarator {\n                span: 1513..1536,\n                name: _,\n                init: None,\n            },\n        ],\n    },\n)",
    "TsModule(\n    TsModuleDecl {\n        span: 1151..1573,\n        declare: false,\n        global: false,\n        namespace: false,\n        id: Ident(\n            Ident {\n                span: 1158..1167,\n                sym: \"TwoLevels\",\n            },\n        ),\n        body: Some(\n            ModuleBlock(\n                [\n                    _,\n                    _,\n                    _,\n                    _,\n                    _,\n                    _,\n                    _,\n                ],\n            ),\n        ),\n    },\n)",
    "Var(\n    VarDecl {\n        span: 1578..1601,\n        kind: Var,\n        declare: false,\n        declarators: [\n            VarDeclarator {\n                span: 1578..1599,\n                name: _,\n                init: None,\n            },\n        ],\n    },\n)"
  ],
  "pats": [
    "Ident(\n    Ident {\n        span: 1076..1077,\n        sym: \"a\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 1132..1133,\n        sym: \"r\",\n    },\n)",
    "Assign(\n    AssignPat {\n        span: 1134..1149,\n        left: _,\n        right: _,\n    },\n)",
    "Ident(\n    Ident {\n        span: 1517..1518,\n        sym: \"a\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 1582..1583,\n        sym: \"r\",\n    },\n)",
    "Assign(\n    AssignPat {\n        span: 1584..1599,\n        left: _,\n        right: _,\n    },\n)"
  ],
  "exprs": [
    "Lit(\n    Null(\n        NullLit {\n            span: 0..0,\n        },\n    ),\n)",
    "Lit(\n    Bool(\n        BoolLit {\n            span: 1136..1140,\n            value: true,\n        },\n    ),\n)",
    "Ident(\n    Ident {\n        span: 1143..1144,\n        sym: \"a\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 1147..1148,\n        sym: \"b\",\n    },\n)",
    "Cond(\n    CondExpr {\n        span: 1141..1149,\n        test: _,\n        cons: _,\n        alt: _,\n    },\n)",
    "Lit(\n    Bool(\n        BoolLit {\n            span: 1586..1590,\n            value: true,\n        },\n    ),\n)",
    "Ident(\n    Ident {\n        span: 1593..1594,\n        sym: \"a\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 1597..1598,\n        sym: \"b\",\n    },\n)",
    "Cond(\n    CondExpr {\n        span: 1591..1599,\n        test: _,\n        cons: _,\n        alt: _,\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    String,\n)",
    "Keyword(\n    String,\n)",
    "Keyword(\n    String,\n)",
    "TypeRef(\n    TsTypeRef {\n        span: 836..841,\n        name: Ident {\n            span: 836..841,\n            sym: \"Base\",\n        },\n        type_args: [],\n    },\n)",
    "TypeRef(\n    TsTypeRef {\n        span: 878..887,\n        name: Ident {\n            span: 878..887,\n            sym: \"Derived\",\n        },\n        type_args: [],\n    },\n)",
    "TypeRef(\n    TsTypeRef {\n        span: 912..917,\n        name: Ident {\n            span: 912..917,\n            sym: \"Base\",\n        },\n        type_args: [],\n    },\n)",
    "TypeRef(\n    TsTypeRef {\n        span: 955..963,\n        name: Ident {\n            span: 955..963,\n            sym: \"Derived\",\n        },\n        type_args: [],\n    },\n)",
    "TypeRef(\n    TsTypeRef {\n        span: 992..997,\n        name: Ident {\n            span: 992..997,\n            sym: \"Base\",\n        },\n        type_args: [],\n    },\n)",
    "TypeRef(\n    TsTypeRef {\n        span: 1037..1045,\n        name: Ident {\n            span: 1037..1045,\n            sym: \"Derived\",\n        },\n        type_args: [],\n    },\n)",
    "TypeRef(\n    TsTypeRef {\n        span: 1202..1207,\n        name: Ident {\n            span: 1202..1207,\n            sym: \"Base\",\n        },\n        type_args: [],\n    },\n)",
    "TypeRef(\n    TsTypeRef {\n        span: 1256..1271,\n        name: Ident {\n            span: 1256..1271,\n            sym: \"Derived2\",\n        },\n        type_args: [],\n    },\n)",
    "TypeRef(\n    TsTypeRef {\n        span: 1304..1309,\n        name: Ident {\n            span: 1304..1309,\n            sym: \"Base\",\n        },\n        type_args: [],\n    },\n)",
    "TypeRef(\n    TsTypeRef {\n        span: 1358..1367,\n        name: Ident {\n            span: 1358..1367,\n            sym: \"Derived2\",\n        },\n        type_args: [],\n    },\n)",
    "TypeRef(\n    TsTypeRef {\n        span: 1408..1413,\n        name: Ident {\n            span: 1408..1413,\n            sym: \"Base\",\n        },\n        type_args: [],\n    },\n)",
    "TypeRef(\n    TsTypeRef {\n        span: 1465..1474,\n        name: Ident {\n            span: 1465..1474,\n            sym: \"Derived2\",\n        },\n        type_args: [],\n    },\n)"
  ]
}
