{
  "programs": [
    "Program {\n    span: 150..1141,\n    kind: Script,\n    body: [\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)"
  ],
  "decls": [
    "TsInterface(\n    TsInterfaceDecl {\n        span: 150..214,\n        ident: Ident {\n            span: 160..165,\n            sym: \"Base1\",\n        },\n        declare: false,\n        type_params: [],\n        extends: [],\n        body: [\n            TsTypeMember {\n                span: 172..203,\n                kind: Property,\n                name: Some(\n                    Ident(\n                        Ident {\n                            span: 172..173,\n                            sym: \"x\",\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: 205..269,\n        ident: Ident {\n            span: 215..220,\n            sym: \"Base2\",\n        },\n        declare: false,\n        type_params: [],\n        extends: [],\n        body: [\n            TsTypeMember {\n                span: 227..258,\n                kind: Property,\n                name: Some(\n                    Ident(\n                        Ident {\n                            span: 227..228,\n                            sym: \"x\",\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: 260..358,\n        ident: Ident {\n            span: 270..277,\n            sym: \"Derived\",\n        },\n        declare: false,\n        type_params: [],\n        extends: [\n            Ident {\n                span: 286..292,\n                sym: \"Base1\",\n            },\n            Ident {\n                span: 293..300,\n                sym: \"Base2\",\n            },\n        ],\n        body: [\n            TsTypeMember {\n                span: 305..347,\n                kind: Property,\n                name: Some(\n                    Ident(\n                        Ident {\n                            span: 305..306,\n                            sym: \"x\",\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: 349..454,\n        ident: Ident {\n            span: 359..367,\n            sym: \"Derived2\",\n        },\n        declare: false,\n        type_params: [],\n        extends: [\n            Ident {\n                span: 376..382,\n                sym: \"Base1\",\n            },\n            Ident {\n                span: 383..390,\n                sym: \"Base2\",\n            },\n        ],\n        body: [\n            TsTypeMember {\n                span: 404..446,\n                kind: Property,\n                name: Some(\n                    Ident(\n                        Ident {\n                            span: 404..405,\n                            sym: \"x\",\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: 469..551,\n        ident: Ident {\n            span: 479..484,\n            sym: \"Base1\",\n        },\n        declare: false,\n        type_params: [\n            Ident {\n                span: 485..486,\n                sym: \"T\",\n            },\n        ],\n        extends: [],\n        body: [\n            TsTypeMember {\n                span: 498..536,\n                kind: Property,\n                name: Some(\n                    Ident(\n                        Ident {\n                            span: 498..499,\n                            sym: \"x\",\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: 542..624,\n        ident: Ident {\n            span: 552..557,\n            sym: \"Base2\",\n        },\n        declare: false,\n        type_params: [\n            Ident {\n                span: 558..559,\n                sym: \"T\",\n            },\n        ],\n        extends: [],\n        body: [\n            TsTypeMember {\n                span: 571..609,\n                kind: Property,\n                name: Some(\n                    Ident(\n                        Ident {\n                            span: 571..572,\n                            sym: \"x\",\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: 615..752,\n        ident: Ident {\n            span: 625..632,\n            sym: \"Derived\",\n        },\n        declare: false,\n        type_params: [\n            Ident {\n                span: 633..634,\n                sym: \"T\",\n            },\n        ],\n        extends: [\n            Ident {\n                span: 644..650,\n                sym: \"Base1\",\n            },\n            Ident {\n                span: 659..665,\n                sym: \"Base2\",\n            },\n        ],\n        body: [\n            TsTypeMember {\n                span: 683..737,\n                kind: Property,\n                name: Some(\n                    Ident(\n                        Ident {\n                            span: 683..684,\n                            sym: \"x\",\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: 743..864,\n        ident: Ident {\n            span: 753..761,\n            sym: \"Derived2\",\n        },\n        declare: false,\n        type_params: [\n            Ident {\n                span: 762..763,\n                sym: \"T\",\n            },\n            Ident {\n                span: 765..766,\n                sym: \"U\",\n            },\n        ],\n        extends: [\n            Ident {\n                span: 776..782,\n                sym: \"Base1\",\n            },\n            Ident {\n                span: 786..792,\n                sym: \"Base2\",\n            },\n        ],\n        body: [\n            TsTypeMember {\n                span: 805..849,\n                kind: Property,\n                name: Some(\n                    Ident(\n                        Ident {\n                            span: 805..806,\n                            sym: \"x\",\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: 855..941,\n        ident: Ident {\n            span: 865..873,\n            sym: \"Derived3\",\n        },\n        declare: false,\n        type_params: [\n            Ident {\n                span: 874..875,\n                sym: \"T\",\n            },\n        ],\n        extends: [\n            Ident {\n                span: 885..891,\n                sym: \"Base1\",\n            },\n            Ident {\n                span: 900..906,\n                sym: \"Base2\",\n            },\n        ],\n        body: [],\n    },\n)",
    "TsInterface(\n    TsInterfaceDecl {\n        span: 932..1069,\n        ident: Ident {\n            span: 942..950,\n            sym: \"Derived4\",\n        },\n        declare: false,\n        type_params: [\n            Ident {\n                span: 951..952,\n                sym: \"T\",\n            },\n        ],\n        extends: [\n            Ident {\n                span: 962..968,\n                sym: \"Base1\",\n            },\n            Ident {\n                span: 977..983,\n                sym: \"Base2\",\n            },\n        ],\n        body: [\n            TsTypeMember {\n                span: 1010..1054,\n                kind: Property,\n                name: Some(\n                    Ident(\n                        Ident {\n                            span: 1010..1011,\n                            sym: \"x\",\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: 1060..1141,\n        ident: Ident {\n            span: 1070..1078,\n            sym: \"Derived5\",\n        },\n        declare: false,\n        type_params: [\n            Ident {\n                span: 1079..1080,\n                sym: \"T\",\n            },\n        ],\n        extends: [\n            Ident {\n                span: 1090..1096,\n                sym: \"Base1\",\n            },\n            Ident {\n                span: 1100..1106,\n                sym: \"Base2\",\n            },\n        ],\n        body: [\n            TsTypeMember {\n                span: 1128..1139,\n                kind: Property,\n                name: Some(\n                    Ident(\n                        Ident {\n                            span: 1128..1129,\n                            sym: \"x\",\n                        },\n                    ),\n                ),\n                optional: false,\n                readonly: false,\n                params: [],\n                ty: Some(\n                    _,\n                ),\n            },\n        ],\n    },\n)",
    "TsModule(\n    TsModuleDecl {\n        span: 448..1141,\n        declare: false,\n        global: false,\n        namespace: false,\n        id: Ident(\n            Ident {\n                span: 455..462,\n                sym: \"Generic\",\n            },\n        ),\n        body: Some(\n            ModuleBlock(\n                [\n                    _,\n                    _,\n                    _,\n                    _,\n                    _,\n                    _,\n                    _,\n                ],\n            ),\n        ),\n    },\n)"
  ],
  "pats": [],
  "exprs": [],
  "module_decls": [],
  "functions": [],
  "classes": [],
  "class_members": [],
  "jsx_elements": [],
  "ts_types": [
    "Keyword(\n    String,\n)",
    "TypeLit(\n    TsTypeLit {\n        span: 175..203,\n        members: [\n            TsTypeMember {\n                span: 185..201,\n                kind: Property,\n                name: Some(\n                    Ident(\n                        Ident {\n                            span: 185..186,\n                            sym: \"a\",\n                        },\n                    ),\n                ),\n                optional: false,\n                readonly: false,\n                params: [],\n                ty: Some(\n                    _,\n                ),\n            },\n        ],\n    },\n)",
    "Keyword(\n    String,\n)",
    "TypeLit(\n    TsTypeLit {\n        span: 230..258,\n        members: [\n            TsTypeMember {\n                span: 240..256,\n                kind: Property,\n                name: Some(\n                    Ident(\n                        Ident {\n                            span: 240..241,\n                            sym: \"b\",\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: 308..347,\n        members: [\n            TsTypeMember {\n                span: 318..330,\n                kind: Property,\n                name: Some(\n                    Ident(\n                        Ident {\n                            span: 318..319,\n                            sym: \"a\",\n                        },\n                    ),\n                ),\n                optional: false,\n                readonly: false,\n                params: [],\n                ty: Some(\n                    _,\n                ),\n            },\n            TsTypeMember {\n                span: 329..345,\n                kind: Property,\n                name: Some(\n                    Ident(\n                        Ident {\n                            span: 329..330,\n                            sym: \"b\",\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    Number,\n)",
    "TypeLit(\n    TsTypeLit {\n        span: 407..446,\n        members: [\n            TsTypeMember {\n                span: 417..429,\n                kind: Property,\n                name: Some(\n                    Ident(\n                        Ident {\n                            span: 417..418,\n                            sym: \"a\",\n                        },\n                    ),\n                ),\n                optional: false,\n                readonly: false,\n                params: [],\n                ty: Some(\n                    _,\n                ),\n            },\n            TsTypeMember {\n                span: 428..444,\n                kind: Property,\n                name: Some(\n                    Ident(\n                        Ident {\n                            span: 428..429,\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: 518..520,\n        name: Ident {\n            span: 518..520,\n            sym: \"T\",\n        },\n        type_args: [],\n    },\n)",
    "TypeLit(\n    TsTypeLit {\n        span: 501..536,\n        members: [\n            TsTypeMember {\n                span: 515..530,\n                kind: Property,\n                name: Some(\n                    Ident(\n                        Ident {\n                            span: 515..516,\n                            sym: \"a\",\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: 591..593,\n        name: Ident {\n            span: 591..593,\n            sym: \"T\",\n        },\n        type_args: [],\n    },\n)",
    "TypeLit(\n    TsTypeLit {\n        span: 574..609,\n        members: [\n            TsTypeMember {\n                span: 588..603,\n                kind: Property,\n                name: Some(\n                    Ident(\n                        Ident {\n                            span: 588..589,\n                            sym: \"b\",\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    Number,\n)",
    "TypeLit(\n    TsTypeLit {\n        span: 686..737,\n        members: [\n            TsTypeMember {\n                span: 700..712,\n                kind: Property,\n                name: Some(\n                    Ident(\n                        Ident {\n                            span: 700..701,\n                            sym: \"a\",\n                        },\n                    ),\n                ),\n                optional: false,\n                readonly: false,\n                params: [],\n                ty: Some(\n                    _,\n                ),\n            },\n            TsTypeMember {\n                span: 711..731,\n                kind: Property,\n                name: Some(\n                    Ident(\n                        Ident {\n                            span: 711..712,\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: 825..827,\n        name: Ident {\n            span: 825..827,\n            sym: \"T\",\n        },\n        type_args: [],\n    },\n)",
    "TypeRef(\n    TsTypeRef {\n        span: 831..833,\n        name: Ident {\n            span: 831..833,\n            sym: \"U\",\n        },\n        type_args: [],\n    },\n)",
    "TypeLit(\n    TsTypeLit {\n        span: 808..849,\n        members: [\n            TsTypeMember {\n                span: 822..829,\n                kind: Property,\n                name: Some(\n                    Ident(\n                        Ident {\n                            span: 822..823,\n                            sym: \"a\",\n                        },\n                    ),\n                ),\n                optional: false,\n                readonly: false,\n                params: [],\n                ty: Some(\n                    _,\n                ),\n            },\n            TsTypeMember {\n                span: 828..843,\n                kind: Property,\n                name: Some(\n                    Ident(\n                        Ident {\n                            span: 828..829,\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: 1030..1032,\n        name: Ident {\n            span: 1030..1032,\n            sym: \"T\",\n        },\n        type_args: [],\n    },\n)",
    "TypeRef(\n    TsTypeRef {\n        span: 1036..1038,\n        name: Ident {\n            span: 1036..1038,\n            sym: \"T\",\n        },\n        type_args: [],\n    },\n)",
    "TypeLit(\n    TsTypeLit {\n        span: 1013..1054,\n        members: [\n            TsTypeMember {\n                span: 1027..1034,\n                kind: Property,\n                name: Some(\n                    Ident(\n                        Ident {\n                            span: 1027..1028,\n                            sym: \"a\",\n                        },\n                    ),\n                ),\n                optional: false,\n                readonly: false,\n                params: [],\n                ty: Some(\n                    _,\n                ),\n            },\n            TsTypeMember {\n                span: 1033..1048,\n                kind: Property,\n                name: Some(\n                    Ident(\n                        Ident {\n                            span: 1033..1034,\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: 1131..1133,\n        name: Ident {\n            span: 1131..1133,\n            sym: \"T\",\n        },\n        type_args: [],\n    },\n)"
  ]
}
