{
  "type": "Module",
  "span": {
    "start": 303,
    "end": 1295,
    "ctxt": 0
  },
  "body": [
    {
      "type": "ExportDeclaration",
      "span": {
        "start": 303,
        "end": 338,
        "ctxt": 0
      },
      "declaration": {
        "type": "ClassDeclaration",
        "identifier": {
          "type": "Identifier",
          "span": {
            "start": 316,
            "end": 317,
            "ctxt": 0
          },
          "value": "M",
          "optional": false
        },
        "declare": false,
        "span": {
          "start": 310,
          "end": 338,
          "ctxt": 0
        },
        "decorators": [],
        "body": [
          {
            "type": "ClassProperty",
            "span": {
              "start": 327,
              "end": 336,
              "ctxt": 0
            },
            "key": {
              "type": "Identifier",
              "span": {
                "start": 327,
                "end": 332,
                "ctxt": 0
              },
              "value": "field",
              "optional": false
            },
            "value": null,
            "typeAnnotation": {
              "type": "TsTypeAnnotation",
              "span": {
                "start": 332,
                "end": 335,
                "ctxt": 0
              },
              "typeAnnotation": {
                "type": "TsTypeReference",
                "span": {
                  "start": 334,
                  "end": 335,
                  "ctxt": 0
                },
                "typeName": {
                  "type": "Identifier",
                  "span": {
                    "start": 334,
                    "end": 335,
                    "ctxt": 0
                  },
                  "value": "T",
                  "optional": false
                },
                "typeParams": null
              }
            },
            "isStatic": false,
            "decorators": [],
            "accessibility": null,
            "isAbstract": false,
            "isOptional": false,
            "isOverride": false,
            "readonly": false,
            "declare": false,
            "definite": false
          }
        ],
        "superClass": null,
        "isAbstract": false,
        "typeParams": {
          "type": "TsTypeParameterDeclaration",
          "span": {
            "start": 317,
            "end": 320,
            "ctxt": 0
          },
          "parameters": [
            {
              "type": "TsTypeParameter",
              "span": {
                "start": 318,
                "end": 319,
                "ctxt": 0
              },
              "name": {
                "type": "Identifier",
                "span": {
                  "start": 318,
                  "end": 319,
                  "ctxt": 0
                },
                "value": "T",
                "optional": false
              },
              "constraint": null,
              "default": null
            }
          ]
        },
        "superTypeParams": null,
        "implements": []
      }
    },
    {
      "type": "ExportDeclaration",
      "span": {
        "start": 340,
        "end": 388,
        "ctxt": 0
      },
      "declaration": {
        "type": "ClassDeclaration",
        "identifier": {
          "type": "Identifier",
          "span": {
            "start": 353,
            "end": 354,
            "ctxt": 0
          },
          "value": "N",
          "optional": false
        },
        "declare": false,
        "span": {
          "start": 347,
          "end": 388,
          "ctxt": 0
        },
        "decorators": [],
        "body": [
          {
            "type": "ClassProperty",
            "span": {
              "start": 377,
              "end": 386,
              "ctxt": 0
            },
            "key": {
              "type": "Identifier",
              "span": {
                "start": 377,
                "end": 382,
                "ctxt": 0
              },
              "value": "other",
              "optional": false
            },
            "value": null,
            "typeAnnotation": {
              "type": "TsTypeAnnotation",
              "span": {
                "start": 382,
                "end": 385,
                "ctxt": 0
              },
              "typeAnnotation": {
                "type": "TsTypeReference",
                "span": {
                  "start": 384,
                  "end": 385,
                  "ctxt": 0
                },
                "typeName": {
                  "type": "Identifier",
                  "span": {
                    "start": 384,
                    "end": 385,
                    "ctxt": 0
                  },
                  "value": "U",
                  "optional": false
                },
                "typeParams": null
              }
            },
            "isStatic": false,
            "decorators": [],
            "accessibility": null,
            "isAbstract": false,
            "isOptional": false,
            "isOverride": false,
            "readonly": false,
            "declare": false,
            "definite": false
          }
        ],
        "superClass": {
          "type": "Identifier",
          "span": {
            "start": 366,
            "end": 367,
            "ctxt": 0
          },
          "value": "M",
          "optional": false
        },
        "isAbstract": false,
        "typeParams": {
          "type": "TsTypeParameterDeclaration",
          "span": {
            "start": 354,
            "end": 357,
            "ctxt": 0
          },
          "parameters": [
            {
              "type": "TsTypeParameter",
              "span": {
                "start": 355,
                "end": 356,
                "ctxt": 0
              },
              "name": {
                "type": "Identifier",
                "span": {
                  "start": 355,
                  "end": 356,
                  "ctxt": 0
                },
                "value": "U",
                "optional": false
              },
              "constraint": null,
              "default": null
            }
          ]
        },
        "superTypeParams": {
          "type": "TsTypeParameterInstantiation",
          "span": {
            "start": 367,
            "end": 370,
            "ctxt": 0
          },
          "params": [
            {
              "type": "TsTypeReference",
              "span": {
                "start": 368,
                "end": 369,
                "ctxt": 0
              },
              "typeName": {
                "type": "Identifier",
                "span": {
                  "start": 368,
                  "end": 369,
                  "ctxt": 0
                },
                "value": "U",
                "optional": false
              },
              "typeParams": null
            }
          ]
        },
        "implements": []
      }
    },
    {
      "type": "ExportDeclaration",
      "span": {
        "start": 390,
        "end": 435,
        "ctxt": 0
      },
      "declaration": {
        "type": "ClassDeclaration",
        "identifier": {
          "type": "Identifier",
          "span": {
            "start": 403,
            "end": 404,
            "ctxt": 0
          },
          "value": "O",
          "optional": false
        },
        "declare": false,
        "span": {
          "start": 397,
          "end": 435,
          "ctxt": 0
        },
        "decorators": [],
        "body": [
          {
            "type": "TsIndexSignature",
            "params": [
              {
                "type": "Identifier",
                "span": {
                  "start": 412,
                  "end": 423,
                  "ctxt": 0
                },
                "value": "idx",
                "optional": false,
                "typeAnnotation": {
                  "type": "TsTypeAnnotation",
                  "span": {
                    "start": 415,
                    "end": 423,
                    "ctxt": 0
                  },
                  "typeAnnotation": {
                    "type": "TsKeywordType",
                    "span": {
                      "start": 417,
                      "end": 423,
                      "ctxt": 0
                    },
                    "kind": "string"
                  }
                }
              }
            ],
            "typeAnnotation": {
              "type": "TsTypeAnnotation",
              "span": {
                "start": 424,
                "end": 432,
                "ctxt": 0
              },
              "typeAnnotation": {
                "type": "TsKeywordType",
                "span": {
                  "start": 426,
                  "end": 432,
                  "ctxt": 0
                },
                "kind": "string"
              }
            },
            "readonly": false,
            "static": false,
            "span": {
              "start": 411,
              "end": 433,
              "ctxt": 0
            }
          }
        ],
        "superClass": null,
        "isAbstract": false,
        "typeParams": null,
        "superTypeParams": null,
        "implements": []
      }
    },
    {
      "type": "ExportDeclaration",
      "span": {
        "start": 437,
        "end": 464,
        "ctxt": 0
      },
      "declaration": {
        "type": "ClassDeclaration",
        "identifier": {
          "type": "Identifier",
          "span": {
            "start": 450,
            "end": 451,
            "ctxt": 0
          },
          "value": "P",
          "optional": false
        },
        "declare": false,
        "span": {
          "start": 444,
          "end": 464,
          "ctxt": 0
        },
        "decorators": [],
        "body": [],
        "superClass": {
          "type": "Identifier",
          "span": {
            "start": 460,
            "end": 461,
            "ctxt": 0
          },
          "value": "O",
          "optional": false
        },
        "isAbstract": false,
        "typeParams": null,
        "superTypeParams": null,
        "implements": []
      }
    },
    {
      "type": "ExportDeclaration",
      "span": {
        "start": 466,
        "end": 519,
        "ctxt": 0
      },
      "declaration": {
        "type": "ClassDeclaration",
        "identifier": {
          "type": "Identifier",
          "span": {
            "start": 479,
            "end": 480,
            "ctxt": 0
          },
          "value": "Q",
          "optional": false
        },
        "declare": false,
        "span": {
          "start": 473,
          "end": 519,
          "ctxt": 0
        },
        "decorators": [],
        "body": [
          {
            "type": "TsIndexSignature",
            "params": [
              {
                "type": "Identifier",
                "span": {
                  "start": 498,
                  "end": 509,
                  "ctxt": 0
                },
                "value": "idx",
                "optional": false,
                "typeAnnotation": {
                  "type": "TsTypeAnnotation",
                  "span": {
                    "start": 501,
                    "end": 509,
                    "ctxt": 0
                  },
                  "typeAnnotation": {
                    "type": "TsKeywordType",
                    "span": {
                      "start": 503,
                      "end": 509,
                      "ctxt": 0
                    },
                    "kind": "string"
                  }
                }
              }
            ],
            "typeAnnotation": {
              "type": "TsTypeAnnotation",
              "span": {
                "start": 510,
                "end": 516,
                "ctxt": 0
              },
              "typeAnnotation": {
                "type": "TsLiteralType",
                "span": {
                  "start": 512,
                  "end": 516,
                  "ctxt": 0
                },
                "literal": {
                  "type": "StringLiteral",
                  "span": {
                    "start": 512,
                    "end": 516,
                    "ctxt": 0
                  },
                  "value": "ok",
                  "hasEscape": false,
                  "kind": {
                    "type": "normal",
                    "containsQuote": true
                  }
                }
              }
            },
            "readonly": false,
            "static": false,
            "span": {
              "start": 497,
              "end": 517,
              "ctxt": 0
            }
          }
        ],
        "superClass": {
          "type": "Identifier",
          "span": {
            "start": 489,
            "end": 490,
            "ctxt": 0
          },
          "value": "O",
          "optional": false
        },
        "isAbstract": false,
        "typeParams": null,
        "superTypeParams": null,
        "implements": []
      }
    },
    {
      "type": "ExportDeclaration",
      "span": {
        "start": 521,
        "end": 574,
        "ctxt": 0
      },
      "declaration": {
        "type": "ClassDeclaration",
        "identifier": {
          "type": "Identifier",
          "span": {
            "start": 534,
            "end": 535,
            "ctxt": 0
          },
          "value": "R",
          "optional": false
        },
        "declare": false,
        "span": {
          "start": 528,
          "end": 574,
          "ctxt": 0
        },
        "decorators": [],
        "body": [
          {
            "type": "TsIndexSignature",
            "params": [
              {
                "type": "Identifier",
                "span": {
                  "start": 553,
                  "end": 564,
                  "ctxt": 0
                },
                "value": "idx",
                "optional": false,
                "typeAnnotation": {
                  "type": "TsTypeAnnotation",
                  "span": {
                    "start": 556,
                    "end": 564,
                    "ctxt": 0
                  },
                  "typeAnnotation": {
                    "type": "TsKeywordType",
                    "span": {
                      "start": 558,
                      "end": 564,
                      "ctxt": 0
                    },
                    "kind": "number"
                  }
                }
              }
            ],
            "typeAnnotation": {
              "type": "TsTypeAnnotation",
              "span": {
                "start": 565,
                "end": 571,
                "ctxt": 0
              },
              "typeAnnotation": {
                "type": "TsLiteralType",
                "span": {
                  "start": 567,
                  "end": 571,
                  "ctxt": 0
                },
                "literal": {
                  "type": "StringLiteral",
                  "span": {
                    "start": 567,
                    "end": 571,
                    "ctxt": 0
                  },
                  "value": "ok",
                  "hasEscape": false,
                  "kind": {
                    "type": "normal",
                    "containsQuote": true
                  }
                }
              }
            },
            "readonly": false,
            "static": false,
            "span": {
              "start": 552,
              "end": 572,
              "ctxt": 0
            }
          }
        ],
        "superClass": {
          "type": "Identifier",
          "span": {
            "start": 544,
            "end": 545,
            "ctxt": 0
          },
          "value": "O",
          "optional": false
        },
        "isAbstract": false,
        "typeParams": null,
        "superTypeParams": null,
        "implements": []
      }
    },
    {
      "type": "ExportDeclaration",
      "span": {
        "start": 576,
        "end": 655,
        "ctxt": 0
      },
      "declaration": {
        "type": "ClassDeclaration",
        "identifier": {
          "type": "Identifier",
          "span": {
            "start": 589,
            "end": 590,
            "ctxt": 0
          },
          "value": "S",
          "optional": false
        },
        "declare": false,
        "span": {
          "start": 583,
          "end": 655,
          "ctxt": 0
        },
        "decorators": [],
        "body": [
          {
            "type": "TsIndexSignature",
            "params": [
              {
                "type": "Identifier",
                "span": {
                  "start": 608,
                  "end": 619,
                  "ctxt": 0
                },
                "value": "idx",
                "optional": false,
                "typeAnnotation": {
                  "type": "TsTypeAnnotation",
                  "span": {
                    "start": 611,
                    "end": 619,
                    "ctxt": 0
                  },
                  "typeAnnotation": {
                    "type": "TsKeywordType",
                    "span": {
                      "start": 613,
                      "end": 619,
                      "ctxt": 0
                    },
                    "kind": "string"
                  }
                }
              }
            ],
            "typeAnnotation": {
              "type": "TsTypeAnnotation",
              "span": {
                "start": 620,
                "end": 626,
                "ctxt": 0
              },
              "typeAnnotation": {
                "type": "TsLiteralType",
                "span": {
                  "start": 622,
                  "end": 626,
                  "ctxt": 0
                },
                "literal": {
                  "type": "StringLiteral",
                  "span": {
                    "start": 622,
                    "end": 626,
                    "ctxt": 0
                  },
                  "value": "ok",
                  "hasEscape": false,
                  "kind": {
                    "type": "normal",
                    "containsQuote": true
                  }
                }
              }
            },
            "readonly": false,
            "static": false,
            "span": {
              "start": 607,
              "end": 627,
              "ctxt": 0
            }
          },
          {
            "type": "TsIndexSignature",
            "params": [
              {
                "type": "Identifier",
                "span": {
                  "start": 633,
                  "end": 644,
                  "ctxt": 0
                },
                "value": "idx",
                "optional": false,
                "typeAnnotation": {
                  "type": "TsTypeAnnotation",
                  "span": {
                    "start": 636,
                    "end": 644,
                    "ctxt": 0
                  },
                  "typeAnnotation": {
                    "type": "TsKeywordType",
                    "span": {
                      "start": 638,
                      "end": 644,
                      "ctxt": 0
                    },
                    "kind": "number"
                  }
                }
              }
            ],
            "typeAnnotation": {
              "type": "TsTypeAnnotation",
              "span": {
                "start": 645,
                "end": 652,
                "ctxt": 0
              },
              "typeAnnotation": {
                "type": "TsKeywordType",
                "span": {
                  "start": 647,
                  "end": 652,
                  "ctxt": 0
                },
                "kind": "never"
              }
            },
            "readonly": false,
            "static": false,
            "span": {
              "start": 632,
              "end": 653,
              "ctxt": 0
            }
          }
        ],
        "superClass": {
          "type": "Identifier",
          "span": {
            "start": 599,
            "end": 600,
            "ctxt": 0
          },
          "value": "O",
          "optional": false
        },
        "isAbstract": false,
        "typeParams": null,
        "superTypeParams": null,
        "implements": []
      }
    },
    {
      "type": "ExportDeclaration",
      "span": {
        "start": 657,
        "end": 702,
        "ctxt": 0
      },
      "declaration": {
        "type": "ClassDeclaration",
        "identifier": {
          "type": "Identifier",
          "span": {
            "start": 670,
            "end": 671,
            "ctxt": 0
          },
          "value": "T",
          "optional": false
        },
        "declare": false,
        "span": {
          "start": 664,
          "end": 702,
          "ctxt": 0
        },
        "decorators": [],
        "body": [
          {
            "type": "TsIndexSignature",
            "params": [
              {
                "type": "Identifier",
                "span": {
                  "start": 679,
                  "end": 690,
                  "ctxt": 0
                },
                "value": "idx",
                "optional": false,
                "typeAnnotation": {
                  "type": "TsTypeAnnotation",
                  "span": {
                    "start": 682,
                    "end": 690,
                    "ctxt": 0
                  },
                  "typeAnnotation": {
                    "type": "TsKeywordType",
                    "span": {
                      "start": 684,
                      "end": 690,
                      "ctxt": 0
                    },
                    "kind": "number"
                  }
                }
              }
            ],
            "typeAnnotation": {
              "type": "TsTypeAnnotation",
              "span": {
                "start": 691,
                "end": 699,
                "ctxt": 0
              },
              "typeAnnotation": {
                "type": "TsKeywordType",
                "span": {
                  "start": 693,
                  "end": 699,
                  "ctxt": 0
                },
                "kind": "string"
              }
            },
            "readonly": false,
            "static": false,
            "span": {
              "start": 678,
              "end": 700,
              "ctxt": 0
            }
          }
        ],
        "superClass": null,
        "isAbstract": false,
        "typeParams": null,
        "superTypeParams": null,
        "implements": []
      }
    },
    {
      "type": "ExportDeclaration",
      "span": {
        "start": 704,
        "end": 731,
        "ctxt": 0
      },
      "declaration": {
        "type": "ClassDeclaration",
        "identifier": {
          "type": "Identifier",
          "span": {
            "start": 717,
            "end": 718,
            "ctxt": 0
          },
          "value": "U",
          "optional": false
        },
        "declare": false,
        "span": {
          "start": 711,
          "end": 731,
          "ctxt": 0
        },
        "decorators": [],
        "body": [],
        "superClass": {
          "type": "Identifier",
          "span": {
            "start": 727,
            "end": 728,
            "ctxt": 0
          },
          "value": "T",
          "optional": false
        },
        "isAbstract": false,
        "typeParams": null,
        "superTypeParams": null,
        "implements": []
      }
    },
    {
      "type": "ExportDeclaration",
      "span": {
        "start": 734,
        "end": 789,
        "ctxt": 0
      },
      "declaration": {
        "type": "ClassDeclaration",
        "identifier": {
          "type": "Identifier",
          "span": {
            "start": 747,
            "end": 748,
            "ctxt": 0
          },
          "value": "V",
          "optional": false
        },
        "declare": false,
        "span": {
          "start": 741,
          "end": 789,
          "ctxt": 0
        },
        "decorators": [],
        "body": [
          {
            "type": "TsIndexSignature",
            "params": [
              {
                "type": "Identifier",
                "span": {
                  "start": 766,
                  "end": 777,
                  "ctxt": 0
                },
                "value": "idx",
                "optional": false,
                "typeAnnotation": {
                  "type": "TsTypeAnnotation",
                  "span": {
                    "start": 769,
                    "end": 777,
                    "ctxt": 0
                  },
                  "typeAnnotation": {
                    "type": "TsKeywordType",
                    "span": {
                      "start": 771,
                      "end": 777,
                      "ctxt": 0
                    },
                    "kind": "string"
                  }
                }
              }
            ],
            "typeAnnotation": {
              "type": "TsTypeAnnotation",
              "span": {
                "start": 778,
                "end": 786,
                "ctxt": 0
              },
              "typeAnnotation": {
                "type": "TsKeywordType",
                "span": {
                  "start": 780,
                  "end": 786,
                  "ctxt": 0
                },
                "kind": "string"
              }
            },
            "readonly": false,
            "static": false,
            "span": {
              "start": 765,
              "end": 787,
              "ctxt": 0
            }
          }
        ],
        "superClass": {
          "type": "Identifier",
          "span": {
            "start": 757,
            "end": 758,
            "ctxt": 0
          },
          "value": "T",
          "optional": false
        },
        "isAbstract": false,
        "typeParams": null,
        "superTypeParams": null,
        "implements": []
      }
    },
    {
      "type": "ExportDeclaration",
      "span": {
        "start": 791,
        "end": 844,
        "ctxt": 0
      },
      "declaration": {
        "type": "ClassDeclaration",
        "identifier": {
          "type": "Identifier",
          "span": {
            "start": 804,
            "end": 805,
            "ctxt": 0
          },
          "value": "W",
          "optional": false
        },
        "declare": false,
        "span": {
          "start": 798,
          "end": 844,
          "ctxt": 0
        },
        "decorators": [],
        "body": [
          {
            "type": "TsIndexSignature",
            "params": [
              {
                "type": "Identifier",
                "span": {
                  "start": 823,
                  "end": 834,
                  "ctxt": 0
                },
                "value": "idx",
                "optional": false,
                "typeAnnotation": {
                  "type": "TsTypeAnnotation",
                  "span": {
                    "start": 826,
                    "end": 834,
                    "ctxt": 0
                  },
                  "typeAnnotation": {
                    "type": "TsKeywordType",
                    "span": {
                      "start": 828,
                      "end": 834,
                      "ctxt": 0
                    },
                    "kind": "number"
                  }
                }
              }
            ],
            "typeAnnotation": {
              "type": "TsTypeAnnotation",
              "span": {
                "start": 835,
                "end": 841,
                "ctxt": 0
              },
              "typeAnnotation": {
                "type": "TsLiteralType",
                "span": {
                  "start": 837,
                  "end": 841,
                  "ctxt": 0
                },
                "literal": {
                  "type": "StringLiteral",
                  "span": {
                    "start": 837,
                    "end": 841,
                    "ctxt": 0
                  },
                  "value": "ok",
                  "hasEscape": false,
                  "kind": {
                    "type": "normal",
                    "containsQuote": true
                  }
                }
              }
            },
            "readonly": false,
            "static": false,
            "span": {
              "start": 822,
              "end": 842,
              "ctxt": 0
            }
          }
        ],
        "superClass": {
          "type": "Identifier",
          "span": {
            "start": 814,
            "end": 815,
            "ctxt": 0
          },
          "value": "T",
          "optional": false
        },
        "isAbstract": false,
        "typeParams": null,
        "superTypeParams": null,
        "implements": []
      }
    },
    {
      "type": "ExportDeclaration",
      "span": {
        "start": 846,
        "end": 926,
        "ctxt": 0
      },
      "declaration": {
        "type": "ClassDeclaration",
        "identifier": {
          "type": "Identifier",
          "span": {
            "start": 859,
            "end": 860,
            "ctxt": 0
          },
          "value": "X",
          "optional": false
        },
        "declare": false,
        "span": {
          "start": 853,
          "end": 926,
          "ctxt": 0
        },
        "decorators": [],
        "body": [
          {
            "type": "TsIndexSignature",
            "params": [
              {
                "type": "Identifier",
                "span": {
                  "start": 878,
                  "end": 889,
                  "ctxt": 0
                },
                "value": "idx",
                "optional": false,
                "typeAnnotation": {
                  "type": "TsTypeAnnotation",
                  "span": {
                    "start": 881,
                    "end": 889,
                    "ctxt": 0
                  },
                  "typeAnnotation": {
                    "type": "TsKeywordType",
                    "span": {
                      "start": 883,
                      "end": 889,
                      "ctxt": 0
                    },
                    "kind": "string"
                  }
                }
              }
            ],
            "typeAnnotation": {
              "type": "TsTypeAnnotation",
              "span": {
                "start": 890,
                "end": 898,
                "ctxt": 0
              },
              "typeAnnotation": {
                "type": "TsKeywordType",
                "span": {
                  "start": 892,
                  "end": 898,
                  "ctxt": 0
                },
                "kind": "string"
              }
            },
            "readonly": false,
            "static": false,
            "span": {
              "start": 877,
              "end": 899,
              "ctxt": 0
            }
          },
          {
            "type": "TsIndexSignature",
            "params": [
              {
                "type": "Identifier",
                "span": {
                  "start": 905,
                  "end": 916,
                  "ctxt": 0
                },
                "value": "idx",
                "optional": false,
                "typeAnnotation": {
                  "type": "TsTypeAnnotation",
                  "span": {
                    "start": 908,
                    "end": 916,
                    "ctxt": 0
                  },
                  "typeAnnotation": {
                    "type": "TsKeywordType",
                    "span": {
                      "start": 910,
                      "end": 916,
                      "ctxt": 0
                    },
                    "kind": "number"
                  }
                }
              }
            ],
            "typeAnnotation": {
              "type": "TsTypeAnnotation",
              "span": {
                "start": 917,
                "end": 923,
                "ctxt": 0
              },
              "typeAnnotation": {
                "type": "TsLiteralType",
                "span": {
                  "start": 919,
                  "end": 923,
                  "ctxt": 0
                },
                "literal": {
                  "type": "StringLiteral",
                  "span": {
                    "start": 919,
                    "end": 923,
                    "ctxt": 0
                  },
                  "value": "ok",
                  "hasEscape": false,
                  "kind": {
                    "type": "normal",
                    "containsQuote": true
                  }
                }
              }
            },
            "readonly": false,
            "static": false,
            "span": {
              "start": 904,
              "end": 924,
              "ctxt": 0
            }
          }
        ],
        "superClass": {
          "type": "Identifier",
          "span": {
            "start": 869,
            "end": 870,
            "ctxt": 0
          },
          "value": "T",
          "optional": false
        },
        "isAbstract": false,
        "typeParams": null,
        "superTypeParams": null,
        "implements": []
      }
    },
    {
      "type": "ExportDeclaration",
      "span": {
        "start": 928,
        "end": 1021,
        "ctxt": 0
      },
      "declaration": {
        "type": "ClassDeclaration",
        "identifier": {
          "type": "Identifier",
          "span": {
            "start": 941,
            "end": 942,
            "ctxt": 0
          },
          "value": "Y",
          "optional": false
        },
        "declare": false,
        "span": {
          "start": 935,
          "end": 1021,
          "ctxt": 0
        },
        "decorators": [],
        "body": [
          {
            "type": "TsIndexSignature",
            "params": [
              {
                "type": "Identifier",
                "span": {
                  "start": 950,
                  "end": 961,
                  "ctxt": 0
                },
                "value": "idx",
                "optional": false,
                "typeAnnotation": {
                  "type": "TsTypeAnnotation",
                  "span": {
                    "start": 953,
                    "end": 961,
                    "ctxt": 0
                  },
                  "typeAnnotation": {
                    "type": "TsKeywordType",
                    "span": {
                      "start": 955,
                      "end": 961,
                      "ctxt": 0
                    },
                    "kind": "string"
                  }
                }
              }
            ],
            "typeAnnotation": {
              "type": "TsTypeAnnotation",
              "span": {
                "start": 962,
                "end": 975,
                "ctxt": 0
              },
              "typeAnnotation": {
                "type": "TsTypeLiteral",
                "span": {
                  "start": 964,
                  "end": 975,
                  "ctxt": 0
                },
                "members": [
                  {
                    "type": "TsPropertySignature",
                    "span": {
                      "start": 965,
                      "end": 974,
                      "ctxt": 0
                    },
                    "readonly": false,
                    "key": {
                      "type": "Identifier",
                      "span": {
                        "start": 965,
                        "end": 966,
                        "ctxt": 0
                      },
                      "value": "x",
                      "optional": false
                    },
                    "computed": false,
                    "optional": false,
                    "init": null,
                    "params": [],
                    "typeAnnotation": {
                      "type": "TsTypeAnnotation",
                      "span": {
                        "start": 966,
                        "end": 974,
                        "ctxt": 0
                      },
                      "typeAnnotation": {
                        "type": "TsKeywordType",
                        "span": {
                          "start": 968,
                          "end": 974,
                          "ctxt": 0
                        },
                        "kind": "number"
                      }
                    },
                    "typeParams": null
                  }
                ]
              }
            },
            "readonly": false,
            "static": false,
            "span": {
              "start": 949,
              "end": 976,
              "ctxt": 0
            }
          },
          {
            "type": "TsIndexSignature",
            "params": [
              {
                "type": "Identifier",
                "span": {
                  "start": 982,
                  "end": 993,
                  "ctxt": 0
                },
                "value": "idx",
                "optional": false,
                "typeAnnotation": {
                  "type": "TsTypeAnnotation",
                  "span": {
                    "start": 985,
                    "end": 993,
                    "ctxt": 0
                  },
                  "typeAnnotation": {
                    "type": "TsKeywordType",
                    "span": {
                      "start": 987,
                      "end": 993,
                      "ctxt": 0
                    },
                    "kind": "number"
                  }
                }
              }
            ],
            "typeAnnotation": {
              "type": "TsTypeAnnotation",
              "span": {
                "start": 994,
                "end": 1018,
                "ctxt": 0
              },
              "typeAnnotation": {
                "type": "TsTypeLiteral",
                "span": {
                  "start": 996,
                  "end": 1018,
                  "ctxt": 0
                },
                "members": [
                  {
                    "type": "TsPropertySignature",
                    "span": {
                      "start": 997,
                      "end": 1007,
                      "ctxt": 0
                    },
                    "readonly": false,
                    "key": {
                      "type": "Identifier",
                      "span": {
                        "start": 997,
                        "end": 998,
                        "ctxt": 0
                      },
                      "value": "x",
                      "optional": false
                    },
                    "computed": false,
                    "optional": false,
                    "init": null,
                    "params": [],
                    "typeAnnotation": {
                      "type": "TsTypeAnnotation",
                      "span": {
                        "start": 998,
                        "end": 1006,
                        "ctxt": 0
                      },
                      "typeAnnotation": {
                        "type": "TsKeywordType",
                        "span": {
                          "start": 1000,
                          "end": 1006,
                          "ctxt": 0
                        },
                        "kind": "number"
                      }
                    },
                    "typeParams": null
                  },
                  {
                    "type": "TsPropertySignature",
                    "span": {
                      "start": 1008,
                      "end": 1017,
                      "ctxt": 0
                    },
                    "readonly": false,
                    "key": {
                      "type": "Identifier",
                      "span": {
                        "start": 1008,
                        "end": 1009,
                        "ctxt": 0
                      },
                      "value": "y",
                      "optional": false
                    },
                    "computed": false,
                    "optional": false,
                    "init": null,
                    "params": [],
                    "typeAnnotation": {
                      "type": "TsTypeAnnotation",
                      "span": {
                        "start": 1009,
                        "end": 1017,
                        "ctxt": 0
                      },
                      "typeAnnotation": {
                        "type": "TsKeywordType",
                        "span": {
                          "start": 1011,
                          "end": 1017,
                          "ctxt": 0
                        },
                        "kind": "number"
                      }
                    },
                    "typeParams": null
                  }
                ]
              }
            },
            "readonly": false,
            "static": false,
            "span": {
              "start": 981,
              "end": 1019,
              "ctxt": 0
            }
          }
        ],
        "superClass": null,
        "isAbstract": false,
        "typeParams": null,
        "superTypeParams": null,
        "implements": []
      }
    },
    {
      "type": "ExportDeclaration",
      "span": {
        "start": 1023,
        "end": 1050,
        "ctxt": 0
      },
      "declaration": {
        "type": "ClassDeclaration",
        "identifier": {
          "type": "Identifier",
          "span": {
            "start": 1036,
            "end": 1037,
            "ctxt": 0
          },
          "value": "Z",
          "optional": false
        },
        "declare": false,
        "span": {
          "start": 1030,
          "end": 1050,
          "ctxt": 0
        },
        "decorators": [],
        "body": [],
        "superClass": {
          "type": "Identifier",
          "span": {
            "start": 1046,
            "end": 1047,
            "ctxt": 0
          },
          "value": "Y",
          "optional": false
        },
        "isAbstract": false,
        "typeParams": null,
        "superTypeParams": null,
        "implements": []
      }
    },
    {
      "type": "ExportDeclaration",
      "span": {
        "start": 1052,
        "end": 1124,
        "ctxt": 0
      },
      "declaration": {
        "type": "ClassDeclaration",
        "identifier": {
          "type": "Identifier",
          "span": {
            "start": 1065,
            "end": 1067,
            "ctxt": 0
          },
          "value": "AA",
          "optional": false
        },
        "declare": false,
        "span": {
          "start": 1059,
          "end": 1124,
          "ctxt": 0
        },
        "decorators": [],
        "body": [
          {
            "type": "TsIndexSignature",
            "params": [
              {
                "type": "Identifier",
                "span": {
                  "start": 1085,
                  "end": 1096,
                  "ctxt": 0
                },
                "value": "idx",
                "optional": false,
                "typeAnnotation": {
                  "type": "TsTypeAnnotation",
                  "span": {
                    "start": 1088,
                    "end": 1096,
                    "ctxt": 0
                  },
                  "typeAnnotation": {
                    "type": "TsKeywordType",
                    "span": {
                      "start": 1090,
                      "end": 1096,
                      "ctxt": 0
                    },
                    "kind": "string"
                  }
                }
              }
            ],
            "typeAnnotation": {
              "type": "TsTypeAnnotation",
              "span": {
                "start": 1097,
                "end": 1121,
                "ctxt": 0
              },
              "typeAnnotation": {
                "type": "TsTypeLiteral",
                "span": {
                  "start": 1099,
                  "end": 1121,
                  "ctxt": 0
                },
                "members": [
                  {
                    "type": "TsPropertySignature",
                    "span": {
                      "start": 1100,
                      "end": 1110,
                      "ctxt": 0
                    },
                    "readonly": false,
                    "key": {
                      "type": "Identifier",
                      "span": {
                        "start": 1100,
                        "end": 1101,
                        "ctxt": 0
                      },
                      "value": "x",
                      "optional": false
                    },
                    "computed": false,
                    "optional": false,
                    "init": null,
                    "params": [],
                    "typeAnnotation": {
                      "type": "TsTypeAnnotation",
                      "span": {
                        "start": 1101,
                        "end": 1109,
                        "ctxt": 0
                      },
                      "typeAnnotation": {
                        "type": "TsKeywordType",
                        "span": {
                          "start": 1103,
                          "end": 1109,
                          "ctxt": 0
                        },
                        "kind": "number"
                      }
                    },
                    "typeParams": null
                  },
                  {
                    "type": "TsPropertySignature",
                    "span": {
                      "start": 1111,
                      "end": 1120,
                      "ctxt": 0
                    },
                    "readonly": false,
                    "key": {
                      "type": "Identifier",
                      "span": {
                        "start": 1111,
                        "end": 1112,
                        "ctxt": 0
                      },
                      "value": "y",
                      "optional": false
                    },
                    "computed": false,
                    "optional": false,
                    "init": null,
                    "params": [],
                    "typeAnnotation": {
                      "type": "TsTypeAnnotation",
                      "span": {
                        "start": 1112,
                        "end": 1120,
                        "ctxt": 0
                      },
                      "typeAnnotation": {
                        "type": "TsKeywordType",
                        "span": {
                          "start": 1114,
                          "end": 1120,
                          "ctxt": 0
                        },
                        "kind": "number"
                      }
                    },
                    "typeParams": null
                  }
                ]
              }
            },
            "readonly": false,
            "static": false,
            "span": {
              "start": 1084,
              "end": 1122,
              "ctxt": 0
            }
          }
        ],
        "superClass": {
          "type": "Identifier",
          "span": {
            "start": 1076,
            "end": 1077,
            "ctxt": 0
          },
          "value": "Y",
          "optional": false
        },
        "isAbstract": false,
        "typeParams": null,
        "superTypeParams": null,
        "implements": []
      }
    },
    {
      "type": "ExportDeclaration",
      "span": {
        "start": 1126,
        "end": 1188,
        "ctxt": 0
      },
      "declaration": {
        "type": "ClassDeclaration",
        "identifier": {
          "type": "Identifier",
          "span": {
            "start": 1139,
            "end": 1141,
            "ctxt": 0
          },
          "value": "BB",
          "optional": false
        },
        "declare": false,
        "span": {
          "start": 1133,
          "end": 1188,
          "ctxt": 0
        },
        "decorators": [],
        "body": [
          {
            "type": "TsIndexSignature",
            "params": [
              {
                "type": "Identifier",
                "span": {
                  "start": 1159,
                  "end": 1170,
                  "ctxt": 0
                },
                "value": "idx",
                "optional": false,
                "typeAnnotation": {
                  "type": "TsTypeAnnotation",
                  "span": {
                    "start": 1162,
                    "end": 1170,
                    "ctxt": 0
                  },
                  "typeAnnotation": {
                    "type": "TsKeywordType",
                    "span": {
                      "start": 1164,
                      "end": 1170,
                      "ctxt": 0
                    },
                    "kind": "number"
                  }
                }
              }
            ],
            "typeAnnotation": {
              "type": "TsTypeAnnotation",
              "span": {
                "start": 1171,
                "end": 1185,
                "ctxt": 0
              },
              "typeAnnotation": {
                "type": "TsTypeLiteral",
                "span": {
                  "start": 1173,
                  "end": 1185,
                  "ctxt": 0
                },
                "members": [
                  {
                    "type": "TsPropertySignature",
                    "span": {
                      "start": 1174,
                      "end": 1179,
                      "ctxt": 0
                    },
                    "readonly": false,
                    "key": {
                      "type": "Identifier",
                      "span": {
                        "start": 1174,
                        "end": 1175,
                        "ctxt": 0
                      },
                      "value": "x",
                      "optional": false
                    },
                    "computed": false,
                    "optional": false,
                    "init": null,
                    "params": [],
                    "typeAnnotation": {
                      "type": "TsTypeAnnotation",
                      "span": {
                        "start": 1175,
                        "end": 1178,
                        "ctxt": 0
                      },
                      "typeAnnotation": {
                        "type": "TsLiteralType",
                        "span": {
                          "start": 1177,
                          "end": 1178,
                          "ctxt": 0
                        },
                        "literal": {
                          "type": "NumericLiteral",
                          "span": {
                            "start": 1177,
                            "end": 1178,
                            "ctxt": 0
                          },
                          "value": 0.0
                        }
                      }
                    },
                    "typeParams": null
                  },
                  {
                    "type": "TsPropertySignature",
                    "span": {
                      "start": 1180,
                      "end": 1184,
                      "ctxt": 0
                    },
                    "readonly": false,
                    "key": {
                      "type": "Identifier",
                      "span": {
                        "start": 1180,
                        "end": 1181,
                        "ctxt": 0
                      },
                      "value": "y",
                      "optional": false
                    },
                    "computed": false,
                    "optional": false,
                    "init": null,
                    "params": [],
                    "typeAnnotation": {
                      "type": "TsTypeAnnotation",
                      "span": {
                        "start": 1181,
                        "end": 1184,
                        "ctxt": 0
                      },
                      "typeAnnotation": {
                        "type": "TsLiteralType",
                        "span": {
                          "start": 1183,
                          "end": 1184,
                          "ctxt": 0
                        },
                        "literal": {
                          "type": "NumericLiteral",
                          "span": {
                            "start": 1183,
                            "end": 1184,
                            "ctxt": 0
                          },
                          "value": 0.0
                        }
                      }
                    },
                    "typeParams": null
                  }
                ]
              }
            },
            "readonly": false,
            "static": false,
            "span": {
              "start": 1158,
              "end": 1186,
              "ctxt": 0
            }
          }
        ],
        "superClass": {
          "type": "Identifier",
          "span": {
            "start": 1150,
            "end": 1151,
            "ctxt": 0
          },
          "value": "Y",
          "optional": false
        },
        "isAbstract": false,
        "typeParams": null,
        "superTypeParams": null,
        "implements": []
      }
    },
    {
      "type": "ExportDeclaration",
      "span": {
        "start": 1190,
        "end": 1295,
        "ctxt": 0
      },
      "declaration": {
        "type": "ClassDeclaration",
        "identifier": {
          "type": "Identifier",
          "span": {
            "start": 1203,
            "end": 1205,
            "ctxt": 0
          },
          "value": "CC",
          "optional": false
        },
        "declare": false,
        "span": {
          "start": 1197,
          "end": 1295,
          "ctxt": 0
        },
        "decorators": [],
        "body": [
          {
            "type": "TsIndexSignature",
            "params": [
              {
                "type": "Identifier",
                "span": {
                  "start": 1223,
                  "end": 1234,
                  "ctxt": 0
                },
                "value": "idx",
                "optional": false,
                "typeAnnotation": {
                  "type": "TsTypeAnnotation",
                  "span": {
                    "start": 1226,
                    "end": 1234,
                    "ctxt": 0
                  },
                  "typeAnnotation": {
                    "type": "TsKeywordType",
                    "span": {
                      "start": 1228,
                      "end": 1234,
                      "ctxt": 0
                    },
                    "kind": "string"
                  }
                }
              }
            ],
            "typeAnnotation": {
              "type": "TsTypeAnnotation",
              "span": {
                "start": 1235,
                "end": 1259,
                "ctxt": 0
              },
              "typeAnnotation": {
                "type": "TsTypeLiteral",
                "span": {
                  "start": 1237,
                  "end": 1259,
                  "ctxt": 0
                },
                "members": [
                  {
                    "type": "TsPropertySignature",
                    "span": {
                      "start": 1238,
                      "end": 1248,
                      "ctxt": 0
                    },
                    "readonly": false,
                    "key": {
                      "type": "Identifier",
                      "span": {
                        "start": 1238,
                        "end": 1239,
                        "ctxt": 0
                      },
                      "value": "x",
                      "optional": false
                    },
                    "computed": false,
                    "optional": false,
                    "init": null,
                    "params": [],
                    "typeAnnotation": {
                      "type": "TsTypeAnnotation",
                      "span": {
                        "start": 1239,
                        "end": 1247,
                        "ctxt": 0
                      },
                      "typeAnnotation": {
                        "type": "TsKeywordType",
                        "span": {
                          "start": 1241,
                          "end": 1247,
                          "ctxt": 0
                        },
                        "kind": "number"
                      }
                    },
                    "typeParams": null
                  },
                  {
                    "type": "TsPropertySignature",
                    "span": {
                      "start": 1249,
                      "end": 1258,
                      "ctxt": 0
                    },
                    "readonly": false,
                    "key": {
                      "type": "Identifier",
                      "span": {
                        "start": 1249,
                        "end": 1250,
                        "ctxt": 0
                      },
                      "value": "y",
                      "optional": false
                    },
                    "computed": false,
                    "optional": false,
                    "init": null,
                    "params": [],
                    "typeAnnotation": {
                      "type": "TsTypeAnnotation",
                      "span": {
                        "start": 1250,
                        "end": 1258,
                        "ctxt": 0
                      },
                      "typeAnnotation": {
                        "type": "TsKeywordType",
                        "span": {
                          "start": 1252,
                          "end": 1258,
                          "ctxt": 0
                        },
                        "kind": "number"
                      }
                    },
                    "typeParams": null
                  }
                ]
              }
            },
            "readonly": false,
            "static": false,
            "span": {
              "start": 1222,
              "end": 1260,
              "ctxt": 0
            }
          },
          {
            "type": "TsIndexSignature",
            "params": [
              {
                "type": "Identifier",
                "span": {
                  "start": 1266,
                  "end": 1277,
                  "ctxt": 0
                },
                "value": "idx",
                "optional": false,
                "typeAnnotation": {
                  "type": "TsTypeAnnotation",
                  "span": {
                    "start": 1269,
                    "end": 1277,
                    "ctxt": 0
                  },
                  "typeAnnotation": {
                    "type": "TsKeywordType",
                    "span": {
                      "start": 1271,
                      "end": 1277,
                      "ctxt": 0
                    },
                    "kind": "number"
                  }
                }
              }
            ],
            "typeAnnotation": {
              "type": "TsTypeAnnotation",
              "span": {
                "start": 1278,
                "end": 1292,
                "ctxt": 0
              },
              "typeAnnotation": {
                "type": "TsTypeLiteral",
                "span": {
                  "start": 1280,
                  "end": 1292,
                  "ctxt": 0
                },
                "members": [
                  {
                    "type": "TsPropertySignature",
                    "span": {
                      "start": 1281,
                      "end": 1286,
                      "ctxt": 0
                    },
                    "readonly": false,
                    "key": {
                      "type": "Identifier",
                      "span": {
                        "start": 1281,
                        "end": 1282,
                        "ctxt": 0
                      },
                      "value": "x",
                      "optional": false
                    },
                    "computed": false,
                    "optional": false,
                    "init": null,
                    "params": [],
                    "typeAnnotation": {
                      "type": "TsTypeAnnotation",
                      "span": {
                        "start": 1282,
                        "end": 1285,
                        "ctxt": 0
                      },
                      "typeAnnotation": {
                        "type": "TsLiteralType",
                        "span": {
                          "start": 1284,
                          "end": 1285,
                          "ctxt": 0
                        },
                        "literal": {
                          "type": "NumericLiteral",
                          "span": {
                            "start": 1284,
                            "end": 1285,
                            "ctxt": 0
                          },
                          "value": 0.0
                        }
                      }
                    },
                    "typeParams": null
                  },
                  {
                    "type": "TsPropertySignature",
                    "span": {
                      "start": 1287,
                      "end": 1291,
                      "ctxt": 0
                    },
                    "readonly": false,
                    "key": {
                      "type": "Identifier",
                      "span": {
                        "start": 1287,
                        "end": 1288,
                        "ctxt": 0
                      },
                      "value": "y",
                      "optional": false
                    },
                    "computed": false,
                    "optional": false,
                    "init": null,
                    "params": [],
                    "typeAnnotation": {
                      "type": "TsTypeAnnotation",
                      "span": {
                        "start": 1288,
                        "end": 1291,
                        "ctxt": 0
                      },
                      "typeAnnotation": {
                        "type": "TsLiteralType",
                        "span": {
                          "start": 1290,
                          "end": 1291,
                          "ctxt": 0
                        },
                        "literal": {
                          "type": "NumericLiteral",
                          "span": {
                            "start": 1290,
                            "end": 1291,
                            "ctxt": 0
                          },
                          "value": 0.0
                        }
                      }
                    },
                    "typeParams": null
                  }
                ]
              }
            },
            "readonly": false,
            "static": false,
            "span": {
              "start": 1265,
              "end": 1293,
              "ctxt": 0
            }
          }
        ],
        "superClass": {
          "type": "Identifier",
          "span": {
            "start": 1214,
            "end": 1215,
            "ctxt": 0
          },
          "value": "Y",
          "optional": false
        },
        "isAbstract": false,
        "typeParams": null,
        "superTypeParams": null,
        "implements": []
      }
    }
  ],
  "interpreter": null
}