{
  "type": "Script",
  "span": {
    "start": 68,
    "end": 3329,
    "ctxt": 0
  },
  "body": [
    {
      "type": "TsModuleDeclaration",
      "span": {
        "start": 68,
        "end": 3329,
        "ctxt": 0
      },
      "declare": false,
      "global": false,
      "id": {
        "type": "Identifier",
        "span": {
          "start": 75,
          "end": 81,
          "ctxt": 0
        },
        "value": "Errors",
        "optional": false
      },
      "body": {
        "type": "TsModuleBlock",
        "span": {
          "start": 82,
          "end": 3329,
          "ctxt": 0
        },
        "body": [
          {
            "type": "ClassDeclaration",
            "identifier": {
              "type": "Identifier",
              "span": {
                "start": 94,
                "end": 98,
                "ctxt": 0
              },
              "value": "Base",
              "optional": false
            },
            "declare": false,
            "span": {
              "start": 88,
              "end": 115,
              "ctxt": 0
            },
            "decorators": [],
            "body": [
              {
                "type": "ClassProperty",
                "span": {
                  "start": 101,
                  "end": 113,
                  "ctxt": 0
                },
                "key": {
                  "type": "Identifier",
                  "span": {
                    "start": 101,
                    "end": 104,
                    "ctxt": 0
                  },
                  "value": "foo",
                  "optional": false
                },
                "value": null,
                "typeAnnotation": {
                  "type": "TsTypeAnnotation",
                  "span": {
                    "start": 104,
                    "end": 112,
                    "ctxt": 0
                  },
                  "typeAnnotation": {
                    "type": "TsKeywordType",
                    "span": {
                      "start": 106,
                      "end": 112,
                      "ctxt": 0
                    },
                    "kind": "string"
                  }
                },
                "isStatic": false,
                "decorators": [],
                "accessibility": null,
                "isAbstract": false,
                "isOptional": false,
                "isOverride": false,
                "readonly": false,
                "declare": false,
                "definite": false
              }
            ],
            "superClass": null,
            "isAbstract": false,
            "typeParams": null,
            "superTypeParams": null,
            "implements": []
          },
          {
            "type": "ClassDeclaration",
            "identifier": {
              "type": "Identifier",
              "span": {
                "start": 126,
                "end": 133,
                "ctxt": 0
              },
              "value": "Derived",
              "optional": false
            },
            "declare": false,
            "span": {
              "start": 120,
              "end": 163,
              "ctxt": 0
            },
            "decorators": [],
            "body": [
              {
                "type": "ClassProperty",
                "span": {
                  "start": 149,
                  "end": 161,
                  "ctxt": 0
                },
                "key": {
                  "type": "Identifier",
                  "span": {
                    "start": 149,
                    "end": 152,
                    "ctxt": 0
                  },
                  "value": "bar",
                  "optional": false
                },
                "value": null,
                "typeAnnotation": {
                  "type": "TsTypeAnnotation",
                  "span": {
                    "start": 152,
                    "end": 160,
                    "ctxt": 0
                  },
                  "typeAnnotation": {
                    "type": "TsKeywordType",
                    "span": {
                      "start": 154,
                      "end": 160,
                      "ctxt": 0
                    },
                    "kind": "string"
                  }
                },
                "isStatic": false,
                "decorators": [],
                "accessibility": null,
                "isAbstract": false,
                "isOptional": false,
                "isOverride": false,
                "readonly": false,
                "declare": false,
                "definite": false
              }
            ],
            "superClass": {
              "type": "Identifier",
              "span": {
                "start": 142,
                "end": 146,
                "ctxt": 0
              },
              "value": "Base",
              "optional": false
            },
            "isAbstract": false,
            "typeParams": null,
            "superTypeParams": null,
            "implements": []
          },
          {
            "type": "ClassDeclaration",
            "identifier": {
              "type": "Identifier",
              "span": {
                "start": 174,
                "end": 182,
                "ctxt": 0
              },
              "value": "Derived2",
              "optional": false
            },
            "declare": false,
            "span": {
              "start": 168,
              "end": 215,
              "ctxt": 0
            },
            "decorators": [],
            "body": [
              {
                "type": "ClassProperty",
                "span": {
                  "start": 201,
                  "end": 213,
                  "ctxt": 0
                },
                "key": {
                  "type": "Identifier",
                  "span": {
                    "start": 201,
                    "end": 204,
                    "ctxt": 0
                  },
                  "value": "baz",
                  "optional": false
                },
                "value": null,
                "typeAnnotation": {
                  "type": "TsTypeAnnotation",
                  "span": {
                    "start": 204,
                    "end": 212,
                    "ctxt": 0
                  },
                  "typeAnnotation": {
                    "type": "TsKeywordType",
                    "span": {
                      "start": 206,
                      "end": 212,
                      "ctxt": 0
                    },
                    "kind": "string"
                  }
                },
                "isStatic": false,
                "decorators": [],
                "accessibility": null,
                "isAbstract": false,
                "isOptional": false,
                "isOverride": false,
                "readonly": false,
                "declare": false,
                "definite": false
              }
            ],
            "superClass": {
              "type": "Identifier",
              "span": {
                "start": 191,
                "end": 198,
                "ctxt": 0
              },
              "value": "Derived",
              "optional": false
            },
            "isAbstract": false,
            "typeParams": null,
            "superTypeParams": null,
            "implements": []
          },
          {
            "type": "ClassDeclaration",
            "identifier": {
              "type": "Identifier",
              "span": {
                "start": 226,
                "end": 238,
                "ctxt": 0
              },
              "value": "OtherDerived",
              "optional": false
            },
            "declare": false,
            "span": {
              "start": 220,
              "end": 269,
              "ctxt": 0
            },
            "decorators": [],
            "body": [
              {
                "type": "ClassProperty",
                "span": {
                  "start": 254,
                  "end": 267,
                  "ctxt": 0
                },
                "key": {
                  "type": "Identifier",
                  "span": {
                    "start": 254,
                    "end": 258,
                    "ctxt": 0
                  },
                  "value": "bing",
                  "optional": false
                },
                "value": null,
                "typeAnnotation": {
                  "type": "TsTypeAnnotation",
                  "span": {
                    "start": 258,
                    "end": 266,
                    "ctxt": 0
                  },
                  "typeAnnotation": {
                    "type": "TsKeywordType",
                    "span": {
                      "start": 260,
                      "end": 266,
                      "ctxt": 0
                    },
                    "kind": "string"
                  }
                },
                "isStatic": false,
                "decorators": [],
                "accessibility": null,
                "isAbstract": false,
                "isOptional": false,
                "isOverride": false,
                "readonly": false,
                "declare": false,
                "definite": false
              }
            ],
            "superClass": {
              "type": "Identifier",
              "span": {
                "start": 247,
                "end": 251,
                "ctxt": 0
              },
              "value": "Base",
              "optional": false
            },
            "isAbstract": false,
            "typeParams": null,
            "superTypeParams": null,
            "implements": []
          },
          {
            "type": "TsModuleDeclaration",
            "span": {
              "start": 275,
              "end": 2919,
              "ctxt": 0
            },
            "declare": false,
            "global": false,
            "id": {
              "type": "Identifier",
              "span": {
                "start": 282,
                "end": 316,
                "ctxt": 0
              },
              "value": "WithNonGenericSignaturesInBaseType",
              "optional": false
            },
            "body": {
              "type": "TsModuleBlock",
              "span": {
                "start": 317,
                "end": 2919,
                "ctxt": 0
              },
              "body": [
                {
                  "type": "VariableDeclaration",
                  "span": {
                    "start": 383,
                    "end": 419,
                    "ctxt": 0
                  },
                  "kind": "var",
                  "declare": false,
                  "declarations": [
                    {
                      "type": "VariableDeclarator",
                      "span": {
                        "start": 387,
                        "end": 418,
                        "ctxt": 0
                      },
                      "id": {
                        "type": "Identifier",
                        "span": {
                          "start": 387,
                          "end": 389,
                          "ctxt": 0
                        },
                        "value": "a2",
                        "optional": false,
                        "typeAnnotation": {
                          "type": "TsTypeAnnotation",
                          "span": {
                            "start": 389,
                            "end": 418,
                            "ctxt": 0
                          },
                          "typeAnnotation": {
                            "type": "TsConstructorType",
                            "span": {
                              "start": 391,
                              "end": 418,
                              "ctxt": 0
                            },
                            "params": [
                              {
                                "type": "Identifier",
                                "span": {
                                  "start": 396,
                                  "end": 405,
                                  "ctxt": 0
                                },
                                "value": "x",
                                "optional": false,
                                "typeAnnotation": {
                                  "type": "TsTypeAnnotation",
                                  "span": {
                                    "start": 397,
                                    "end": 405,
                                    "ctxt": 0
                                  },
                                  "typeAnnotation": {
                                    "type": "TsKeywordType",
                                    "span": {
                                      "start": 399,
                                      "end": 405,
                                      "ctxt": 0
                                    },
                                    "kind": "number"
                                  }
                                }
                              }
                            ],
                            "typeParams": null,
                            "typeAnnotation": {
                              "type": "TsTypeAnnotation",
                              "span": {
                                "start": 407,
                                "end": 418,
                                "ctxt": 0
                              },
                              "typeAnnotation": {
                                "type": "TsArrayType",
                                "span": {
                                  "start": 410,
                                  "end": 418,
                                  "ctxt": 0
                                },
                                "elemType": {
                                  "type": "TsKeywordType",
                                  "span": {
                                    "start": 410,
                                    "end": 416,
                                    "ctxt": 0
                                  },
                                  "kind": "string"
                                }
                              }
                            },
                            "isAbstract": false
                          }
                        }
                      },
                      "init": null,
                      "definite": false
                    }
                  ]
                },
                {
                  "type": "VariableDeclaration",
                  "span": {
                    "start": 428,
                    "end": 493,
                    "ctxt": 0
                  },
                  "kind": "var",
                  "declare": false,
                  "declarations": [
                    {
                      "type": "VariableDeclarator",
                      "span": {
                        "start": 432,
                        "end": 492,
                        "ctxt": 0
                      },
                      "id": {
                        "type": "Identifier",
                        "span": {
                          "start": 432,
                          "end": 434,
                          "ctxt": 0
                        },
                        "value": "a7",
                        "optional": false,
                        "typeAnnotation": {
                          "type": "TsTypeAnnotation",
                          "span": {
                            "start": 434,
                            "end": 492,
                            "ctxt": 0
                          },
                          "typeAnnotation": {
                            "type": "TsConstructorType",
                            "span": {
                              "start": 436,
                              "end": 492,
                              "ctxt": 0
                            },
                            "params": [
                              {
                                "type": "Identifier",
                                "span": {
                                  "start": 441,
                                  "end": 466,
                                  "ctxt": 0
                                },
                                "value": "x",
                                "optional": false,
                                "typeAnnotation": {
                                  "type": "TsTypeAnnotation",
                                  "span": {
                                    "start": 442,
                                    "end": 466,
                                    "ctxt": 0
                                  },
                                  "typeAnnotation": {
                                    "type": "TsFunctionType",
                                    "span": {
                                      "start": 444,
                                      "end": 466,
                                      "ctxt": 0
                                    },
                                    "params": [
                                      {
                                        "type": "Identifier",
                                        "span": {
                                          "start": 445,
                                          "end": 454,
                                          "ctxt": 0
                                        },
                                        "value": "arg",
                                        "optional": false,
                                        "typeAnnotation": {
                                          "type": "TsTypeAnnotation",
                                          "span": {
                                            "start": 448,
                                            "end": 454,
                                            "ctxt": 0
                                          },
                                          "typeAnnotation": {
                                            "type": "TsTypeReference",
                                            "span": {
                                              "start": 450,
                                              "end": 454,
                                              "ctxt": 0
                                            },
                                            "typeName": {
                                              "type": "Identifier",
                                              "span": {
                                                "start": 450,
                                                "end": 454,
                                                "ctxt": 0
                                              },
                                              "value": "Base",
                                              "optional": false
                                            },
                                            "typeParams": null
                                          }
                                        }
                                      }
                                    ],
                                    "typeParams": null,
                                    "typeAnnotation": {
                                      "type": "TsTypeAnnotation",
                                      "span": {
                                        "start": 456,
                                        "end": 466,
                                        "ctxt": 0
                                      },
                                      "typeAnnotation": {
                                        "type": "TsTypeReference",
                                        "span": {
                                          "start": 459,
                                          "end": 466,
                                          "ctxt": 0
                                        },
                                        "typeName": {
                                          "type": "Identifier",
                                          "span": {
                                            "start": 459,
                                            "end": 466,
                                            "ctxt": 0
                                          },
                                          "value": "Derived",
                                          "optional": false
                                        },
                                        "typeParams": null
                                      }
                                    }
                                  }
                                }
                              }
                            ],
                            "typeParams": null,
                            "typeAnnotation": {
                              "type": "TsTypeAnnotation",
                              "span": {
                                "start": 468,
                                "end": 492,
                                "ctxt": 0
                              },
                              "typeAnnotation": {
                                "type": "TsFunctionType",
                                "span": {
                                  "start": 471,
                                  "end": 492,
                                  "ctxt": 0
                                },
                                "params": [
                                  {
                                    "type": "Identifier",
                                    "span": {
                                      "start": 472,
                                      "end": 479,
                                      "ctxt": 0
                                    },
                                    "value": "r",
                                    "optional": false,
                                    "typeAnnotation": {
                                      "type": "TsTypeAnnotation",
                                      "span": {
                                        "start": 473,
                                        "end": 479,
                                        "ctxt": 0
                                      },
                                      "typeAnnotation": {
                                        "type": "TsTypeReference",
                                        "span": {
                                          "start": 475,
                                          "end": 479,
                                          "ctxt": 0
                                        },
                                        "typeName": {
                                          "type": "Identifier",
                                          "span": {
                                            "start": 475,
                                            "end": 479,
                                            "ctxt": 0
                                          },
                                          "value": "Base",
                                          "optional": false
                                        },
                                        "typeParams": null
                                      }
                                    }
                                  }
                                ],
                                "typeParams": null,
                                "typeAnnotation": {
                                  "type": "TsTypeAnnotation",
                                  "span": {
                                    "start": 481,
                                    "end": 492,
                                    "ctxt": 0
                                  },
                                  "typeAnnotation": {
                                    "type": "TsTypeReference",
                                    "span": {
                                      "start": 484,
                                      "end": 492,
                                      "ctxt": 0
                                    },
                                    "typeName": {
                                      "type": "Identifier",
                                      "span": {
                                        "start": 484,
                                        "end": 492,
                                        "ctxt": 0
                                      },
                                      "value": "Derived2",
                                      "optional": false
                                    },
                                    "typeParams": null
                                  }
                                }
                              }
                            },
                            "isAbstract": false
                          }
                        }
                      },
                      "init": null,
                      "definite": false
                    }
                  ]
                },
                {
                  "type": "VariableDeclaration",
                  "span": {
                    "start": 502,
                    "end": 594,
                    "ctxt": 0
                  },
                  "kind": "var",
                  "declare": false,
                  "declarations": [
                    {
                      "type": "VariableDeclarator",
                      "span": {
                        "start": 506,
                        "end": 593,
                        "ctxt": 0
                      },
                      "id": {
                        "type": "Identifier",
                        "span": {
                          "start": 506,
                          "end": 508,
                          "ctxt": 0
                        },
                        "value": "a8",
                        "optional": false,
                        "typeAnnotation": {
                          "type": "TsTypeAnnotation",
                          "span": {
                            "start": 508,
                            "end": 593,
                            "ctxt": 0
                          },
                          "typeAnnotation": {
                            "type": "TsConstructorType",
                            "span": {
                              "start": 510,
                              "end": 593,
                              "ctxt": 0
                            },
                            "params": [
                              {
                                "type": "Identifier",
                                "span": {
                                  "start": 515,
                                  "end": 540,
                                  "ctxt": 0
                                },
                                "value": "x",
                                "optional": false,
                                "typeAnnotation": {
                                  "type": "TsTypeAnnotation",
                                  "span": {
                                    "start": 516,
                                    "end": 540,
                                    "ctxt": 0
                                  },
                                  "typeAnnotation": {
                                    "type": "TsFunctionType",
                                    "span": {
                                      "start": 518,
                                      "end": 540,
                                      "ctxt": 0
                                    },
                                    "params": [
                                      {
                                        "type": "Identifier",
                                        "span": {
                                          "start": 519,
                                          "end": 528,
                                          "ctxt": 0
                                        },
                                        "value": "arg",
                                        "optional": false,
                                        "typeAnnotation": {
                                          "type": "TsTypeAnnotation",
                                          "span": {
                                            "start": 522,
                                            "end": 528,
                                            "ctxt": 0
                                          },
                                          "typeAnnotation": {
                                            "type": "TsTypeReference",
                                            "span": {
                                              "start": 524,
                                              "end": 528,
                                              "ctxt": 0
                                            },
                                            "typeName": {
                                              "type": "Identifier",
                                              "span": {
                                                "start": 524,
                                                "end": 528,
                                                "ctxt": 0
                                              },
                                              "value": "Base",
                                              "optional": false
                                            },
                                            "typeParams": null
                                          }
                                        }
                                      }
                                    ],
                                    "typeParams": null,
                                    "typeAnnotation": {
                                      "type": "TsTypeAnnotation",
                                      "span": {
                                        "start": 530,
                                        "end": 540,
                                        "ctxt": 0
                                      },
                                      "typeAnnotation": {
                                        "type": "TsTypeReference",
                                        "span": {
                                          "start": 533,
                                          "end": 540,
                                          "ctxt": 0
                                        },
                                        "typeName": {
                                          "type": "Identifier",
                                          "span": {
                                            "start": 533,
                                            "end": 540,
                                            "ctxt": 0
                                          },
                                          "value": "Derived",
                                          "optional": false
                                        },
                                        "typeParams": null
                                      }
                                    }
                                  }
                                }
                              },
                              {
                                "type": "Identifier",
                                "span": {
                                  "start": 542,
                                  "end": 568,
                                  "ctxt": 0
                                },
                                "value": "y",
                                "optional": false,
                                "typeAnnotation": {
                                  "type": "TsTypeAnnotation",
                                  "span": {
                                    "start": 543,
                                    "end": 568,
                                    "ctxt": 0
                                  },
                                  "typeAnnotation": {
                                    "type": "TsFunctionType",
                                    "span": {
                                      "start": 545,
                                      "end": 568,
                                      "ctxt": 0
                                    },
                                    "params": [
                                      {
                                        "type": "Identifier",
                                        "span": {
                                          "start": 546,
                                          "end": 556,
                                          "ctxt": 0
                                        },
                                        "value": "arg2",
                                        "optional": false,
                                        "typeAnnotation": {
                                          "type": "TsTypeAnnotation",
                                          "span": {
                                            "start": 550,
                                            "end": 556,
                                            "ctxt": 0
                                          },
                                          "typeAnnotation": {
                                            "type": "TsTypeReference",
                                            "span": {
                                              "start": 552,
                                              "end": 556,
                                              "ctxt": 0
                                            },
                                            "typeName": {
                                              "type": "Identifier",
                                              "span": {
                                                "start": 552,
                                                "end": 556,
                                                "ctxt": 0
                                              },
                                              "value": "Base",
                                              "optional": false
                                            },
                                            "typeParams": null
                                          }
                                        }
                                      }
                                    ],
                                    "typeParams": null,
                                    "typeAnnotation": {
                                      "type": "TsTypeAnnotation",
                                      "span": {
                                        "start": 558,
                                        "end": 568,
                                        "ctxt": 0
                                      },
                                      "typeAnnotation": {
                                        "type": "TsTypeReference",
                                        "span": {
                                          "start": 561,
                                          "end": 568,
                                          "ctxt": 0
                                        },
                                        "typeName": {
                                          "type": "Identifier",
                                          "span": {
                                            "start": 561,
                                            "end": 568,
                                            "ctxt": 0
                                          },
                                          "value": "Derived",
                                          "optional": false
                                        },
                                        "typeParams": null
                                      }
                                    }
                                  }
                                }
                              }
                            ],
                            "typeParams": null,
                            "typeAnnotation": {
                              "type": "TsTypeAnnotation",
                              "span": {
                                "start": 570,
                                "end": 593,
                                "ctxt": 0
                              },
                              "typeAnnotation": {
                                "type": "TsFunctionType",
                                "span": {
                                  "start": 573,
                                  "end": 593,
                                  "ctxt": 0
                                },
                                "params": [
                                  {
                                    "type": "Identifier",
                                    "span": {
                                      "start": 574,
                                      "end": 581,
                                      "ctxt": 0
                                    },
                                    "value": "r",
                                    "optional": false,
                                    "typeAnnotation": {
                                      "type": "TsTypeAnnotation",
                                      "span": {
                                        "start": 575,
                                        "end": 581,
                                        "ctxt": 0
                                      },
                                      "typeAnnotation": {
                                        "type": "TsTypeReference",
                                        "span": {
                                          "start": 577,
                                          "end": 581,
                                          "ctxt": 0
                                        },
                                        "typeName": {
                                          "type": "Identifier",
                                          "span": {
                                            "start": 577,
                                            "end": 581,
                                            "ctxt": 0
                                          },
                                          "value": "Base",
                                          "optional": false
                                        },
                                        "typeParams": null
                                      }
                                    }
                                  }
                                ],
                                "typeParams": null,
                                "typeAnnotation": {
                                  "type": "TsTypeAnnotation",
                                  "span": {
                                    "start": 583,
                                    "end": 593,
                                    "ctxt": 0
                                  },
                                  "typeAnnotation": {
                                    "type": "TsTypeReference",
                                    "span": {
                                      "start": 586,
                                      "end": 593,
                                      "ctxt": 0
                                    },
                                    "typeName": {
                                      "type": "Identifier",
                                      "span": {
                                        "start": 586,
                                        "end": 593,
                                        "ctxt": 0
                                      },
                                      "value": "Derived",
                                      "optional": false
                                    },
                                    "typeParams": null
                                  }
                                }
                              }
                            },
                            "isAbstract": false
                          }
                        }
                      },
                      "init": null,
                      "definite": false
                    }
                  ]
                },
                {
                  "type": "VariableDeclaration",
                  "span": {
                    "start": 603,
                    "end": 639,
                    "ctxt": 0
                  },
                  "kind": "var",
                  "declare": false,
                  "declarations": [
                    {
                      "type": "VariableDeclarator",
                      "span": {
                        "start": 607,
                        "end": 638,
                        "ctxt": 0
                      },
                      "id": {
                        "type": "Identifier",
                        "span": {
                          "start": 607,
                          "end": 610,
                          "ctxt": 0
                        },
                        "value": "a10",
                        "optional": false,
                        "typeAnnotation": {
                          "type": "TsTypeAnnotation",
                          "span": {
                            "start": 610,
                            "end": 638,
                            "ctxt": 0
                          },
                          "typeAnnotation": {
                            "type": "TsConstructorType",
                            "span": {
                              "start": 612,
                              "end": 638,
                              "ctxt": 0
                            },
                            "params": [
                              {
                                "type": "RestElement",
                                "span": {
                                  "start": 617,
                                  "end": 629,
                                  "ctxt": 0
                                },
                                "rest": {
                                  "start": 617,
                                  "end": 620,
                                  "ctxt": 0
                                },
                                "argument": {
                                  "type": "Identifier",
                                  "span": {
                                    "start": 620,
                                    "end": 621,
                                    "ctxt": 0
                                  },
                                  "value": "x",
                                  "optional": false,
                                  "typeAnnotation": null
                                },
                                "typeAnnotation": {
                                  "type": "TsTypeAnnotation",
                                  "span": {
                                    "start": 621,
                                    "end": 629,
                                    "ctxt": 0
                                  },
                                  "typeAnnotation": {
                                    "type": "TsArrayType",
                                    "span": {
                                      "start": 623,
                                      "end": 629,
                                      "ctxt": 0
                                    },
                                    "elemType": {
                                      "type": "TsTypeReference",
                                      "span": {
                                        "start": 623,
                                        "end": 627,
                                        "ctxt": 0
                                      },
                                      "typeName": {
                                        "type": "Identifier",
                                        "span": {
                                          "start": 623,
                                          "end": 627,
                                          "ctxt": 0
                                        },
                                        "value": "Base",
                                        "optional": false
                                      },
                                      "typeParams": null
                                    }
                                  }
                                }
                              }
                            ],
                            "typeParams": null,
                            "typeAnnotation": {
                              "type": "TsTypeAnnotation",
                              "span": {
                                "start": 631,
                                "end": 638,
                                "ctxt": 0
                              },
                              "typeAnnotation": {
                                "type": "TsTypeReference",
                                "span": {
                                  "start": 634,
                                  "end": 638,
                                  "ctxt": 0
                                },
                                "typeName": {
                                  "type": "Identifier",
                                  "span": {
                                    "start": 634,
                                    "end": 638,
                                    "ctxt": 0
                                  },
                                  "value": "Base",
                                  "optional": false
                                },
                                "typeParams": null
                              }
                            },
                            "isAbstract": false
                          }
                        }
                      },
                      "init": null,
                      "definite": false
                    }
                  ]
                },
                {
                  "type": "VariableDeclaration",
                  "span": {
                    "start": 648,
                    "end": 723,
                    "ctxt": 0
                  },
                  "kind": "var",
                  "declare": false,
                  "declarations": [
                    {
                      "type": "VariableDeclarator",
                      "span": {
                        "start": 652,
                        "end": 722,
                        "ctxt": 0
                      },
                      "id": {
                        "type": "Identifier",
                        "span": {
                          "start": 652,
                          "end": 655,
                          "ctxt": 0
                        },
                        "value": "a11",
                        "optional": false,
                        "typeAnnotation": {
                          "type": "TsTypeAnnotation",
                          "span": {
                            "start": 655,
                            "end": 722,
                            "ctxt": 0
                          },
                          "typeAnnotation": {
                            "type": "TsConstructorType",
                            "span": {
                              "start": 657,
                              "end": 722,
                              "ctxt": 0
                            },
                            "params": [
                              {
                                "type": "Identifier",
                                "span": {
                                  "start": 662,
                                  "end": 680,
                                  "ctxt": 0
                                },
                                "value": "x",
                                "optional": false,
                                "typeAnnotation": {
                                  "type": "TsTypeAnnotation",
                                  "span": {
                                    "start": 663,
                                    "end": 680,
                                    "ctxt": 0
                                  },
                                  "typeAnnotation": {
                                    "type": "TsTypeLiteral",
                                    "span": {
                                      "start": 665,
                                      "end": 680,
                                      "ctxt": 0
                                    },
                                    "members": [
                                      {
                                        "type": "TsPropertySignature",
                                        "span": {
                                          "start": 667,
                                          "end": 678,
                                          "ctxt": 0
                                        },
                                        "readonly": false,
                                        "key": {
                                          "type": "Identifier",
                                          "span": {
                                            "start": 667,
                                            "end": 670,
                                            "ctxt": 0
                                          },
                                          "value": "foo",
                                          "optional": false
                                        },
                                        "computed": false,
                                        "optional": false,
                                        "init": null,
                                        "params": [],
                                        "typeAnnotation": {
                                          "type": "TsTypeAnnotation",
                                          "span": {
                                            "start": 670,
                                            "end": 678,
                                            "ctxt": 0
                                          },
                                          "typeAnnotation": {
                                            "type": "TsKeywordType",
                                            "span": {
                                              "start": 672,
                                              "end": 678,
                                              "ctxt": 0
                                            },
                                            "kind": "string"
                                          }
                                        },
                                        "typeParams": null
                                      }
                                    ]
                                  }
                                }
                              },
                              {
                                "type": "Identifier",
                                "span": {
                                  "start": 682,
                                  "end": 713,
                                  "ctxt": 0
                                },
                                "value": "y",
                                "optional": false,
                                "typeAnnotation": {
                                  "type": "TsTypeAnnotation",
                                  "span": {
                                    "start": 683,
                                    "end": 713,
                                    "ctxt": 0
                                  },
                                  "typeAnnotation": {
                                    "type": "TsTypeLiteral",
                                    "span": {
                                      "start": 685,
                                      "end": 713,
                                      "ctxt": 0
                                    },
                                    "members": [
                                      {
                                        "type": "TsPropertySignature",
                                        "span": {
                                          "start": 687,
                                          "end": 699,
                                          "ctxt": 0
                                        },
                                        "readonly": false,
                                        "key": {
                                          "type": "Identifier",
                                          "span": {
                                            "start": 687,
                                            "end": 690,
                                            "ctxt": 0
                                          },
                                          "value": "foo",
                                          "optional": false
                                        },
                                        "computed": false,
                                        "optional": false,
                                        "init": null,
                                        "params": [],
                                        "typeAnnotation": {
                                          "type": "TsTypeAnnotation",
                                          "span": {
                                            "start": 690,
                                            "end": 698,
                                            "ctxt": 0
                                          },
                                          "typeAnnotation": {
                                            "type": "TsKeywordType",
                                            "span": {
                                              "start": 692,
                                              "end": 698,
                                              "ctxt": 0
                                            },
                                            "kind": "string"
                                          }
                                        },
                                        "typeParams": null
                                      },
                                      {
                                        "type": "TsPropertySignature",
                                        "span": {
                                          "start": 700,
                                          "end": 711,
                                          "ctxt": 0
                                        },
                                        "readonly": false,
                                        "key": {
                                          "type": "Identifier",
                                          "span": {
                                            "start": 700,
                                            "end": 703,
                                            "ctxt": 0
                                          },
                                          "value": "bar",
                                          "optional": false
                                        },
                                        "computed": false,
                                        "optional": false,
                                        "init": null,
                                        "params": [],
                                        "typeAnnotation": {
                                          "type": "TsTypeAnnotation",
                                          "span": {
                                            "start": 703,
                                            "end": 711,
                                            "ctxt": 0
                                          },
                                          "typeAnnotation": {
                                            "type": "TsKeywordType",
                                            "span": {
                                              "start": 705,
                                              "end": 711,
                                              "ctxt": 0
                                            },
                                            "kind": "string"
                                          }
                                        },
                                        "typeParams": null
                                      }
                                    ]
                                  }
                                }
                              }
                            ],
                            "typeParams": null,
                            "typeAnnotation": {
                              "type": "TsTypeAnnotation",
                              "span": {
                                "start": 715,
                                "end": 722,
                                "ctxt": 0
                              },
                              "typeAnnotation": {
                                "type": "TsTypeReference",
                                "span": {
                                  "start": 718,
                                  "end": 722,
                                  "ctxt": 0
                                },
                                "typeName": {
                                  "type": "Identifier",
                                  "span": {
                                    "start": 718,
                                    "end": 722,
                                    "ctxt": 0
                                  },
                                  "value": "Base",
                                  "optional": false
                                },
                                "typeParams": null
                              }
                            },
                            "isAbstract": false
                          }
                        }
                      },
                      "init": null,
                      "definite": false
                    }
                  ]
                },
                {
                  "type": "VariableDeclaration",
                  "span": {
                    "start": 732,
                    "end": 800,
                    "ctxt": 0
                  },
                  "kind": "var",
                  "declare": false,
                  "declarations": [
                    {
                      "type": "VariableDeclarator",
                      "span": {
                        "start": 736,
                        "end": 799,
                        "ctxt": 0
                      },
                      "id": {
                        "type": "Identifier",
                        "span": {
                          "start": 736,
                          "end": 739,
                          "ctxt": 0
                        },
                        "value": "a12",
                        "optional": false,
                        "typeAnnotation": {
                          "type": "TsTypeAnnotation",
                          "span": {
                            "start": 739,
                            "end": 799,
                            "ctxt": 0
                          },
                          "typeAnnotation": {
                            "type": "TsConstructorType",
                            "span": {
                              "start": 741,
                              "end": 799,
                              "ctxt": 0
                            },
                            "params": [
                              {
                                "type": "Identifier",
                                "span": {
                                  "start": 746,
                                  "end": 760,
                                  "ctxt": 0
                                },
                                "value": "x",
                                "optional": false,
                                "typeAnnotation": {
                                  "type": "TsTypeAnnotation",
                                  "span": {
                                    "start": 747,
                                    "end": 760,
                                    "ctxt": 0
                                  },
                                  "typeAnnotation": {
                                    "type": "TsTypeReference",
                                    "span": {
                                      "start": 749,
                                      "end": 760,
                                      "ctxt": 0
                                    },
                                    "typeName": {
                                      "type": "Identifier",
                                      "span": {
                                        "start": 749,
                                        "end": 754,
                                        "ctxt": 0
                                      },
                                      "value": "Array",
                                      "optional": false
                                    },
                                    "typeParams": {
                                      "type": "TsTypeParameterInstantiation",
                                      "span": {
                                        "start": 754,
                                        "end": 760,
                                        "ctxt": 0
                                      },
                                      "params": [
                                        {
                                          "type": "TsTypeReference",
                                          "span": {
                                            "start": 755,
                                            "end": 759,
                                            "ctxt": 0
                                          },
                                          "typeName": {
                                            "type": "Identifier",
                                            "span": {
                                              "start": 755,
                                              "end": 759,
                                              "ctxt": 0
                                            },
                                            "value": "Base",
                                            "optional": false
                                          },
                                          "typeParams": null
                                        }
                                      ]
                                    }
                                  }
                                }
                              },
                              {
                                "type": "Identifier",
                                "span": {
                                  "start": 762,
                                  "end": 780,
                                  "ctxt": 0
                                },
                                "value": "y",
                                "optional": false,
                                "typeAnnotation": {
                                  "type": "TsTypeAnnotation",
                                  "span": {
                                    "start": 763,
                                    "end": 780,
                                    "ctxt": 0
                                  },
                                  "typeAnnotation": {
                                    "type": "TsTypeReference",
                                    "span": {
                                      "start": 765,
                                      "end": 780,
                                      "ctxt": 0
                                    },
                                    "typeName": {
                                      "type": "Identifier",
                                      "span": {
                                        "start": 765,
                                        "end": 770,
                                        "ctxt": 0
                                      },
                                      "value": "Array",
                                      "optional": false
                                    },
                                    "typeParams": {
                                      "type": "TsTypeParameterInstantiation",
                                      "span": {
                                        "start": 770,
                                        "end": 780,
                                        "ctxt": 0
                                      },
                                      "params": [
                                        {
                                          "type": "TsTypeReference",
                                          "span": {
                                            "start": 771,
                                            "end": 779,
                                            "ctxt": 0
                                          },
                                          "typeName": {
                                            "type": "Identifier",
                                            "span": {
                                              "start": 771,
                                              "end": 779,
                                              "ctxt": 0
                                            },
                                            "value": "Derived2",
                                            "optional": false
                                          },
                                          "typeParams": null
                                        }
                                      ]
                                    }
                                  }
                                }
                              }
                            ],
                            "typeParams": null,
                            "typeAnnotation": {
                              "type": "TsTypeAnnotation",
                              "span": {
                                "start": 782,
                                "end": 799,
                                "ctxt": 0
                              },
                              "typeAnnotation": {
                                "type": "TsTypeReference",
                                "span": {
                                  "start": 785,
                                  "end": 799,
                                  "ctxt": 0
                                },
                                "typeName": {
                                  "type": "Identifier",
                                  "span": {
                                    "start": 785,
                                    "end": 790,
                                    "ctxt": 0
                                  },
                                  "value": "Array",
                                  "optional": false
                                },
                                "typeParams": {
                                  "type": "TsTypeParameterInstantiation",
                                  "span": {
                                    "start": 790,
                                    "end": 799,
                                    "ctxt": 0
                                  },
                                  "params": [
                                    {
                                      "type": "TsTypeReference",
                                      "span": {
                                        "start": 791,
                                        "end": 798,
                                        "ctxt": 0
                                      },
                                      "typeName": {
                                        "type": "Identifier",
                                        "span": {
                                          "start": 791,
                                          "end": 798,
                                          "ctxt": 0
                                        },
                                        "value": "Derived",
                                        "optional": false
                                      },
                                      "typeParams": null
                                    }
                                  ]
                                }
                              }
                            },
                            "isAbstract": false
                          }
                        }
                      },
                      "init": null,
                      "definite": false
                    }
                  ]
                },
                {
                  "type": "VariableDeclaration",
                  "span": {
                    "start": 809,
                    "end": 920,
                    "ctxt": 0
                  },
                  "kind": "var",
                  "declare": false,
                  "declarations": [
                    {
                      "type": "VariableDeclarator",
                      "span": {
                        "start": 813,
                        "end": 919,
                        "ctxt": 0
                      },
                      "id": {
                        "type": "Identifier",
                        "span": {
                          "start": 813,
                          "end": 816,
                          "ctxt": 0
                        },
                        "value": "a14",
                        "optional": false,
                        "typeAnnotation": {
                          "type": "TsTypeAnnotation",
                          "span": {
                            "start": 816,
                            "end": 919,
                            "ctxt": 0
                          },
                          "typeAnnotation": {
                            "type": "TsTypeLiteral",
                            "span": {
                              "start": 818,
                              "end": 919,
                              "ctxt": 0
                            },
                            "members": [
                              {
                                "type": "TsConstructSignatureDeclaration",
                                "span": {
                                  "start": 836,
                                  "end": 862,
                                  "ctxt": 0
                                },
                                "params": [
                                  {
                                    "type": "Identifier",
                                    "span": {
                                      "start": 841,
                                      "end": 850,
                                      "ctxt": 0
                                    },
                                    "value": "x",
                                    "optional": false,
                                    "typeAnnotation": {
                                      "type": "TsTypeAnnotation",
                                      "span": {
                                        "start": 842,
                                        "end": 850,
                                        "ctxt": 0
                                      },
                                      "typeAnnotation": {
                                        "type": "TsKeywordType",
                                        "span": {
                                          "start": 844,
                                          "end": 850,
                                          "ctxt": 0
                                        },
                                        "kind": "number"
                                      }
                                    }
                                  }
                                ],
                                "typeAnnotation": {
                                  "type": "TsTypeAnnotation",
                                  "span": {
                                    "start": 851,
                                    "end": 861,
                                    "ctxt": 0
                                  },
                                  "typeAnnotation": {
                                    "type": "TsArrayType",
                                    "span": {
                                      "start": 853,
                                      "end": 861,
                                      "ctxt": 0
                                    },
                                    "elemType": {
                                      "type": "TsKeywordType",
                                      "span": {
                                        "start": 853,
                                        "end": 859,
                                        "ctxt": 0
                                      },
                                      "kind": "number"
                                    }
                                  }
                                },
                                "typeParams": null
                              },
                              {
                                "type": "TsConstructSignatureDeclaration",
                                "span": {
                                  "start": 879,
                                  "end": 905,
                                  "ctxt": 0
                                },
                                "params": [
                                  {
                                    "type": "Identifier",
                                    "span": {
                                      "start": 884,
                                      "end": 893,
                                      "ctxt": 0
                                    },
                                    "value": "x",
                                    "optional": false,
                                    "typeAnnotation": {
                                      "type": "TsTypeAnnotation",
                                      "span": {
                                        "start": 885,
                                        "end": 893,
                                        "ctxt": 0
                                      },
                                      "typeAnnotation": {
                                        "type": "TsKeywordType",
                                        "span": {
                                          "start": 887,
                                          "end": 893,
                                          "ctxt": 0
                                        },
                                        "kind": "string"
                                      }
                                    }
                                  }
                                ],
                                "typeAnnotation": {
                                  "type": "TsTypeAnnotation",
                                  "span": {
                                    "start": 894,
                                    "end": 904,
                                    "ctxt": 0
                                  },
                                  "typeAnnotation": {
                                    "type": "TsArrayType",
                                    "span": {
                                      "start": 896,
                                      "end": 904,
                                      "ctxt": 0
                                    },
                                    "elemType": {
                                      "type": "TsKeywordType",
                                      "span": {
                                        "start": 896,
                                        "end": 902,
                                        "ctxt": 0
                                      },
                                      "kind": "string"
                                    }
                                  }
                                },
                                "typeParams": null
                              }
                            ]
                          }
                        }
                      },
                      "init": null,
                      "definite": false
                    }
                  ]
                },
                {
                  "type": "VariableDeclaration",
                  "span": {
                    "start": 929,
                    "end": 982,
                    "ctxt": 0
                  },
                  "kind": "var",
                  "declare": false,
                  "declarations": [
                    {
                      "type": "VariableDeclarator",
                      "span": {
                        "start": 933,
                        "end": 981,
                        "ctxt": 0
                      },
                      "id": {
                        "type": "Identifier",
                        "span": {
                          "start": 933,
                          "end": 936,
                          "ctxt": 0
                        },
                        "value": "a15",
                        "optional": false,
                        "typeAnnotation": {
                          "type": "TsTypeAnnotation",
                          "span": {
                            "start": 936,
                            "end": 981,
                            "ctxt": 0
                          },
                          "typeAnnotation": {
                            "type": "TsConstructorType",
                            "span": {
                              "start": 938,
                              "end": 981,
                              "ctxt": 0
                            },
                            "params": [
                              {
                                "type": "Identifier",
                                "span": {
                                  "start": 943,
                                  "end": 970,
                                  "ctxt": 0
                                },
                                "value": "x",
                                "optional": false,
                                "typeAnnotation": {
                                  "type": "TsTypeAnnotation",
                                  "span": {
                                    "start": 944,
                                    "end": 970,
                                    "ctxt": 0
                                  },
                                  "typeAnnotation": {
                                    "type": "TsTypeLiteral",
                                    "span": {
                                      "start": 946,
                                      "end": 970,
                                      "ctxt": 0
                                    },
                                    "members": [
                                      {
                                        "type": "TsPropertySignature",
                                        "span": {
                                          "start": 948,
                                          "end": 958,
                                          "ctxt": 0
                                        },
                                        "readonly": false,
                                        "key": {
                                          "type": "Identifier",
                                          "span": {
                                            "start": 948,
                                            "end": 949,
                                            "ctxt": 0
                                          },
                                          "value": "a",
                                          "optional": false
                                        },
                                        "computed": false,
                                        "optional": false,
                                        "init": null,
                                        "params": [],
                                        "typeAnnotation": {
                                          "type": "TsTypeAnnotation",
                                          "span": {
                                            "start": 949,
                                            "end": 957,
                                            "ctxt": 0
                                          },
                                          "typeAnnotation": {
                                            "type": "TsKeywordType",
                                            "span": {
                                              "start": 951,
                                              "end": 957,
                                              "ctxt": 0
                                            },
                                            "kind": "string"
                                          }
                                        },
                                        "typeParams": null
                                      },
                                      {
                                        "type": "TsPropertySignature",
                                        "span": {
                                          "start": 959,
                                          "end": 968,
                                          "ctxt": 0
                                        },
                                        "readonly": false,
                                        "key": {
                                          "type": "Identifier",
                                          "span": {
                                            "start": 959,
                                            "end": 960,
                                            "ctxt": 0
                                          },
                                          "value": "b",
                                          "optional": false
                                        },
                                        "computed": false,
                                        "optional": false,
                                        "init": null,
                                        "params": [],
                                        "typeAnnotation": {
                                          "type": "TsTypeAnnotation",
                                          "span": {
                                            "start": 960,
                                            "end": 968,
                                            "ctxt": 0
                                          },
                                          "typeAnnotation": {
                                            "type": "TsKeywordType",
                                            "span": {
                                              "start": 962,
                                              "end": 968,
                                              "ctxt": 0
                                            },
                                            "kind": "number"
                                          }
                                        },
                                        "typeParams": null
                                      }
                                    ]
                                  }
                                }
                              }
                            ],
                            "typeParams": null,
                            "typeAnnotation": {
                              "type": "TsTypeAnnotation",
                              "span": {
                                "start": 972,
                                "end": 981,
                                "ctxt": 0
                              },
                              "typeAnnotation": {
                                "type": "TsKeywordType",
                                "span": {
                                  "start": 975,
                                  "end": 981,
                                  "ctxt": 0
                                },
                                "kind": "number"
                              }
                            },
                            "isAbstract": false
                          }
                        }
                      },
                      "init": null,
                      "definite": false
                    }
                  ]
                },
                {
                  "type": "VariableDeclaration",
                  "span": {
                    "start": 991,
                    "end": 1315,
                    "ctxt": 0
                  },
                  "kind": "var",
                  "declare": false,
                  "declarations": [
                    {
                      "type": "VariableDeclarator",
                      "span": {
                        "start": 995,
                        "end": 1314,
                        "ctxt": 0
                      },
                      "id": {
                        "type": "Identifier",
                        "span": {
                          "start": 995,
                          "end": 998,
                          "ctxt": 0
                        },
                        "value": "a16",
                        "optional": false,
                        "typeAnnotation": {
                          "type": "TsTypeAnnotation",
                          "span": {
                            "start": 998,
                            "end": 1314,
                            "ctxt": 0
                          },
                          "typeAnnotation": {
                            "type": "TsTypeLiteral",
                            "span": {
                              "start": 1000,
                              "end": 1314,
                              "ctxt": 0
                            },
                            "members": [
                              {
                                "type": "TsConstructSignatureDeclaration",
                                "span": {
                                  "start": 1018,
                                  "end": 1148,
                                  "ctxt": 0
                                },
                                "params": [
                                  {
                                    "type": "Identifier",
                                    "span": {
                                      "start": 1023,
                                      "end": 1136,
                                      "ctxt": 0
                                    },
                                    "value": "x",
                                    "optional": false,
                                    "typeAnnotation": {
                                      "type": "TsTypeAnnotation",
                                      "span": {
                                        "start": 1024,
                                        "end": 1136,
                                        "ctxt": 0
                                      },
                                      "typeAnnotation": {
                                        "type": "TsTypeLiteral",
                                        "span": {
                                          "start": 1026,
                                          "end": 1136,
                                          "ctxt": 0
                                        },
                                        "members": [
                                          {
                                            "type": "TsConstructSignatureDeclaration",
                                            "span": {
                                              "start": 1048,
                                              "end": 1072,
                                              "ctxt": 0
                                            },
                                            "params": [
                                              {
                                                "type": "Identifier",
                                                "span": {
                                                  "start": 1053,
                                                  "end": 1062,
                                                  "ctxt": 0
                                                },
                                                "value": "a",
                                                "optional": false,
                                                "typeAnnotation": {
                                                  "type": "TsTypeAnnotation",
                                                  "span": {
                                                    "start": 1054,
                                                    "end": 1062,
                                                    "ctxt": 0
                                                  },
                                                  "typeAnnotation": {
                                                    "type": "TsKeywordType",
                                                    "span": {
                                                      "start": 1056,
                                                      "end": 1062,
                                                      "ctxt": 0
                                                    },
                                                    "kind": "number"
                                                  }
                                                }
                                              }
                                            ],
                                            "typeAnnotation": {
                                              "type": "TsTypeAnnotation",
                                              "span": {
                                                "start": 1063,
                                                "end": 1071,
                                                "ctxt": 0
                                              },
                                              "typeAnnotation": {
                                                "type": "TsKeywordType",
                                                "span": {
                                                  "start": 1065,
                                                  "end": 1071,
                                                  "ctxt": 0
                                                },
                                                "kind": "number"
                                              }
                                            },
                                            "typeParams": null
                                          },
                                          {
                                            "type": "TsConstructSignatureDeclaration",
                                            "span": {
                                              "start": 1093,
                                              "end": 1118,
                                              "ctxt": 0
                                            },
                                            "params": [
                                              {
                                                "type": "Identifier",
                                                "span": {
                                                  "start": 1098,
                                                  "end": 1108,
                                                  "ctxt": 0
                                                },
                                                "value": "a",
                                                "optional": true,
                                                "typeAnnotation": {
                                                  "type": "TsTypeAnnotation",
                                                  "span": {
                                                    "start": 1100,
                                                    "end": 1108,
                                                    "ctxt": 0
                                                  },
                                                  "typeAnnotation": {
                                                    "type": "TsKeywordType",
                                                    "span": {
                                                      "start": 1102,
                                                      "end": 1108,
                                                      "ctxt": 0
                                                    },
                                                    "kind": "number"
                                                  }
                                                }
                                              }
                                            ],
                                            "typeAnnotation": {
                                              "type": "TsTypeAnnotation",
                                              "span": {
                                                "start": 1109,
                                                "end": 1117,
                                                "ctxt": 0
                                              },
                                              "typeAnnotation": {
                                                "type": "TsKeywordType",
                                                "span": {
                                                  "start": 1111,
                                                  "end": 1117,
                                                  "ctxt": 0
                                                },
                                                "kind": "number"
                                              }
                                            },
                                            "typeParams": null
                                          }
                                        ]
                                      }
                                    }
                                  }
                                ],
                                "typeAnnotation": {
                                  "type": "TsTypeAnnotation",
                                  "span": {
                                    "start": 1137,
                                    "end": 1147,
                                    "ctxt": 0
                                  },
                                  "typeAnnotation": {
                                    "type": "TsArrayType",
                                    "span": {
                                      "start": 1139,
                                      "end": 1147,
                                      "ctxt": 0
                                    },
                                    "elemType": {
                                      "type": "TsKeywordType",
                                      "span": {
                                        "start": 1139,
                                        "end": 1145,
                                        "ctxt": 0
                                      },
                                      "kind": "number"
                                    }
                                  }
                                },
                                "typeParams": null
                              },
                              {
                                "type": "TsConstructSignatureDeclaration",
                                "span": {
                                  "start": 1165,
                                  "end": 1300,
                                  "ctxt": 0
                                },
                                "params": [
                                  {
                                    "type": "Identifier",
                                    "span": {
                                      "start": 1170,
                                      "end": 1287,
                                      "ctxt": 0
                                    },
                                    "value": "x",
                                    "optional": false,
                                    "typeAnnotation": {
                                      "type": "TsTypeAnnotation",
                                      "span": {
                                        "start": 1171,
                                        "end": 1287,
                                        "ctxt": 0
                                      },
                                      "typeAnnotation": {
                                        "type": "TsTypeLiteral",
                                        "span": {
                                          "start": 1173,
                                          "end": 1287,
                                          "ctxt": 0
                                        },
                                        "members": [
                                          {
                                            "type": "TsConstructSignatureDeclaration",
                                            "span": {
                                              "start": 1195,
                                              "end": 1221,
                                              "ctxt": 0
                                            },
                                            "params": [
                                              {
                                                "type": "Identifier",
                                                "span": {
                                                  "start": 1200,
                                                  "end": 1210,
                                                  "ctxt": 0
                                                },
                                                "value": "a",
                                                "optional": false,
                                                "typeAnnotation": {
                                                  "type": "TsTypeAnnotation",
                                                  "span": {
                                                    "start": 1201,
                                                    "end": 1210,
                                                    "ctxt": 0
                                                  },
                                                  "typeAnnotation": {
                                                    "type": "TsKeywordType",
                                                    "span": {
                                                      "start": 1203,
                                                      "end": 1210,
                                                      "ctxt": 0
                                                    },
                                                    "kind": "boolean"
                                                  }
                                                }
                                              }
                                            ],
                                            "typeAnnotation": {
                                              "type": "TsTypeAnnotation",
                                              "span": {
                                                "start": 1211,
                                                "end": 1220,
                                                "ctxt": 0
                                              },
                                              "typeAnnotation": {
                                                "type": "TsKeywordType",
                                                "span": {
                                                  "start": 1213,
                                                  "end": 1220,
                                                  "ctxt": 0
                                                },
                                                "kind": "boolean"
                                              }
                                            },
                                            "typeParams": null
                                          },
                                          {
                                            "type": "TsConstructSignatureDeclaration",
                                            "span": {
                                              "start": 1242,
                                              "end": 1269,
                                              "ctxt": 0
                                            },
                                            "params": [
                                              {
                                                "type": "Identifier",
                                                "span": {
                                                  "start": 1247,
                                                  "end": 1258,
                                                  "ctxt": 0
                                                },
                                                "value": "a",
                                                "optional": true,
                                                "typeAnnotation": {
                                                  "type": "TsTypeAnnotation",
                                                  "span": {
                                                    "start": 1249,
                                                    "end": 1258,
                                                    "ctxt": 0
                                                  },
                                                  "typeAnnotation": {
                                                    "type": "TsKeywordType",
                                                    "span": {
                                                      "start": 1251,
                                                      "end": 1258,
                                                      "ctxt": 0
                                                    },
                                                    "kind": "boolean"
                                                  }
                                                }
                                              }
                                            ],
                                            "typeAnnotation": {
                                              "type": "TsTypeAnnotation",
                                              "span": {
                                                "start": 1259,
                                                "end": 1268,
                                                "ctxt": 0
                                              },
                                              "typeAnnotation": {
                                                "type": "TsKeywordType",
                                                "span": {
                                                  "start": 1261,
                                                  "end": 1268,
                                                  "ctxt": 0
                                                },
                                                "kind": "boolean"
                                              }
                                            },
                                            "typeParams": null
                                          }
                                        ]
                                      }
                                    }
                                  }
                                ],
                                "typeAnnotation": {
                                  "type": "TsTypeAnnotation",
                                  "span": {
                                    "start": 1288,
                                    "end": 1299,
                                    "ctxt": 0
                                  },
                                  "typeAnnotation": {
                                    "type": "TsArrayType",
                                    "span": {
                                      "start": 1290,
                                      "end": 1299,
                                      "ctxt": 0
                                    },
                                    "elemType": {
                                      "type": "TsKeywordType",
                                      "span": {
                                        "start": 1290,
                                        "end": 1297,
                                        "ctxt": 0
                                      },
                                      "kind": "boolean"
                                    }
                                  }
                                },
                                "typeParams": null
                              }
                            ]
                          }
                        }
                      },
                      "init": null,
                      "definite": false
                    }
                  ]
                },
                {
                  "type": "VariableDeclaration",
                  "span": {
                    "start": 1324,
                    "end": 1666,
                    "ctxt": 0
                  },
                  "kind": "var",
                  "declare": false,
                  "declarations": [
                    {
                      "type": "VariableDeclarator",
                      "span": {
                        "start": 1328,
                        "end": 1665,
                        "ctxt": 0
                      },
                      "id": {
                        "type": "Identifier",
                        "span": {
                          "start": 1328,
                          "end": 1331,
                          "ctxt": 0
                        },
                        "value": "a17",
                        "optional": false,
                        "typeAnnotation": {
                          "type": "TsTypeAnnotation",
                          "span": {
                            "start": 1331,
                            "end": 1665,
                            "ctxt": 0
                          },
                          "typeAnnotation": {
                            "type": "TsTypeLiteral",
                            "span": {
                              "start": 1333,
                              "end": 1665,
                              "ctxt": 0
                            },
                            "members": [
                              {
                                "type": "TsConstructSignatureDeclaration",
                                "span": {
                                  "start": 1351,
                                  "end": 1492,
                                  "ctxt": 0
                                },
                                "params": [
                                  {
                                    "type": "Identifier",
                                    "span": {
                                      "start": 1356,
                                      "end": 1483,
                                      "ctxt": 0
                                    },
                                    "value": "x",
                                    "optional": false,
                                    "typeAnnotation": {
                                      "type": "TsTypeAnnotation",
                                      "span": {
                                        "start": 1357,
                                        "end": 1483,
                                        "ctxt": 0
                                      },
                                      "typeAnnotation": {
                                        "type": "TsTypeLiteral",
                                        "span": {
                                          "start": 1359,
                                          "end": 1483,
                                          "ctxt": 0
                                        },
                                        "members": [
                                          {
                                            "type": "TsConstructSignatureDeclaration",
                                            "span": {
                                              "start": 1381,
                                              "end": 1414,
                                              "ctxt": 0
                                            },
                                            "params": [
                                              {
                                                "type": "Identifier",
                                                "span": {
                                                  "start": 1405,
                                                  "end": 1409,
                                                  "ctxt": 0
                                                },
                                                "value": "a",
                                                "optional": false,
                                                "typeAnnotation": {
                                                  "type": "TsTypeAnnotation",
                                                  "span": {
                                                    "start": 1406,
                                                    "end": 1409,
                                                    "ctxt": 0
                                                  },
                                                  "typeAnnotation": {
                                                    "type": "TsTypeReference",
                                                    "span": {
                                                      "start": 1408,
                                                      "end": 1409,
                                                      "ctxt": 0
                                                    },
                                                    "typeName": {
                                                      "type": "Identifier",
                                                      "span": {
                                                        "start": 1408,
                                                        "end": 1409,
                                                        "ctxt": 0
                                                      },
                                                      "value": "T",
                                                      "optional": false
                                                    },
                                                    "typeParams": null
                                                  }
                                                }
                                              }
                                            ],
                                            "typeAnnotation": {
                                              "type": "TsTypeAnnotation",
                                              "span": {
                                                "start": 1410,
                                                "end": 1413,
                                                "ctxt": 0
                                              },
                                              "typeAnnotation": {
                                                "type": "TsTypeReference",
                                                "span": {
                                                  "start": 1412,
                                                  "end": 1413,
                                                  "ctxt": 0
                                                },
                                                "typeName": {
                                                  "type": "Identifier",
                                                  "span": {
                                                    "start": 1412,
                                                    "end": 1413,
                                                    "ctxt": 0
                                                  },
                                                  "value": "T",
                                                  "optional": false
                                                },
                                                "typeParams": null
                                              }
                                            },
                                            "typeParams": {
                                              "type": "TsTypeParameterDeclaration",
                                              "span": {
                                                "start": 1385,
                                                "end": 1404,
                                                "ctxt": 0
                                              },
                                              "parameters": [
                                                {
                                                  "type": "TsTypeParameter",
                                                  "span": {
                                                    "start": 1386,
                                                    "end": 1403,
                                                    "ctxt": 0
                                                  },
                                                  "name": {
                                                    "type": "Identifier",
                                                    "span": {
                                                      "start": 1386,
                                                      "end": 1387,
                                                      "ctxt": 0
                                                    },
                                                    "value": "T",
                                                    "optional": false
                                                  },
                                                  "constraint": {
                                                    "type": "TsTypeReference",
                                                    "span": {
                                                      "start": 1396,
                                                      "end": 1403,
                                                      "ctxt": 0
                                                    },
                                                    "typeName": {
                                                      "type": "Identifier",
                                                      "span": {
                                                        "start": 1396,
                                                        "end": 1403,
                                                        "ctxt": 0
                                                      },
                                                      "value": "Derived",
                                                      "optional": false
                                                    },
                                                    "typeParams": null
                                                  },
                                                  "default": null
                                                }
                                              ]
                                            }
                                          },
                                          {
                                            "type": "TsConstructSignatureDeclaration",
                                            "span": {
                                              "start": 1435,
                                              "end": 1465,
                                              "ctxt": 0
                                            },
                                            "params": [
                                              {
                                                "type": "Identifier",
                                                "span": {
                                                  "start": 1456,
                                                  "end": 1460,
                                                  "ctxt": 0
                                                },
                                                "value": "a",
                                                "optional": false,
                                                "typeAnnotation": {
                                                  "type": "TsTypeAnnotation",
                                                  "span": {
                                                    "start": 1457,
                                                    "end": 1460,
                                                    "ctxt": 0
                                                  },
                                                  "typeAnnotation": {
                                                    "type": "TsTypeReference",
                                                    "span": {
                                                      "start": 1459,
                                                      "end": 1460,
                                                      "ctxt": 0
                                                    },
                                                    "typeName": {
                                                      "type": "Identifier",
                                                      "span": {
                                                        "start": 1459,
                                                        "end": 1460,
                                                        "ctxt": 0
                                                      },
                                                      "value": "T",
                                                      "optional": false
                                                    },
                                                    "typeParams": null
                                                  }
                                                }
                                              }
                                            ],
                                            "typeAnnotation": {
                                              "type": "TsTypeAnnotation",
                                              "span": {
                                                "start": 1461,
                                                "end": 1464,
                                                "ctxt": 0
                                              },
                                              "typeAnnotation": {
                                                "type": "TsTypeReference",
                                                "span": {
                                                  "start": 1463,
                                                  "end": 1464,
                                                  "ctxt": 0
                                                },
                                                "typeName": {
                                                  "type": "Identifier",
                                                  "span": {
                                                    "start": 1463,
                                                    "end": 1464,
                                                    "ctxt": 0
                                                  },
                                                  "value": "T",
                                                  "optional": false
                                                },
                                                "typeParams": null
                                              }
                                            },
                                            "typeParams": {
                                              "type": "TsTypeParameterDeclaration",
                                              "span": {
                                                "start": 1439,
                                                "end": 1455,
                                                "ctxt": 0
                                              },
                                              "parameters": [
                                                {
                                                  "type": "TsTypeParameter",
                                                  "span": {
                                                    "start": 1440,
                                                    "end": 1454,
                                                    "ctxt": 0
                                                  },
                                                  "name": {
                                                    "type": "Identifier",
                                                    "span": {
                                                      "start": 1440,
                                                      "end": 1441,
                                                      "ctxt": 0
                                                    },
                                                    "value": "T",
                                                    "optional": false
                                                  },
                                                  "constraint": {
                                                    "type": "TsTypeReference",
                                                    "span": {
                                                      "start": 1450,
                                                      "end": 1454,
                                                      "ctxt": 0
                                                    },
                                                    "typeName": {
                                                      "type": "Identifier",
                                                      "span": {
                                                        "start": 1450,
                                                        "end": 1454,
                                                        "ctxt": 0
                                                      },
                                                      "value": "Base",
                                                      "optional": false
                                                    },
                                                    "typeParams": null
                                                  },
                                                  "default": null
                                                }
                                              ]
                                            }
                                          }
                                        ]
                                      }
                                    }
                                  }
                                ],
                                "typeAnnotation": {
                                  "type": "TsTypeAnnotation",
                                  "span": {
                                    "start": 1484,
                                    "end": 1491,
                                    "ctxt": 0
                                  },
                                  "typeAnnotation": {
                                    "type": "TsArrayType",
                                    "span": {
                                      "start": 1486,
                                      "end": 1491,
                                      "ctxt": 0
                                    },
                                    "elemType": {
                                      "type": "TsKeywordType",
                                      "span": {
                                        "start": 1486,
                                        "end": 1489,
                                        "ctxt": 0
                                      },
                                      "kind": "any"
                                    }
                                  }
                                },
                                "typeParams": null
                              },
                              {
                                "type": "TsConstructSignatureDeclaration",
                                "span": {
                                  "start": 1509,
                                  "end": 1651,
                                  "ctxt": 0
                                },
                                "params": [
                                  {
                                    "type": "Identifier",
                                    "span": {
                                      "start": 1514,
                                      "end": 1642,
                                      "ctxt": 0
                                    },
                                    "value": "x",
                                    "optional": false,
                                    "typeAnnotation": {
                                      "type": "TsTypeAnnotation",
                                      "span": {
                                        "start": 1515,
                                        "end": 1642,
                                        "ctxt": 0
                                      },
                                      "typeAnnotation": {
                                        "type": "TsTypeLiteral",
                                        "span": {
                                          "start": 1517,
                                          "end": 1642,
                                          "ctxt": 0
                                        },
                                        "members": [
                                          {
                                            "type": "TsConstructSignatureDeclaration",
                                            "span": {
                                              "start": 1539,
                                              "end": 1573,
                                              "ctxt": 0
                                            },
                                            "params": [
                                              {
                                                "type": "Identifier",
                                                "span": {
                                                  "start": 1564,
                                                  "end": 1568,
                                                  "ctxt": 0
                                                },
                                                "value": "a",
                                                "optional": false,
                                                "typeAnnotation": {
                                                  "type": "TsTypeAnnotation",
                                                  "span": {
                                                    "start": 1565,
                                                    "end": 1568,
                                                    "ctxt": 0
                                                  },
                                                  "typeAnnotation": {
                                                    "type": "TsTypeReference",
                                                    "span": {
                                                      "start": 1567,
                                                      "end": 1568,
                                                      "ctxt": 0
                                                    },
                                                    "typeName": {
                                                      "type": "Identifier",
                                                      "span": {
                                                        "start": 1567,
                                                        "end": 1568,
                                                        "ctxt": 0
                                                      },
                                                      "value": "T",
                                                      "optional": false
                                                    },
                                                    "typeParams": null
                                                  }
                                                }
                                              }
                                            ],
                                            "typeAnnotation": {
                                              "type": "TsTypeAnnotation",
                                              "span": {
                                                "start": 1569,
                                                "end": 1572,
                                                "ctxt": 0
                                              },
                                              "typeAnnotation": {
                                                "type": "TsTypeReference",
                                                "span": {
                                                  "start": 1571,
                                                  "end": 1572,
                                                  "ctxt": 0
                                                },
                                                "typeName": {
                                                  "type": "Identifier",
                                                  "span": {
                                                    "start": 1571,
                                                    "end": 1572,
                                                    "ctxt": 0
                                                  },
                                                  "value": "T",
                                                  "optional": false
                                                },
                                                "typeParams": null
                                              }
                                            },
                                            "typeParams": {
                                              "type": "TsTypeParameterDeclaration",
                                              "span": {
                                                "start": 1543,
                                                "end": 1563,
                                                "ctxt": 0
                                              },
                                              "parameters": [
                                                {
                                                  "type": "TsTypeParameter",
                                                  "span": {
                                                    "start": 1544,
                                                    "end": 1562,
                                                    "ctxt": 0
                                                  },
                                                  "name": {
                                                    "type": "Identifier",
                                                    "span": {
                                                      "start": 1544,
                                                      "end": 1545,
                                                      "ctxt": 0
                                                    },
                                                    "value": "T",
                                                    "optional": false
                                                  },
                                                  "constraint": {
                                                    "type": "TsTypeReference",
                                                    "span": {
                                                      "start": 1554,
                                                      "end": 1562,
                                                      "ctxt": 0
                                                    },
                                                    "typeName": {
                                                      "type": "Identifier",
                                                      "span": {
                                                        "start": 1554,
                                                        "end": 1562,
                                                        "ctxt": 0
                                                      },
                                                      "value": "Derived2",
                                                      "optional": false
                                                    },
                                                    "typeParams": null
                                                  },
                                                  "default": null
                                                }
                                              ]
                                            }
                                          },
                                          {
                                            "type": "TsConstructSignatureDeclaration",
                                            "span": {
                                              "start": 1594,
                                              "end": 1624,
                                              "ctxt": 0
                                            },
                                            "params": [
                                              {
                                                "type": "Identifier",
                                                "span": {
                                                  "start": 1615,
                                                  "end": 1619,
                                                  "ctxt": 0
                                                },
                                                "value": "a",
                                                "optional": false,
                                                "typeAnnotation": {
                                                  "type": "TsTypeAnnotation",
                                                  "span": {
                                                    "start": 1616,
                                                    "end": 1619,
                                                    "ctxt": 0
                                                  },
                                                  "typeAnnotation": {
                                                    "type": "TsTypeReference",
                                                    "span": {
                                                      "start": 1618,
                                                      "end": 1619,
                                                      "ctxt": 0
                                                    },
                                                    "typeName": {
                                                      "type": "Identifier",
                                                      "span": {
                                                        "start": 1618,
                                                        "end": 1619,
                                                        "ctxt": 0
                                                      },
                                                      "value": "T",
                                                      "optional": false
                                                    },
                                                    "typeParams": null
                                                  }
                                                }
                                              }
                                            ],
                                            "typeAnnotation": {
                                              "type": "TsTypeAnnotation",
                                              "span": {
                                                "start": 1620,
                                                "end": 1623,
                                                "ctxt": 0
                                              },
                                              "typeAnnotation": {
                                                "type": "TsTypeReference",
                                                "span": {
                                                  "start": 1622,
                                                  "end": 1623,
                                                  "ctxt": 0
                                                },
                                                "typeName": {
                                                  "type": "Identifier",
                                                  "span": {
                                                    "start": 1622,
                                                    "end": 1623,
                                                    "ctxt": 0
                                                  },
                                                  "value": "T",
                                                  "optional": false
                                                },
                                                "typeParams": null
                                              }
                                            },
                                            "typeParams": {
                                              "type": "TsTypeParameterDeclaration",
                                              "span": {
                                                "start": 1598,
                                                "end": 1614,
                                                "ctxt": 0
                                              },
                                              "parameters": [
                                                {
                                                  "type": "TsTypeParameter",
                                                  "span": {
                                                    "start": 1599,
                                                    "end": 1613,
                                                    "ctxt": 0
                                                  },
                                                  "name": {
                                                    "type": "Identifier",
                                                    "span": {
                                                      "start": 1599,
                                                      "end": 1600,
                                                      "ctxt": 0
                                                    },
                                                    "value": "T",
                                                    "optional": false
                                                  },
                                                  "constraint": {
                                                    "type": "TsTypeReference",
                                                    "span": {
                                                      "start": 1609,
                                                      "end": 1613,
                                                      "ctxt": 0
                                                    },
                                                    "typeName": {
                                                      "type": "Identifier",
                                                      "span": {
                                                        "start": 1609,
                                                        "end": 1613,
                                                        "ctxt": 0
                                                      },
                                                      "value": "Base",
                                                      "optional": false
                                                    },
                                                    "typeParams": null
                                                  },
                                                  "default": null
                                                }
                                              ]
                                            }
                                          }
                                        ]
                                      }
                                    }
                                  }
                                ],
                                "typeAnnotation": {
                                  "type": "TsTypeAnnotation",
                                  "span": {
                                    "start": 1643,
                                    "end": 1650,
                                    "ctxt": 0
                                  },
                                  "typeAnnotation": {
                                    "type": "TsArrayType",
                                    "span": {
                                      "start": 1645,
                                      "end": 1650,
                                      "ctxt": 0
                                    },
                                    "elemType": {
                                      "type": "TsKeywordType",
                                      "span": {
                                        "start": 1645,
                                        "end": 1648,
                                        "ctxt": 0
                                      },
                                      "kind": "any"
                                    }
                                  }
                                },
                                "typeParams": null
                              }
                            ]
                          }
                        }
                      },
                      "init": null,
                      "definite": false
                    }
                  ]
                },
                {
                  "type": "VariableDeclaration",
                  "span": {
                    "start": 1676,
                    "end": 1708,
                    "ctxt": 0
                  },
                  "kind": "var",
                  "declare": false,
                  "declarations": [
                    {
                      "type": "VariableDeclarator",
                      "span": {
                        "start": 1680,
                        "end": 1707,
                        "ctxt": 0
                      },
                      "id": {
                        "type": "Identifier",
                        "span": {
                          "start": 1680,
                          "end": 1682,
                          "ctxt": 0
                        },
                        "value": "b2",
                        "optional": false,
                        "typeAnnotation": {
                          "type": "TsTypeAnnotation",
                          "span": {
                            "start": 1682,
                            "end": 1707,
                            "ctxt": 0
                          },
                          "typeAnnotation": {
                            "type": "TsConstructorType",
                            "span": {
                              "start": 1684,
                              "end": 1707,
                              "ctxt": 0
                            },
                            "params": [
                              {
                                "type": "Identifier",
                                "span": {
                                  "start": 1695,
                                  "end": 1699,
                                  "ctxt": 0
                                },
                                "value": "x",
                                "optional": false,
                                "typeAnnotation": {
                                  "type": "TsTypeAnnotation",
                                  "span": {
                                    "start": 1696,
                                    "end": 1699,
                                    "ctxt": 0
                                  },
                                  "typeAnnotation": {
                                    "type": "TsTypeReference",
                                    "span": {
                                      "start": 1698,
                                      "end": 1699,
                                      "ctxt": 0
                                    },
                                    "typeName": {
                                      "type": "Identifier",
                                      "span": {
                                        "start": 1698,
                                        "end": 1699,
                                        "ctxt": 0
                                      },
                                      "value": "T",
                                      "optional": false
                                    },
                                    "typeParams": null
                                  }
                                }
                              }
                            ],
                            "typeParams": {
                              "type": "TsTypeParameterDeclaration",
                              "span": {
                                "start": 1688,
                                "end": 1694,
                                "ctxt": 0
                              },
                              "parameters": [
                                {
                                  "type": "TsTypeParameter",
                                  "span": {
                                    "start": 1689,
                                    "end": 1690,
                                    "ctxt": 0
                                  },
                                  "name": {
                                    "type": "Identifier",
                                    "span": {
                                      "start": 1689,
                                      "end": 1690,
                                      "ctxt": 0
                                    },
                                    "value": "T",
                                    "optional": false
                                  },
                                  "constraint": null,
                                  "default": null
                                },
                                {
                                  "type": "TsTypeParameter",
                                  "span": {
                                    "start": 1692,
                                    "end": 1693,
                                    "ctxt": 0
                                  },
                                  "name": {
                                    "type": "Identifier",
                                    "span": {
                                      "start": 1692,
                                      "end": 1693,
                                      "ctxt": 0
                                    },
                                    "value": "U",
                                    "optional": false
                                  },
                                  "constraint": null,
                                  "default": null
                                }
                              ]
                            },
                            "typeAnnotation": {
                              "type": "TsTypeAnnotation",
                              "span": {
                                "start": 1701,
                                "end": 1707,
                                "ctxt": 0
                              },
                              "typeAnnotation": {
                                "type": "TsArrayType",
                                "span": {
                                  "start": 1704,
                                  "end": 1707,
                                  "ctxt": 0
                                },
                                "elemType": {
                                  "type": "TsTypeReference",
                                  "span": {
                                    "start": 1704,
                                    "end": 1705,
                                    "ctxt": 0
                                  },
                                  "typeName": {
                                    "type": "Identifier",
                                    "span": {
                                      "start": 1704,
                                      "end": 1705,
                                      "ctxt": 0
                                    },
                                    "value": "U",
                                    "optional": false
                                  },
                                  "typeParams": null
                                }
                              }
                            },
                            "isAbstract": false
                          }
                        }
                      },
                      "init": null,
                      "definite": false
                    }
                  ]
                },
                {
                  "type": "ExpressionStatement",
                  "span": {
                    "start": 1718,
                    "end": 1726,
                    "ctxt": 0
                  },
                  "expression": {
                    "type": "AssignmentExpression",
                    "span": {
                      "start": 1718,
                      "end": 1725,
                      "ctxt": 0
                    },
                    "operator": "=",
                    "left": {
                      "type": "Identifier",
                      "span": {
                        "start": 1718,
                        "end": 1720,
                        "ctxt": 0
                      },
                      "value": "a2",
                      "optional": false,
                      "typeAnnotation": null
                    },
                    "right": {
                      "type": "Identifier",
                      "span": {
                        "start": 1723,
                        "end": 1725,
                        "ctxt": 0
                      },
                      "value": "b2",
                      "optional": false
                    }
                  }
                },
                {
                  "type": "ExpressionStatement",
                  "span": {
                    "start": 1741,
                    "end": 1749,
                    "ctxt": 0
                  },
                  "expression": {
                    "type": "AssignmentExpression",
                    "span": {
                      "start": 1741,
                      "end": 1748,
                      "ctxt": 0
                    },
                    "operator": "=",
                    "left": {
                      "type": "Identifier",
                      "span": {
                        "start": 1741,
                        "end": 1743,
                        "ctxt": 0
                      },
                      "value": "b2",
                      "optional": false,
                      "typeAnnotation": null
                    },
                    "right": {
                      "type": "Identifier",
                      "span": {
                        "start": 1746,
                        "end": 1748,
                        "ctxt": 0
                      },
                      "value": "a2",
                      "optional": false
                    }
                  }
                },
                {
                  "type": "VariableDeclaration",
                  "span": {
                    "start": 1765,
                    "end": 1866,
                    "ctxt": 0
                  },
                  "kind": "var",
                  "declare": false,
                  "declarations": [
                    {
                      "type": "VariableDeclarator",
                      "span": {
                        "start": 1769,
                        "end": 1865,
                        "ctxt": 0
                      },
                      "id": {
                        "type": "Identifier",
                        "span": {
                          "start": 1769,
                          "end": 1771,
                          "ctxt": 0
                        },
                        "value": "b7",
                        "optional": false,
                        "typeAnnotation": {
                          "type": "TsTypeAnnotation",
                          "span": {
                            "start": 1771,
                            "end": 1865,
                            "ctxt": 0
                          },
                          "typeAnnotation": {
                            "type": "TsConstructorType",
                            "span": {
                              "start": 1773,
                              "end": 1865,
                              "ctxt": 0
                            },
                            "params": [
                              {
                                "type": "Identifier",
                                "span": {
                                  "start": 1833,
                                  "end": 1849,
                                  "ctxt": 0
                                },
                                "value": "x",
                                "optional": false,
                                "typeAnnotation": {
                                  "type": "TsTypeAnnotation",
                                  "span": {
                                    "start": 1834,
                                    "end": 1849,
                                    "ctxt": 0
                                  },
                                  "typeAnnotation": {
                                    "type": "TsFunctionType",
                                    "span": {
                                      "start": 1836,
                                      "end": 1849,
                                      "ctxt": 0
                                    },
                                    "params": [
                                      {
                                        "type": "Identifier",
                                        "span": {
                                          "start": 1837,
                                          "end": 1843,
                                          "ctxt": 0
                                        },
                                        "value": "arg",
                                        "optional": false,
                                        "typeAnnotation": {
                                          "type": "TsTypeAnnotation",
                                          "span": {
                                            "start": 1840,
                                            "end": 1843,
                                            "ctxt": 0
                                          },
                                          "typeAnnotation": {
                                            "type": "TsTypeReference",
                                            "span": {
                                              "start": 1842,
                                              "end": 1843,
                                              "ctxt": 0
                                            },
                                            "typeName": {
                                              "type": "Identifier",
                                              "span": {
                                                "start": 1842,
                                                "end": 1843,
                                                "ctxt": 0
                                              },
                                              "value": "T",
                                              "optional": false
                                            },
                                            "typeParams": null
                                          }
                                        }
                                      }
                                    ],
                                    "typeParams": null,
                                    "typeAnnotation": {
                                      "type": "TsTypeAnnotation",
                                      "span": {
                                        "start": 1845,
                                        "end": 1849,
                                        "ctxt": 0
                                      },
                                      "typeAnnotation": {
                                        "type": "TsTypeReference",
                                        "span": {
                                          "start": 1848,
                                          "end": 1849,
                                          "ctxt": 0
                                        },
                                        "typeName": {
                                          "type": "Identifier",
                                          "span": {
                                            "start": 1848,
                                            "end": 1849,
                                            "ctxt": 0
                                          },
                                          "value": "U",
                                          "optional": false
                                        },
                                        "typeParams": null
                                      }
                                    }
                                  }
                                }
                              }
                            ],
                            "typeParams": {
                              "type": "TsTypeParameterDeclaration",
                              "span": {
                                "start": 1777,
                                "end": 1832,
                                "ctxt": 0
                              },
                              "parameters": [
                                {
                                  "type": "TsTypeParameter",
                                  "span": {
                                    "start": 1778,
                                    "end": 1792,
                                    "ctxt": 0
                                  },
                                  "name": {
                                    "type": "Identifier",
                                    "span": {
                                      "start": 1778,
                                      "end": 1779,
                                      "ctxt": 0
                                    },
                                    "value": "T",
                                    "optional": false
                                  },
                                  "constraint": {
                                    "type": "TsTypeReference",
                                    "span": {
                                      "start": 1788,
                                      "end": 1792,
                                      "ctxt": 0
                                    },
                                    "typeName": {
                                      "type": "Identifier",
                                      "span": {
                                        "start": 1788,
                                        "end": 1792,
                                        "ctxt": 0
                                      },
                                      "value": "Base",
                                      "optional": false
                                    },
                                    "typeParams": null
                                  },
                                  "default": null
                                },
                                {
                                  "type": "TsTypeParameter",
                                  "span": {
                                    "start": 1794,
                                    "end": 1811,
                                    "ctxt": 0
                                  },
                                  "name": {
                                    "type": "Identifier",
                                    "span": {
                                      "start": 1794,
                                      "end": 1795,
                                      "ctxt": 0
                                    },
                                    "value": "U",
                                    "optional": false
                                  },
                                  "constraint": {
                                    "type": "TsTypeReference",
                                    "span": {
                                      "start": 1804,
                                      "end": 1811,
                                      "ctxt": 0
                                    },
                                    "typeName": {
                                      "type": "Identifier",
                                      "span": {
                                        "start": 1804,
                                        "end": 1811,
                                        "ctxt": 0
                                      },
                                      "value": "Derived",
                                      "optional": false
                                    },
                                    "typeParams": null
                                  },
                                  "default": null
                                },
                                {
                                  "type": "TsTypeParameter",
                                  "span": {
                                    "start": 1813,
                                    "end": 1831,
                                    "ctxt": 0
                                  },
                                  "name": {
                                    "type": "Identifier",
                                    "span": {
                                      "start": 1813,
                                      "end": 1814,
                                      "ctxt": 0
                                    },
                                    "value": "V",
                                    "optional": false
                                  },
                                  "constraint": {
                                    "type": "TsTypeReference",
                                    "span": {
                                      "start": 1823,
                                      "end": 1831,
                                      "ctxt": 0
                                    },
                                    "typeName": {
                                      "type": "Identifier",
                                      "span": {
                                        "start": 1823,
                                        "end": 1831,
                                        "ctxt": 0
                                      },
                                      "value": "Derived2",
                                      "optional": false
                                    },
                                    "typeParams": null
                                  },
                                  "default": null
                                }
                              ]
                            },
                            "typeAnnotation": {
                              "type": "TsTypeAnnotation",
                              "span": {
                                "start": 1851,
                                "end": 1865,
                                "ctxt": 0
                              },
                              "typeAnnotation": {
                                "type": "TsFunctionType",
                                "span": {
                                  "start": 1854,
                                  "end": 1865,
                                  "ctxt": 0
                                },
                                "params": [
                                  {
                                    "type": "Identifier",
                                    "span": {
                                      "start": 1855,
                                      "end": 1859,
                                      "ctxt": 0
                                    },
                                    "value": "r",
                                    "optional": false,
                                    "typeAnnotation": {
                                      "type": "TsTypeAnnotation",
                                      "span": {
                                        "start": 1856,
                                        "end": 1859,
                                        "ctxt": 0
                                      },
                                      "typeAnnotation": {
                                        "type": "TsTypeReference",
                                        "span": {
                                          "start": 1858,
                                          "end": 1859,
                                          "ctxt": 0
                                        },
                                        "typeName": {
                                          "type": "Identifier",
                                          "span": {
                                            "start": 1858,
                                            "end": 1859,
                                            "ctxt": 0
                                          },
                                          "value": "T",
                                          "optional": false
                                        },
                                        "typeParams": null
                                      }
                                    }
                                  }
                                ],
                                "typeParams": null,
                                "typeAnnotation": {
                                  "type": "TsTypeAnnotation",
                                  "span": {
                                    "start": 1861,
                                    "end": 1865,
                                    "ctxt": 0
                                  },
                                  "typeAnnotation": {
                                    "type": "TsTypeReference",
                                    "span": {
                                      "start": 1864,
                                      "end": 1865,
                                      "ctxt": 0
                                    },
                                    "typeName": {
                                      "type": "Identifier",
                                      "span": {
                                        "start": 1864,
                                        "end": 1865,
                                        "ctxt": 0
                                      },
                                      "value": "V",
                                      "optional": false
                                    },
                                    "typeParams": null
                                  }
                                }
                              }
                            },
                            "isAbstract": false
                          }
                        }
                      },
                      "init": null,
                      "definite": false
                    }
                  ]
                },
                {
                  "type": "ExpressionStatement",
                  "span": {
                    "start": 1875,
                    "end": 1883,
                    "ctxt": 0
                  },
                  "expression": {
                    "type": "AssignmentExpression",
                    "span": {
                      "start": 1875,
                      "end": 1882,
                      "ctxt": 0
                    },
                    "operator": "=",
                    "left": {
                      "type": "Identifier",
                      "span": {
                        "start": 1875,
                        "end": 1877,
                        "ctxt": 0
                      },
                      "value": "a7",
                      "optional": false,
                      "typeAnnotation": null
                    },
                    "right": {
                      "type": "Identifier",
                      "span": {
                        "start": 1880,
                        "end": 1882,
                        "ctxt": 0
                      },
                      "value": "b7",
                      "optional": false
                    }
                  }
                },
                {
                  "type": "ExpressionStatement",
                  "span": {
                    "start": 1898,
                    "end": 1906,
                    "ctxt": 0
                  },
                  "expression": {
                    "type": "AssignmentExpression",
                    "span": {
                      "start": 1898,
                      "end": 1905,
                      "ctxt": 0
                    },
                    "operator": "=",
                    "left": {
                      "type": "Identifier",
                      "span": {
                        "start": 1898,
                        "end": 1900,
                        "ctxt": 0
                      },
                      "value": "b7",
                      "optional": false,
                      "typeAnnotation": null
                    },
                    "right": {
                      "type": "Identifier",
                      "span": {
                        "start": 1903,
                        "end": 1905,
                        "ctxt": 0
                      },
                      "value": "a7",
                      "optional": false
                    }
                  }
                },
                {
                  "type": "VariableDeclaration",
                  "span": {
                    "start": 1922,
                    "end": 2037,
                    "ctxt": 0
                  },
                  "kind": "var",
                  "declare": false,
                  "declarations": [
                    {
                      "type": "VariableDeclarator",
                      "span": {
                        "start": 1926,
                        "end": 2036,
                        "ctxt": 0
                      },
                      "id": {
                        "type": "Identifier",
                        "span": {
                          "start": 1926,
                          "end": 1928,
                          "ctxt": 0
                        },
                        "value": "b8",
                        "optional": false,
                        "typeAnnotation": {
                          "type": "TsTypeAnnotation",
                          "span": {
                            "start": 1928,
                            "end": 2036,
                            "ctxt": 0
                          },
                          "typeAnnotation": {
                            "type": "TsConstructorType",
                            "span": {
                              "start": 1930,
                              "end": 2036,
                              "ctxt": 0
                            },
                            "params": [
                              {
                                "type": "Identifier",
                                "span": {
                                  "start": 1970,
                                  "end": 1986,
                                  "ctxt": 0
                                },
                                "value": "x",
                                "optional": false,
                                "typeAnnotation": {
                                  "type": "TsTypeAnnotation",
                                  "span": {
                                    "start": 1971,
                                    "end": 1986,
                                    "ctxt": 0
                                  },
                                  "typeAnnotation": {
                                    "type": "TsFunctionType",
                                    "span": {
                                      "start": 1973,
                                      "end": 1986,
                                      "ctxt": 0
                                    },
                                    "params": [
                                      {
                                        "type": "Identifier",
                                        "span": {
                                          "start": 1974,
                                          "end": 1980,
                                          "ctxt": 0
                                        },
                                        "value": "arg",
                                        "optional": false,
                                        "typeAnnotation": {
                                          "type": "TsTypeAnnotation",
                                          "span": {
                                            "start": 1977,
                                            "end": 1980,
                                            "ctxt": 0
                                          },
                                          "typeAnnotation": {
                                            "type": "TsTypeReference",
                                            "span": {
                                              "start": 1979,
                                              "end": 1980,
                                              "ctxt": 0
                                            },
                                            "typeName": {
                                              "type": "Identifier",
                                              "span": {
                                                "start": 1979,
                                                "end": 1980,
                                                "ctxt": 0
                                              },
                                              "value": "T",
                                              "optional": false
                                            },
                                            "typeParams": null
                                          }
                                        }
                                      }
                                    ],
                                    "typeParams": null,
                                    "typeAnnotation": {
                                      "type": "TsTypeAnnotation",
                                      "span": {
                                        "start": 1982,
                                        "end": 1986,
                                        "ctxt": 0
                                      },
                                      "typeAnnotation": {
                                        "type": "TsTypeReference",
                                        "span": {
                                          "start": 1985,
                                          "end": 1986,
                                          "ctxt": 0
                                        },
                                        "typeName": {
                                          "type": "Identifier",
                                          "span": {
                                            "start": 1985,
                                            "end": 1986,
                                            "ctxt": 0
                                          },
                                          "value": "U",
                                          "optional": false
                                        },
                                        "typeParams": null
                                      }
                                    }
                                  }
                                }
                              },
                              {
                                "type": "Identifier",
                                "span": {
                                  "start": 1988,
                                  "end": 2020,
                                  "ctxt": 0
                                },
                                "value": "y",
                                "optional": false,
                                "typeAnnotation": {
                                  "type": "TsTypeAnnotation",
                                  "span": {
                                    "start": 1989,
                                    "end": 2020,
                                    "ctxt": 0
                                  },
                                  "typeAnnotation": {
                                    "type": "TsFunctionType",
                                    "span": {
                                      "start": 1991,
                                      "end": 2020,
                                      "ctxt": 0
                                    },
                                    "params": [
                                      {
                                        "type": "Identifier",
                                        "span": {
                                          "start": 1992,
                                          "end": 2014,
                                          "ctxt": 0
                                        },
                                        "value": "arg2",
                                        "optional": false,
                                        "typeAnnotation": {
                                          "type": "TsTypeAnnotation",
                                          "span": {
                                            "start": 1996,
                                            "end": 2014,
                                            "ctxt": 0
                                          },
                                          "typeAnnotation": {
                                            "type": "TsTypeLiteral",
                                            "span": {
                                              "start": 1998,
                                              "end": 2014,
                                              "ctxt": 0
                                            },
                                            "members": [
                                              {
                                                "type": "TsPropertySignature",
                                                "span": {
                                                  "start": 2000,
                                                  "end": 2012,
                                                  "ctxt": 0
                                                },
                                                "readonly": false,
                                                "key": {
                                                  "type": "Identifier",
                                                  "span": {
                                                    "start": 2000,
                                                    "end": 2003,
                                                    "ctxt": 0
                                                  },
                                                  "value": "foo",
                                                  "optional": false
                                                },
                                                "computed": false,
                                                "optional": false,
                                                "init": null,
                                                "params": [],
                                                "typeAnnotation": {
                                                  "type": "TsTypeAnnotation",
                                                  "span": {
                                                    "start": 2003,
                                                    "end": 2011,
                                                    "ctxt": 0
                                                  },
                                                  "typeAnnotation": {
                                                    "type": "TsKeywordType",
                                                    "span": {
                                                      "start": 2005,
                                                      "end": 2011,
                                                      "ctxt": 0
                                                    },
                                                    "kind": "number"
                                                  }
                                                },
                                                "typeParams": null
                                              }
                                            ]
                                          }
                                        }
                                      }
                                    ],
                                    "typeParams": null,
                                    "typeAnnotation": {
                                      "type": "TsTypeAnnotation",
                                      "span": {
                                        "start": 2016,
                                        "end": 2020,
                                        "ctxt": 0
                                      },
                                      "typeAnnotation": {
                                        "type": "TsTypeReference",
                                        "span": {
                                          "start": 2019,
                                          "end": 2020,
                                          "ctxt": 0
                                        },
                                        "typeName": {
                                          "type": "Identifier",
                                          "span": {
                                            "start": 2019,
                                            "end": 2020,
                                            "ctxt": 0
                                          },
                                          "value": "U",
                                          "optional": false
                                        },
                                        "typeParams": null
                                      }
                                    }
                                  }
                                }
                              }
                            ],
                            "typeParams": {
                              "type": "TsTypeParameterDeclaration",
                              "span": {
                                "start": 1934,
                                "end": 1969,
                                "ctxt": 0
                              },
                              "parameters": [
                                {
                                  "type": "TsTypeParameter",
                                  "span": {
                                    "start": 1935,
                                    "end": 1949,
                                    "ctxt": 0
                                  },
                                  "name": {
                                    "type": "Identifier",
                                    "span": {
                                      "start": 1935,
                                      "end": 1936,
                                      "ctxt": 0
                                    },
                                    "value": "T",
                                    "optional": false
                                  },
                                  "constraint": {
                                    "type": "TsTypeReference",
                                    "span": {
                                      "start": 1945,
                                      "end": 1949,
                                      "ctxt": 0
                                    },
                                    "typeName": {
                                      "type": "Identifier",
                                      "span": {
                                        "start": 1945,
                                        "end": 1949,
                                        "ctxt": 0
                                      },
                                      "value": "Base",
                                      "optional": false
                                    },
                                    "typeParams": null
                                  },
                                  "default": null
                                },
                                {
                                  "type": "TsTypeParameter",
                                  "span": {
                                    "start": 1951,
                                    "end": 1968,
                                    "ctxt": 0
                                  },
                                  "name": {
                                    "type": "Identifier",
                                    "span": {
                                      "start": 1951,
                                      "end": 1952,
                                      "ctxt": 0
                                    },
                                    "value": "U",
                                    "optional": false
                                  },
                                  "constraint": {
                                    "type": "TsTypeReference",
                                    "span": {
                                      "start": 1961,
                                      "end": 1968,
                                      "ctxt": 0
                                    },
                                    "typeName": {
                                      "type": "Identifier",
                                      "span": {
                                        "start": 1961,
                                        "end": 1968,
                                        "ctxt": 0
                                      },
                                      "value": "Derived",
                                      "optional": false
                                    },
                                    "typeParams": null
                                  },
                                  "default": null
                                }
                              ]
                            },
                            "typeAnnotation": {
                              "type": "TsTypeAnnotation",
                              "span": {
                                "start": 2022,
                                "end": 2036,
                                "ctxt": 0
                              },
                              "typeAnnotation": {
                                "type": "TsFunctionType",
                                "span": {
                                  "start": 2025,
                                  "end": 2036,
                                  "ctxt": 0
                                },
                                "params": [
                                  {
                                    "type": "Identifier",
                                    "span": {
                                      "start": 2026,
                                      "end": 2030,
                                      "ctxt": 0
                                    },
                                    "value": "r",
                                    "optional": false,
                                    "typeAnnotation": {
                                      "type": "TsTypeAnnotation",
                                      "span": {
                                        "start": 2027,
                                        "end": 2030,
                                        "ctxt": 0
                                      },
                                      "typeAnnotation": {
                                        "type": "TsTypeReference",
                                        "span": {
                                          "start": 2029,
                                          "end": 2030,
                                          "ctxt": 0
                                        },
                                        "typeName": {
                                          "type": "Identifier",
                                          "span": {
                                            "start": 2029,
                                            "end": 2030,
                                            "ctxt": 0
                                          },
                                          "value": "T",
                                          "optional": false
                                        },
                                        "typeParams": null
                                      }
                                    }
                                  }
                                ],
                                "typeParams": null,
                                "typeAnnotation": {
                                  "type": "TsTypeAnnotation",
                                  "span": {
                                    "start": 2032,
                                    "end": 2036,
                                    "ctxt": 0
                                  },
                                  "typeAnnotation": {
                                    "type": "TsTypeReference",
                                    "span": {
                                      "start": 2035,
                                      "end": 2036,
                                      "ctxt": 0
                                    },
                                    "typeName": {
                                      "type": "Identifier",
                                      "span": {
                                        "start": 2035,
                                        "end": 2036,
                                        "ctxt": 0
                                      },
                                      "value": "U",
                                      "optional": false
                                    },
                                    "typeParams": null
                                  }
                                }
                              }
                            },
                            "isAbstract": false
                          }
                        }
                      },
                      "init": null,
                      "definite": false
                    }
                  ]
                },
                {
                  "type": "ExpressionStatement",
                  "span": {
                    "start": 2047,
                    "end": 2055,
                    "ctxt": 0
                  },
                  "expression": {
                    "type": "AssignmentExpression",
                    "span": {
                      "start": 2047,
                      "end": 2054,
                      "ctxt": 0
                    },
                    "operator": "=",
                    "left": {
                      "type": "Identifier",
                      "span": {
                        "start": 2047,
                        "end": 2049,
                        "ctxt": 0
                      },
                      "value": "a8",
                      "optional": false,
                      "typeAnnotation": null
                    },
                    "right": {
                      "type": "Identifier",
                      "span": {
                        "start": 2052,
                        "end": 2054,
                        "ctxt": 0
                      },
                      "value": "b8",
                      "optional": false
                    }
                  }
                },
                {
                  "type": "ExpressionStatement",
                  "span": {
                    "start": 2088,
                    "end": 2096,
                    "ctxt": 0
                  },
                  "expression": {
                    "type": "AssignmentExpression",
                    "span": {
                      "start": 2088,
                      "end": 2095,
                      "ctxt": 0
                    },
                    "operator": "=",
                    "left": {
                      "type": "Identifier",
                      "span": {
                        "start": 2088,
                        "end": 2090,
                        "ctxt": 0
                      },
                      "value": "b8",
                      "optional": false,
                      "typeAnnotation": null
                    },
                    "right": {
                      "type": "Identifier",
                      "span": {
                        "start": 2093,
                        "end": 2095,
                        "ctxt": 0
                      },
                      "value": "a8",
                      "optional": false
                    }
                  }
                },
                {
                  "type": "VariableDeclaration",
                  "span": {
                    "start": 2124,
                    "end": 2173,
                    "ctxt": 0
                  },
                  "kind": "var",
                  "declare": false,
                  "declarations": [
                    {
                      "type": "VariableDeclarator",
                      "span": {
                        "start": 2128,
                        "end": 2172,
                        "ctxt": 0
                      },
                      "id": {
                        "type": "Identifier",
                        "span": {
                          "start": 2128,
                          "end": 2131,
                          "ctxt": 0
                        },
                        "value": "b10",
                        "optional": false,
                        "typeAnnotation": {
                          "type": "TsTypeAnnotation",
                          "span": {
                            "start": 2131,
                            "end": 2172,
                            "ctxt": 0
                          },
                          "typeAnnotation": {
                            "type": "TsConstructorType",
                            "span": {
                              "start": 2133,
                              "end": 2172,
                              "ctxt": 0
                            },
                            "params": [
                              {
                                "type": "RestElement",
                                "span": {
                                  "start": 2157,
                                  "end": 2166,
                                  "ctxt": 0
                                },
                                "rest": {
                                  "start": 2157,
                                  "end": 2160,
                                  "ctxt": 0
                                },
                                "argument": {
                                  "type": "Identifier",
                                  "span": {
                                    "start": 2160,
                                    "end": 2161,
                                    "ctxt": 0
                                  },
                                  "value": "x",
                                  "optional": false,
                                  "typeAnnotation": null
                                },
                                "typeAnnotation": {
                                  "type": "TsTypeAnnotation",
                                  "span": {
                                    "start": 2161,
                                    "end": 2166,
                                    "ctxt": 0
                                  },
                                  "typeAnnotation": {
                                    "type": "TsArrayType",
                                    "span": {
                                      "start": 2163,
                                      "end": 2166,
                                      "ctxt": 0
                                    },
                                    "elemType": {
                                      "type": "TsTypeReference",
                                      "span": {
                                        "start": 2163,
                                        "end": 2164,
                                        "ctxt": 0
                                      },
                                      "typeName": {
                                        "type": "Identifier",
                                        "span": {
                                          "start": 2163,
                                          "end": 2164,
                                          "ctxt": 0
                                        },
                                        "value": "T",
                                        "optional": false
                                      },
                                      "typeParams": null
                                    }
                                  }
                                }
                              }
                            ],
                            "typeParams": {
                              "type": "TsTypeParameterDeclaration",
                              "span": {
                                "start": 2137,
                                "end": 2156,
                                "ctxt": 0
                              },
                              "parameters": [
                                {
                                  "type": "TsTypeParameter",
                                  "span": {
                                    "start": 2138,
                                    "end": 2155,
                                    "ctxt": 0
                                  },
                                  "name": {
                                    "type": "Identifier",
                                    "span": {
                                      "start": 2138,
                                      "end": 2139,
                                      "ctxt": 0
                                    },
                                    "value": "T",
                                    "optional": false
                                  },
                                  "constraint": {
                                    "type": "TsTypeReference",
                                    "span": {
                                      "start": 2148,
                                      "end": 2155,
                                      "ctxt": 0
                                    },
                                    "typeName": {
                                      "type": "Identifier",
                                      "span": {
                                        "start": 2148,
                                        "end": 2155,
                                        "ctxt": 0
                                      },
                                      "value": "Derived",
                                      "optional": false
                                    },
                                    "typeParams": null
                                  },
                                  "default": null
                                }
                              ]
                            },
                            "typeAnnotation": {
                              "type": "TsTypeAnnotation",
                              "span": {
                                "start": 2168,
                                "end": 2172,
                                "ctxt": 0
                              },
                              "typeAnnotation": {
                                "type": "TsTypeReference",
                                "span": {
                                  "start": 2171,
                                  "end": 2172,
                                  "ctxt": 0
                                },
                                "typeName": {
                                  "type": "Identifier",
                                  "span": {
                                    "start": 2171,
                                    "end": 2172,
                                    "ctxt": 0
                                  },
                                  "value": "T",
                                  "optional": false
                                },
                                "typeParams": null
                              }
                            },
                            "isAbstract": false
                          }
                        }
                      },
                      "init": null,
                      "definite": false
                    }
                  ]
                },
                {
                  "type": "ExpressionStatement",
                  "span": {
                    "start": 2183,
                    "end": 2193,
                    "ctxt": 0
                  },
                  "expression": {
                    "type": "AssignmentExpression",
                    "span": {
                      "start": 2183,
                      "end": 2192,
                      "ctxt": 0
                    },
                    "operator": "=",
                    "left": {
                      "type": "Identifier",
                      "span": {
                        "start": 2183,
                        "end": 2186,
                        "ctxt": 0
                      },
                      "value": "a10",
                      "optional": false,
                      "typeAnnotation": null
                    },
                    "right": {
                      "type": "Identifier",
                      "span": {
                        "start": 2189,
                        "end": 2192,
                        "ctxt": 0
                      },
                      "value": "b10",
                      "optional": false
                    }
                  }
                },
                {
                  "type": "ExpressionStatement",
                  "span": {
                    "start": 2208,
                    "end": 2218,
                    "ctxt": 0
                  },
                  "expression": {
                    "type": "AssignmentExpression",
                    "span": {
                      "start": 2208,
                      "end": 2217,
                      "ctxt": 0
                    },
                    "operator": "=",
                    "left": {
                      "type": "Identifier",
                      "span": {
                        "start": 2208,
                        "end": 2211,
                        "ctxt": 0
                      },
                      "value": "b10",
                      "optional": false,
                      "typeAnnotation": null
                    },
                    "right": {
                      "type": "Identifier",
                      "span": {
                        "start": 2214,
                        "end": 2217,
                        "ctxt": 0
                      },
                      "value": "a10",
                      "optional": false
                    }
                  }
                },
                {
                  "type": "VariableDeclaration",
                  "span": {
                    "start": 2234,
                    "end": 2284,
                    "ctxt": 0
                  },
                  "kind": "var",
                  "declare": false,
                  "declarations": [
                    {
                      "type": "VariableDeclarator",
                      "span": {
                        "start": 2238,
                        "end": 2283,
                        "ctxt": 0
                      },
                      "id": {
                        "type": "Identifier",
                        "span": {
                          "start": 2238,
                          "end": 2241,
                          "ctxt": 0
                        },
                        "value": "b11",
                        "optional": false,
                        "typeAnnotation": {
                          "type": "TsTypeAnnotation",
                          "span": {
                            "start": 2241,
                            "end": 2283,
                            "ctxt": 0
                          },
                          "typeAnnotation": {
                            "type": "TsConstructorType",
                            "span": {
                              "start": 2243,
                              "end": 2283,
                              "ctxt": 0
                            },
                            "params": [
                              {
                                "type": "Identifier",
                                "span": {
                                  "start": 2267,
                                  "end": 2271,
                                  "ctxt": 0
                                },
                                "value": "x",
                                "optional": false,
                                "typeAnnotation": {
                                  "type": "TsTypeAnnotation",
                                  "span": {
                                    "start": 2268,
                                    "end": 2271,
                                    "ctxt": 0
                                  },
                                  "typeAnnotation": {
                                    "type": "TsTypeReference",
                                    "span": {
                                      "start": 2270,
                                      "end": 2271,
                                      "ctxt": 0
                                    },
                                    "typeName": {
                                      "type": "Identifier",
                                      "span": {
                                        "start": 2270,
                                        "end": 2271,
                                        "ctxt": 0
                                      },
                                      "value": "T",
                                      "optional": false
                                    },
                                    "typeParams": null
                                  }
                                }
                              },
                              {
                                "type": "Identifier",
                                "span": {
                                  "start": 2273,
                                  "end": 2277,
                                  "ctxt": 0
                                },
                                "value": "y",
                                "optional": false,
                                "typeAnnotation": {
                                  "type": "TsTypeAnnotation",
                                  "span": {
                                    "start": 2274,
                                    "end": 2277,
                                    "ctxt": 0
                                  },
                                  "typeAnnotation": {
                                    "type": "TsTypeReference",
                                    "span": {
                                      "start": 2276,
                                      "end": 2277,
                                      "ctxt": 0
                                    },
                                    "typeName": {
                                      "type": "Identifier",
                                      "span": {
                                        "start": 2276,
                                        "end": 2277,
                                        "ctxt": 0
                                      },
                                      "value": "T",
                                      "optional": false
                                    },
                                    "typeParams": null
                                  }
                                }
                              }
                            ],
                            "typeParams": {
                              "type": "TsTypeParameterDeclaration",
                              "span": {
                                "start": 2247,
                                "end": 2266,
                                "ctxt": 0
                              },
                              "parameters": [
                                {
                                  "type": "TsTypeParameter",
                                  "span": {
                                    "start": 2248,
                                    "end": 2265,
                                    "ctxt": 0
                                  },
                                  "name": {
                                    "type": "Identifier",
                                    "span": {
                                      "start": 2248,
                                      "end": 2249,
                                      "ctxt": 0
                                    },
                                    "value": "T",
                                    "optional": false
                                  },
                                  "constraint": {
                                    "type": "TsTypeReference",
                                    "span": {
                                      "start": 2258,
                                      "end": 2265,
                                      "ctxt": 0
                                    },
                                    "typeName": {
                                      "type": "Identifier",
                                      "span": {
                                        "start": 2258,
                                        "end": 2265,
                                        "ctxt": 0
                                      },
                                      "value": "Derived",
                                      "optional": false
                                    },
                                    "typeParams": null
                                  },
                                  "default": null
                                }
                              ]
                            },
                            "typeAnnotation": {
                              "type": "TsTypeAnnotation",
                              "span": {
                                "start": 2279,
                                "end": 2283,
                                "ctxt": 0
                              },
                              "typeAnnotation": {
                                "type": "TsTypeReference",
                                "span": {
                                  "start": 2282,
                                  "end": 2283,
                                  "ctxt": 0
                                },
                                "typeName": {
                                  "type": "Identifier",
                                  "span": {
                                    "start": 2282,
                                    "end": 2283,
                                    "ctxt": 0
                                  },
                                  "value": "T",
                                  "optional": false
                                },
                                "typeParams": null
                              }
                            },
                            "isAbstract": false
                          }
                        }
                      },
                      "init": null,
                      "definite": false
                    }
                  ]
                },
                {
                  "type": "ExpressionStatement",
                  "span": {
                    "start": 2294,
                    "end": 2304,
                    "ctxt": 0
                  },
                  "expression": {
                    "type": "AssignmentExpression",
                    "span": {
                      "start": 2294,
                      "end": 2303,
                      "ctxt": 0
                    },
                    "operator": "=",
                    "left": {
                      "type": "Identifier",
                      "span": {
                        "start": 2294,
                        "end": 2297,
                        "ctxt": 0
                      },
                      "value": "a11",
                      "optional": false,
                      "typeAnnotation": null
                    },
                    "right": {
                      "type": "Identifier",
                      "span": {
                        "start": 2300,
                        "end": 2303,
                        "ctxt": 0
                      },
                      "value": "b11",
                      "optional": false
                    }
                  }
                },
                {
                  "type": "ExpressionStatement",
                  "span": {
                    "start": 2319,
                    "end": 2329,
                    "ctxt": 0
                  },
                  "expression": {
                    "type": "AssignmentExpression",
                    "span": {
                      "start": 2319,
                      "end": 2328,
                      "ctxt": 0
                    },
                    "operator": "=",
                    "left": {
                      "type": "Identifier",
                      "span": {
                        "start": 2319,
                        "end": 2322,
                        "ctxt": 0
                      },
                      "value": "b11",
                      "optional": false,
                      "typeAnnotation": null
                    },
                    "right": {
                      "type": "Identifier",
                      "span": {
                        "start": 2325,
                        "end": 2328,
                        "ctxt": 0
                      },
                      "value": "a11",
                      "optional": false
                    }
                  }
                },
                {
                  "type": "VariableDeclaration",
                  "span": {
                    "start": 2345,
                    "end": 2423,
                    "ctxt": 0
                  },
                  "kind": "var",
                  "declare": false,
                  "declarations": [
                    {
                      "type": "VariableDeclarator",
                      "span": {
                        "start": 2349,
                        "end": 2422,
                        "ctxt": 0
                      },
                      "id": {
                        "type": "Identifier",
                        "span": {
                          "start": 2349,
                          "end": 2352,
                          "ctxt": 0
                        },
                        "value": "b12",
                        "optional": false,
                        "typeAnnotation": {
                          "type": "TsTypeAnnotation",
                          "span": {
                            "start": 2352,
                            "end": 2422,
                            "ctxt": 0
                          },
                          "typeAnnotation": {
                            "type": "TsConstructorType",
                            "span": {
                              "start": 2354,
                              "end": 2422,
                              "ctxt": 0
                            },
                            "params": [
                              {
                                "type": "Identifier",
                                "span": {
                                  "start": 2386,
                                  "end": 2400,
                                  "ctxt": 0
                                },
                                "value": "x",
                                "optional": false,
                                "typeAnnotation": {
                                  "type": "TsTypeAnnotation",
                                  "span": {
                                    "start": 2387,
                                    "end": 2400,
                                    "ctxt": 0
                                  },
                                  "typeAnnotation": {
                                    "type": "TsTypeReference",
                                    "span": {
                                      "start": 2389,
                                      "end": 2400,
                                      "ctxt": 0
                                    },
                                    "typeName": {
                                      "type": "Identifier",
                                      "span": {
                                        "start": 2389,
                                        "end": 2394,
                                        "ctxt": 0
                                      },
                                      "value": "Array",
                                      "optional": false
                                    },
                                    "typeParams": {
                                      "type": "TsTypeParameterInstantiation",
                                      "span": {
                                        "start": 2394,
                                        "end": 2400,
                                        "ctxt": 0
                                      },
                                      "params": [
                                        {
                                          "type": "TsTypeReference",
                                          "span": {
                                            "start": 2395,
                                            "end": 2399,
                                            "ctxt": 0
                                          },
                                          "typeName": {
                                            "type": "Identifier",
                                            "span": {
                                              "start": 2395,
                                              "end": 2399,
                                              "ctxt": 0
                                            },
                                            "value": "Base",
                                            "optional": false
                                          },
                                          "typeParams": null
                                        }
                                      ]
                                    }
                                  }
                                }
                              },
                              {
                                "type": "Identifier",
                                "span": {
                                  "start": 2402,
                                  "end": 2416,
                                  "ctxt": 0
                                },
                                "value": "y",
                                "optional": false,
                                "typeAnnotation": {
                                  "type": "TsTypeAnnotation",
                                  "span": {
                                    "start": 2403,
                                    "end": 2416,
                                    "ctxt": 0
                                  },
                                  "typeAnnotation": {
                                    "type": "TsTypeReference",
                                    "span": {
                                      "start": 2405,
                                      "end": 2416,
                                      "ctxt": 0
                                    },
                                    "typeName": {
                                      "type": "Identifier",
                                      "span": {
                                        "start": 2405,
                                        "end": 2410,
                                        "ctxt": 0
                                      },
                                      "value": "Array",
                                      "optional": false
                                    },
                                    "typeParams": {
                                      "type": "TsTypeParameterInstantiation",
                                      "span": {
                                        "start": 2410,
                                        "end": 2416,
                                        "ctxt": 0
                                      },
                                      "params": [
                                        {
                                          "type": "TsTypeReference",
                                          "span": {
                                            "start": 2411,
                                            "end": 2415,
                                            "ctxt": 0
                                          },
                                          "typeName": {
                                            "type": "Identifier",
                                            "span": {
                                              "start": 2411,
                                              "end": 2415,
                                              "ctxt": 0
                                            },
                                            "value": "Base",
                                            "optional": false
                                          },
                                          "typeParams": null
                                        }
                                      ]
                                    }
                                  }
                                }
                              }
                            ],
                            "typeParams": {
                              "type": "TsTypeParameterDeclaration",
                              "span": {
                                "start": 2358,
                                "end": 2385,
                                "ctxt": 0
                              },
                              "parameters": [
                                {
                                  "type": "TsTypeParameter",
                                  "span": {
                                    "start": 2359,
                                    "end": 2384,
                                    "ctxt": 0
                                  },
                                  "name": {
                                    "type": "Identifier",
                                    "span": {
                                      "start": 2359,
                                      "end": 2360,
                                      "ctxt": 0
                                    },
                                    "value": "T",
                                    "optional": false
                                  },
                                  "constraint": {
                                    "type": "TsTypeReference",
                                    "span": {
                                      "start": 2369,
                                      "end": 2384,
                                      "ctxt": 0
                                    },
                                    "typeName": {
                                      "type": "Identifier",
                                      "span": {
                                        "start": 2369,
                                        "end": 2374,
                                        "ctxt": 0
                                      },
                                      "value": "Array",
                                      "optional": false
                                    },
                                    "typeParams": {
                                      "type": "TsTypeParameterInstantiation",
                                      "span": {
                                        "start": 2374,
                                        "end": 2384,
                                        "ctxt": 0
                                      },
                                      "params": [
                                        {
                                          "type": "TsTypeReference",
                                          "span": {
                                            "start": 2375,
                                            "end": 2383,
                                            "ctxt": 0
                                          },
                                          "typeName": {
                                            "type": "Identifier",
                                            "span": {
                                              "start": 2375,
                                              "end": 2383,
                                              "ctxt": 0
                                            },
                                            "value": "Derived2",
                                            "optional": false
                                          },
                                          "typeParams": null
                                        }
                                      ]
                                    }
                                  },
                                  "default": null
                                }
                              ]
                            },
                            "typeAnnotation": {
                              "type": "TsTypeAnnotation",
                              "span": {
                                "start": 2418,
                                "end": 2422,
                                "ctxt": 0
                              },
                              "typeAnnotation": {
                                "type": "TsTypeReference",
                                "span": {
                                  "start": 2421,
                                  "end": 2422,
                                  "ctxt": 0
                                },
                                "typeName": {
                                  "type": "Identifier",
                                  "span": {
                                    "start": 2421,
                                    "end": 2422,
                                    "ctxt": 0
                                  },
                                  "value": "T",
                                  "optional": false
                                },
                                "typeParams": null
                              }
                            },
                            "isAbstract": false
                          }
                        }
                      },
                      "init": null,
                      "definite": false
                    }
                  ]
                },
                {
                  "type": "ExpressionStatement",
                  "span": {
                    "start": 2433,
                    "end": 2443,
                    "ctxt": 0
                  },
                  "expression": {
                    "type": "AssignmentExpression",
                    "span": {
                      "start": 2433,
                      "end": 2442,
                      "ctxt": 0
                    },
                    "operator": "=",
                    "left": {
                      "type": "Identifier",
                      "span": {
                        "start": 2433,
                        "end": 2436,
                        "ctxt": 0
                      },
                      "value": "a12",
                      "optional": false,
                      "typeAnnotation": null
                    },
                    "right": {
                      "type": "Identifier",
                      "span": {
                        "start": 2439,
                        "end": 2442,
                        "ctxt": 0
                      },
                      "value": "b12",
                      "optional": false
                    }
                  }
                },
                {
                  "type": "ExpressionStatement",
                  "span": {
                    "start": 2458,
                    "end": 2468,
                    "ctxt": 0
                  },
                  "expression": {
                    "type": "AssignmentExpression",
                    "span": {
                      "start": 2458,
                      "end": 2467,
                      "ctxt": 0
                    },
                    "operator": "=",
                    "left": {
                      "type": "Identifier",
                      "span": {
                        "start": 2458,
                        "end": 2461,
                        "ctxt": 0
                      },
                      "value": "b12",
                      "optional": false,
                      "typeAnnotation": null
                    },
                    "right": {
                      "type": "Identifier",
                      "span": {
                        "start": 2464,
                        "end": 2467,
                        "ctxt": 0
                      },
                      "value": "a12",
                      "optional": false
                    }
                  }
                },
                {
                  "type": "VariableDeclaration",
                  "span": {
                    "start": 2484,
                    "end": 2525,
                    "ctxt": 0
                  },
                  "kind": "var",
                  "declare": false,
                  "declarations": [
                    {
                      "type": "VariableDeclarator",
                      "span": {
                        "start": 2488,
                        "end": 2524,
                        "ctxt": 0
                      },
                      "id": {
                        "type": "Identifier",
                        "span": {
                          "start": 2488,
                          "end": 2491,
                          "ctxt": 0
                        },
                        "value": "b15",
                        "optional": false,
                        "typeAnnotation": {
                          "type": "TsTypeAnnotation",
                          "span": {
                            "start": 2491,
                            "end": 2524,
                            "ctxt": 0
                          },
                          "typeAnnotation": {
                            "type": "TsConstructorType",
                            "span": {
                              "start": 2493,
                              "end": 2524,
                              "ctxt": 0
                            },
                            "params": [
                              {
                                "type": "Identifier",
                                "span": {
                                  "start": 2501,
                                  "end": 2518,
                                  "ctxt": 0
                                },
                                "value": "x",
                                "optional": false,
                                "typeAnnotation": {
                                  "type": "TsTypeAnnotation",
                                  "span": {
                                    "start": 2502,
                                    "end": 2518,
                                    "ctxt": 0
                                  },
                                  "typeAnnotation": {
                                    "type": "TsTypeLiteral",
                                    "span": {
                                      "start": 2504,
                                      "end": 2518,
                                      "ctxt": 0
                                    },
                                    "members": [
                                      {
                                        "type": "TsPropertySignature",
                                        "span": {
                                          "start": 2506,
                                          "end": 2511,
                                          "ctxt": 0
                                        },
                                        "readonly": false,
                                        "key": {
                                          "type": "Identifier",
                                          "span": {
                                            "start": 2506,
                                            "end": 2507,
                                            "ctxt": 0
                                          },
                                          "value": "a",
                                          "optional": false
                                        },
                                        "computed": false,
                                        "optional": false,
                                        "init": null,
                                        "params": [],
                                        "typeAnnotation": {
                                          "type": "TsTypeAnnotation",
                                          "span": {
                                            "start": 2507,
                                            "end": 2510,
                                            "ctxt": 0
                                          },
                                          "typeAnnotation": {
                                            "type": "TsTypeReference",
                                            "span": {
                                              "start": 2509,
                                              "end": 2510,
                                              "ctxt": 0
                                            },
                                            "typeName": {
                                              "type": "Identifier",
                                              "span": {
                                                "start": 2509,
                                                "end": 2510,
                                                "ctxt": 0
                                              },
                                              "value": "T",
                                              "optional": false
                                            },
                                            "typeParams": null
                                          }
                                        },
                                        "typeParams": null
                                      },
                                      {
                                        "type": "TsPropertySignature",
                                        "span": {
                                          "start": 2512,
                                          "end": 2516,
                                          "ctxt": 0
                                        },
                                        "readonly": false,
                                        "key": {
                                          "type": "Identifier",
                                          "span": {
                                            "start": 2512,
                                            "end": 2513,
                                            "ctxt": 0
                                          },
                                          "value": "b",
                                          "optional": false
                                        },
                                        "computed": false,
                                        "optional": false,
                                        "init": null,
                                        "params": [],
                                        "typeAnnotation": {
                                          "type": "TsTypeAnnotation",
                                          "span": {
                                            "start": 2513,
                                            "end": 2516,
                                            "ctxt": 0
                                          },
                                          "typeAnnotation": {
                                            "type": "TsTypeReference",
                                            "span": {
                                              "start": 2515,
                                              "end": 2516,
                                              "ctxt": 0
                                            },
                                            "typeName": {
                                              "type": "Identifier",
                                              "span": {
                                                "start": 2515,
                                                "end": 2516,
                                                "ctxt": 0
                                              },
                                              "value": "T",
                                              "optional": false
                                            },
                                            "typeParams": null
                                          }
                                        },
                                        "typeParams": null
                                      }
                                    ]
                                  }
                                }
                              }
                            ],
                            "typeParams": {
                              "type": "TsTypeParameterDeclaration",
                              "span": {
                                "start": 2497,
                                "end": 2500,
                                "ctxt": 0
                              },
                              "parameters": [
                                {
                                  "type": "TsTypeParameter",
                                  "span": {
                                    "start": 2498,
                                    "end": 2499,
                                    "ctxt": 0
                                  },
                                  "name": {
                                    "type": "Identifier",
                                    "span": {
                                      "start": 2498,
                                      "end": 2499,
                                      "ctxt": 0
                                    },
                                    "value": "T",
                                    "optional": false
                                  },
                                  "constraint": null,
                                  "default": null
                                }
                              ]
                            },
                            "typeAnnotation": {
                              "type": "TsTypeAnnotation",
                              "span": {
                                "start": 2520,
                                "end": 2524,
                                "ctxt": 0
                              },
                              "typeAnnotation": {
                                "type": "TsTypeReference",
                                "span": {
                                  "start": 2523,
                                  "end": 2524,
                                  "ctxt": 0
                                },
                                "typeName": {
                                  "type": "Identifier",
                                  "span": {
                                    "start": 2523,
                                    "end": 2524,
                                    "ctxt": 0
                                  },
                                  "value": "T",
                                  "optional": false
                                },
                                "typeParams": null
                              }
                            },
                            "isAbstract": false
                          }
                        }
                      },
                      "init": null,
                      "definite": false
                    }
                  ]
                },
                {
                  "type": "ExpressionStatement",
                  "span": {
                    "start": 2535,
                    "end": 2545,
                    "ctxt": 0
                  },
                  "expression": {
                    "type": "AssignmentExpression",
                    "span": {
                      "start": 2535,
                      "end": 2544,
                      "ctxt": 0
                    },
                    "operator": "=",
                    "left": {
                      "type": "Identifier",
                      "span": {
                        "start": 2535,
                        "end": 2538,
                        "ctxt": 0
                      },
                      "value": "a15",
                      "optional": false,
                      "typeAnnotation": null
                    },
                    "right": {
                      "type": "Identifier",
                      "span": {
                        "start": 2541,
                        "end": 2544,
                        "ctxt": 0
                      },
                      "value": "b15",
                      "optional": false
                    }
                  }
                },
                {
                  "type": "ExpressionStatement",
                  "span": {
                    "start": 2560,
                    "end": 2570,
                    "ctxt": 0
                  },
                  "expression": {
                    "type": "AssignmentExpression",
                    "span": {
                      "start": 2560,
                      "end": 2569,
                      "ctxt": 0
                    },
                    "operator": "=",
                    "left": {
                      "type": "Identifier",
                      "span": {
                        "start": 2560,
                        "end": 2563,
                        "ctxt": 0
                      },
                      "value": "b15",
                      "optional": false,
                      "typeAnnotation": null
                    },
                    "right": {
                      "type": "Identifier",
                      "span": {
                        "start": 2566,
                        "end": 2569,
                        "ctxt": 0
                      },
                      "value": "a15",
                      "optional": false
                    }
                  }
                },
                {
                  "type": "VariableDeclaration",
                  "span": {
                    "start": 2586,
                    "end": 2646,
                    "ctxt": 0
                  },
                  "kind": "var",
                  "declare": false,
                  "declarations": [
                    {
                      "type": "VariableDeclarator",
                      "span": {
                        "start": 2590,
                        "end": 2645,
                        "ctxt": 0
                      },
                      "id": {
                        "type": "Identifier",
                        "span": {
                          "start": 2590,
                          "end": 2594,
                          "ctxt": 0
                        },
                        "value": "b15a",
                        "optional": false,
                        "typeAnnotation": {
                          "type": "TsTypeAnnotation",
                          "span": {
                            "start": 2594,
                            "end": 2645,
                            "ctxt": 0
                          },
                          "typeAnnotation": {
                            "type": "TsConstructorType",
                            "span": {
                              "start": 2596,
                              "end": 2645,
                              "ctxt": 0
                            },
                            "params": [
                              {
                                "type": "Identifier",
                                "span": {
                                  "start": 2617,
                                  "end": 2634,
                                  "ctxt": 0
                                },
                                "value": "x",
                                "optional": false,
                                "typeAnnotation": {
                                  "type": "TsTypeAnnotation",
                                  "span": {
                                    "start": 2618,
                                    "end": 2634,
                                    "ctxt": 0
                                  },
                                  "typeAnnotation": {
                                    "type": "TsTypeLiteral",
                                    "span": {
                                      "start": 2620,
                                      "end": 2634,
                                      "ctxt": 0
                                    },
                                    "members": [
                                      {
                                        "type": "TsPropertySignature",
                                        "span": {
                                          "start": 2622,
                                          "end": 2627,
                                          "ctxt": 0
                                        },
                                        "readonly": false,
                                        "key": {
                                          "type": "Identifier",
                                          "span": {
                                            "start": 2622,
                                            "end": 2623,
                                            "ctxt": 0
                                          },
                                          "value": "a",
                                          "optional": false
                                        },
                                        "computed": false,
                                        "optional": false,
                                        "init": null,
                                        "params": [],
                                        "typeAnnotation": {
                                          "type": "TsTypeAnnotation",
                                          "span": {
                                            "start": 2623,
                                            "end": 2626,
                                            "ctxt": 0
                                          },
                                          "typeAnnotation": {
                                            "type": "TsTypeReference",
                                            "span": {
                                              "start": 2625,
                                              "end": 2626,
                                              "ctxt": 0
                                            },
                                            "typeName": {
                                              "type": "Identifier",
                                              "span": {
                                                "start": 2625,
                                                "end": 2626,
                                                "ctxt": 0
                                              },
                                              "value": "T",
                                              "optional": false
                                            },
                                            "typeParams": null
                                          }
                                        },
                                        "typeParams": null
                                      },
                                      {
                                        "type": "TsPropertySignature",
                                        "span": {
                                          "start": 2628,
                                          "end": 2632,
                                          "ctxt": 0
                                        },
                                        "readonly": false,
                                        "key": {
                                          "type": "Identifier",
                                          "span": {
                                            "start": 2628,
                                            "end": 2629,
                                            "ctxt": 0
                                          },
                                          "value": "b",
                                          "optional": false
                                        },
                                        "computed": false,
                                        "optional": false,
                                        "init": null,
                                        "params": [],
                                        "typeAnnotation": {
                                          "type": "TsTypeAnnotation",
                                          "span": {
                                            "start": 2629,
                                            "end": 2632,
                                            "ctxt": 0
                                          },
                                          "typeAnnotation": {
                                            "type": "TsTypeReference",
                                            "span": {
                                              "start": 2631,
                                              "end": 2632,
                                              "ctxt": 0
                                            },
                                            "typeName": {
                                              "type": "Identifier",
                                              "span": {
                                                "start": 2631,
                                                "end": 2632,
                                                "ctxt": 0
                                              },
                                              "value": "T",
                                              "optional": false
                                            },
                                            "typeParams": null
                                          }
                                        },
                                        "typeParams": null
                                      }
                                    ]
                                  }
                                }
                              }
                            ],
                            "typeParams": {
                              "type": "TsTypeParameterDeclaration",
                              "span": {
                                "start": 2600,
                                "end": 2616,
                                "ctxt": 0
                              },
                              "parameters": [
                                {
                                  "type": "TsTypeParameter",
                                  "span": {
                                    "start": 2601,
                                    "end": 2615,
                                    "ctxt": 0
                                  },
                                  "name": {
                                    "type": "Identifier",
                                    "span": {
                                      "start": 2601,
                                      "end": 2602,
                                      "ctxt": 0
                                    },
                                    "value": "T",
                                    "optional": false
                                  },
                                  "constraint": {
                                    "type": "TsTypeReference",
                                    "span": {
                                      "start": 2611,
                                      "end": 2615,
                                      "ctxt": 0
                                    },
                                    "typeName": {
                                      "type": "Identifier",
                                      "span": {
                                        "start": 2611,
                                        "end": 2615,
                                        "ctxt": 0
                                      },
                                      "value": "Base",
                                      "optional": false
                                    },
                                    "typeParams": null
                                  },
                                  "default": null
                                }
                              ]
                            },
                            "typeAnnotation": {
                              "type": "TsTypeAnnotation",
                              "span": {
                                "start": 2636,
                                "end": 2645,
                                "ctxt": 0
                              },
                              "typeAnnotation": {
                                "type": "TsKeywordType",
                                "span": {
                                  "start": 2639,
                                  "end": 2645,
                                  "ctxt": 0
                                },
                                "kind": "number"
                              }
                            },
                            "isAbstract": false
                          }
                        }
                      },
                      "init": null,
                      "definite": false
                    }
                  ]
                },
                {
                  "type": "ExpressionStatement",
                  "span": {
                    "start": 2656,
                    "end": 2667,
                    "ctxt": 0
                  },
                  "expression": {
                    "type": "AssignmentExpression",
                    "span": {
                      "start": 2656,
                      "end": 2666,
                      "ctxt": 0
                    },
                    "operator": "=",
                    "left": {
                      "type": "Identifier",
                      "span": {
                        "start": 2656,
                        "end": 2659,
                        "ctxt": 0
                      },
                      "value": "a15",
                      "optional": false,
                      "typeAnnotation": null
                    },
                    "right": {
                      "type": "Identifier",
                      "span": {
                        "start": 2662,
                        "end": 2666,
                        "ctxt": 0
                      },
                      "value": "b15a",
                      "optional": false
                    }
                  }
                },
                {
                  "type": "ExpressionStatement",
                  "span": {
                    "start": 2682,
                    "end": 2693,
                    "ctxt": 0
                  },
                  "expression": {
                    "type": "AssignmentExpression",
                    "span": {
                      "start": 2682,
                      "end": 2692,
                      "ctxt": 0
                    },
                    "operator": "=",
                    "left": {
                      "type": "Identifier",
                      "span": {
                        "start": 2682,
                        "end": 2686,
                        "ctxt": 0
                      },
                      "value": "b15a",
                      "optional": false,
                      "typeAnnotation": null
                    },
                    "right": {
                      "type": "Identifier",
                      "span": {
                        "start": 2689,
                        "end": 2692,
                        "ctxt": 0
                      },
                      "value": "a15",
                      "optional": false
                    }
                  }
                },
                {
                  "type": "VariableDeclaration",
                  "span": {
                    "start": 2709,
                    "end": 2749,
                    "ctxt": 0
                  },
                  "kind": "var",
                  "declare": false,
                  "declarations": [
                    {
                      "type": "VariableDeclarator",
                      "span": {
                        "start": 2713,
                        "end": 2748,
                        "ctxt": 0
                      },
                      "id": {
                        "type": "Identifier",
                        "span": {
                          "start": 2713,
                          "end": 2716,
                          "ctxt": 0
                        },
                        "value": "b16",
                        "optional": false,
                        "typeAnnotation": {
                          "type": "TsTypeAnnotation",
                          "span": {
                            "start": 2716,
                            "end": 2748,
                            "ctxt": 0
                          },
                          "typeAnnotation": {
                            "type": "TsConstructorType",
                            "span": {
                              "start": 2718,
                              "end": 2748,
                              "ctxt": 0
                            },
                            "params": [
                              {
                                "type": "Identifier",
                                "span": {
                                  "start": 2726,
                                  "end": 2740,
                                  "ctxt": 0
                                },
                                "value": "x",
                                "optional": false,
                                "typeAnnotation": {
                                  "type": "TsTypeAnnotation",
                                  "span": {
                                    "start": 2727,
                                    "end": 2740,
                                    "ctxt": 0
                                  },
                                  "typeAnnotation": {
                                    "type": "TsFunctionType",
                                    "span": {
                                      "start": 2729,
                                      "end": 2740,
                                      "ctxt": 0
                                    },
                                    "params": [
                                      {
                                        "type": "Identifier",
                                        "span": {
                                          "start": 2730,
                                          "end": 2734,
                                          "ctxt": 0
                                        },
                                        "value": "a",
                                        "optional": false,
                                        "typeAnnotation": {
                                          "type": "TsTypeAnnotation",
                                          "span": {
                                            "start": 2731,
                                            "end": 2734,
                                            "ctxt": 0
                                          },
                                          "typeAnnotation": {
                                            "type": "TsTypeReference",
                                            "span": {
                                              "start": 2733,
                                              "end": 2734,
                                              "ctxt": 0
                                            },
                                            "typeName": {
                                              "type": "Identifier",
                                              "span": {
                                                "start": 2733,
                                                "end": 2734,
                                                "ctxt": 0
                                              },
                                              "value": "T",
                                              "optional": false
                                            },
                                            "typeParams": null
                                          }
                                        }
                                      }
                                    ],
                                    "typeParams": null,
                                    "typeAnnotation": {
                                      "type": "TsTypeAnnotation",
                                      "span": {
                                        "start": 2736,
                                        "end": 2740,
                                        "ctxt": 0
                                      },
                                      "typeAnnotation": {
                                        "type": "TsTypeReference",
                                        "span": {
                                          "start": 2739,
                                          "end": 2740,
                                          "ctxt": 0
                                        },
                                        "typeName": {
                                          "type": "Identifier",
                                          "span": {
                                            "start": 2739,
                                            "end": 2740,
                                            "ctxt": 0
                                          },
                                          "value": "T",
                                          "optional": false
                                        },
                                        "typeParams": null
                                      }
                                    }
                                  }
                                }
                              }
                            ],
                            "typeParams": {
                              "type": "TsTypeParameterDeclaration",
                              "span": {
                                "start": 2722,
                                "end": 2725,
                                "ctxt": 0
                              },
                              "parameters": [
                                {
                                  "type": "TsTypeParameter",
                                  "span": {
                                    "start": 2723,
                                    "end": 2724,
                                    "ctxt": 0
                                  },
                                  "name": {
                                    "type": "Identifier",
                                    "span": {
                                      "start": 2723,
                                      "end": 2724,
                                      "ctxt": 0
                                    },
                                    "value": "T",
                                    "optional": false
                                  },
                                  "constraint": null,
                                  "default": null
                                }
                              ]
                            },
                            "typeAnnotation": {
                              "type": "TsTypeAnnotation",
                              "span": {
                                "start": 2742,
                                "end": 2748,
                                "ctxt": 0
                              },
                              "typeAnnotation": {
                                "type": "TsArrayType",
                                "span": {
                                  "start": 2745,
                                  "end": 2748,
                                  "ctxt": 0
                                },
                                "elemType": {
                                  "type": "TsTypeReference",
                                  "span": {
                                    "start": 2745,
                                    "end": 2746,
                                    "ctxt": 0
                                  },
                                  "typeName": {
                                    "type": "Identifier",
                                    "span": {
                                      "start": 2745,
                                      "end": 2746,
                                      "ctxt": 0
                                    },
                                    "value": "T",
                                    "optional": false
                                  },
                                  "typeParams": null
                                }
                              }
                            },
                            "isAbstract": false
                          }
                        }
                      },
                      "init": null,
                      "definite": false
                    }
                  ]
                },
                {
                  "type": "ExpressionStatement",
                  "span": {
                    "start": 2758,
                    "end": 2768,
                    "ctxt": 0
                  },
                  "expression": {
                    "type": "AssignmentExpression",
                    "span": {
                      "start": 2758,
                      "end": 2767,
                      "ctxt": 0
                    },
                    "operator": "=",
                    "left": {
                      "type": "Identifier",
                      "span": {
                        "start": 2758,
                        "end": 2761,
                        "ctxt": 0
                      },
                      "value": "a16",
                      "optional": false,
                      "typeAnnotation": null
                    },
                    "right": {
                      "type": "Identifier",
                      "span": {
                        "start": 2764,
                        "end": 2767,
                        "ctxt": 0
                      },
                      "value": "b16",
                      "optional": false
                    }
                  }
                },
                {
                  "type": "ExpressionStatement",
                  "span": {
                    "start": 2786,
                    "end": 2796,
                    "ctxt": 0
                  },
                  "expression": {
                    "type": "AssignmentExpression",
                    "span": {
                      "start": 2786,
                      "end": 2795,
                      "ctxt": 0
                    },
                    "operator": "=",
                    "left": {
                      "type": "Identifier",
                      "span": {
                        "start": 2786,
                        "end": 2789,
                        "ctxt": 0
                      },
                      "value": "b16",
                      "optional": false,
                      "typeAnnotation": null
                    },
                    "right": {
                      "type": "Identifier",
                      "span": {
                        "start": 2792,
                        "end": 2795,
                        "ctxt": 0
                      },
                      "value": "a16",
                      "optional": false
                    }
                  }
                },
                {
                  "type": "VariableDeclaration",
                  "span": {
                    "start": 2815,
                    "end": 2857,
                    "ctxt": 0
                  },
                  "kind": "var",
                  "declare": false,
                  "declarations": [
                    {
                      "type": "VariableDeclarator",
                      "span": {
                        "start": 2819,
                        "end": 2856,
                        "ctxt": 0
                      },
                      "id": {
                        "type": "Identifier",
                        "span": {
                          "start": 2819,
                          "end": 2822,
                          "ctxt": 0
                        },
                        "value": "b17",
                        "optional": false,
                        "typeAnnotation": {
                          "type": "TsTypeAnnotation",
                          "span": {
                            "start": 2822,
                            "end": 2856,
                            "ctxt": 0
                          },
                          "typeAnnotation": {
                            "type": "TsConstructorType",
                            "span": {
                              "start": 2824,
                              "end": 2856,
                              "ctxt": 0
                            },
                            "params": [
                              {
                                "type": "Identifier",
                                "span": {
                                  "start": 2832,
                                  "end": 2846,
                                  "ctxt": 0
                                },
                                "value": "x",
                                "optional": false,
                                "typeAnnotation": {
                                  "type": "TsTypeAnnotation",
                                  "span": {
                                    "start": 2833,
                                    "end": 2846,
                                    "ctxt": 0
                                  },
                                  "typeAnnotation": {
                                    "type": "TsFunctionType",
                                    "span": {
                                      "start": 2835,
                                      "end": 2846,
                                      "ctxt": 0
                                    },
                                    "params": [
                                      {
                                        "type": "Identifier",
                                        "span": {
                                          "start": 2836,
                                          "end": 2840,
                                          "ctxt": 0
                                        },
                                        "value": "a",
                                        "optional": false,
                                        "typeAnnotation": {
                                          "type": "TsTypeAnnotation",
                                          "span": {
                                            "start": 2837,
                                            "end": 2840,
                                            "ctxt": 0
                                          },
                                          "typeAnnotation": {
                                            "type": "TsTypeReference",
                                            "span": {
                                              "start": 2839,
                                              "end": 2840,
                                              "ctxt": 0
                                            },
                                            "typeName": {
                                              "type": "Identifier",
                                              "span": {
                                                "start": 2839,
                                                "end": 2840,
                                                "ctxt": 0
                                              },
                                              "value": "T",
                                              "optional": false
                                            },
                                            "typeParams": null
                                          }
                                        }
                                      }
                                    ],
                                    "typeParams": null,
                                    "typeAnnotation": {
                                      "type": "TsTypeAnnotation",
                                      "span": {
                                        "start": 2842,
                                        "end": 2846,
                                        "ctxt": 0
                                      },
                                      "typeAnnotation": {
                                        "type": "TsTypeReference",
                                        "span": {
                                          "start": 2845,
                                          "end": 2846,
                                          "ctxt": 0
                                        },
                                        "typeName": {
                                          "type": "Identifier",
                                          "span": {
                                            "start": 2845,
                                            "end": 2846,
                                            "ctxt": 0
                                          },
                                          "value": "T",
                                          "optional": false
                                        },
                                        "typeParams": null
                                      }
                                    }
                                  }
                                }
                              }
                            ],
                            "typeParams": {
                              "type": "TsTypeParameterDeclaration",
                              "span": {
                                "start": 2828,
                                "end": 2831,
                                "ctxt": 0
                              },
                              "parameters": [
                                {
                                  "type": "TsTypeParameter",
                                  "span": {
                                    "start": 2829,
                                    "end": 2830,
                                    "ctxt": 0
                                  },
                                  "name": {
                                    "type": "Identifier",
                                    "span": {
                                      "start": 2829,
                                      "end": 2830,
                                      "ctxt": 0
                                    },
                                    "value": "T",
                                    "optional": false
                                  },
                                  "constraint": null,
                                  "default": null
                                }
                              ]
                            },
                            "typeAnnotation": {
                              "type": "TsTypeAnnotation",
                              "span": {
                                "start": 2848,
                                "end": 2856,
                                "ctxt": 0
                              },
                              "typeAnnotation": {
                                "type": "TsArrayType",
                                "span": {
                                  "start": 2851,
                                  "end": 2856,
                                  "ctxt": 0
                                },
                                "elemType": {
                                  "type": "TsKeywordType",
                                  "span": {
                                    "start": 2851,
                                    "end": 2854,
                                    "ctxt": 0
                                  },
                                  "kind": "any"
                                }
                              }
                            },
                            "isAbstract": false
                          }
                        }
                      },
                      "init": null,
                      "definite": false
                    }
                  ]
                },
                {
                  "type": "ExpressionStatement",
                  "span": {
                    "start": 2866,
                    "end": 2876,
                    "ctxt": 0
                  },
                  "expression": {
                    "type": "AssignmentExpression",
                    "span": {
                      "start": 2866,
                      "end": 2875,
                      "ctxt": 0
                    },
                    "operator": "=",
                    "left": {
                      "type": "Identifier",
                      "span": {
                        "start": 2866,
                        "end": 2869,
                        "ctxt": 0
                      },
                      "value": "a17",
                      "optional": false,
                      "typeAnnotation": null
                    },
                    "right": {
                      "type": "Identifier",
                      "span": {
                        "start": 2872,
                        "end": 2875,
                        "ctxt": 0
                      },
                      "value": "b17",
                      "optional": false
                    }
                  }
                },
                {
                  "type": "ExpressionStatement",
                  "span": {
                    "start": 2894,
                    "end": 2904,
                    "ctxt": 0
                  },
                  "expression": {
                    "type": "AssignmentExpression",
                    "span": {
                      "start": 2894,
                      "end": 2903,
                      "ctxt": 0
                    },
                    "operator": "=",
                    "left": {
                      "type": "Identifier",
                      "span": {
                        "start": 2894,
                        "end": 2897,
                        "ctxt": 0
                      },
                      "value": "b17",
                      "optional": false,
                      "typeAnnotation": null
                    },
                    "right": {
                      "type": "Identifier",
                      "span": {
                        "start": 2900,
                        "end": 2903,
                        "ctxt": 0
                      },
                      "value": "a17",
                      "optional": false
                    }
                  }
                }
              ]
            }
          },
          {
            "type": "TsModuleDeclaration",
            "span": {
              "start": 2925,
              "end": 3327,
              "ctxt": 0
            },
            "declare": false,
            "global": false,
            "id": {
              "type": "Identifier",
              "span": {
                "start": 2932,
                "end": 2963,
                "ctxt": 0
              },
              "value": "WithGenericSignaturesInBaseType",
              "optional": false
            },
            "body": {
              "type": "TsModuleBlock",
              "span": {
                "start": 2964,
                "end": 3327,
                "ctxt": 0
              },
              "body": [
                {
                  "type": "VariableDeclaration",
                  "span": {
                    "start": 3024,
                    "end": 3053,
                    "ctxt": 0
                  },
                  "kind": "var",
                  "declare": false,
                  "declarations": [
                    {
                      "type": "VariableDeclarator",
                      "span": {
                        "start": 3028,
                        "end": 3052,
                        "ctxt": 0
                      },
                      "id": {
                        "type": "Identifier",
                        "span": {
                          "start": 3028,
                          "end": 3030,
                          "ctxt": 0
                        },
                        "value": "a2",
                        "optional": false,
                        "typeAnnotation": {
                          "type": "TsTypeAnnotation",
                          "span": {
                            "start": 3030,
                            "end": 3052,
                            "ctxt": 0
                          },
                          "typeAnnotation": {
                            "type": "TsConstructorType",
                            "span": {
                              "start": 3032,
                              "end": 3052,
                              "ctxt": 0
                            },
                            "params": [
                              {
                                "type": "Identifier",
                                "span": {
                                  "start": 3040,
                                  "end": 3044,
                                  "ctxt": 0
                                },
                                "value": "x",
                                "optional": false,
                                "typeAnnotation": {
                                  "type": "TsTypeAnnotation",
                                  "span": {
                                    "start": 3041,
                                    "end": 3044,
                                    "ctxt": 0
                                  },
                                  "typeAnnotation": {
                                    "type": "TsTypeReference",
                                    "span": {
                                      "start": 3043,
                                      "end": 3044,
                                      "ctxt": 0
                                    },
                                    "typeName": {
                                      "type": "Identifier",
                                      "span": {
                                        "start": 3043,
                                        "end": 3044,
                                        "ctxt": 0
                                      },
                                      "value": "T",
                                      "optional": false
                                    },
                                    "typeParams": null
                                  }
                                }
                              }
                            ],
                            "typeParams": {
                              "type": "TsTypeParameterDeclaration",
                              "span": {
                                "start": 3036,
                                "end": 3039,
                                "ctxt": 0
                              },
                              "parameters": [
                                {
                                  "type": "TsTypeParameter",
                                  "span": {
                                    "start": 3037,
                                    "end": 3038,
                                    "ctxt": 0
                                  },
                                  "name": {
                                    "type": "Identifier",
                                    "span": {
                                      "start": 3037,
                                      "end": 3038,
                                      "ctxt": 0
                                    },
                                    "value": "T",
                                    "optional": false
                                  },
                                  "constraint": null,
                                  "default": null
                                }
                              ]
                            },
                            "typeAnnotation": {
                              "type": "TsTypeAnnotation",
                              "span": {
                                "start": 3046,
                                "end": 3052,
                                "ctxt": 0
                              },
                              "typeAnnotation": {
                                "type": "TsArrayType",
                                "span": {
                                  "start": 3049,
                                  "end": 3052,
                                  "ctxt": 0
                                },
                                "elemType": {
                                  "type": "TsTypeReference",
                                  "span": {
                                    "start": 3049,
                                    "end": 3050,
                                    "ctxt": 0
                                  },
                                  "typeName": {
                                    "type": "Identifier",
                                    "span": {
                                      "start": 3049,
                                      "end": 3050,
                                      "ctxt": 0
                                    },
                                    "value": "T",
                                    "optional": false
                                  },
                                  "typeParams": null
                                }
                              }
                            },
                            "isAbstract": false
                          }
                        }
                      },
                      "init": null,
                      "definite": false
                    }
                  ]
                },
                {
                  "type": "VariableDeclaration",
                  "span": {
                    "start": 3062,
                    "end": 3096,
                    "ctxt": 0
                  },
                  "kind": "var",
                  "declare": false,
                  "declarations": [
                    {
                      "type": "VariableDeclarator",
                      "span": {
                        "start": 3066,
                        "end": 3095,
                        "ctxt": 0
                      },
                      "id": {
                        "type": "Identifier",
                        "span": {
                          "start": 3066,
                          "end": 3068,
                          "ctxt": 0
                        },
                        "value": "b2",
                        "optional": false,
                        "typeAnnotation": {
                          "type": "TsTypeAnnotation",
                          "span": {
                            "start": 3068,
                            "end": 3095,
                            "ctxt": 0
                          },
                          "typeAnnotation": {
                            "type": "TsConstructorType",
                            "span": {
                              "start": 3070,
                              "end": 3095,
                              "ctxt": 0
                            },
                            "params": [
                              {
                                "type": "Identifier",
                                "span": {
                                  "start": 3078,
                                  "end": 3082,
                                  "ctxt": 0
                                },
                                "value": "x",
                                "optional": false,
                                "typeAnnotation": {
                                  "type": "TsTypeAnnotation",
                                  "span": {
                                    "start": 3079,
                                    "end": 3082,
                                    "ctxt": 0
                                  },
                                  "typeAnnotation": {
                                    "type": "TsTypeReference",
                                    "span": {
                                      "start": 3081,
                                      "end": 3082,
                                      "ctxt": 0
                                    },
                                    "typeName": {
                                      "type": "Identifier",
                                      "span": {
                                        "start": 3081,
                                        "end": 3082,
                                        "ctxt": 0
                                      },
                                      "value": "T",
                                      "optional": false
                                    },
                                    "typeParams": null
                                  }
                                }
                              }
                            ],
                            "typeParams": {
                              "type": "TsTypeParameterDeclaration",
                              "span": {
                                "start": 3074,
                                "end": 3077,
                                "ctxt": 0
                              },
                              "parameters": [
                                {
                                  "type": "TsTypeParameter",
                                  "span": {
                                    "start": 3075,
                                    "end": 3076,
                                    "ctxt": 0
                                  },
                                  "name": {
                                    "type": "Identifier",
                                    "span": {
                                      "start": 3075,
                                      "end": 3076,
                                      "ctxt": 0
                                    },
                                    "value": "T",
                                    "optional": false
                                  },
                                  "constraint": null,
                                  "default": null
                                }
                              ]
                            },
                            "typeAnnotation": {
                              "type": "TsTypeAnnotation",
                              "span": {
                                "start": 3084,
                                "end": 3095,
                                "ctxt": 0
                              },
                              "typeAnnotation": {
                                "type": "TsArrayType",
                                "span": {
                                  "start": 3087,
                                  "end": 3095,
                                  "ctxt": 0
                                },
                                "elemType": {
                                  "type": "TsKeywordType",
                                  "span": {
                                    "start": 3087,
                                    "end": 3093,
                                    "ctxt": 0
                                  },
                                  "kind": "string"
                                }
                              }
                            },
                            "isAbstract": false
                          }
                        }
                      },
                      "init": null,
                      "definite": false
                    }
                  ]
                },
                {
                  "type": "ExpressionStatement",
                  "span": {
                    "start": 3105,
                    "end": 3113,
                    "ctxt": 0
                  },
                  "expression": {
                    "type": "AssignmentExpression",
                    "span": {
                      "start": 3105,
                      "end": 3112,
                      "ctxt": 0
                    },
                    "operator": "=",
                    "left": {
                      "type": "Identifier",
                      "span": {
                        "start": 3105,
                        "end": 3107,
                        "ctxt": 0
                      },
                      "value": "a2",
                      "optional": false,
                      "typeAnnotation": null
                    },
                    "right": {
                      "type": "Identifier",
                      "span": {
                        "start": 3110,
                        "end": 3112,
                        "ctxt": 0
                      },
                      "value": "b2",
                      "optional": false
                    }
                  }
                },
                {
                  "type": "ExpressionStatement",
                  "span": {
                    "start": 3128,
                    "end": 3136,
                    "ctxt": 0
                  },
                  "expression": {
                    "type": "AssignmentExpression",
                    "span": {
                      "start": 3128,
                      "end": 3135,
                      "ctxt": 0
                    },
                    "operator": "=",
                    "left": {
                      "type": "Identifier",
                      "span": {
                        "start": 3128,
                        "end": 3130,
                        "ctxt": 0
                      },
                      "value": "b2",
                      "optional": false,
                      "typeAnnotation": null
                    },
                    "right": {
                      "type": "Identifier",
                      "span": {
                        "start": 3133,
                        "end": 3135,
                        "ctxt": 0
                      },
                      "value": "a2",
                      "optional": false
                    }
                  }
                },
                {
                  "type": "VariableDeclaration",
                  "span": {
                    "start": 3202,
                    "end": 3236,
                    "ctxt": 0
                  },
                  "kind": "var",
                  "declare": false,
                  "declarations": [
                    {
                      "type": "VariableDeclarator",
                      "span": {
                        "start": 3206,
                        "end": 3235,
                        "ctxt": 0
                      },
                      "id": {
                        "type": "Identifier",
                        "span": {
                          "start": 3206,
                          "end": 3208,
                          "ctxt": 0
                        },
                        "value": "a3",
                        "optional": false,
                        "typeAnnotation": {
                          "type": "TsTypeAnnotation",
                          "span": {
                            "start": 3208,
                            "end": 3235,
                            "ctxt": 0
                          },
                          "typeAnnotation": {
                            "type": "TsConstructorType",
                            "span": {
                              "start": 3210,
                              "end": 3235,
                              "ctxt": 0
                            },
                            "params": [
                              {
                                "type": "Identifier",
                                "span": {
                                  "start": 3218,
                                  "end": 3222,
                                  "ctxt": 0
                                },
                                "value": "x",
                                "optional": false,
                                "typeAnnotation": {
                                  "type": "TsTypeAnnotation",
                                  "span": {
                                    "start": 3219,
                                    "end": 3222,
                                    "ctxt": 0
                                  },
                                  "typeAnnotation": {
                                    "type": "TsTypeReference",
                                    "span": {
                                      "start": 3221,
                                      "end": 3222,
                                      "ctxt": 0
                                    },
                                    "typeName": {
                                      "type": "Identifier",
                                      "span": {
                                        "start": 3221,
                                        "end": 3222,
                                        "ctxt": 0
                                      },
                                      "value": "T",
                                      "optional": false
                                    },
                                    "typeParams": null
                                  }
                                }
                              }
                            ],
                            "typeParams": {
                              "type": "TsTypeParameterDeclaration",
                              "span": {
                                "start": 3214,
                                "end": 3217,
                                "ctxt": 0
                              },
                              "parameters": [
                                {
                                  "type": "TsTypeParameter",
                                  "span": {
                                    "start": 3215,
                                    "end": 3216,
                                    "ctxt": 0
                                  },
                                  "name": {
                                    "type": "Identifier",
                                    "span": {
                                      "start": 3215,
                                      "end": 3216,
                                      "ctxt": 0
                                    },
                                    "value": "T",
                                    "optional": false
                                  },
                                  "constraint": null,
                                  "default": null
                                }
                              ]
                            },
                            "typeAnnotation": {
                              "type": "TsTypeAnnotation",
                              "span": {
                                "start": 3224,
                                "end": 3235,
                                "ctxt": 0
                              },
                              "typeAnnotation": {
                                "type": "TsArrayType",
                                "span": {
                                  "start": 3227,
                                  "end": 3235,
                                  "ctxt": 0
                                },
                                "elemType": {
                                  "type": "TsKeywordType",
                                  "span": {
                                    "start": 3227,
                                    "end": 3233,
                                    "ctxt": 0
                                  },
                                  "kind": "string"
                                }
                              }
                            },
                            "isAbstract": false
                          }
                        }
                      },
                      "init": null,
                      "definite": false
                    }
                  ]
                },
                {
                  "type": "VariableDeclaration",
                  "span": {
                    "start": 3245,
                    "end": 3274,
                    "ctxt": 0
                  },
                  "kind": "var",
                  "declare": false,
                  "declarations": [
                    {
                      "type": "VariableDeclarator",
                      "span": {
                        "start": 3249,
                        "end": 3273,
                        "ctxt": 0
                      },
                      "id": {
                        "type": "Identifier",
                        "span": {
                          "start": 3249,
                          "end": 3251,
                          "ctxt": 0
                        },
                        "value": "b3",
                        "optional": false,
                        "typeAnnotation": {
                          "type": "TsTypeAnnotation",
                          "span": {
                            "start": 3251,
                            "end": 3273,
                            "ctxt": 0
                          },
                          "typeAnnotation": {
                            "type": "TsConstructorType",
                            "span": {
                              "start": 3253,
                              "end": 3273,
                              "ctxt": 0
                            },
                            "params": [
                              {
                                "type": "Identifier",
                                "span": {
                                  "start": 3261,
                                  "end": 3265,
                                  "ctxt": 0
                                },
                                "value": "x",
                                "optional": false,
                                "typeAnnotation": {
                                  "type": "TsTypeAnnotation",
                                  "span": {
                                    "start": 3262,
                                    "end": 3265,
                                    "ctxt": 0
                                  },
                                  "typeAnnotation": {
                                    "type": "TsTypeReference",
                                    "span": {
                                      "start": 3264,
                                      "end": 3265,
                                      "ctxt": 0
                                    },
                                    "typeName": {
                                      "type": "Identifier",
                                      "span": {
                                        "start": 3264,
                                        "end": 3265,
                                        "ctxt": 0
                                      },
                                      "value": "T",
                                      "optional": false
                                    },
                                    "typeParams": null
                                  }
                                }
                              }
                            ],
                            "typeParams": {
                              "type": "TsTypeParameterDeclaration",
                              "span": {
                                "start": 3257,
                                "end": 3260,
                                "ctxt": 0
                              },
                              "parameters": [
                                {
                                  "type": "TsTypeParameter",
                                  "span": {
                                    "start": 3258,
                                    "end": 3259,
                                    "ctxt": 0
                                  },
                                  "name": {
                                    "type": "Identifier",
                                    "span": {
                                      "start": 3258,
                                      "end": 3259,
                                      "ctxt": 0
                                    },
                                    "value": "T",
                                    "optional": false
                                  },
                                  "constraint": null,
                                  "default": null
                                }
                              ]
                            },
                            "typeAnnotation": {
                              "type": "TsTypeAnnotation",
                              "span": {
                                "start": 3267,
                                "end": 3273,
                                "ctxt": 0
                              },
                              "typeAnnotation": {
                                "type": "TsArrayType",
                                "span": {
                                  "start": 3270,
                                  "end": 3273,
                                  "ctxt": 0
                                },
                                "elemType": {
                                  "type": "TsTypeReference",
                                  "span": {
                                    "start": 3270,
                                    "end": 3271,
                                    "ctxt": 0
                                  },
                                  "typeName": {
                                    "type": "Identifier",
                                    "span": {
                                      "start": 3270,
                                      "end": 3271,
                                      "ctxt": 0
                                    },
                                    "value": "T",
                                    "optional": false
                                  },
                                  "typeParams": null
                                }
                              }
                            },
                            "isAbstract": false
                          }
                        }
                      },
                      "init": null,
                      "definite": false
                    }
                  ]
                },
                {
                  "type": "ExpressionStatement",
                  "span": {
                    "start": 3284,
                    "end": 3292,
                    "ctxt": 0
                  },
                  "expression": {
                    "type": "AssignmentExpression",
                    "span": {
                      "start": 3284,
                      "end": 3291,
                      "ctxt": 0
                    },
                    "operator": "=",
                    "left": {
                      "type": "Identifier",
                      "span": {
                        "start": 3284,
                        "end": 3286,
                        "ctxt": 0
                      },
                      "value": "a3",
                      "optional": false,
                      "typeAnnotation": null
                    },
                    "right": {
                      "type": "Identifier",
                      "span": {
                        "start": 3289,
                        "end": 3291,
                        "ctxt": 0
                      },
                      "value": "b3",
                      "optional": false
                    }
                  }
                },
                {
                  "type": "ExpressionStatement",
                  "span": {
                    "start": 3307,
                    "end": 3315,
                    "ctxt": 0
                  },
                  "expression": {
                    "type": "AssignmentExpression",
                    "span": {
                      "start": 3307,
                      "end": 3314,
                      "ctxt": 0
                    },
                    "operator": "=",
                    "left": {
                      "type": "Identifier",
                      "span": {
                        "start": 3307,
                        "end": 3309,
                        "ctxt": 0
                      },
                      "value": "b3",
                      "optional": false,
                      "typeAnnotation": null
                    },
                    "right": {
                      "type": "Identifier",
                      "span": {
                        "start": 3312,
                        "end": 3314,
                        "ctxt": 0
                      },
                      "value": "a3",
                      "optional": false
                    }
                  }
                }
              ]
            }
          }
        ]
      }
    }
  ],
  "interpreter": null
}