{
  "programs": [
    "Program {\n    span: 1..482,\n    kind: Script,\n    body: [\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)",
    "ModuleDecl(\n    _,\n)",
    "Decl(\n    _,\n)",
    "ModuleDecl(\n    _,\n)",
    "Decl(\n    _,\n)"
  ],
  "decls": [
    "TsInterface(\n    TsInterfaceDecl {\n        span: 1..40,\n        ident: Ident {\n            span: 11..12,\n            sym: \"A\",\n        },\n        declare: false,\n        type_params: [\n            Ident {\n                span: 13..14,\n                sym: \"T\",\n            },\n        ],\n        extends: [],\n        body: [\n            TsTypeMember {\n                span: 22..29,\n                kind: Property,\n                name: Some(\n                    Ident(\n                        Ident {\n                            span: 22..23,\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: 31..79,\n        ident: Ident {\n            span: 41..42,\n            sym: \"A\",\n        },\n        declare: false,\n        type_params: [\n            Ident {\n                span: 43..44,\n                sym: \"T\",\n            },\n            Ident {\n                span: 46..47,\n                sym: \"U\",\n            },\n        ],\n        extends: [],\n        body: [\n            TsTypeMember {\n                span: 64..71,\n                kind: Property,\n                name: Some(\n                    Ident(\n                        Ident {\n                            span: 64..65,\n                            sym: \"y\",\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: 88..139,\n        ident: Ident {\n            span: 98..99,\n            sym: \"A\",\n        },\n        declare: false,\n        type_params: [\n            Ident {\n                span: 100..101,\n                sym: \"T\",\n            },\n        ],\n        extends: [],\n        body: [\n            TsTypeMember {\n                span: 113..124,\n                kind: Property,\n                name: Some(\n                    Ident(\n                        Ident {\n                            span: 113..114,\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: 130..180,\n        ident: Ident {\n            span: 140..141,\n            sym: \"A\",\n        },\n        declare: false,\n        type_params: [\n            Ident {\n                span: 142..143,\n                sym: \"T\",\n            },\n            Ident {\n                span: 145..146,\n                sym: \"U\",\n            },\n        ],\n        extends: [],\n        body: [\n            TsTypeMember {\n                span: 167..178,\n                kind: Property,\n                name: Some(\n                    Ident(\n                        Ident {\n                            span: 167..168,\n                            sym: \"y\",\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: 73..188,\n        declare: false,\n        global: false,\n        namespace: false,\n        id: Ident(\n            Ident {\n                span: 80..81,\n                sym: \"M\",\n            },\n        ),\n        body: Some(\n            ModuleBlock(\n                [\n                    _,\n                    _,\n                ],\n            ),\n        ),\n    },\n)",
    "TsInterface(\n    TsInterfaceDecl {\n        span: 198..236,\n        ident: Ident {\n            span: 208..209,\n            sym: \"A\",\n        },\n        declare: false,\n        type_params: [\n            Ident {\n                span: 210..211,\n                sym: \"T\",\n            },\n        ],\n        extends: [],\n        body: [\n            TsTypeMember {\n                span: 223..234,\n                kind: Property,\n                name: Some(\n                    Ident(\n                        Ident {\n                            span: 223..224,\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: 182..244,\n        declare: false,\n        global: false,\n        namespace: false,\n        id: Ident(\n            Ident {\n                span: 189..191,\n                sym: \"M2\",\n            },\n        ),\n        body: Some(\n            ModuleBlock(\n                [\n                    _,\n                ],\n            ),\n        ),\n    },\n)",
    "TsInterface(\n    TsInterfaceDecl {\n        span: 254..344,\n        ident: Ident {\n            span: 264..265,\n            sym: \"A\",\n        },\n        declare: false,\n        type_params: [\n            Ident {\n                span: 266..267,\n                sym: \"T\",\n            },\n            Ident {\n                span: 269..270,\n                sym: \"U\",\n            },\n        ],\n        extends: [],\n        body: [\n            TsTypeMember {\n                span: 331..342,\n                kind: Property,\n                name: Some(\n                    Ident(\n                        Ident {\n                            span: 331..332,\n                            sym: \"y\",\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: 238..352,\n        declare: false,\n        global: false,\n        namespace: false,\n        id: Ident(\n            Ident {\n                span: 245..247,\n                sym: \"M2\",\n            },\n        ),\n        body: Some(\n            ModuleBlock(\n                [\n                    _,\n                ],\n            ),\n        ),\n    },\n)",
    "TsInterface(\n    TsInterfaceDecl {\n        span: 369..407,\n        ident: Ident {\n            span: 379..380,\n            sym: \"A\",\n        },\n        declare: false,\n        type_params: [\n            Ident {\n                span: 381..382,\n                sym: \"T\",\n            },\n        ],\n        extends: [],\n        body: [\n            TsTypeMember {\n                span: 394..405,\n                kind: Property,\n                name: Some(\n                    Ident(\n                        Ident {\n                            span: 394..395,\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: 346..415,\n        declare: false,\n        global: false,\n        namespace: false,\n        id: Ident(\n            Ident {\n                span: 353..355,\n                sym: \"M3\",\n            },\n        ),\n        body: Some(\n            ModuleBlock(\n                [\n                    _,\n                ],\n            ),\n        ),\n    },\n)",
    "TsInterface(\n    TsInterfaceDecl {\n        span: 432..482,\n        ident: Ident {\n            span: 442..443,\n            sym: \"A\",\n        },\n        declare: false,\n        type_params: [\n            Ident {\n                span: 444..445,\n                sym: \"T\",\n            },\n            Ident {\n                span: 447..448,\n                sym: \"U\",\n            },\n        ],\n        extends: [],\n        body: [\n            TsTypeMember {\n                span: 469..480,\n                kind: Property,\n                name: Some(\n                    Ident(\n                        Ident {\n                            span: 469..470,\n                            sym: \"y\",\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: 409..482,\n        declare: false,\n        global: false,\n        namespace: false,\n        id: Ident(\n            Ident {\n                span: 416..418,\n                sym: \"M3\",\n            },\n        ),\n        body: Some(\n            ModuleBlock(\n                [\n                    _,\n                ],\n            ),\n        ),\n    },\n)"
  ],
  "pats": [],
  "exprs": [],
  "module_decls": [
    "ExportDecl(\n    ExportDecl {\n        span: 362..407,\n        decl: _,\n    },\n)",
    "ExportDecl(\n    ExportDecl {\n        span: 425..482,\n        decl: _,\n    },\n)"
  ],
  "functions": [],
  "classes": [],
  "class_members": [],
  "jsx_elements": [],
  "ts_types": [
    "TypeRef(\n    TsTypeRef {\n        span: 25..27,\n        name: Ident {\n            span: 25..27,\n            sym: \"T\",\n        },\n        type_args: [],\n    },\n)",
    "TypeRef(\n    TsTypeRef {\n        span: 67..69,\n        name: Ident {\n            span: 67..69,\n            sym: \"T\",\n        },\n        type_args: [],\n    },\n)",
    "TypeRef(\n    TsTypeRef {\n        span: 116..118,\n        name: Ident {\n            span: 116..118,\n            sym: \"T\",\n        },\n        type_args: [],\n    },\n)",
    "TypeRef(\n    TsTypeRef {\n        span: 170..172,\n        name: Ident {\n            span: 170..172,\n            sym: \"T\",\n        },\n        type_args: [],\n    },\n)",
    "TypeRef(\n    TsTypeRef {\n        span: 226..228,\n        name: Ident {\n            span: 226..228,\n            sym: \"T\",\n        },\n        type_args: [],\n    },\n)",
    "TypeRef(\n    TsTypeRef {\n        span: 334..336,\n        name: Ident {\n            span: 334..336,\n            sym: \"T\",\n        },\n        type_args: [],\n    },\n)",
    "TypeRef(\n    TsTypeRef {\n        span: 397..399,\n        name: Ident {\n            span: 397..399,\n            sym: \"T\",\n        },\n        type_args: [],\n    },\n)",
    "TypeRef(\n    TsTypeRef {\n        span: 472..474,\n        name: Ident {\n            span: 472..474,\n            sym: \"T\",\n        },\n        type_args: [],\n    },\n)"
  ]
}
