{
  "type": "Script",
  "span": {
    "start": 115,
    "end": 4169,
    "ctxt": 0
  },
  "body": [
    {
      "type": "TsModuleDeclaration",
      "span": {
        "start": 115,
        "end": 1603,
        "ctxt": 0
      },
      "declare": false,
      "global": false,
      "id": {
        "type": "Identifier",
        "span": {
          "start": 122,
          "end": 136,
          "ctxt": 0
        },
        "value": "ClassTypeParam",
        "optional": false
      },
      "body": {
        "type": "TsModuleBlock",
        "span": {
          "start": 137,
          "end": 1603,
          "ctxt": 0
        },
        "body": [
          {
            "type": "ClassDeclaration",
            "identifier": {
              "type": "Identifier",
              "span": {
                "start": 149,
                "end": 153,
                "ctxt": 0
              },
              "value": "Base",
              "optional": false
            },
            "declare": false,
            "span": {
              "start": 143,
              "end": 1601,
              "ctxt": 0
            },
            "decorators": [],
            "body": [
              {
                "type": "ClassProperty",
                "span": {
                  "start": 167,
                  "end": 178,
                  "ctxt": 0
                },
                "key": {
                  "type": "Identifier",
                  "span": {
                    "start": 167,
                    "end": 168,
                    "ctxt": 0
                  },
                  "value": "a",
                  "optional": false
                },
                "value": null,
                "typeAnnotation": {
                  "type": "TsTypeAnnotation",
                  "span": {
                    "start": 168,
                    "end": 177,
                    "ctxt": 0
                  },
                  "typeAnnotation": {
                    "type": "TsFunctionType",
                    "span": {
                      "start": 170,
                      "end": 177,
                      "ctxt": 0
                    },
                    "params": [],
                    "typeParams": null,
                    "typeAnnotation": {
                      "type": "TsTypeAnnotation",
                      "span": {
                        "start": 173,
                        "end": 177,
                        "ctxt": 0
                      },
                      "typeAnnotation": {
                        "type": "TsTypeReference",
                        "span": {
                          "start": 176,
                          "end": 177,
                          "ctxt": 0
                        },
                        "typeName": {
                          "type": "Identifier",
                          "span": {
                            "start": 176,
                            "end": 177,
                            "ctxt": 0
                          },
                          "value": "T",
                          "optional": false
                        },
                        "typeParams": null
                      }
                    }
                  }
                },
                "isStatic": false,
                "decorators": [],
                "accessibility": null,
                "isAbstract": false,
                "isOptional": false,
                "isOverride": false,
                "readonly": false,
                "declare": false,
                "definite": false
              },
              {
                "type": "ClassProperty",
                "span": {
                  "start": 187,
                  "end": 204,
                  "ctxt": 0
                },
                "key": {
                  "type": "Identifier",
                  "span": {
                    "start": 187,
                    "end": 189,
                    "ctxt": 0
                  },
                  "value": "a2",
                  "optional": false
                },
                "value": null,
                "typeAnnotation": {
                  "type": "TsTypeAnnotation",
                  "span": {
                    "start": 189,
                    "end": 203,
                    "ctxt": 0
                  },
                  "typeAnnotation": {
                    "type": "TsFunctionType",
                    "span": {
                      "start": 191,
                      "end": 203,
                      "ctxt": 0
                    },
                    "params": [
                      {
                        "type": "Identifier",
                        "span": {
                          "start": 192,
                          "end": 197,
                          "ctxt": 0
                        },
                        "value": "x",
                        "optional": true,
                        "typeAnnotation": {
                          "type": "TsTypeAnnotation",
                          "span": {
                            "start": 194,
                            "end": 197,
                            "ctxt": 0
                          },
                          "typeAnnotation": {
                            "type": "TsTypeReference",
                            "span": {
                              "start": 196,
                              "end": 197,
                              "ctxt": 0
                            },
                            "typeName": {
                              "type": "Identifier",
                              "span": {
                                "start": 196,
                                "end": 197,
                                "ctxt": 0
                              },
                              "value": "T",
                              "optional": false
                            },
                            "typeParams": null
                          }
                        }
                      }
                    ],
                    "typeParams": null,
                    "typeAnnotation": {
                      "type": "TsTypeAnnotation",
                      "span": {
                        "start": 199,
                        "end": 203,
                        "ctxt": 0
                      },
                      "typeAnnotation": {
                        "type": "TsTypeReference",
                        "span": {
                          "start": 202,
                          "end": 203,
                          "ctxt": 0
                        },
                        "typeName": {
                          "type": "Identifier",
                          "span": {
                            "start": 202,
                            "end": 203,
                            "ctxt": 0
                          },
                          "value": "T",
                          "optional": false
                        },
                        "typeParams": null
                      }
                    }
                  }
                },
                "isStatic": false,
                "decorators": [],
                "accessibility": null,
                "isAbstract": false,
                "isOptional": false,
                "isOverride": false,
                "readonly": false,
                "declare": false,
                "definite": false
              },
              {
                "type": "ClassProperty",
                "span": {
                  "start": 213,
                  "end": 229,
                  "ctxt": 0
                },
                "key": {
                  "type": "Identifier",
                  "span": {
                    "start": 213,
                    "end": 215,
                    "ctxt": 0
                  },
                  "value": "a3",
                  "optional": false
                },
                "value": null,
                "typeAnnotation": {
                  "type": "TsTypeAnnotation",
                  "span": {
                    "start": 215,
                    "end": 228,
                    "ctxt": 0
                  },
                  "typeAnnotation": {
                    "type": "TsFunctionType",
                    "span": {
                      "start": 217,
                      "end": 228,
                      "ctxt": 0
                    },
                    "params": [
                      {
                        "type": "Identifier",
                        "span": {
                          "start": 218,
                          "end": 222,
                          "ctxt": 0
                        },
                        "value": "x",
                        "optional": false,
                        "typeAnnotation": {
                          "type": "TsTypeAnnotation",
                          "span": {
                            "start": 219,
                            "end": 222,
                            "ctxt": 0
                          },
                          "typeAnnotation": {
                            "type": "TsTypeReference",
                            "span": {
                              "start": 221,
                              "end": 222,
                              "ctxt": 0
                            },
                            "typeName": {
                              "type": "Identifier",
                              "span": {
                                "start": 221,
                                "end": 222,
                                "ctxt": 0
                              },
                              "value": "T",
                              "optional": false
                            },
                            "typeParams": null
                          }
                        }
                      }
                    ],
                    "typeParams": null,
                    "typeAnnotation": {
                      "type": "TsTypeAnnotation",
                      "span": {
                        "start": 224,
                        "end": 228,
                        "ctxt": 0
                      },
                      "typeAnnotation": {
                        "type": "TsTypeReference",
                        "span": {
                          "start": 227,
                          "end": 228,
                          "ctxt": 0
                        },
                        "typeName": {
                          "type": "Identifier",
                          "span": {
                            "start": 227,
                            "end": 228,
                            "ctxt": 0
                          },
                          "value": "T",
                          "optional": false
                        },
                        "typeParams": null
                      }
                    }
                  }
                },
                "isStatic": false,
                "decorators": [],
                "accessibility": null,
                "isAbstract": false,
                "isOptional": false,
                "isOverride": false,
                "readonly": false,
                "declare": false,
                "definite": false
              },
              {
                "type": "ClassProperty",
                "span": {
                  "start": 238,
                  "end": 261,
                  "ctxt": 0
                },
                "key": {
                  "type": "Identifier",
                  "span": {
                    "start": 238,
                    "end": 240,
                    "ctxt": 0
                  },
                  "value": "a4",
                  "optional": false
                },
                "value": null,
                "typeAnnotation": {
                  "type": "TsTypeAnnotation",
                  "span": {
                    "start": 240,
                    "end": 260,
                    "ctxt": 0
                  },
                  "typeAnnotation": {
                    "type": "TsFunctionType",
                    "span": {
                      "start": 242,
                      "end": 260,
                      "ctxt": 0
                    },
                    "params": [
                      {
                        "type": "Identifier",
                        "span": {
                          "start": 243,
                          "end": 247,
                          "ctxt": 0
                        },
                        "value": "x",
                        "optional": false,
                        "typeAnnotation": {
                          "type": "TsTypeAnnotation",
                          "span": {
                            "start": 244,
                            "end": 247,
                            "ctxt": 0
                          },
                          "typeAnnotation": {
                            "type": "TsTypeReference",
                            "span": {
                              "start": 246,
                              "end": 247,
                              "ctxt": 0
                            },
                            "typeName": {
                              "type": "Identifier",
                              "span": {
                                "start": 246,
                                "end": 247,
                                "ctxt": 0
                              },
                              "value": "T",
                              "optional": false
                            },
                            "typeParams": null
                          }
                        }
                      },
                      {
                        "type": "Identifier",
                        "span": {
                          "start": 249,
                          "end": 254,
                          "ctxt": 0
                        },
                        "value": "y",
                        "optional": true,
                        "typeAnnotation": {
                          "type": "TsTypeAnnotation",
                          "span": {
                            "start": 251,
                            "end": 254,
                            "ctxt": 0
                          },
                          "typeAnnotation": {
                            "type": "TsTypeReference",
                            "span": {
                              "start": 253,
                              "end": 254,
                              "ctxt": 0
                            },
                            "typeName": {
                              "type": "Identifier",
                              "span": {
                                "start": 253,
                                "end": 254,
                                "ctxt": 0
                              },
                              "value": "T",
                              "optional": false
                            },
                            "typeParams": null
                          }
                        }
                      }
                    ],
                    "typeParams": null,
                    "typeAnnotation": {
                      "type": "TsTypeAnnotation",
                      "span": {
                        "start": 256,
                        "end": 260,
                        "ctxt": 0
                      },
                      "typeAnnotation": {
                        "type": "TsTypeReference",
                        "span": {
                          "start": 259,
                          "end": 260,
                          "ctxt": 0
                        },
                        "typeName": {
                          "type": "Identifier",
                          "span": {
                            "start": 259,
                            "end": 260,
                            "ctxt": 0
                          },
                          "value": "T",
                          "optional": false
                        },
                        "typeParams": null
                      }
                    }
                  }
                },
                "isStatic": false,
                "decorators": [],
                "accessibility": null,
                "isAbstract": false,
                "isOptional": false,
                "isOverride": false,
                "readonly": false,
                "declare": false,
                "definite": false
              },
              {
                "type": "ClassProperty",
                "span": {
                  "start": 270,
                  "end": 294,
                  "ctxt": 0
                },
                "key": {
                  "type": "Identifier",
                  "span": {
                    "start": 270,
                    "end": 272,
                    "ctxt": 0
                  },
                  "value": "a5",
                  "optional": false
                },
                "value": null,
                "typeAnnotation": {
                  "type": "TsTypeAnnotation",
                  "span": {
                    "start": 272,
                    "end": 293,
                    "ctxt": 0
                  },
                  "typeAnnotation": {
                    "type": "TsFunctionType",
                    "span": {
                      "start": 274,
                      "end": 293,
                      "ctxt": 0
                    },
                    "params": [
                      {
                        "type": "Identifier",
                        "span": {
                          "start": 275,
                          "end": 280,
                          "ctxt": 0
                        },
                        "value": "x",
                        "optional": true,
                        "typeAnnotation": {
                          "type": "TsTypeAnnotation",
                          "span": {
                            "start": 277,
                            "end": 280,
                            "ctxt": 0
                          },
                          "typeAnnotation": {
                            "type": "TsTypeReference",
                            "span": {
                              "start": 279,
                              "end": 280,
                              "ctxt": 0
                            },
                            "typeName": {
                              "type": "Identifier",
                              "span": {
                                "start": 279,
                                "end": 280,
                                "ctxt": 0
                              },
                              "value": "T",
                              "optional": false
                            },
                            "typeParams": null
                          }
                        }
                      },
                      {
                        "type": "Identifier",
                        "span": {
                          "start": 282,
                          "end": 287,
                          "ctxt": 0
                        },
                        "value": "y",
                        "optional": true,
                        "typeAnnotation": {
                          "type": "TsTypeAnnotation",
                          "span": {
                            "start": 284,
                            "end": 287,
                            "ctxt": 0
                          },
                          "typeAnnotation": {
                            "type": "TsTypeReference",
                            "span": {
                              "start": 286,
                              "end": 287,
                              "ctxt": 0
                            },
                            "typeName": {
                              "type": "Identifier",
                              "span": {
                                "start": 286,
                                "end": 287,
                                "ctxt": 0
                              },
                              "value": "T",
                              "optional": false
                            },
                            "typeParams": null
                          }
                        }
                      }
                    ],
                    "typeParams": null,
                    "typeAnnotation": {
                      "type": "TsTypeAnnotation",
                      "span": {
                        "start": 289,
                        "end": 293,
                        "ctxt": 0
                      },
                      "typeAnnotation": {
                        "type": "TsTypeReference",
                        "span": {
                          "start": 292,
                          "end": 293,
                          "ctxt": 0
                        },
                        "typeName": {
                          "type": "Identifier",
                          "span": {
                            "start": 292,
                            "end": 293,
                            "ctxt": 0
                          },
                          "value": "T",
                          "optional": false
                        },
                        "typeParams": null
                      }
                    }
                  }
                },
                "isStatic": false,
                "decorators": [],
                "accessibility": null,
                "isAbstract": false,
                "isOptional": false,
                "isOverride": false,
                "readonly": false,
                "declare": false,
                "definite": false
              },
              {
                "type": "ClassProperty",
                "span": {
                  "start": 304,
                  "end": 1595,
                  "ctxt": 0
                },
                "key": {
                  "type": "Identifier",
                  "span": {
                    "start": 304,
                    "end": 308,
                    "ctxt": 0
                  },
                  "value": "init",
                  "optional": false
                },
                "value": {
                  "type": "ArrowFunctionExpression",
                  "span": {
                    "start": 311,
                    "end": 1595,
                    "ctxt": 0
                  },
                  "params": [],
                  "body": {
                    "type": "BlockStatement",
                    "span": {
                      "start": 317,
                      "end": 1595,
                      "ctxt": 0
                    },
                    "stmts": [
                      {
                        "type": "ExpressionStatement",
                        "span": {
                          "start": 331,
                          "end": 351,
                          "ctxt": 0
                        },
                        "expression": {
                          "type": "AssignmentExpression",
                          "span": {
                            "start": 331,
                            "end": 350,
                            "ctxt": 0
                          },
                          "operator": "=",
                          "left": {
                            "type": "MemberExpression",
                            "span": {
                              "start": 331,
                              "end": 337,
                              "ctxt": 0
                            },
                            "object": {
                              "type": "ThisExpression",
                              "span": {
                                "start": 331,
                                "end": 335,
                                "ctxt": 0
                              }
                            },
                            "property": {
                              "type": "Identifier",
                              "span": {
                                "start": 336,
                                "end": 337,
                                "ctxt": 0
                              },
                              "value": "a",
                              "optional": false
                            }
                          },
                          "right": {
                            "type": "ArrowFunctionExpression",
                            "span": {
                              "start": 340,
                              "end": 350,
                              "ctxt": 0
                            },
                            "params": [],
                            "body": {
                              "type": "NullLiteral",
                              "span": {
                                "start": 346,
                                "end": 350,
                                "ctxt": 0
                              }
                            },
                            "async": false,
                            "generator": false,
                            "typeParameters": null,
                            "returnType": null
                          }
                        }
                      },
                      {
                        "type": "ExpressionStatement",
                        "span": {
                          "start": 397,
                          "end": 422,
                          "ctxt": 0
                        },
                        "expression": {
                          "type": "AssignmentExpression",
                          "span": {
                            "start": 397,
                            "end": 421,
                            "ctxt": 0
                          },
                          "operator": "=",
                          "left": {
                            "type": "MemberExpression",
                            "span": {
                              "start": 397,
                              "end": 403,
                              "ctxt": 0
                            },
                            "object": {
                              "type": "ThisExpression",
                              "span": {
                                "start": 397,
                                "end": 401,
                                "ctxt": 0
                              }
                            },
                            "property": {
                              "type": "Identifier",
                              "span": {
                                "start": 402,
                                "end": 403,
                                "ctxt": 0
                              },
                              "value": "a",
                              "optional": false
                            }
                          },
                          "right": {
                            "type": "ArrowFunctionExpression",
                            "span": {
                              "start": 406,
                              "end": 421,
                              "ctxt": 0
                            },
                            "params": [
                              {
                                "type": "Identifier",
                                "span": {
                                  "start": 407,
                                  "end": 412,
                                  "ctxt": 0
                                },
                                "value": "x",
                                "optional": true,
                                "typeAnnotation": {
                                  "type": "TsTypeAnnotation",
                                  "span": {
                                    "start": 409,
                                    "end": 412,
                                    "ctxt": 0
                                  },
                                  "typeAnnotation": {
                                    "type": "TsTypeReference",
                                    "span": {
                                      "start": 411,
                                      "end": 412,
                                      "ctxt": 0
                                    },
                                    "typeName": {
                                      "type": "Identifier",
                                      "span": {
                                        "start": 411,
                                        "end": 412,
                                        "ctxt": 0
                                      },
                                      "value": "T",
                                      "optional": false
                                    },
                                    "typeParams": null
                                  }
                                }
                              }
                            ],
                            "body": {
                              "type": "NullLiteral",
                              "span": {
                                "start": 417,
                                "end": 421,
                                "ctxt": 0
                              }
                            },
                            "async": false,
                            "generator": false,
                            "typeParameters": null,
                            "returnType": null
                          }
                        }
                      },
                      {
                        "type": "ExpressionStatement",
                        "span": {
                          "start": 468,
                          "end": 492,
                          "ctxt": 0
                        },
                        "expression": {
                          "type": "AssignmentExpression",
                          "span": {
                            "start": 468,
                            "end": 491,
                            "ctxt": 0
                          },
                          "operator": "=",
                          "left": {
                            "type": "MemberExpression",
                            "span": {
                              "start": 468,
                              "end": 474,
                              "ctxt": 0
                            },
                            "object": {
                              "type": "ThisExpression",
                              "span": {
                                "start": 468,
                                "end": 472,
                                "ctxt": 0
                              }
                            },
                            "property": {
                              "type": "Identifier",
                              "span": {
                                "start": 473,
                                "end": 474,
                                "ctxt": 0
                              },
                              "value": "a",
                              "optional": false
                            }
                          },
                          "right": {
                            "type": "ArrowFunctionExpression",
                            "span": {
                              "start": 477,
                              "end": 491,
                              "ctxt": 0
                            },
                            "params": [
                              {
                                "type": "Identifier",
                                "span": {
                                  "start": 478,
                                  "end": 482,
                                  "ctxt": 0
                                },
                                "value": "x",
                                "optional": false,
                                "typeAnnotation": {
                                  "type": "TsTypeAnnotation",
                                  "span": {
                                    "start": 479,
                                    "end": 482,
                                    "ctxt": 0
                                  },
                                  "typeAnnotation": {
                                    "type": "TsTypeReference",
                                    "span": {
                                      "start": 481,
                                      "end": 482,
                                      "ctxt": 0
                                    },
                                    "typeName": {
                                      "type": "Identifier",
                                      "span": {
                                        "start": 481,
                                        "end": 482,
                                        "ctxt": 0
                                      },
                                      "value": "T",
                                      "optional": false
                                    },
                                    "typeParams": null
                                  }
                                }
                              }
                            ],
                            "body": {
                              "type": "NullLiteral",
                              "span": {
                                "start": 487,
                                "end": 491,
                                "ctxt": 0
                              }
                            },
                            "async": false,
                            "generator": false,
                            "typeParameters": null,
                            "returnType": null
                          }
                        }
                      },
                      {
                        "type": "ExpressionStatement",
                        "span": {
                          "start": 541,
                          "end": 562,
                          "ctxt": 0
                        },
                        "expression": {
                          "type": "AssignmentExpression",
                          "span": {
                            "start": 541,
                            "end": 561,
                            "ctxt": 0
                          },
                          "operator": "=",
                          "left": {
                            "type": "MemberExpression",
                            "span": {
                              "start": 541,
                              "end": 548,
                              "ctxt": 0
                            },
                            "object": {
                              "type": "ThisExpression",
                              "span": {
                                "start": 541,
                                "end": 545,
                                "ctxt": 0
                              }
                            },
                            "property": {
                              "type": "Identifier",
                              "span": {
                                "start": 546,
                                "end": 548,
                                "ctxt": 0
                              },
                              "value": "a2",
                              "optional": false
                            }
                          },
                          "right": {
                            "type": "ArrowFunctionExpression",
                            "span": {
                              "start": 551,
                              "end": 561,
                              "ctxt": 0
                            },
                            "params": [],
                            "body": {
                              "type": "NullLiteral",
                              "span": {
                                "start": 557,
                                "end": 561,
                                "ctxt": 0
                              }
                            },
                            "async": false,
                            "generator": false,
                            "typeParameters": null,
                            "returnType": null
                          }
                        }
                      },
                      {
                        "type": "ExpressionStatement",
                        "span": {
                          "start": 608,
                          "end": 634,
                          "ctxt": 0
                        },
                        "expression": {
                          "type": "AssignmentExpression",
                          "span": {
                            "start": 608,
                            "end": 633,
                            "ctxt": 0
                          },
                          "operator": "=",
                          "left": {
                            "type": "MemberExpression",
                            "span": {
                              "start": 608,
                              "end": 615,
                              "ctxt": 0
                            },
                            "object": {
                              "type": "ThisExpression",
                              "span": {
                                "start": 608,
                                "end": 612,
                                "ctxt": 0
                              }
                            },
                            "property": {
                              "type": "Identifier",
                              "span": {
                                "start": 613,
                                "end": 615,
                                "ctxt": 0
                              },
                              "value": "a2",
                              "optional": false
                            }
                          },
                          "right": {
                            "type": "ArrowFunctionExpression",
                            "span": {
                              "start": 618,
                              "end": 633,
                              "ctxt": 0
                            },
                            "params": [
                              {
                                "type": "Identifier",
                                "span": {
                                  "start": 619,
                                  "end": 624,
                                  "ctxt": 0
                                },
                                "value": "x",
                                "optional": true,
                                "typeAnnotation": {
                                  "type": "TsTypeAnnotation",
                                  "span": {
                                    "start": 621,
                                    "end": 624,
                                    "ctxt": 0
                                  },
                                  "typeAnnotation": {
                                    "type": "TsTypeReference",
                                    "span": {
                                      "start": 623,
                                      "end": 624,
                                      "ctxt": 0
                                    },
                                    "typeName": {
                                      "type": "Identifier",
                                      "span": {
                                        "start": 623,
                                        "end": 624,
                                        "ctxt": 0
                                      },
                                      "value": "T",
                                      "optional": false
                                    },
                                    "typeParams": null
                                  }
                                }
                              }
                            ],
                            "body": {
                              "type": "NullLiteral",
                              "span": {
                                "start": 629,
                                "end": 633,
                                "ctxt": 0
                              }
                            },
                            "async": false,
                            "generator": false,
                            "typeParameters": null,
                            "returnType": null
                          }
                        }
                      },
                      {
                        "type": "ExpressionStatement",
                        "span": {
                          "start": 680,
                          "end": 705,
                          "ctxt": 0
                        },
                        "expression": {
                          "type": "AssignmentExpression",
                          "span": {
                            "start": 680,
                            "end": 704,
                            "ctxt": 0
                          },
                          "operator": "=",
                          "left": {
                            "type": "MemberExpression",
                            "span": {
                              "start": 680,
                              "end": 687,
                              "ctxt": 0
                            },
                            "object": {
                              "type": "ThisExpression",
                              "span": {
                                "start": 680,
                                "end": 684,
                                "ctxt": 0
                              }
                            },
                            "property": {
                              "type": "Identifier",
                              "span": {
                                "start": 685,
                                "end": 687,
                                "ctxt": 0
                              },
                              "value": "a2",
                              "optional": false
                            }
                          },
                          "right": {
                            "type": "ArrowFunctionExpression",
                            "span": {
                              "start": 690,
                              "end": 704,
                              "ctxt": 0
                            },
                            "params": [
                              {
                                "type": "Identifier",
                                "span": {
                                  "start": 691,
                                  "end": 695,
                                  "ctxt": 0
                                },
                                "value": "x",
                                "optional": false,
                                "typeAnnotation": {
                                  "type": "TsTypeAnnotation",
                                  "span": {
                                    "start": 692,
                                    "end": 695,
                                    "ctxt": 0
                                  },
                                  "typeAnnotation": {
                                    "type": "TsTypeReference",
                                    "span": {
                                      "start": 694,
                                      "end": 695,
                                      "ctxt": 0
                                    },
                                    "typeName": {
                                      "type": "Identifier",
                                      "span": {
                                        "start": 694,
                                        "end": 695,
                                        "ctxt": 0
                                      },
                                      "value": "T",
                                      "optional": false
                                    },
                                    "typeParams": null
                                  }
                                }
                              }
                            ],
                            "body": {
                              "type": "NullLiteral",
                              "span": {
                                "start": 700,
                                "end": 704,
                                "ctxt": 0
                              }
                            },
                            "async": false,
                            "generator": false,
                            "typeParameters": null,
                            "returnType": null
                          }
                        }
                      },
                      {
                        "type": "ExpressionStatement",
                        "span": {
                          "start": 748,
                          "end": 769,
                          "ctxt": 0
                        },
                        "expression": {
                          "type": "AssignmentExpression",
                          "span": {
                            "start": 748,
                            "end": 768,
                            "ctxt": 0
                          },
                          "operator": "=",
                          "left": {
                            "type": "MemberExpression",
                            "span": {
                              "start": 748,
                              "end": 755,
                              "ctxt": 0
                            },
                            "object": {
                              "type": "ThisExpression",
                              "span": {
                                "start": 748,
                                "end": 752,
                                "ctxt": 0
                              }
                            },
                            "property": {
                              "type": "Identifier",
                              "span": {
                                "start": 753,
                                "end": 755,
                                "ctxt": 0
                              },
                              "value": "a3",
                              "optional": false
                            }
                          },
                          "right": {
                            "type": "ArrowFunctionExpression",
                            "span": {
                              "start": 758,
                              "end": 768,
                              "ctxt": 0
                            },
                            "params": [],
                            "body": {
                              "type": "NullLiteral",
                              "span": {
                                "start": 764,
                                "end": 768,
                                "ctxt": 0
                              }
                            },
                            "async": false,
                            "generator": false,
                            "typeParameters": null,
                            "returnType": null
                          }
                        }
                      },
                      {
                        "type": "ExpressionStatement",
                        "span": {
                          "start": 811,
                          "end": 837,
                          "ctxt": 0
                        },
                        "expression": {
                          "type": "AssignmentExpression",
                          "span": {
                            "start": 811,
                            "end": 836,
                            "ctxt": 0
                          },
                          "operator": "=",
                          "left": {
                            "type": "MemberExpression",
                            "span": {
                              "start": 811,
                              "end": 818,
                              "ctxt": 0
                            },
                            "object": {
                              "type": "ThisExpression",
                              "span": {
                                "start": 811,
                                "end": 815,
                                "ctxt": 0
                              }
                            },
                            "property": {
                              "type": "Identifier",
                              "span": {
                                "start": 816,
                                "end": 818,
                                "ctxt": 0
                              },
                              "value": "a3",
                              "optional": false
                            }
                          },
                          "right": {
                            "type": "ArrowFunctionExpression",
                            "span": {
                              "start": 821,
                              "end": 836,
                              "ctxt": 0
                            },
                            "params": [
                              {
                                "type": "Identifier",
                                "span": {
                                  "start": 822,
                                  "end": 827,
                                  "ctxt": 0
                                },
                                "value": "x",
                                "optional": true,
                                "typeAnnotation": {
                                  "type": "TsTypeAnnotation",
                                  "span": {
                                    "start": 824,
                                    "end": 827,
                                    "ctxt": 0
                                  },
                                  "typeAnnotation": {
                                    "type": "TsTypeReference",
                                    "span": {
                                      "start": 826,
                                      "end": 827,
                                      "ctxt": 0
                                    },
                                    "typeName": {
                                      "type": "Identifier",
                                      "span": {
                                        "start": 826,
                                        "end": 827,
                                        "ctxt": 0
                                      },
                                      "value": "T",
                                      "optional": false
                                    },
                                    "typeParams": null
                                  }
                                }
                              }
                            ],
                            "body": {
                              "type": "NullLiteral",
                              "span": {
                                "start": 832,
                                "end": 836,
                                "ctxt": 0
                              }
                            },
                            "async": false,
                            "generator": false,
                            "typeParameters": null,
                            "returnType": null
                          }
                        }
                      },
                      {
                        "type": "ExpressionStatement",
                        "span": {
                          "start": 879,
                          "end": 904,
                          "ctxt": 0
                        },
                        "expression": {
                          "type": "AssignmentExpression",
                          "span": {
                            "start": 879,
                            "end": 903,
                            "ctxt": 0
                          },
                          "operator": "=",
                          "left": {
                            "type": "MemberExpression",
                            "span": {
                              "start": 879,
                              "end": 886,
                              "ctxt": 0
                            },
                            "object": {
                              "type": "ThisExpression",
                              "span": {
                                "start": 879,
                                "end": 883,
                                "ctxt": 0
                              }
                            },
                            "property": {
                              "type": "Identifier",
                              "span": {
                                "start": 884,
                                "end": 886,
                                "ctxt": 0
                              },
                              "value": "a3",
                              "optional": false
                            }
                          },
                          "right": {
                            "type": "ArrowFunctionExpression",
                            "span": {
                              "start": 889,
                              "end": 903,
                              "ctxt": 0
                            },
                            "params": [
                              {
                                "type": "Identifier",
                                "span": {
                                  "start": 890,
                                  "end": 894,
                                  "ctxt": 0
                                },
                                "value": "x",
                                "optional": false,
                                "typeAnnotation": {
                                  "type": "TsTypeAnnotation",
                                  "span": {
                                    "start": 891,
                                    "end": 894,
                                    "ctxt": 0
                                  },
                                  "typeAnnotation": {
                                    "type": "TsTypeReference",
                                    "span": {
                                      "start": 893,
                                      "end": 894,
                                      "ctxt": 0
                                    },
                                    "typeName": {
                                      "type": "Identifier",
                                      "span": {
                                        "start": 893,
                                        "end": 894,
                                        "ctxt": 0
                                      },
                                      "value": "T",
                                      "optional": false
                                    },
                                    "typeParams": null
                                  }
                                }
                              }
                            ],
                            "body": {
                              "type": "NullLiteral",
                              "span": {
                                "start": 899,
                                "end": 903,
                                "ctxt": 0
                              }
                            },
                            "async": false,
                            "generator": false,
                            "typeParameters": null,
                            "returnType": null
                          }
                        }
                      },
                      {
                        "type": "ExpressionStatement",
                        "span": {
                          "start": 950,
                          "end": 981,
                          "ctxt": 0
                        },
                        "expression": {
                          "type": "AssignmentExpression",
                          "span": {
                            "start": 950,
                            "end": 980,
                            "ctxt": 0
                          },
                          "operator": "=",
                          "left": {
                            "type": "MemberExpression",
                            "span": {
                              "start": 950,
                              "end": 957,
                              "ctxt": 0
                            },
                            "object": {
                              "type": "ThisExpression",
                              "span": {
                                "start": 950,
                                "end": 954,
                                "ctxt": 0
                              }
                            },
                            "property": {
                              "type": "Identifier",
                              "span": {
                                "start": 955,
                                "end": 957,
                                "ctxt": 0
                              },
                              "value": "a3",
                              "optional": false
                            }
                          },
                          "right": {
                            "type": "ArrowFunctionExpression",
                            "span": {
                              "start": 960,
                              "end": 980,
                              "ctxt": 0
                            },
                            "params": [
                              {
                                "type": "Identifier",
                                "span": {
                                  "start": 961,
                                  "end": 965,
                                  "ctxt": 0
                                },
                                "value": "x",
                                "optional": false,
                                "typeAnnotation": {
                                  "type": "TsTypeAnnotation",
                                  "span": {
                                    "start": 962,
                                    "end": 965,
                                    "ctxt": 0
                                  },
                                  "typeAnnotation": {
                                    "type": "TsTypeReference",
                                    "span": {
                                      "start": 964,
                                      "end": 965,
                                      "ctxt": 0
                                    },
                                    "typeName": {
                                      "type": "Identifier",
                                      "span": {
                                        "start": 964,
                                        "end": 965,
                                        "ctxt": 0
                                      },
                                      "value": "T",
                                      "optional": false
                                    },
                                    "typeParams": null
                                  }
                                }
                              },
                              {
                                "type": "Identifier",
                                "span": {
                                  "start": 967,
                                  "end": 971,
                                  "ctxt": 0
                                },
                                "value": "y",
                                "optional": false,
                                "typeAnnotation": {
                                  "type": "TsTypeAnnotation",
                                  "span": {
                                    "start": 968,
                                    "end": 971,
                                    "ctxt": 0
                                  },
                                  "typeAnnotation": {
                                    "type": "TsTypeReference",
                                    "span": {
                                      "start": 970,
                                      "end": 971,
                                      "ctxt": 0
                                    },
                                    "typeName": {
                                      "type": "Identifier",
                                      "span": {
                                        "start": 970,
                                        "end": 971,
                                        "ctxt": 0
                                      },
                                      "value": "T",
                                      "optional": false
                                    },
                                    "typeParams": null
                                  }
                                }
                              }
                            ],
                            "body": {
                              "type": "NullLiteral",
                              "span": {
                                "start": 976,
                                "end": 980,
                                "ctxt": 0
                              }
                            },
                            "async": false,
                            "generator": false,
                            "typeParameters": null,
                            "returnType": null
                          }
                        }
                      },
                      {
                        "type": "ExpressionStatement",
                        "span": {
                          "start": 1031,
                          "end": 1052,
                          "ctxt": 0
                        },
                        "expression": {
                          "type": "AssignmentExpression",
                          "span": {
                            "start": 1031,
                            "end": 1051,
                            "ctxt": 0
                          },
                          "operator": "=",
                          "left": {
                            "type": "MemberExpression",
                            "span": {
                              "start": 1031,
                              "end": 1038,
                              "ctxt": 0
                            },
                            "object": {
                              "type": "ThisExpression",
                              "span": {
                                "start": 1031,
                                "end": 1035,
                                "ctxt": 0
                              }
                            },
                            "property": {
                              "type": "Identifier",
                              "span": {
                                "start": 1036,
                                "end": 1038,
                                "ctxt": 0
                              },
                              "value": "a4",
                              "optional": false
                            }
                          },
                          "right": {
                            "type": "ArrowFunctionExpression",
                            "span": {
                              "start": 1041,
                              "end": 1051,
                              "ctxt": 0
                            },
                            "params": [],
                            "body": {
                              "type": "NullLiteral",
                              "span": {
                                "start": 1047,
                                "end": 1051,
                                "ctxt": 0
                              }
                            },
                            "async": false,
                            "generator": false,
                            "typeParameters": null,
                            "returnType": null
                          }
                        }
                      },
                      {
                        "type": "ExpressionStatement",
                        "span": {
                          "start": 1094,
                          "end": 1127,
                          "ctxt": 0
                        },
                        "expression": {
                          "type": "AssignmentExpression",
                          "span": {
                            "start": 1094,
                            "end": 1126,
                            "ctxt": 0
                          },
                          "operator": "=",
                          "left": {
                            "type": "MemberExpression",
                            "span": {
                              "start": 1094,
                              "end": 1101,
                              "ctxt": 0
                            },
                            "object": {
                              "type": "ThisExpression",
                              "span": {
                                "start": 1094,
                                "end": 1098,
                                "ctxt": 0
                              }
                            },
                            "property": {
                              "type": "Identifier",
                              "span": {
                                "start": 1099,
                                "end": 1101,
                                "ctxt": 0
                              },
                              "value": "a4",
                              "optional": false
                            }
                          },
                          "right": {
                            "type": "ArrowFunctionExpression",
                            "span": {
                              "start": 1104,
                              "end": 1126,
                              "ctxt": 0
                            },
                            "params": [
                              {
                                "type": "Identifier",
                                "span": {
                                  "start": 1105,
                                  "end": 1110,
                                  "ctxt": 0
                                },
                                "value": "x",
                                "optional": true,
                                "typeAnnotation": {
                                  "type": "TsTypeAnnotation",
                                  "span": {
                                    "start": 1107,
                                    "end": 1110,
                                    "ctxt": 0
                                  },
                                  "typeAnnotation": {
                                    "type": "TsTypeReference",
                                    "span": {
                                      "start": 1109,
                                      "end": 1110,
                                      "ctxt": 0
                                    },
                                    "typeName": {
                                      "type": "Identifier",
                                      "span": {
                                        "start": 1109,
                                        "end": 1110,
                                        "ctxt": 0
                                      },
                                      "value": "T",
                                      "optional": false
                                    },
                                    "typeParams": null
                                  }
                                }
                              },
                              {
                                "type": "Identifier",
                                "span": {
                                  "start": 1112,
                                  "end": 1117,
                                  "ctxt": 0
                                },
                                "value": "y",
                                "optional": true,
                                "typeAnnotation": {
                                  "type": "TsTypeAnnotation",
                                  "span": {
                                    "start": 1114,
                                    "end": 1117,
                                    "ctxt": 0
                                  },
                                  "typeAnnotation": {
                                    "type": "TsTypeReference",
                                    "span": {
                                      "start": 1116,
                                      "end": 1117,
                                      "ctxt": 0
                                    },
                                    "typeName": {
                                      "type": "Identifier",
                                      "span": {
                                        "start": 1116,
                                        "end": 1117,
                                        "ctxt": 0
                                      },
                                      "value": "T",
                                      "optional": false
                                    },
                                    "typeParams": null
                                  }
                                }
                              }
                            ],
                            "body": {
                              "type": "NullLiteral",
                              "span": {
                                "start": 1122,
                                "end": 1126,
                                "ctxt": 0
                              }
                            },
                            "async": false,
                            "generator": false,
                            "typeParameters": null,
                            "returnType": null
                          }
                        }
                      },
                      {
                        "type": "ExpressionStatement",
                        "span": {
                          "start": 1169,
                          "end": 1194,
                          "ctxt": 0
                        },
                        "expression": {
                          "type": "AssignmentExpression",
                          "span": {
                            "start": 1169,
                            "end": 1193,
                            "ctxt": 0
                          },
                          "operator": "=",
                          "left": {
                            "type": "MemberExpression",
                            "span": {
                              "start": 1169,
                              "end": 1176,
                              "ctxt": 0
                            },
                            "object": {
                              "type": "ThisExpression",
                              "span": {
                                "start": 1169,
                                "end": 1173,
                                "ctxt": 0
                              }
                            },
                            "property": {
                              "type": "Identifier",
                              "span": {
                                "start": 1174,
                                "end": 1176,
                                "ctxt": 0
                              },
                              "value": "a4",
                              "optional": false
                            }
                          },
                          "right": {
                            "type": "ArrowFunctionExpression",
                            "span": {
                              "start": 1179,
                              "end": 1193,
                              "ctxt": 0
                            },
                            "params": [
                              {
                                "type": "Identifier",
                                "span": {
                                  "start": 1180,
                                  "end": 1184,
                                  "ctxt": 0
                                },
                                "value": "x",
                                "optional": false,
                                "typeAnnotation": {
                                  "type": "TsTypeAnnotation",
                                  "span": {
                                    "start": 1181,
                                    "end": 1184,
                                    "ctxt": 0
                                  },
                                  "typeAnnotation": {
                                    "type": "TsTypeReference",
                                    "span": {
                                      "start": 1183,
                                      "end": 1184,
                                      "ctxt": 0
                                    },
                                    "typeName": {
                                      "type": "Identifier",
                                      "span": {
                                        "start": 1183,
                                        "end": 1184,
                                        "ctxt": 0
                                      },
                                      "value": "T",
                                      "optional": false
                                    },
                                    "typeParams": null
                                  }
                                }
                              }
                            ],
                            "body": {
                              "type": "NullLiteral",
                              "span": {
                                "start": 1189,
                                "end": 1193,
                                "ctxt": 0
                              }
                            },
                            "async": false,
                            "generator": false,
                            "typeParameters": null,
                            "returnType": null
                          }
                        }
                      },
                      {
                        "type": "ExpressionStatement",
                        "span": {
                          "start": 1240,
                          "end": 1271,
                          "ctxt": 0
                        },
                        "expression": {
                          "type": "AssignmentExpression",
                          "span": {
                            "start": 1240,
                            "end": 1270,
                            "ctxt": 0
                          },
                          "operator": "=",
                          "left": {
                            "type": "MemberExpression",
                            "span": {
                              "start": 1240,
                              "end": 1247,
                              "ctxt": 0
                            },
                            "object": {
                              "type": "ThisExpression",
                              "span": {
                                "start": 1240,
                                "end": 1244,
                                "ctxt": 0
                              }
                            },
                            "property": {
                              "type": "Identifier",
                              "span": {
                                "start": 1245,
                                "end": 1247,
                                "ctxt": 0
                              },
                              "value": "a4",
                              "optional": false
                            }
                          },
                          "right": {
                            "type": "ArrowFunctionExpression",
                            "span": {
                              "start": 1250,
                              "end": 1270,
                              "ctxt": 0
                            },
                            "params": [
                              {
                                "type": "Identifier",
                                "span": {
                                  "start": 1251,
                                  "end": 1255,
                                  "ctxt": 0
                                },
                                "value": "x",
                                "optional": false,
                                "typeAnnotation": {
                                  "type": "TsTypeAnnotation",
                                  "span": {
                                    "start": 1252,
                                    "end": 1255,
                                    "ctxt": 0
                                  },
                                  "typeAnnotation": {
                                    "type": "TsTypeReference",
                                    "span": {
                                      "start": 1254,
                                      "end": 1255,
                                      "ctxt": 0
                                    },
                                    "typeName": {
                                      "type": "Identifier",
                                      "span": {
                                        "start": 1254,
                                        "end": 1255,
                                        "ctxt": 0
                                      },
                                      "value": "T",
                                      "optional": false
                                    },
                                    "typeParams": null
                                  }
                                }
                              },
                              {
                                "type": "Identifier",
                                "span": {
                                  "start": 1257,
                                  "end": 1261,
                                  "ctxt": 0
                                },
                                "value": "y",
                                "optional": false,
                                "typeAnnotation": {
                                  "type": "TsTypeAnnotation",
                                  "span": {
                                    "start": 1258,
                                    "end": 1261,
                                    "ctxt": 0
                                  },
                                  "typeAnnotation": {
                                    "type": "TsTypeReference",
                                    "span": {
                                      "start": 1260,
                                      "end": 1261,
                                      "ctxt": 0
                                    },
                                    "typeName": {
                                      "type": "Identifier",
                                      "span": {
                                        "start": 1260,
                                        "end": 1261,
                                        "ctxt": 0
                                      },
                                      "value": "T",
                                      "optional": false
                                    },
                                    "typeParams": null
                                  }
                                }
                              }
                            ],
                            "body": {
                              "type": "NullLiteral",
                              "span": {
                                "start": 1266,
                                "end": 1270,
                                "ctxt": 0
                              }
                            },
                            "async": false,
                            "generator": false,
                            "typeParameters": null,
                            "returnType": null
                          }
                        }
                      },
                      {
                        "type": "ExpressionStatement",
                        "span": {
                          "start": 1316,
                          "end": 1337,
                          "ctxt": 0
                        },
                        "expression": {
                          "type": "AssignmentExpression",
                          "span": {
                            "start": 1316,
                            "end": 1336,
                            "ctxt": 0
                          },
                          "operator": "=",
                          "left": {
                            "type": "MemberExpression",
                            "span": {
                              "start": 1316,
                              "end": 1323,
                              "ctxt": 0
                            },
                            "object": {
                              "type": "ThisExpression",
                              "span": {
                                "start": 1316,
                                "end": 1320,
                                "ctxt": 0
                              }
                            },
                            "property": {
                              "type": "Identifier",
                              "span": {
                                "start": 1321,
                                "end": 1323,
                                "ctxt": 0
                              },
                              "value": "a5",
                              "optional": false
                            }
                          },
                          "right": {
                            "type": "ArrowFunctionExpression",
                            "span": {
                              "start": 1326,
                              "end": 1336,
                              "ctxt": 0
                            },
                            "params": [],
                            "body": {
                              "type": "NullLiteral",
                              "span": {
                                "start": 1332,
                                "end": 1336,
                                "ctxt": 0
                              }
                            },
                            "async": false,
                            "generator": false,
                            "typeParameters": null,
                            "returnType": null
                          }
                        }
                      },
                      {
                        "type": "ExpressionStatement",
                        "span": {
                          "start": 1379,
                          "end": 1412,
                          "ctxt": 0
                        },
                        "expression": {
                          "type": "AssignmentExpression",
                          "span": {
                            "start": 1379,
                            "end": 1411,
                            "ctxt": 0
                          },
                          "operator": "=",
                          "left": {
                            "type": "MemberExpression",
                            "span": {
                              "start": 1379,
                              "end": 1386,
                              "ctxt": 0
                            },
                            "object": {
                              "type": "ThisExpression",
                              "span": {
                                "start": 1379,
                                "end": 1383,
                                "ctxt": 0
                              }
                            },
                            "property": {
                              "type": "Identifier",
                              "span": {
                                "start": 1384,
                                "end": 1386,
                                "ctxt": 0
                              },
                              "value": "a5",
                              "optional": false
                            }
                          },
                          "right": {
                            "type": "ArrowFunctionExpression",
                            "span": {
                              "start": 1389,
                              "end": 1411,
                              "ctxt": 0
                            },
                            "params": [
                              {
                                "type": "Identifier",
                                "span": {
                                  "start": 1390,
                                  "end": 1395,
                                  "ctxt": 0
                                },
                                "value": "x",
                                "optional": true,
                                "typeAnnotation": {
                                  "type": "TsTypeAnnotation",
                                  "span": {
                                    "start": 1392,
                                    "end": 1395,
                                    "ctxt": 0
                                  },
                                  "typeAnnotation": {
                                    "type": "TsTypeReference",
                                    "span": {
                                      "start": 1394,
                                      "end": 1395,
                                      "ctxt": 0
                                    },
                                    "typeName": {
                                      "type": "Identifier",
                                      "span": {
                                        "start": 1394,
                                        "end": 1395,
                                        "ctxt": 0
                                      },
                                      "value": "T",
                                      "optional": false
                                    },
                                    "typeParams": null
                                  }
                                }
                              },
                              {
                                "type": "Identifier",
                                "span": {
                                  "start": 1397,
                                  "end": 1402,
                                  "ctxt": 0
                                },
                                "value": "y",
                                "optional": true,
                                "typeAnnotation": {
                                  "type": "TsTypeAnnotation",
                                  "span": {
                                    "start": 1399,
                                    "end": 1402,
                                    "ctxt": 0
                                  },
                                  "typeAnnotation": {
                                    "type": "TsTypeReference",
                                    "span": {
                                      "start": 1401,
                                      "end": 1402,
                                      "ctxt": 0
                                    },
                                    "typeName": {
                                      "type": "Identifier",
                                      "span": {
                                        "start": 1401,
                                        "end": 1402,
                                        "ctxt": 0
                                      },
                                      "value": "T",
                                      "optional": false
                                    },
                                    "typeParams": null
                                  }
                                }
                              }
                            ],
                            "body": {
                              "type": "NullLiteral",
                              "span": {
                                "start": 1407,
                                "end": 1411,
                                "ctxt": 0
                              }
                            },
                            "async": false,
                            "generator": false,
                            "typeParameters": null,
                            "returnType": null
                          }
                        }
                      },
                      {
                        "type": "ExpressionStatement",
                        "span": {
                          "start": 1454,
                          "end": 1479,
                          "ctxt": 0
                        },
                        "expression": {
                          "type": "AssignmentExpression",
                          "span": {
                            "start": 1454,
                            "end": 1478,
                            "ctxt": 0
                          },
                          "operator": "=",
                          "left": {
                            "type": "MemberExpression",
                            "span": {
                              "start": 1454,
                              "end": 1461,
                              "ctxt": 0
                            },
                            "object": {
                              "type": "ThisExpression",
                              "span": {
                                "start": 1454,
                                "end": 1458,
                                "ctxt": 0
                              }
                            },
                            "property": {
                              "type": "Identifier",
                              "span": {
                                "start": 1459,
                                "end": 1461,
                                "ctxt": 0
                              },
                              "value": "a5",
                              "optional": false
                            }
                          },
                          "right": {
                            "type": "ArrowFunctionExpression",
                            "span": {
                              "start": 1464,
                              "end": 1478,
                              "ctxt": 0
                            },
                            "params": [
                              {
                                "type": "Identifier",
                                "span": {
                                  "start": 1465,
                                  "end": 1469,
                                  "ctxt": 0
                                },
                                "value": "x",
                                "optional": false,
                                "typeAnnotation": {
                                  "type": "TsTypeAnnotation",
                                  "span": {
                                    "start": 1466,
                                    "end": 1469,
                                    "ctxt": 0
                                  },
                                  "typeAnnotation": {
                                    "type": "TsTypeReference",
                                    "span": {
                                      "start": 1468,
                                      "end": 1469,
                                      "ctxt": 0
                                    },
                                    "typeName": {
                                      "type": "Identifier",
                                      "span": {
                                        "start": 1468,
                                        "end": 1469,
                                        "ctxt": 0
                                      },
                                      "value": "T",
                                      "optional": false
                                    },
                                    "typeParams": null
                                  }
                                }
                              }
                            ],
                            "body": {
                              "type": "NullLiteral",
                              "span": {
                                "start": 1474,
                                "end": 1478,
                                "ctxt": 0
                              }
                            },
                            "async": false,
                            "generator": false,
                            "typeParameters": null,
                            "returnType": null
                          }
                        }
                      },
                      {
                        "type": "ExpressionStatement",
                        "span": {
                          "start": 1524,
                          "end": 1555,
                          "ctxt": 0
                        },
                        "expression": {
                          "type": "AssignmentExpression",
                          "span": {
                            "start": 1524,
                            "end": 1554,
                            "ctxt": 0
                          },
                          "operator": "=",
                          "left": {
                            "type": "MemberExpression",
                            "span": {
                              "start": 1524,
                              "end": 1531,
                              "ctxt": 0
                            },
                            "object": {
                              "type": "ThisExpression",
                              "span": {
                                "start": 1524,
                                "end": 1528,
                                "ctxt": 0
                              }
                            },
                            "property": {
                              "type": "Identifier",
                              "span": {
                                "start": 1529,
                                "end": 1531,
                                "ctxt": 0
                              },
                              "value": "a5",
                              "optional": false
                            }
                          },
                          "right": {
                            "type": "ArrowFunctionExpression",
                            "span": {
                              "start": 1534,
                              "end": 1554,
                              "ctxt": 0
                            },
                            "params": [
                              {
                                "type": "Identifier",
                                "span": {
                                  "start": 1535,
                                  "end": 1539,
                                  "ctxt": 0
                                },
                                "value": "x",
                                "optional": false,
                                "typeAnnotation": {
                                  "type": "TsTypeAnnotation",
                                  "span": {
                                    "start": 1536,
                                    "end": 1539,
                                    "ctxt": 0
                                  },
                                  "typeAnnotation": {
                                    "type": "TsTypeReference",
                                    "span": {
                                      "start": 1538,
                                      "end": 1539,
                                      "ctxt": 0
                                    },
                                    "typeName": {
                                      "type": "Identifier",
                                      "span": {
                                        "start": 1538,
                                        "end": 1539,
                                        "ctxt": 0
                                      },
                                      "value": "T",
                                      "optional": false
                                    },
                                    "typeParams": null
                                  }
                                }
                              },
                              {
                                "type": "Identifier",
                                "span": {
                                  "start": 1541,
                                  "end": 1545,
                                  "ctxt": 0
                                },
                                "value": "y",
                                "optional": false,
                                "typeAnnotation": {
                                  "type": "TsTypeAnnotation",
                                  "span": {
                                    "start": 1542,
                                    "end": 1545,
                                    "ctxt": 0
                                  },
                                  "typeAnnotation": {
                                    "type": "TsTypeReference",
                                    "span": {
                                      "start": 1544,
                                      "end": 1545,
                                      "ctxt": 0
                                    },
                                    "typeName": {
                                      "type": "Identifier",
                                      "span": {
                                        "start": 1544,
                                        "end": 1545,
                                        "ctxt": 0
                                      },
                                      "value": "T",
                                      "optional": false
                                    },
                                    "typeParams": null
                                  }
                                }
                              }
                            ],
                            "body": {
                              "type": "NullLiteral",
                              "span": {
                                "start": 1550,
                                "end": 1554,
                                "ctxt": 0
                              }
                            },
                            "async": false,
                            "generator": false,
                            "typeParameters": null,
                            "returnType": null
                          }
                        }
                      }
                    ]
                  },
                  "async": false,
                  "generator": false,
                  "typeParameters": null,
                  "returnType": null
                },
                "typeAnnotation": null,
                "isStatic": false,
                "decorators": [],
                "accessibility": null,
                "isAbstract": false,
                "isOptional": false,
                "isOverride": false,
                "readonly": false,
                "declare": false,
                "definite": false
              }
            ],
            "superClass": null,
            "isAbstract": false,
            "typeParams": {
              "type": "TsTypeParameterDeclaration",
              "span": {
                "start": 153,
                "end": 156,
                "ctxt": 0
              },
              "parameters": [
                {
                  "type": "TsTypeParameter",
                  "span": {
                    "start": 154,
                    "end": 155,
                    "ctxt": 0
                  },
                  "name": {
                    "type": "Identifier",
                    "span": {
                      "start": 154,
                      "end": 155,
                      "ctxt": 0
                    },
                    "value": "T",
                    "optional": false
                  },
                  "in": false,
                  "out": false,
                  "constraint": null,
                  "default": null
                }
              ]
            },
            "superTypeParams": null,
            "implements": []
          }
        ]
      }
    },
    {
      "type": "TsModuleDeclaration",
      "span": {
        "start": 1605,
        "end": 2603,
        "ctxt": 0
      },
      "declare": false,
      "global": false,
      "id": {
        "type": "Identifier",
        "span": {
          "start": 1612,
          "end": 1636,
          "ctxt": 0
        },
        "value": "GenericSignaturesInvalid",
        "optional": false
      },
      "body": {
        "type": "TsModuleBlock",
        "span": {
          "start": 1637,
          "end": 2603,
          "ctxt": 0
        },
        "body": [
          {
            "type": "ClassDeclaration",
            "identifier": {
              "type": "Identifier",
              "span": {
                "start": 1650,
                "end": 1655,
                "ctxt": 0
              },
              "value": "Base2",
              "optional": false
            },
            "declare": false,
            "span": {
              "start": 1644,
              "end": 1814,
              "ctxt": 0
            },
            "decorators": [],
            "body": [
              {
                "type": "ClassProperty",
                "span": {
                  "start": 1666,
                  "end": 1680,
                  "ctxt": 0
                },
                "key": {
                  "type": "Identifier",
                  "span": {
                    "start": 1666,
                    "end": 1667,
                    "ctxt": 0
                  },
                  "value": "a",
                  "optional": false
                },
                "value": null,
                "typeAnnotation": {
                  "type": "TsTypeAnnotation",
                  "span": {
                    "start": 1667,
                    "end": 1679,
                    "ctxt": 0
                  },
                  "typeAnnotation": {
                    "type": "TsFunctionType",
                    "span": {
                      "start": 1669,
                      "end": 1679,
                      "ctxt": 0
                    },
                    "params": [],
                    "typeParams": {
                      "type": "TsTypeParameterDeclaration",
                      "span": {
                        "start": 1669,
                        "end": 1672,
                        "ctxt": 0
                      },
                      "parameters": [
                        {
                          "type": "TsTypeParameter",
                          "span": {
                            "start": 1670,
                            "end": 1671,
                            "ctxt": 0
                          },
                          "name": {
                            "type": "Identifier",
                            "span": {
                              "start": 1670,
                              "end": 1671,
                              "ctxt": 0
                            },
                            "value": "T",
                            "optional": false
                          },
                          "in": false,
                          "out": false,
                          "constraint": null,
                          "default": null
                        }
                      ]
                    },
                    "typeAnnotation": {
                      "type": "TsTypeAnnotation",
                      "span": {
                        "start": 1675,
                        "end": 1679,
                        "ctxt": 0
                      },
                      "typeAnnotation": {
                        "type": "TsTypeReference",
                        "span": {
                          "start": 1678,
                          "end": 1679,
                          "ctxt": 0
                        },
                        "typeName": {
                          "type": "Identifier",
                          "span": {
                            "start": 1678,
                            "end": 1679,
                            "ctxt": 0
                          },
                          "value": "T",
                          "optional": false
                        },
                        "typeParams": null
                      }
                    }
                  }
                },
                "isStatic": false,
                "decorators": [],
                "accessibility": null,
                "isAbstract": false,
                "isOptional": false,
                "isOverride": false,
                "readonly": false,
                "declare": false,
                "definite": false
              },
              {
                "type": "ClassProperty",
                "span": {
                  "start": 1689,
                  "end": 1709,
                  "ctxt": 0
                },
                "key": {
                  "type": "Identifier",
                  "span": {
                    "start": 1689,
                    "end": 1691,
                    "ctxt": 0
                  },
                  "value": "a2",
                  "optional": false
                },
                "value": null,
                "typeAnnotation": {
                  "type": "TsTypeAnnotation",
                  "span": {
                    "start": 1691,
                    "end": 1708,
                    "ctxt": 0
                  },
                  "typeAnnotation": {
                    "type": "TsFunctionType",
                    "span": {
                      "start": 1693,
                      "end": 1708,
                      "ctxt": 0
                    },
                    "params": [
                      {
                        "type": "Identifier",
                        "span": {
                          "start": 1697,
                          "end": 1702,
                          "ctxt": 0
                        },
                        "value": "x",
                        "optional": true,
                        "typeAnnotation": {
                          "type": "TsTypeAnnotation",
                          "span": {
                            "start": 1699,
                            "end": 1702,
                            "ctxt": 0
                          },
                          "typeAnnotation": {
                            "type": "TsTypeReference",
                            "span": {
                              "start": 1701,
                              "end": 1702,
                              "ctxt": 0
                            },
                            "typeName": {
                              "type": "Identifier",
                              "span": {
                                "start": 1701,
                                "end": 1702,
                                "ctxt": 0
                              },
                              "value": "T",
                              "optional": false
                            },
                            "typeParams": null
                          }
                        }
                      }
                    ],
                    "typeParams": {
                      "type": "TsTypeParameterDeclaration",
                      "span": {
                        "start": 1693,
                        "end": 1696,
                        "ctxt": 0
                      },
                      "parameters": [
                        {
                          "type": "TsTypeParameter",
                          "span": {
                            "start": 1694,
                            "end": 1695,
                            "ctxt": 0
                          },
                          "name": {
                            "type": "Identifier",
                            "span": {
                              "start": 1694,
                              "end": 1695,
                              "ctxt": 0
                            },
                            "value": "T",
                            "optional": false
                          },
                          "in": false,
                          "out": false,
                          "constraint": null,
                          "default": null
                        }
                      ]
                    },
                    "typeAnnotation": {
                      "type": "TsTypeAnnotation",
                      "span": {
                        "start": 1704,
                        "end": 1708,
                        "ctxt": 0
                      },
                      "typeAnnotation": {
                        "type": "TsTypeReference",
                        "span": {
                          "start": 1707,
                          "end": 1708,
                          "ctxt": 0
                        },
                        "typeName": {
                          "type": "Identifier",
                          "span": {
                            "start": 1707,
                            "end": 1708,
                            "ctxt": 0
                          },
                          "value": "T",
                          "optional": false
                        },
                        "typeParams": null
                      }
                    }
                  }
                },
                "isStatic": false,
                "decorators": [],
                "accessibility": null,
                "isAbstract": false,
                "isOptional": false,
                "isOverride": false,
                "readonly": false,
                "declare": false,
                "definite": false
              },
              {
                "type": "ClassProperty",
                "span": {
                  "start": 1718,
                  "end": 1737,
                  "ctxt": 0
                },
                "key": {
                  "type": "Identifier",
                  "span": {
                    "start": 1718,
                    "end": 1720,
                    "ctxt": 0
                  },
                  "value": "a3",
                  "optional": false
                },
                "value": null,
                "typeAnnotation": {
                  "type": "TsTypeAnnotation",
                  "span": {
                    "start": 1720,
                    "end": 1736,
                    "ctxt": 0
                  },
                  "typeAnnotation": {
                    "type": "TsFunctionType",
                    "span": {
                      "start": 1722,
                      "end": 1736,
                      "ctxt": 0
                    },
                    "params": [
                      {
                        "type": "Identifier",
                        "span": {
                          "start": 1726,
                          "end": 1730,
                          "ctxt": 0
                        },
                        "value": "x",
                        "optional": false,
                        "typeAnnotation": {
                          "type": "TsTypeAnnotation",
                          "span": {
                            "start": 1727,
                            "end": 1730,
                            "ctxt": 0
                          },
                          "typeAnnotation": {
                            "type": "TsTypeReference",
                            "span": {
                              "start": 1729,
                              "end": 1730,
                              "ctxt": 0
                            },
                            "typeName": {
                              "type": "Identifier",
                              "span": {
                                "start": 1729,
                                "end": 1730,
                                "ctxt": 0
                              },
                              "value": "T",
                              "optional": false
                            },
                            "typeParams": null
                          }
                        }
                      }
                    ],
                    "typeParams": {
                      "type": "TsTypeParameterDeclaration",
                      "span": {
                        "start": 1722,
                        "end": 1725,
                        "ctxt": 0
                      },
                      "parameters": [
                        {
                          "type": "TsTypeParameter",
                          "span": {
                            "start": 1723,
                            "end": 1724,
                            "ctxt": 0
                          },
                          "name": {
                            "type": "Identifier",
                            "span": {
                              "start": 1723,
                              "end": 1724,
                              "ctxt": 0
                            },
                            "value": "T",
                            "optional": false
                          },
                          "in": false,
                          "out": false,
                          "constraint": null,
                          "default": null
                        }
                      ]
                    },
                    "typeAnnotation": {
                      "type": "TsTypeAnnotation",
                      "span": {
                        "start": 1732,
                        "end": 1736,
                        "ctxt": 0
                      },
                      "typeAnnotation": {
                        "type": "TsTypeReference",
                        "span": {
                          "start": 1735,
                          "end": 1736,
                          "ctxt": 0
                        },
                        "typeName": {
                          "type": "Identifier",
                          "span": {
                            "start": 1735,
                            "end": 1736,
                            "ctxt": 0
                          },
                          "value": "T",
                          "optional": false
                        },
                        "typeParams": null
                      }
                    }
                  }
                },
                "isStatic": false,
                "decorators": [],
                "accessibility": null,
                "isAbstract": false,
                "isOptional": false,
                "isOverride": false,
                "readonly": false,
                "declare": false,
                "definite": false
              },
              {
                "type": "ClassProperty",
                "span": {
                  "start": 1746,
                  "end": 1772,
                  "ctxt": 0
                },
                "key": {
                  "type": "Identifier",
                  "span": {
                    "start": 1746,
                    "end": 1748,
                    "ctxt": 0
                  },
                  "value": "a4",
                  "optional": false
                },
                "value": null,
                "typeAnnotation": {
                  "type": "TsTypeAnnotation",
                  "span": {
                    "start": 1748,
                    "end": 1771,
                    "ctxt": 0
                  },
                  "typeAnnotation": {
                    "type": "TsFunctionType",
                    "span": {
                      "start": 1750,
                      "end": 1771,
                      "ctxt": 0
                    },
                    "params": [
                      {
                        "type": "Identifier",
                        "span": {
                          "start": 1754,
                          "end": 1758,
                          "ctxt": 0
                        },
                        "value": "x",
                        "optional": false,
                        "typeAnnotation": {
                          "type": "TsTypeAnnotation",
                          "span": {
                            "start": 1755,
                            "end": 1758,
                            "ctxt": 0
                          },
                          "typeAnnotation": {
                            "type": "TsTypeReference",
                            "span": {
                              "start": 1757,
                              "end": 1758,
                              "ctxt": 0
                            },
                            "typeName": {
                              "type": "Identifier",
                              "span": {
                                "start": 1757,
                                "end": 1758,
                                "ctxt": 0
                              },
                              "value": "T",
                              "optional": false
                            },
                            "typeParams": null
                          }
                        }
                      },
                      {
                        "type": "Identifier",
                        "span": {
                          "start": 1760,
                          "end": 1765,
                          "ctxt": 0
                        },
                        "value": "y",
                        "optional": true,
                        "typeAnnotation": {
                          "type": "TsTypeAnnotation",
                          "span": {
                            "start": 1762,
                            "end": 1765,
                            "ctxt": 0
                          },
                          "typeAnnotation": {
                            "type": "TsTypeReference",
                            "span": {
                              "start": 1764,
                              "end": 1765,
                              "ctxt": 0
                            },
                            "typeName": {
                              "type": "Identifier",
                              "span": {
                                "start": 1764,
                                "end": 1765,
                                "ctxt": 0
                              },
                              "value": "T",
                              "optional": false
                            },
                            "typeParams": null
                          }
                        }
                      }
                    ],
                    "typeParams": {
                      "type": "TsTypeParameterDeclaration",
                      "span": {
                        "start": 1750,
                        "end": 1753,
                        "ctxt": 0
                      },
                      "parameters": [
                        {
                          "type": "TsTypeParameter",
                          "span": {
                            "start": 1751,
                            "end": 1752,
                            "ctxt": 0
                          },
                          "name": {
                            "type": "Identifier",
                            "span": {
                              "start": 1751,
                              "end": 1752,
                              "ctxt": 0
                            },
                            "value": "T",
                            "optional": false
                          },
                          "in": false,
                          "out": false,
                          "constraint": null,
                          "default": null
                        }
                      ]
                    },
                    "typeAnnotation": {
                      "type": "TsTypeAnnotation",
                      "span": {
                        "start": 1767,
                        "end": 1771,
                        "ctxt": 0
                      },
                      "typeAnnotation": {
                        "type": "TsTypeReference",
                        "span": {
                          "start": 1770,
                          "end": 1771,
                          "ctxt": 0
                        },
                        "typeName": {
                          "type": "Identifier",
                          "span": {
                            "start": 1770,
                            "end": 1771,
                            "ctxt": 0
                          },
                          "value": "T",
                          "optional": false
                        },
                        "typeParams": null
                      }
                    }
                  }
                },
                "isStatic": false,
                "decorators": [],
                "accessibility": null,
                "isAbstract": false,
                "isOptional": false,
                "isOverride": false,
                "readonly": false,
                "declare": false,
                "definite": false
              },
              {
                "type": "ClassProperty",
                "span": {
                  "start": 1781,
                  "end": 1808,
                  "ctxt": 0
                },
                "key": {
                  "type": "Identifier",
                  "span": {
                    "start": 1781,
                    "end": 1783,
                    "ctxt": 0
                  },
                  "value": "a5",
                  "optional": false
                },
                "value": null,
                "typeAnnotation": {
                  "type": "TsTypeAnnotation",
                  "span": {
                    "start": 1783,
                    "end": 1807,
                    "ctxt": 0
                  },
                  "typeAnnotation": {
                    "type": "TsFunctionType",
                    "span": {
                      "start": 1785,
                      "end": 1807,
                      "ctxt": 0
                    },
                    "params": [
                      {
                        "type": "Identifier",
                        "span": {
                          "start": 1789,
                          "end": 1794,
                          "ctxt": 0
                        },
                        "value": "x",
                        "optional": true,
                        "typeAnnotation": {
                          "type": "TsTypeAnnotation",
                          "span": {
                            "start": 1791,
                            "end": 1794,
                            "ctxt": 0
                          },
                          "typeAnnotation": {
                            "type": "TsTypeReference",
                            "span": {
                              "start": 1793,
                              "end": 1794,
                              "ctxt": 0
                            },
                            "typeName": {
                              "type": "Identifier",
                              "span": {
                                "start": 1793,
                                "end": 1794,
                                "ctxt": 0
                              },
                              "value": "T",
                              "optional": false
                            },
                            "typeParams": null
                          }
                        }
                      },
                      {
                        "type": "Identifier",
                        "span": {
                          "start": 1796,
                          "end": 1801,
                          "ctxt": 0
                        },
                        "value": "y",
                        "optional": true,
                        "typeAnnotation": {
                          "type": "TsTypeAnnotation",
                          "span": {
                            "start": 1798,
                            "end": 1801,
                            "ctxt": 0
                          },
                          "typeAnnotation": {
                            "type": "TsTypeReference",
                            "span": {
                              "start": 1800,
                              "end": 1801,
                              "ctxt": 0
                            },
                            "typeName": {
                              "type": "Identifier",
                              "span": {
                                "start": 1800,
                                "end": 1801,
                                "ctxt": 0
                              },
                              "value": "T",
                              "optional": false
                            },
                            "typeParams": null
                          }
                        }
                      }
                    ],
                    "typeParams": {
                      "type": "TsTypeParameterDeclaration",
                      "span": {
                        "start": 1785,
                        "end": 1788,
                        "ctxt": 0
                      },
                      "parameters": [
                        {
                          "type": "TsTypeParameter",
                          "span": {
                            "start": 1786,
                            "end": 1787,
                            "ctxt": 0
                          },
                          "name": {
                            "type": "Identifier",
                            "span": {
                              "start": 1786,
                              "end": 1787,
                              "ctxt": 0
                            },
                            "value": "T",
                            "optional": false
                          },
                          "in": false,
                          "out": false,
                          "constraint": null,
                          "default": null
                        }
                      ]
                    },
                    "typeAnnotation": {
                      "type": "TsTypeAnnotation",
                      "span": {
                        "start": 1803,
                        "end": 1807,
                        "ctxt": 0
                      },
                      "typeAnnotation": {
                        "type": "TsTypeReference",
                        "span": {
                          "start": 1806,
                          "end": 1807,
                          "ctxt": 0
                        },
                        "typeName": {
                          "type": "Identifier",
                          "span": {
                            "start": 1806,
                            "end": 1807,
                            "ctxt": 0
                          },
                          "value": "T",
                          "optional": false
                        },
                        "typeParams": null
                      }
                    }
                  }
                },
                "isStatic": false,
                "decorators": [],
                "accessibility": null,
                "isAbstract": false,
                "isOptional": false,
                "isOverride": false,
                "readonly": false,
                "declare": false,
                "definite": false
              }
            ],
            "superClass": null,
            "isAbstract": false,
            "typeParams": null,
            "superTypeParams": null,
            "implements": []
          },
          {
            "type": "ClassDeclaration",
            "identifier": {
              "type": "Identifier",
              "span": {
                "start": 1826,
                "end": 1832,
                "ctxt": 0
              },
              "value": "Target",
              "optional": false
            },
            "declare": false,
            "span": {
              "start": 1820,
              "end": 1979,
              "ctxt": 0
            },
            "decorators": [],
            "body": [
              {
                "type": "ClassProperty",
                "span": {
                  "start": 1846,
                  "end": 1857,
                  "ctxt": 0
                },
                "key": {
                  "type": "Identifier",
                  "span": {
                    "start": 1846,
                    "end": 1847,
                    "ctxt": 0
                  },
                  "value": "a",
                  "optional": false
                },
                "value": null,
                "typeAnnotation": {
                  "type": "TsTypeAnnotation",
                  "span": {
                    "start": 1847,
                    "end": 1856,
                    "ctxt": 0
                  },
                  "typeAnnotation": {
                    "type": "TsFunctionType",
                    "span": {
                      "start": 1849,
                      "end": 1856,
                      "ctxt": 0
                    },
                    "params": [],
                    "typeParams": null,
                    "typeAnnotation": {
                      "type": "TsTypeAnnotation",
                      "span": {
                        "start": 1852,
                        "end": 1856,
                        "ctxt": 0
                      },
                      "typeAnnotation": {
                        "type": "TsTypeReference",
                        "span": {
                          "start": 1855,
                          "end": 1856,
                          "ctxt": 0
                        },
                        "typeName": {
                          "type": "Identifier",
                          "span": {
                            "start": 1855,
                            "end": 1856,
                            "ctxt": 0
                          },
                          "value": "T",
                          "optional": false
                        },
                        "typeParams": null
                      }
                    }
                  }
                },
                "isStatic": false,
                "decorators": [],
                "accessibility": null,
                "isAbstract": false,
                "isOptional": false,
                "isOverride": false,
                "readonly": false,
                "declare": false,
                "definite": false
              },
              {
                "type": "ClassProperty",
                "span": {
                  "start": 1866,
                  "end": 1883,
                  "ctxt": 0
                },
                "key": {
                  "type": "Identifier",
                  "span": {
                    "start": 1866,
                    "end": 1868,
                    "ctxt": 0
                  },
                  "value": "a2",
                  "optional": false
                },
                "value": null,
                "typeAnnotation": {
                  "type": "TsTypeAnnotation",
                  "span": {
                    "start": 1868,
                    "end": 1882,
                    "ctxt": 0
                  },
                  "typeAnnotation": {
                    "type": "TsFunctionType",
                    "span": {
                      "start": 1870,
                      "end": 1882,
                      "ctxt": 0
                    },
                    "params": [
                      {
                        "type": "Identifier",
                        "span": {
                          "start": 1871,
                          "end": 1876,
                          "ctxt": 0
                        },
                        "value": "x",
                        "optional": true,
                        "typeAnnotation": {
                          "type": "TsTypeAnnotation",
                          "span": {
                            "start": 1873,
                            "end": 1876,
                            "ctxt": 0
                          },
                          "typeAnnotation": {
                            "type": "TsTypeReference",
                            "span": {
                              "start": 1875,
                              "end": 1876,
                              "ctxt": 0
                            },
                            "typeName": {
                              "type": "Identifier",
                              "span": {
                                "start": 1875,
                                "end": 1876,
                                "ctxt": 0
                              },
                              "value": "T",
                              "optional": false
                            },
                            "typeParams": null
                          }
                        }
                      }
                    ],
                    "typeParams": null,
                    "typeAnnotation": {
                      "type": "TsTypeAnnotation",
                      "span": {
                        "start": 1878,
                        "end": 1882,
                        "ctxt": 0
                      },
                      "typeAnnotation": {
                        "type": "TsTypeReference",
                        "span": {
                          "start": 1881,
                          "end": 1882,
                          "ctxt": 0
                        },
                        "typeName": {
                          "type": "Identifier",
                          "span": {
                            "start": 1881,
                            "end": 1882,
                            "ctxt": 0
                          },
                          "value": "T",
                          "optional": false
                        },
                        "typeParams": null
                      }
                    }
                  }
                },
                "isStatic": false,
                "decorators": [],
                "accessibility": null,
                "isAbstract": false,
                "isOptional": false,
                "isOverride": false,
                "readonly": false,
                "declare": false,
                "definite": false
              },
              {
                "type": "ClassProperty",
                "span": {
                  "start": 1892,
                  "end": 1908,
                  "ctxt": 0
                },
                "key": {
                  "type": "Identifier",
                  "span": {
                    "start": 1892,
                    "end": 1894,
                    "ctxt": 0
                  },
                  "value": "a3",
                  "optional": false
                },
                "value": null,
                "typeAnnotation": {
                  "type": "TsTypeAnnotation",
                  "span": {
                    "start": 1894,
                    "end": 1907,
                    "ctxt": 0
                  },
                  "typeAnnotation": {
                    "type": "TsFunctionType",
                    "span": {
                      "start": 1896,
                      "end": 1907,
                      "ctxt": 0
                    },
                    "params": [
                      {
                        "type": "Identifier",
                        "span": {
                          "start": 1897,
                          "end": 1901,
                          "ctxt": 0
                        },
                        "value": "x",
                        "optional": false,
                        "typeAnnotation": {
                          "type": "TsTypeAnnotation",
                          "span": {
                            "start": 1898,
                            "end": 1901,
                            "ctxt": 0
                          },
                          "typeAnnotation": {
                            "type": "TsTypeReference",
                            "span": {
                              "start": 1900,
                              "end": 1901,
                              "ctxt": 0
                            },
                            "typeName": {
                              "type": "Identifier",
                              "span": {
                                "start": 1900,
                                "end": 1901,
                                "ctxt": 0
                              },
                              "value": "T",
                              "optional": false
                            },
                            "typeParams": null
                          }
                        }
                      }
                    ],
                    "typeParams": null,
                    "typeAnnotation": {
                      "type": "TsTypeAnnotation",
                      "span": {
                        "start": 1903,
                        "end": 1907,
                        "ctxt": 0
                      },
                      "typeAnnotation": {
                        "type": "TsTypeReference",
                        "span": {
                          "start": 1906,
                          "end": 1907,
                          "ctxt": 0
                        },
                        "typeName": {
                          "type": "Identifier",
                          "span": {
                            "start": 1906,
                            "end": 1907,
                            "ctxt": 0
                          },
                          "value": "T",
                          "optional": false
                        },
                        "typeParams": null
                      }
                    }
                  }
                },
                "isStatic": false,
                "decorators": [],
                "accessibility": null,
                "isAbstract": false,
                "isOptional": false,
                "isOverride": false,
                "readonly": false,
                "declare": false,
                "definite": false
              },
              {
                "type": "ClassProperty",
                "span": {
                  "start": 1917,
                  "end": 1940,
                  "ctxt": 0
                },
                "key": {
                  "type": "Identifier",
                  "span": {
                    "start": 1917,
                    "end": 1919,
                    "ctxt": 0
                  },
                  "value": "a4",
                  "optional": false
                },
                "value": null,
                "typeAnnotation": {
                  "type": "TsTypeAnnotation",
                  "span": {
                    "start": 1919,
                    "end": 1939,
                    "ctxt": 0
                  },
                  "typeAnnotation": {
                    "type": "TsFunctionType",
                    "span": {
                      "start": 1921,
                      "end": 1939,
                      "ctxt": 0
                    },
                    "params": [
                      {
                        "type": "Identifier",
                        "span": {
                          "start": 1922,
                          "end": 1926,
                          "ctxt": 0
                        },
                        "value": "x",
                        "optional": false,
                        "typeAnnotation": {
                          "type": "TsTypeAnnotation",
                          "span": {
                            "start": 1923,
                            "end": 1926,
                            "ctxt": 0
                          },
                          "typeAnnotation": {
                            "type": "TsTypeReference",
                            "span": {
                              "start": 1925,
                              "end": 1926,
                              "ctxt": 0
                            },
                            "typeName": {
                              "type": "Identifier",
                              "span": {
                                "start": 1925,
                                "end": 1926,
                                "ctxt": 0
                              },
                              "value": "T",
                              "optional": false
                            },
                            "typeParams": null
                          }
                        }
                      },
                      {
                        "type": "Identifier",
                        "span": {
                          "start": 1928,
                          "end": 1933,
                          "ctxt": 0
                        },
                        "value": "y",
                        "optional": true,
                        "typeAnnotation": {
                          "type": "TsTypeAnnotation",
                          "span": {
                            "start": 1930,
                            "end": 1933,
                            "ctxt": 0
                          },
                          "typeAnnotation": {
                            "type": "TsTypeReference",
                            "span": {
                              "start": 1932,
                              "end": 1933,
                              "ctxt": 0
                            },
                            "typeName": {
                              "type": "Identifier",
                              "span": {
                                "start": 1932,
                                "end": 1933,
                                "ctxt": 0
                              },
                              "value": "T",
                              "optional": false
                            },
                            "typeParams": null
                          }
                        }
                      }
                    ],
                    "typeParams": null,
                    "typeAnnotation": {
                      "type": "TsTypeAnnotation",
                      "span": {
                        "start": 1935,
                        "end": 1939,
                        "ctxt": 0
                      },
                      "typeAnnotation": {
                        "type": "TsTypeReference",
                        "span": {
                          "start": 1938,
                          "end": 1939,
                          "ctxt": 0
                        },
                        "typeName": {
                          "type": "Identifier",
                          "span": {
                            "start": 1938,
                            "end": 1939,
                            "ctxt": 0
                          },
                          "value": "T",
                          "optional": false
                        },
                        "typeParams": null
                      }
                    }
                  }
                },
                "isStatic": false,
                "decorators": [],
                "accessibility": null,
                "isAbstract": false,
                "isOptional": false,
                "isOverride": false,
                "readonly": false,
                "declare": false,
                "definite": false
              },
              {
                "type": "ClassProperty",
                "span": {
                  "start": 1949,
                  "end": 1973,
                  "ctxt": 0
                },
                "key": {
                  "type": "Identifier",
                  "span": {
                    "start": 1949,
                    "end": 1951,
                    "ctxt": 0
                  },
                  "value": "a5",
                  "optional": false
                },
                "value": null,
                "typeAnnotation": {
                  "type": "TsTypeAnnotation",
                  "span": {
                    "start": 1951,
                    "end": 1972,
                    "ctxt": 0
                  },
                  "typeAnnotation": {
                    "type": "TsFunctionType",
                    "span": {
                      "start": 1953,
                      "end": 1972,
                      "ctxt": 0
                    },
                    "params": [
                      {
                        "type": "Identifier",
                        "span": {
                          "start": 1954,
                          "end": 1959,
                          "ctxt": 0
                        },
                        "value": "x",
                        "optional": true,
                        "typeAnnotation": {
                          "type": "TsTypeAnnotation",
                          "span": {
                            "start": 1956,
                            "end": 1959,
                            "ctxt": 0
                          },
                          "typeAnnotation": {
                            "type": "TsTypeReference",
                            "span": {
                              "start": 1958,
                              "end": 1959,
                              "ctxt": 0
                            },
                            "typeName": {
                              "type": "Identifier",
                              "span": {
                                "start": 1958,
                                "end": 1959,
                                "ctxt": 0
                              },
                              "value": "T",
                              "optional": false
                            },
                            "typeParams": null
                          }
                        }
                      },
                      {
                        "type": "Identifier",
                        "span": {
                          "start": 1961,
                          "end": 1966,
                          "ctxt": 0
                        },
                        "value": "y",
                        "optional": true,
                        "typeAnnotation": {
                          "type": "TsTypeAnnotation",
                          "span": {
                            "start": 1963,
                            "end": 1966,
                            "ctxt": 0
                          },
                          "typeAnnotation": {
                            "type": "TsTypeReference",
                            "span": {
                              "start": 1965,
                              "end": 1966,
                              "ctxt": 0
                            },
                            "typeName": {
                              "type": "Identifier",
                              "span": {
                                "start": 1965,
                                "end": 1966,
                                "ctxt": 0
                              },
                              "value": "T",
                              "optional": false
                            },
                            "typeParams": null
                          }
                        }
                      }
                    ],
                    "typeParams": null,
                    "typeAnnotation": {
                      "type": "TsTypeAnnotation",
                      "span": {
                        "start": 1968,
                        "end": 1972,
                        "ctxt": 0
                      },
                      "typeAnnotation": {
                        "type": "TsTypeReference",
                        "span": {
                          "start": 1971,
                          "end": 1972,
                          "ctxt": 0
                        },
                        "typeName": {
                          "type": "Identifier",
                          "span": {
                            "start": 1971,
                            "end": 1972,
                            "ctxt": 0
                          },
                          "value": "T",
                          "optional": false
                        },
                        "typeParams": null
                      }
                    }
                  }
                },
                "isStatic": false,
                "decorators": [],
                "accessibility": null,
                "isAbstract": false,
                "isOptional": false,
                "isOverride": false,
                "readonly": false,
                "declare": false,
                "definite": false
              }
            ],
            "superClass": null,
            "isAbstract": false,
            "typeParams": {
              "type": "TsTypeParameterDeclaration",
              "span": {
                "start": 1832,
                "end": 1835,
                "ctxt": 0
              },
              "parameters": [
                {
                  "type": "TsTypeParameter",
                  "span": {
                    "start": 1833,
                    "end": 1834,
                    "ctxt": 0
                  },
                  "name": {
                    "type": "Identifier",
                    "span": {
                      "start": 1833,
                      "end": 1834,
                      "ctxt": 0
                    },
                    "value": "T",
                    "optional": false
                  },
                  "in": false,
                  "out": false,
                  "constraint": null,
                  "default": null
                }
              ]
            },
            "superTypeParams": null,
            "implements": []
          },
          {
            "type": "FunctionDeclaration",
            "identifier": {
              "type": "Identifier",
              "span": {
                "start": 1995,
                "end": 1998,
                "ctxt": 0
              },
              "value": "foo",
              "optional": false
            },
            "declare": false,
            "params": [],
            "decorators": [],
            "span": {
              "start": 1986,
              "end": 2601,
              "ctxt": 0
            },
            "body": {
              "type": "BlockStatement",
              "span": {
                "start": 2004,
                "end": 2601,
                "ctxt": 0
              },
              "stmts": [
                {
                  "type": "VariableDeclaration",
                  "span": {
                    "start": 2014,
                    "end": 2027,
                    "ctxt": 0
                  },
                  "kind": "var",
                  "declare": false,
                  "declarations": [
                    {
                      "type": "VariableDeclarator",
                      "span": {
                        "start": 2018,
                        "end": 2026,
                        "ctxt": 0
                      },
                      "id": {
                        "type": "Identifier",
                        "span": {
                          "start": 2018,
                          "end": 2019,
                          "ctxt": 0
                        },
                        "value": "b",
                        "optional": false,
                        "typeAnnotation": {
                          "type": "TsTypeAnnotation",
                          "span": {
                            "start": 2019,
                            "end": 2026,
                            "ctxt": 0
                          },
                          "typeAnnotation": {
                            "type": "TsTypeReference",
                            "span": {
                              "start": 2021,
                              "end": 2026,
                              "ctxt": 0
                            },
                            "typeName": {
                              "type": "Identifier",
                              "span": {
                                "start": 2021,
                                "end": 2026,
                                "ctxt": 0
                              },
                              "value": "Base2",
                              "optional": false
                            },
                            "typeParams": null
                          }
                        }
                      },
                      "init": null,
                      "definite": false
                    }
                  ]
                },
                {
                  "type": "VariableDeclaration",
                  "span": {
                    "start": 2036,
                    "end": 2053,
                    "ctxt": 0
                  },
                  "kind": "var",
                  "declare": false,
                  "declarations": [
                    {
                      "type": "VariableDeclarator",
                      "span": {
                        "start": 2040,
                        "end": 2052,
                        "ctxt": 0
                      },
                      "id": {
                        "type": "Identifier",
                        "span": {
                          "start": 2040,
                          "end": 2041,
                          "ctxt": 0
                        },
                        "value": "t",
                        "optional": false,
                        "typeAnnotation": {
                          "type": "TsTypeAnnotation",
                          "span": {
                            "start": 2041,
                            "end": 2052,
                            "ctxt": 0
                          },
                          "typeAnnotation": {
                            "type": "TsTypeReference",
                            "span": {
                              "start": 2043,
                              "end": 2052,
                              "ctxt": 0
                            },
                            "typeName": {
                              "type": "Identifier",
                              "span": {
                                "start": 2043,
                                "end": 2049,
                                "ctxt": 0
                              },
                              "value": "Target",
                              "optional": false
                            },
                            "typeParams": {
                              "type": "TsTypeParameterInstantiation",
                              "span": {
                                "start": 2049,
                                "end": 2052,
                                "ctxt": 0
                              },
                              "params": [
                                {
                                  "type": "TsTypeReference",
                                  "span": {
                                    "start": 2050,
                                    "end": 2051,
                                    "ctxt": 0
                                  },
                                  "typeName": {
                                    "type": "Identifier",
                                    "span": {
                                      "start": 2050,
                                      "end": 2051,
                                      "ctxt": 0
                                    },
                                    "value": "T",
                                    "optional": false
                                  },
                                  "typeParams": null
                                }
                              ]
                            }
                          }
                        }
                      },
                      "init": null,
                      "definite": false
                    }
                  ]
                },
                {
                  "type": "ExpressionStatement",
                  "span": {
                    "start": 2085,
                    "end": 2095,
                    "ctxt": 0
                  },
                  "expression": {
                    "type": "AssignmentExpression",
                    "span": {
                      "start": 2085,
                      "end": 2094,
                      "ctxt": 0
                    },
                    "operator": "=",
                    "left": {
                      "type": "MemberExpression",
                      "span": {
                        "start": 2085,
                        "end": 2088,
                        "ctxt": 0
                      },
                      "object": {
                        "type": "Identifier",
                        "span": {
                          "start": 2085,
                          "end": 2086,
                          "ctxt": 0
                        },
                        "value": "b",
                        "optional": false
                      },
                      "property": {
                        "type": "Identifier",
                        "span": {
                          "start": 2087,
                          "end": 2088,
                          "ctxt": 0
                        },
                        "value": "a",
                        "optional": false
                      }
                    },
                    "right": {
                      "type": "MemberExpression",
                      "span": {
                        "start": 2091,
                        "end": 2094,
                        "ctxt": 0
                      },
                      "object": {
                        "type": "Identifier",
                        "span": {
                          "start": 2091,
                          "end": 2092,
                          "ctxt": 0
                        },
                        "value": "t",
                        "optional": false
                      },
                      "property": {
                        "type": "Identifier",
                        "span": {
                          "start": 2093,
                          "end": 2094,
                          "ctxt": 0
                        },
                        "value": "a",
                        "optional": false
                      }
                    }
                  }
                },
                {
                  "type": "ExpressionStatement",
                  "span": {
                    "start": 2104,
                    "end": 2115,
                    "ctxt": 0
                  },
                  "expression": {
                    "type": "AssignmentExpression",
                    "span": {
                      "start": 2104,
                      "end": 2114,
                      "ctxt": 0
                    },
                    "operator": "=",
                    "left": {
                      "type": "MemberExpression",
                      "span": {
                        "start": 2104,
                        "end": 2107,
                        "ctxt": 0
                      },
                      "object": {
                        "type": "Identifier",
                        "span": {
                          "start": 2104,
                          "end": 2105,
                          "ctxt": 0
                        },
                        "value": "b",
                        "optional": false
                      },
                      "property": {
                        "type": "Identifier",
                        "span": {
                          "start": 2106,
                          "end": 2107,
                          "ctxt": 0
                        },
                        "value": "a",
                        "optional": false
                      }
                    },
                    "right": {
                      "type": "MemberExpression",
                      "span": {
                        "start": 2110,
                        "end": 2114,
                        "ctxt": 0
                      },
                      "object": {
                        "type": "Identifier",
                        "span": {
                          "start": 2110,
                          "end": 2111,
                          "ctxt": 0
                        },
                        "value": "t",
                        "optional": false
                      },
                      "property": {
                        "type": "Identifier",
                        "span": {
                          "start": 2112,
                          "end": 2114,
                          "ctxt": 0
                        },
                        "value": "a2",
                        "optional": false
                      }
                    }
                  }
                },
                {
                  "type": "ExpressionStatement",
                  "span": {
                    "start": 2124,
                    "end": 2135,
                    "ctxt": 0
                  },
                  "expression": {
                    "type": "AssignmentExpression",
                    "span": {
                      "start": 2124,
                      "end": 2134,
                      "ctxt": 0
                    },
                    "operator": "=",
                    "left": {
                      "type": "MemberExpression",
                      "span": {
                        "start": 2124,
                        "end": 2127,
                        "ctxt": 0
                      },
                      "object": {
                        "type": "Identifier",
                        "span": {
                          "start": 2124,
                          "end": 2125,
                          "ctxt": 0
                        },
                        "value": "b",
                        "optional": false
                      },
                      "property": {
                        "type": "Identifier",
                        "span": {
                          "start": 2126,
                          "end": 2127,
                          "ctxt": 0
                        },
                        "value": "a",
                        "optional": false
                      }
                    },
                    "right": {
                      "type": "MemberExpression",
                      "span": {
                        "start": 2130,
                        "end": 2134,
                        "ctxt": 0
                      },
                      "object": {
                        "type": "Identifier",
                        "span": {
                          "start": 2130,
                          "end": 2131,
                          "ctxt": 0
                        },
                        "value": "t",
                        "optional": false
                      },
                      "property": {
                        "type": "Identifier",
                        "span": {
                          "start": 2132,
                          "end": 2134,
                          "ctxt": 0
                        },
                        "value": "a3",
                        "optional": false
                      }
                    }
                  }
                },
                {
                  "type": "ExpressionStatement",
                  "span": {
                    "start": 2144,
                    "end": 2155,
                    "ctxt": 0
                  },
                  "expression": {
                    "type": "AssignmentExpression",
                    "span": {
                      "start": 2144,
                      "end": 2154,
                      "ctxt": 0
                    },
                    "operator": "=",
                    "left": {
                      "type": "MemberExpression",
                      "span": {
                        "start": 2144,
                        "end": 2147,
                        "ctxt": 0
                      },
                      "object": {
                        "type": "Identifier",
                        "span": {
                          "start": 2144,
                          "end": 2145,
                          "ctxt": 0
                        },
                        "value": "b",
                        "optional": false
                      },
                      "property": {
                        "type": "Identifier",
                        "span": {
                          "start": 2146,
                          "end": 2147,
                          "ctxt": 0
                        },
                        "value": "a",
                        "optional": false
                      }
                    },
                    "right": {
                      "type": "MemberExpression",
                      "span": {
                        "start": 2150,
                        "end": 2154,
                        "ctxt": 0
                      },
                      "object": {
                        "type": "Identifier",
                        "span": {
                          "start": 2150,
                          "end": 2151,
                          "ctxt": 0
                        },
                        "value": "t",
                        "optional": false
                      },
                      "property": {
                        "type": "Identifier",
                        "span": {
                          "start": 2152,
                          "end": 2154,
                          "ctxt": 0
                        },
                        "value": "a4",
                        "optional": false
                      }
                    }
                  }
                },
                {
                  "type": "ExpressionStatement",
                  "span": {
                    "start": 2164,
                    "end": 2175,
                    "ctxt": 0
                  },
                  "expression": {
                    "type": "AssignmentExpression",
                    "span": {
                      "start": 2164,
                      "end": 2174,
                      "ctxt": 0
                    },
                    "operator": "=",
                    "left": {
                      "type": "MemberExpression",
                      "span": {
                        "start": 2164,
                        "end": 2167,
                        "ctxt": 0
                      },
                      "object": {
                        "type": "Identifier",
                        "span": {
                          "start": 2164,
                          "end": 2165,
                          "ctxt": 0
                        },
                        "value": "b",
                        "optional": false
                      },
                      "property": {
                        "type": "Identifier",
                        "span": {
                          "start": 2166,
                          "end": 2167,
                          "ctxt": 0
                        },
                        "value": "a",
                        "optional": false
                      }
                    },
                    "right": {
                      "type": "MemberExpression",
                      "span": {
                        "start": 2170,
                        "end": 2174,
                        "ctxt": 0
                      },
                      "object": {
                        "type": "Identifier",
                        "span": {
                          "start": 2170,
                          "end": 2171,
                          "ctxt": 0
                        },
                        "value": "t",
                        "optional": false
                      },
                      "property": {
                        "type": "Identifier",
                        "span": {
                          "start": 2172,
                          "end": 2174,
                          "ctxt": 0
                        },
                        "value": "a5",
                        "optional": false
                      }
                    }
                  }
                },
                {
                  "type": "ExpressionStatement",
                  "span": {
                    "start": 2185,
                    "end": 2196,
                    "ctxt": 0
                  },
                  "expression": {
                    "type": "AssignmentExpression",
                    "span": {
                      "start": 2185,
                      "end": 2195,
                      "ctxt": 0
                    },
                    "operator": "=",
                    "left": {
                      "type": "MemberExpression",
                      "span": {
                        "start": 2185,
                        "end": 2189,
                        "ctxt": 0
                      },
                      "object": {
                        "type": "Identifier",
                        "span": {
                          "start": 2185,
                          "end": 2186,
                          "ctxt": 0
                        },
                        "value": "b",
                        "optional": false
                      },
                      "property": {
                        "type": "Identifier",
                        "span": {
                          "start": 2187,
                          "end": 2189,
                          "ctxt": 0
                        },
                        "value": "a2",
                        "optional": false
                      }
                    },
                    "right": {
                      "type": "MemberExpression",
                      "span": {
                        "start": 2192,
                        "end": 2195,
                        "ctxt": 0
                      },
                      "object": {
                        "type": "Identifier",
                        "span": {
                          "start": 2192,
                          "end": 2193,
                          "ctxt": 0
                        },
                        "value": "t",
                        "optional": false
                      },
                      "property": {
                        "type": "Identifier",
                        "span": {
                          "start": 2194,
                          "end": 2195,
                          "ctxt": 0
                        },
                        "value": "a",
                        "optional": false
                      }
                    }
                  }
                },
                {
                  "type": "ExpressionStatement",
                  "span": {
                    "start": 2205,
                    "end": 2217,
                    "ctxt": 0
                  },
                  "expression": {
                    "type": "AssignmentExpression",
                    "span": {
                      "start": 2205,
                      "end": 2216,
                      "ctxt": 0
                    },
                    "operator": "=",
                    "left": {
                      "type": "MemberExpression",
                      "span": {
                        "start": 2205,
                        "end": 2209,
                        "ctxt": 0
                      },
                      "object": {
                        "type": "Identifier",
                        "span": {
                          "start": 2205,
                          "end": 2206,
                          "ctxt": 0
                        },
                        "value": "b",
                        "optional": false
                      },
                      "property": {
                        "type": "Identifier",
                        "span": {
                          "start": 2207,
                          "end": 2209,
                          "ctxt": 0
                        },
                        "value": "a2",
                        "optional": false
                      }
                    },
                    "right": {
                      "type": "MemberExpression",
                      "span": {
                        "start": 2212,
                        "end": 2216,
                        "ctxt": 0
                      },
                      "object": {
                        "type": "Identifier",
                        "span": {
                          "start": 2212,
                          "end": 2213,
                          "ctxt": 0
                        },
                        "value": "t",
                        "optional": false
                      },
                      "property": {
                        "type": "Identifier",
                        "span": {
                          "start": 2214,
                          "end": 2216,
                          "ctxt": 0
                        },
                        "value": "a2",
                        "optional": false
                      }
                    }
                  }
                },
                {
                  "type": "ExpressionStatement",
                  "span": {
                    "start": 2226,
                    "end": 2238,
                    "ctxt": 0
                  },
                  "expression": {
                    "type": "AssignmentExpression",
                    "span": {
                      "start": 2226,
                      "end": 2237,
                      "ctxt": 0
                    },
                    "operator": "=",
                    "left": {
                      "type": "MemberExpression",
                      "span": {
                        "start": 2226,
                        "end": 2230,
                        "ctxt": 0
                      },
                      "object": {
                        "type": "Identifier",
                        "span": {
                          "start": 2226,
                          "end": 2227,
                          "ctxt": 0
                        },
                        "value": "b",
                        "optional": false
                      },
                      "property": {
                        "type": "Identifier",
                        "span": {
                          "start": 2228,
                          "end": 2230,
                          "ctxt": 0
                        },
                        "value": "a2",
                        "optional": false
                      }
                    },
                    "right": {
                      "type": "MemberExpression",
                      "span": {
                        "start": 2233,
                        "end": 2237,
                        "ctxt": 0
                      },
                      "object": {
                        "type": "Identifier",
                        "span": {
                          "start": 2233,
                          "end": 2234,
                          "ctxt": 0
                        },
                        "value": "t",
                        "optional": false
                      },
                      "property": {
                        "type": "Identifier",
                        "span": {
                          "start": 2235,
                          "end": 2237,
                          "ctxt": 0
                        },
                        "value": "a3",
                        "optional": false
                      }
                    }
                  }
                },
                {
                  "type": "ExpressionStatement",
                  "span": {
                    "start": 2247,
                    "end": 2259,
                    "ctxt": 0
                  },
                  "expression": {
                    "type": "AssignmentExpression",
                    "span": {
                      "start": 2247,
                      "end": 2258,
                      "ctxt": 0
                    },
                    "operator": "=",
                    "left": {
                      "type": "MemberExpression",
                      "span": {
                        "start": 2247,
                        "end": 2251,
                        "ctxt": 0
                      },
                      "object": {
                        "type": "Identifier",
                        "span": {
                          "start": 2247,
                          "end": 2248,
                          "ctxt": 0
                        },
                        "value": "b",
                        "optional": false
                      },
                      "property": {
                        "type": "Identifier",
                        "span": {
                          "start": 2249,
                          "end": 2251,
                          "ctxt": 0
                        },
                        "value": "a2",
                        "optional": false
                      }
                    },
                    "right": {
                      "type": "MemberExpression",
                      "span": {
                        "start": 2254,
                        "end": 2258,
                        "ctxt": 0
                      },
                      "object": {
                        "type": "Identifier",
                        "span": {
                          "start": 2254,
                          "end": 2255,
                          "ctxt": 0
                        },
                        "value": "t",
                        "optional": false
                      },
                      "property": {
                        "type": "Identifier",
                        "span": {
                          "start": 2256,
                          "end": 2258,
                          "ctxt": 0
                        },
                        "value": "a4",
                        "optional": false
                      }
                    }
                  }
                },
                {
                  "type": "ExpressionStatement",
                  "span": {
                    "start": 2268,
                    "end": 2280,
                    "ctxt": 0
                  },
                  "expression": {
                    "type": "AssignmentExpression",
                    "span": {
                      "start": 2268,
                      "end": 2279,
                      "ctxt": 0
                    },
                    "operator": "=",
                    "left": {
                      "type": "MemberExpression",
                      "span": {
                        "start": 2268,
                        "end": 2272,
                        "ctxt": 0
                      },
                      "object": {
                        "type": "Identifier",
                        "span": {
                          "start": 2268,
                          "end": 2269,
                          "ctxt": 0
                        },
                        "value": "b",
                        "optional": false
                      },
                      "property": {
                        "type": "Identifier",
                        "span": {
                          "start": 2270,
                          "end": 2272,
                          "ctxt": 0
                        },
                        "value": "a2",
                        "optional": false
                      }
                    },
                    "right": {
                      "type": "MemberExpression",
                      "span": {
                        "start": 2275,
                        "end": 2279,
                        "ctxt": 0
                      },
                      "object": {
                        "type": "Identifier",
                        "span": {
                          "start": 2275,
                          "end": 2276,
                          "ctxt": 0
                        },
                        "value": "t",
                        "optional": false
                      },
                      "property": {
                        "type": "Identifier",
                        "span": {
                          "start": 2277,
                          "end": 2279,
                          "ctxt": 0
                        },
                        "value": "a5",
                        "optional": false
                      }
                    }
                  }
                },
                {
                  "type": "ExpressionStatement",
                  "span": {
                    "start": 2290,
                    "end": 2301,
                    "ctxt": 0
                  },
                  "expression": {
                    "type": "AssignmentExpression",
                    "span": {
                      "start": 2290,
                      "end": 2300,
                      "ctxt": 0
                    },
                    "operator": "=",
                    "left": {
                      "type": "MemberExpression",
                      "span": {
                        "start": 2290,
                        "end": 2294,
                        "ctxt": 0
                      },
                      "object": {
                        "type": "Identifier",
                        "span": {
                          "start": 2290,
                          "end": 2291,
                          "ctxt": 0
                        },
                        "value": "b",
                        "optional": false
                      },
                      "property": {
                        "type": "Identifier",
                        "span": {
                          "start": 2292,
                          "end": 2294,
                          "ctxt": 0
                        },
                        "value": "a3",
                        "optional": false
                      }
                    },
                    "right": {
                      "type": "MemberExpression",
                      "span": {
                        "start": 2297,
                        "end": 2300,
                        "ctxt": 0
                      },
                      "object": {
                        "type": "Identifier",
                        "span": {
                          "start": 2297,
                          "end": 2298,
                          "ctxt": 0
                        },
                        "value": "t",
                        "optional": false
                      },
                      "property": {
                        "type": "Identifier",
                        "span": {
                          "start": 2299,
                          "end": 2300,
                          "ctxt": 0
                        },
                        "value": "a",
                        "optional": false
                      }
                    }
                  }
                },
                {
                  "type": "ExpressionStatement",
                  "span": {
                    "start": 2310,
                    "end": 2322,
                    "ctxt": 0
                  },
                  "expression": {
                    "type": "AssignmentExpression",
                    "span": {
                      "start": 2310,
                      "end": 2321,
                      "ctxt": 0
                    },
                    "operator": "=",
                    "left": {
                      "type": "MemberExpression",
                      "span": {
                        "start": 2310,
                        "end": 2314,
                        "ctxt": 0
                      },
                      "object": {
                        "type": "Identifier",
                        "span": {
                          "start": 2310,
                          "end": 2311,
                          "ctxt": 0
                        },
                        "value": "b",
                        "optional": false
                      },
                      "property": {
                        "type": "Identifier",
                        "span": {
                          "start": 2312,
                          "end": 2314,
                          "ctxt": 0
                        },
                        "value": "a3",
                        "optional": false
                      }
                    },
                    "right": {
                      "type": "MemberExpression",
                      "span": {
                        "start": 2317,
                        "end": 2321,
                        "ctxt": 0
                      },
                      "object": {
                        "type": "Identifier",
                        "span": {
                          "start": 2317,
                          "end": 2318,
                          "ctxt": 0
                        },
                        "value": "t",
                        "optional": false
                      },
                      "property": {
                        "type": "Identifier",
                        "span": {
                          "start": 2319,
                          "end": 2321,
                          "ctxt": 0
                        },
                        "value": "a2",
                        "optional": false
                      }
                    }
                  }
                },
                {
                  "type": "ExpressionStatement",
                  "span": {
                    "start": 2331,
                    "end": 2343,
                    "ctxt": 0
                  },
                  "expression": {
                    "type": "AssignmentExpression",
                    "span": {
                      "start": 2331,
                      "end": 2342,
                      "ctxt": 0
                    },
                    "operator": "=",
                    "left": {
                      "type": "MemberExpression",
                      "span": {
                        "start": 2331,
                        "end": 2335,
                        "ctxt": 0
                      },
                      "object": {
                        "type": "Identifier",
                        "span": {
                          "start": 2331,
                          "end": 2332,
                          "ctxt": 0
                        },
                        "value": "b",
                        "optional": false
                      },
                      "property": {
                        "type": "Identifier",
                        "span": {
                          "start": 2333,
                          "end": 2335,
                          "ctxt": 0
                        },
                        "value": "a3",
                        "optional": false
                      }
                    },
                    "right": {
                      "type": "MemberExpression",
                      "span": {
                        "start": 2338,
                        "end": 2342,
                        "ctxt": 0
                      },
                      "object": {
                        "type": "Identifier",
                        "span": {
                          "start": 2338,
                          "end": 2339,
                          "ctxt": 0
                        },
                        "value": "t",
                        "optional": false
                      },
                      "property": {
                        "type": "Identifier",
                        "span": {
                          "start": 2340,
                          "end": 2342,
                          "ctxt": 0
                        },
                        "value": "a3",
                        "optional": false
                      }
                    }
                  }
                },
                {
                  "type": "ExpressionStatement",
                  "span": {
                    "start": 2352,
                    "end": 2364,
                    "ctxt": 0
                  },
                  "expression": {
                    "type": "AssignmentExpression",
                    "span": {
                      "start": 2352,
                      "end": 2363,
                      "ctxt": 0
                    },
                    "operator": "=",
                    "left": {
                      "type": "MemberExpression",
                      "span": {
                        "start": 2352,
                        "end": 2356,
                        "ctxt": 0
                      },
                      "object": {
                        "type": "Identifier",
                        "span": {
                          "start": 2352,
                          "end": 2353,
                          "ctxt": 0
                        },
                        "value": "b",
                        "optional": false
                      },
                      "property": {
                        "type": "Identifier",
                        "span": {
                          "start": 2354,
                          "end": 2356,
                          "ctxt": 0
                        },
                        "value": "a3",
                        "optional": false
                      }
                    },
                    "right": {
                      "type": "MemberExpression",
                      "span": {
                        "start": 2359,
                        "end": 2363,
                        "ctxt": 0
                      },
                      "object": {
                        "type": "Identifier",
                        "span": {
                          "start": 2359,
                          "end": 2360,
                          "ctxt": 0
                        },
                        "value": "t",
                        "optional": false
                      },
                      "property": {
                        "type": "Identifier",
                        "span": {
                          "start": 2361,
                          "end": 2363,
                          "ctxt": 0
                        },
                        "value": "a4",
                        "optional": false
                      }
                    }
                  }
                },
                {
                  "type": "ExpressionStatement",
                  "span": {
                    "start": 2373,
                    "end": 2385,
                    "ctxt": 0
                  },
                  "expression": {
                    "type": "AssignmentExpression",
                    "span": {
                      "start": 2373,
                      "end": 2384,
                      "ctxt": 0
                    },
                    "operator": "=",
                    "left": {
                      "type": "MemberExpression",
                      "span": {
                        "start": 2373,
                        "end": 2377,
                        "ctxt": 0
                      },
                      "object": {
                        "type": "Identifier",
                        "span": {
                          "start": 2373,
                          "end": 2374,
                          "ctxt": 0
                        },
                        "value": "b",
                        "optional": false
                      },
                      "property": {
                        "type": "Identifier",
                        "span": {
                          "start": 2375,
                          "end": 2377,
                          "ctxt": 0
                        },
                        "value": "a3",
                        "optional": false
                      }
                    },
                    "right": {
                      "type": "MemberExpression",
                      "span": {
                        "start": 2380,
                        "end": 2384,
                        "ctxt": 0
                      },
                      "object": {
                        "type": "Identifier",
                        "span": {
                          "start": 2380,
                          "end": 2381,
                          "ctxt": 0
                        },
                        "value": "t",
                        "optional": false
                      },
                      "property": {
                        "type": "Identifier",
                        "span": {
                          "start": 2382,
                          "end": 2384,
                          "ctxt": 0
                        },
                        "value": "a5",
                        "optional": false
                      }
                    }
                  }
                },
                {
                  "type": "ExpressionStatement",
                  "span": {
                    "start": 2395,
                    "end": 2406,
                    "ctxt": 0
                  },
                  "expression": {
                    "type": "AssignmentExpression",
                    "span": {
                      "start": 2395,
                      "end": 2405,
                      "ctxt": 0
                    },
                    "operator": "=",
                    "left": {
                      "type": "MemberExpression",
                      "span": {
                        "start": 2395,
                        "end": 2399,
                        "ctxt": 0
                      },
                      "object": {
                        "type": "Identifier",
                        "span": {
                          "start": 2395,
                          "end": 2396,
                          "ctxt": 0
                        },
                        "value": "b",
                        "optional": false
                      },
                      "property": {
                        "type": "Identifier",
                        "span": {
                          "start": 2397,
                          "end": 2399,
                          "ctxt": 0
                        },
                        "value": "a4",
                        "optional": false
                      }
                    },
                    "right": {
                      "type": "MemberExpression",
                      "span": {
                        "start": 2402,
                        "end": 2405,
                        "ctxt": 0
                      },
                      "object": {
                        "type": "Identifier",
                        "span": {
                          "start": 2402,
                          "end": 2403,
                          "ctxt": 0
                        },
                        "value": "t",
                        "optional": false
                      },
                      "property": {
                        "type": "Identifier",
                        "span": {
                          "start": 2404,
                          "end": 2405,
                          "ctxt": 0
                        },
                        "value": "a",
                        "optional": false
                      }
                    }
                  }
                },
                {
                  "type": "ExpressionStatement",
                  "span": {
                    "start": 2415,
                    "end": 2427,
                    "ctxt": 0
                  },
                  "expression": {
                    "type": "AssignmentExpression",
                    "span": {
                      "start": 2415,
                      "end": 2426,
                      "ctxt": 0
                    },
                    "operator": "=",
                    "left": {
                      "type": "MemberExpression",
                      "span": {
                        "start": 2415,
                        "end": 2419,
                        "ctxt": 0
                      },
                      "object": {
                        "type": "Identifier",
                        "span": {
                          "start": 2415,
                          "end": 2416,
                          "ctxt": 0
                        },
                        "value": "b",
                        "optional": false
                      },
                      "property": {
                        "type": "Identifier",
                        "span": {
                          "start": 2417,
                          "end": 2419,
                          "ctxt": 0
                        },
                        "value": "a4",
                        "optional": false
                      }
                    },
                    "right": {
                      "type": "MemberExpression",
                      "span": {
                        "start": 2422,
                        "end": 2426,
                        "ctxt": 0
                      },
                      "object": {
                        "type": "Identifier",
                        "span": {
                          "start": 2422,
                          "end": 2423,
                          "ctxt": 0
                        },
                        "value": "t",
                        "optional": false
                      },
                      "property": {
                        "type": "Identifier",
                        "span": {
                          "start": 2424,
                          "end": 2426,
                          "ctxt": 0
                        },
                        "value": "a2",
                        "optional": false
                      }
                    }
                  }
                },
                {
                  "type": "ExpressionStatement",
                  "span": {
                    "start": 2436,
                    "end": 2448,
                    "ctxt": 0
                  },
                  "expression": {
                    "type": "AssignmentExpression",
                    "span": {
                      "start": 2436,
                      "end": 2447,
                      "ctxt": 0
                    },
                    "operator": "=",
                    "left": {
                      "type": "MemberExpression",
                      "span": {
                        "start": 2436,
                        "end": 2440,
                        "ctxt": 0
                      },
                      "object": {
                        "type": "Identifier",
                        "span": {
                          "start": 2436,
                          "end": 2437,
                          "ctxt": 0
                        },
                        "value": "b",
                        "optional": false
                      },
                      "property": {
                        "type": "Identifier",
                        "span": {
                          "start": 2438,
                          "end": 2440,
                          "ctxt": 0
                        },
                        "value": "a4",
                        "optional": false
                      }
                    },
                    "right": {
                      "type": "MemberExpression",
                      "span": {
                        "start": 2443,
                        "end": 2447,
                        "ctxt": 0
                      },
                      "object": {
                        "type": "Identifier",
                        "span": {
                          "start": 2443,
                          "end": 2444,
                          "ctxt": 0
                        },
                        "value": "t",
                        "optional": false
                      },
                      "property": {
                        "type": "Identifier",
                        "span": {
                          "start": 2445,
                          "end": 2447,
                          "ctxt": 0
                        },
                        "value": "a3",
                        "optional": false
                      }
                    }
                  }
                },
                {
                  "type": "ExpressionStatement",
                  "span": {
                    "start": 2457,
                    "end": 2469,
                    "ctxt": 0
                  },
                  "expression": {
                    "type": "AssignmentExpression",
                    "span": {
                      "start": 2457,
                      "end": 2468,
                      "ctxt": 0
                    },
                    "operator": "=",
                    "left": {
                      "type": "MemberExpression",
                      "span": {
                        "start": 2457,
                        "end": 2461,
                        "ctxt": 0
                      },
                      "object": {
                        "type": "Identifier",
                        "span": {
                          "start": 2457,
                          "end": 2458,
                          "ctxt": 0
                        },
                        "value": "b",
                        "optional": false
                      },
                      "property": {
                        "type": "Identifier",
                        "span": {
                          "start": 2459,
                          "end": 2461,
                          "ctxt": 0
                        },
                        "value": "a4",
                        "optional": false
                      }
                    },
                    "right": {
                      "type": "MemberExpression",
                      "span": {
                        "start": 2464,
                        "end": 2468,
                        "ctxt": 0
                      },
                      "object": {
                        "type": "Identifier",
                        "span": {
                          "start": 2464,
                          "end": 2465,
                          "ctxt": 0
                        },
                        "value": "t",
                        "optional": false
                      },
                      "property": {
                        "type": "Identifier",
                        "span": {
                          "start": 2466,
                          "end": 2468,
                          "ctxt": 0
                        },
                        "value": "a4",
                        "optional": false
                      }
                    }
                  }
                },
                {
                  "type": "ExpressionStatement",
                  "span": {
                    "start": 2478,
                    "end": 2490,
                    "ctxt": 0
                  },
                  "expression": {
                    "type": "AssignmentExpression",
                    "span": {
                      "start": 2478,
                      "end": 2489,
                      "ctxt": 0
                    },
                    "operator": "=",
                    "left": {
                      "type": "MemberExpression",
                      "span": {
                        "start": 2478,
                        "end": 2482,
                        "ctxt": 0
                      },
                      "object": {
                        "type": "Identifier",
                        "span": {
                          "start": 2478,
                          "end": 2479,
                          "ctxt": 0
                        },
                        "value": "b",
                        "optional": false
                      },
                      "property": {
                        "type": "Identifier",
                        "span": {
                          "start": 2480,
                          "end": 2482,
                          "ctxt": 0
                        },
                        "value": "a4",
                        "optional": false
                      }
                    },
                    "right": {
                      "type": "MemberExpression",
                      "span": {
                        "start": 2485,
                        "end": 2489,
                        "ctxt": 0
                      },
                      "object": {
                        "type": "Identifier",
                        "span": {
                          "start": 2485,
                          "end": 2486,
                          "ctxt": 0
                        },
                        "value": "t",
                        "optional": false
                      },
                      "property": {
                        "type": "Identifier",
                        "span": {
                          "start": 2487,
                          "end": 2489,
                          "ctxt": 0
                        },
                        "value": "a5",
                        "optional": false
                      }
                    }
                  }
                },
                {
                  "type": "ExpressionStatement",
                  "span": {
                    "start": 2500,
                    "end": 2511,
                    "ctxt": 0
                  },
                  "expression": {
                    "type": "AssignmentExpression",
                    "span": {
                      "start": 2500,
                      "end": 2510,
                      "ctxt": 0
                    },
                    "operator": "=",
                    "left": {
                      "type": "MemberExpression",
                      "span": {
                        "start": 2500,
                        "end": 2504,
                        "ctxt": 0
                      },
                      "object": {
                        "type": "Identifier",
                        "span": {
                          "start": 2500,
                          "end": 2501,
                          "ctxt": 0
                        },
                        "value": "b",
                        "optional": false
                      },
                      "property": {
                        "type": "Identifier",
                        "span": {
                          "start": 2502,
                          "end": 2504,
                          "ctxt": 0
                        },
                        "value": "a5",
                        "optional": false
                      }
                    },
                    "right": {
                      "type": "MemberExpression",
                      "span": {
                        "start": 2507,
                        "end": 2510,
                        "ctxt": 0
                      },
                      "object": {
                        "type": "Identifier",
                        "span": {
                          "start": 2507,
                          "end": 2508,
                          "ctxt": 0
                        },
                        "value": "t",
                        "optional": false
                      },
                      "property": {
                        "type": "Identifier",
                        "span": {
                          "start": 2509,
                          "end": 2510,
                          "ctxt": 0
                        },
                        "value": "a",
                        "optional": false
                      }
                    }
                  }
                },
                {
                  "type": "ExpressionStatement",
                  "span": {
                    "start": 2520,
                    "end": 2532,
                    "ctxt": 0
                  },
                  "expression": {
                    "type": "AssignmentExpression",
                    "span": {
                      "start": 2520,
                      "end": 2531,
                      "ctxt": 0
                    },
                    "operator": "=",
                    "left": {
                      "type": "MemberExpression",
                      "span": {
                        "start": 2520,
                        "end": 2524,
                        "ctxt": 0
                      },
                      "object": {
                        "type": "Identifier",
                        "span": {
                          "start": 2520,
                          "end": 2521,
                          "ctxt": 0
                        },
                        "value": "b",
                        "optional": false
                      },
                      "property": {
                        "type": "Identifier",
                        "span": {
                          "start": 2522,
                          "end": 2524,
                          "ctxt": 0
                        },
                        "value": "a5",
                        "optional": false
                      }
                    },
                    "right": {
                      "type": "MemberExpression",
                      "span": {
                        "start": 2527,
                        "end": 2531,
                        "ctxt": 0
                      },
                      "object": {
                        "type": "Identifier",
                        "span": {
                          "start": 2527,
                          "end": 2528,
                          "ctxt": 0
                        },
                        "value": "t",
                        "optional": false
                      },
                      "property": {
                        "type": "Identifier",
                        "span": {
                          "start": 2529,
                          "end": 2531,
                          "ctxt": 0
                        },
                        "value": "a2",
                        "optional": false
                      }
                    }
                  }
                },
                {
                  "type": "ExpressionStatement",
                  "span": {
                    "start": 2541,
                    "end": 2553,
                    "ctxt": 0
                  },
                  "expression": {
                    "type": "AssignmentExpression",
                    "span": {
                      "start": 2541,
                      "end": 2552,
                      "ctxt": 0
                    },
                    "operator": "=",
                    "left": {
                      "type": "MemberExpression",
                      "span": {
                        "start": 2541,
                        "end": 2545,
                        "ctxt": 0
                      },
                      "object": {
                        "type": "Identifier",
                        "span": {
                          "start": 2541,
                          "end": 2542,
                          "ctxt": 0
                        },
                        "value": "b",
                        "optional": false
                      },
                      "property": {
                        "type": "Identifier",
                        "span": {
                          "start": 2543,
                          "end": 2545,
                          "ctxt": 0
                        },
                        "value": "a5",
                        "optional": false
                      }
                    },
                    "right": {
                      "type": "MemberExpression",
                      "span": {
                        "start": 2548,
                        "end": 2552,
                        "ctxt": 0
                      },
                      "object": {
                        "type": "Identifier",
                        "span": {
                          "start": 2548,
                          "end": 2549,
                          "ctxt": 0
                        },
                        "value": "t",
                        "optional": false
                      },
                      "property": {
                        "type": "Identifier",
                        "span": {
                          "start": 2550,
                          "end": 2552,
                          "ctxt": 0
                        },
                        "value": "a3",
                        "optional": false
                      }
                    }
                  }
                },
                {
                  "type": "ExpressionStatement",
                  "span": {
                    "start": 2562,
                    "end": 2574,
                    "ctxt": 0
                  },
                  "expression": {
                    "type": "AssignmentExpression",
                    "span": {
                      "start": 2562,
                      "end": 2573,
                      "ctxt": 0
                    },
                    "operator": "=",
                    "left": {
                      "type": "MemberExpression",
                      "span": {
                        "start": 2562,
                        "end": 2566,
                        "ctxt": 0
                      },
                      "object": {
                        "type": "Identifier",
                        "span": {
                          "start": 2562,
                          "end": 2563,
                          "ctxt": 0
                        },
                        "value": "b",
                        "optional": false
                      },
                      "property": {
                        "type": "Identifier",
                        "span": {
                          "start": 2564,
                          "end": 2566,
                          "ctxt": 0
                        },
                        "value": "a5",
                        "optional": false
                      }
                    },
                    "right": {
                      "type": "MemberExpression",
                      "span": {
                        "start": 2569,
                        "end": 2573,
                        "ctxt": 0
                      },
                      "object": {
                        "type": "Identifier",
                        "span": {
                          "start": 2569,
                          "end": 2570,
                          "ctxt": 0
                        },
                        "value": "t",
                        "optional": false
                      },
                      "property": {
                        "type": "Identifier",
                        "span": {
                          "start": 2571,
                          "end": 2573,
                          "ctxt": 0
                        },
                        "value": "a4",
                        "optional": false
                      }
                    }
                  }
                },
                {
                  "type": "ExpressionStatement",
                  "span": {
                    "start": 2583,
                    "end": 2595,
                    "ctxt": 0
                  },
                  "expression": {
                    "type": "AssignmentExpression",
                    "span": {
                      "start": 2583,
                      "end": 2594,
                      "ctxt": 0
                    },
                    "operator": "=",
                    "left": {
                      "type": "MemberExpression",
                      "span": {
                        "start": 2583,
                        "end": 2587,
                        "ctxt": 0
                      },
                      "object": {
                        "type": "Identifier",
                        "span": {
                          "start": 2583,
                          "end": 2584,
                          "ctxt": 0
                        },
                        "value": "b",
                        "optional": false
                      },
                      "property": {
                        "type": "Identifier",
                        "span": {
                          "start": 2585,
                          "end": 2587,
                          "ctxt": 0
                        },
                        "value": "a5",
                        "optional": false
                      }
                    },
                    "right": {
                      "type": "MemberExpression",
                      "span": {
                        "start": 2590,
                        "end": 2594,
                        "ctxt": 0
                      },
                      "object": {
                        "type": "Identifier",
                        "span": {
                          "start": 2590,
                          "end": 2591,
                          "ctxt": 0
                        },
                        "value": "t",
                        "optional": false
                      },
                      "property": {
                        "type": "Identifier",
                        "span": {
                          "start": 2592,
                          "end": 2594,
                          "ctxt": 0
                        },
                        "value": "a5",
                        "optional": false
                      }
                    }
                  }
                }
              ]
            },
            "generator": false,
            "async": false,
            "typeParameters": {
              "type": "TsTypeParameterDeclaration",
              "span": {
                "start": 1998,
                "end": 2001,
                "ctxt": 0
              },
              "parameters": [
                {
                  "type": "TsTypeParameter",
                  "span": {
                    "start": 1999,
                    "end": 2000,
                    "ctxt": 0
                  },
                  "name": {
                    "type": "Identifier",
                    "span": {
                      "start": 1999,
                      "end": 2000,
                      "ctxt": 0
                    },
                    "value": "T",
                    "optional": false
                  },
                  "in": false,
                  "out": false,
                  "constraint": null,
                  "default": null
                }
              ]
            },
            "returnType": null
          }
        ]
      }
    },
    {
      "type": "TsModuleDeclaration",
      "span": {
        "start": 2605,
        "end": 4169,
        "ctxt": 0
      },
      "declare": false,
      "global": false,
      "id": {
        "type": "Identifier",
        "span": {
          "start": 2612,
          "end": 2634,
          "ctxt": 0
        },
        "value": "GenericSignaturesValid",
        "optional": false
      },
      "body": {
        "type": "TsModuleBlock",
        "span": {
          "start": 2635,
          "end": 4169,
          "ctxt": 0
        },
        "body": [
          {
            "type": "ClassDeclaration",
            "identifier": {
              "type": "Identifier",
              "span": {
                "start": 2648,
                "end": 2653,
                "ctxt": 0
              },
              "value": "Base2",
              "optional": false
            },
            "declare": false,
            "span": {
              "start": 2642,
              "end": 4167,
              "ctxt": 0
            },
            "decorators": [],
            "body": [
              {
                "type": "ClassProperty",
                "span": {
                  "start": 2664,
                  "end": 2678,
                  "ctxt": 0
                },
                "key": {
                  "type": "Identifier",
                  "span": {
                    "start": 2664,
                    "end": 2665,
                    "ctxt": 0
                  },
                  "value": "a",
                  "optional": false
                },
                "value": null,
                "typeAnnotation": {
                  "type": "TsTypeAnnotation",
                  "span": {
                    "start": 2665,
                    "end": 2677,
                    "ctxt": 0
                  },
                  "typeAnnotation": {
                    "type": "TsFunctionType",
                    "span": {
                      "start": 2667,
                      "end": 2677,
                      "ctxt": 0
                    },
                    "params": [],
                    "typeParams": {
                      "type": "TsTypeParameterDeclaration",
                      "span": {
                        "start": 2667,
                        "end": 2670,
                        "ctxt": 0
                      },
                      "parameters": [
                        {
                          "type": "TsTypeParameter",
                          "span": {
                            "start": 2668,
                            "end": 2669,
                            "ctxt": 0
                          },
                          "name": {
                            "type": "Identifier",
                            "span": {
                              "start": 2668,
                              "end": 2669,
                              "ctxt": 0
                            },
                            "value": "T",
                            "optional": false
                          },
                          "in": false,
                          "out": false,
                          "constraint": null,
                          "default": null
                        }
                      ]
                    },
                    "typeAnnotation": {
                      "type": "TsTypeAnnotation",
                      "span": {
                        "start": 2673,
                        "end": 2677,
                        "ctxt": 0
                      },
                      "typeAnnotation": {
                        "type": "TsTypeReference",
                        "span": {
                          "start": 2676,
                          "end": 2677,
                          "ctxt": 0
                        },
                        "typeName": {
                          "type": "Identifier",
                          "span": {
                            "start": 2676,
                            "end": 2677,
                            "ctxt": 0
                          },
                          "value": "T",
                          "optional": false
                        },
                        "typeParams": null
                      }
                    }
                  }
                },
                "isStatic": false,
                "decorators": [],
                "accessibility": null,
                "isAbstract": false,
                "isOptional": false,
                "isOverride": false,
                "readonly": false,
                "declare": false,
                "definite": false
              },
              {
                "type": "ClassProperty",
                "span": {
                  "start": 2687,
                  "end": 2707,
                  "ctxt": 0
                },
                "key": {
                  "type": "Identifier",
                  "span": {
                    "start": 2687,
                    "end": 2689,
                    "ctxt": 0
                  },
                  "value": "a2",
                  "optional": false
                },
                "value": null,
                "typeAnnotation": {
                  "type": "TsTypeAnnotation",
                  "span": {
                    "start": 2689,
                    "end": 2706,
                    "ctxt": 0
                  },
                  "typeAnnotation": {
                    "type": "TsFunctionType",
                    "span": {
                      "start": 2691,
                      "end": 2706,
                      "ctxt": 0
                    },
                    "params": [
                      {
                        "type": "Identifier",
                        "span": {
                          "start": 2695,
                          "end": 2700,
                          "ctxt": 0
                        },
                        "value": "x",
                        "optional": true,
                        "typeAnnotation": {
                          "type": "TsTypeAnnotation",
                          "span": {
                            "start": 2697,
                            "end": 2700,
                            "ctxt": 0
                          },
                          "typeAnnotation": {
                            "type": "TsTypeReference",
                            "span": {
                              "start": 2699,
                              "end": 2700,
                              "ctxt": 0
                            },
                            "typeName": {
                              "type": "Identifier",
                              "span": {
                                "start": 2699,
                                "end": 2700,
                                "ctxt": 0
                              },
                              "value": "T",
                              "optional": false
                            },
                            "typeParams": null
                          }
                        }
                      }
                    ],
                    "typeParams": {
                      "type": "TsTypeParameterDeclaration",
                      "span": {
                        "start": 2691,
                        "end": 2694,
                        "ctxt": 0
                      },
                      "parameters": [
                        {
                          "type": "TsTypeParameter",
                          "span": {
                            "start": 2692,
                            "end": 2693,
                            "ctxt": 0
                          },
                          "name": {
                            "type": "Identifier",
                            "span": {
                              "start": 2692,
                              "end": 2693,
                              "ctxt": 0
                            },
                            "value": "T",
                            "optional": false
                          },
                          "in": false,
                          "out": false,
                          "constraint": null,
                          "default": null
                        }
                      ]
                    },
                    "typeAnnotation": {
                      "type": "TsTypeAnnotation",
                      "span": {
                        "start": 2702,
                        "end": 2706,
                        "ctxt": 0
                      },
                      "typeAnnotation": {
                        "type": "TsTypeReference",
                        "span": {
                          "start": 2705,
                          "end": 2706,
                          "ctxt": 0
                        },
                        "typeName": {
                          "type": "Identifier",
                          "span": {
                            "start": 2705,
                            "end": 2706,
                            "ctxt": 0
                          },
                          "value": "T",
                          "optional": false
                        },
                        "typeParams": null
                      }
                    }
                  }
                },
                "isStatic": false,
                "decorators": [],
                "accessibility": null,
                "isAbstract": false,
                "isOptional": false,
                "isOverride": false,
                "readonly": false,
                "declare": false,
                "definite": false
              },
              {
                "type": "ClassProperty",
                "span": {
                  "start": 2716,
                  "end": 2735,
                  "ctxt": 0
                },
                "key": {
                  "type": "Identifier",
                  "span": {
                    "start": 2716,
                    "end": 2718,
                    "ctxt": 0
                  },
                  "value": "a3",
                  "optional": false
                },
                "value": null,
                "typeAnnotation": {
                  "type": "TsTypeAnnotation",
                  "span": {
                    "start": 2718,
                    "end": 2734,
                    "ctxt": 0
                  },
                  "typeAnnotation": {
                    "type": "TsFunctionType",
                    "span": {
                      "start": 2720,
                      "end": 2734,
                      "ctxt": 0
                    },
                    "params": [
                      {
                        "type": "Identifier",
                        "span": {
                          "start": 2724,
                          "end": 2728,
                          "ctxt": 0
                        },
                        "value": "x",
                        "optional": false,
                        "typeAnnotation": {
                          "type": "TsTypeAnnotation",
                          "span": {
                            "start": 2725,
                            "end": 2728,
                            "ctxt": 0
                          },
                          "typeAnnotation": {
                            "type": "TsTypeReference",
                            "span": {
                              "start": 2727,
                              "end": 2728,
                              "ctxt": 0
                            },
                            "typeName": {
                              "type": "Identifier",
                              "span": {
                                "start": 2727,
                                "end": 2728,
                                "ctxt": 0
                              },
                              "value": "T",
                              "optional": false
                            },
                            "typeParams": null
                          }
                        }
                      }
                    ],
                    "typeParams": {
                      "type": "TsTypeParameterDeclaration",
                      "span": {
                        "start": 2720,
                        "end": 2723,
                        "ctxt": 0
                      },
                      "parameters": [
                        {
                          "type": "TsTypeParameter",
                          "span": {
                            "start": 2721,
                            "end": 2722,
                            "ctxt": 0
                          },
                          "name": {
                            "type": "Identifier",
                            "span": {
                              "start": 2721,
                              "end": 2722,
                              "ctxt": 0
                            },
                            "value": "T",
                            "optional": false
                          },
                          "in": false,
                          "out": false,
                          "constraint": null,
                          "default": null
                        }
                      ]
                    },
                    "typeAnnotation": {
                      "type": "TsTypeAnnotation",
                      "span": {
                        "start": 2730,
                        "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
                      }
                    }
                  }
                },
                "isStatic": false,
                "decorators": [],
                "accessibility": null,
                "isAbstract": false,
                "isOptional": false,
                "isOverride": false,
                "readonly": false,
                "declare": false,
                "definite": false
              },
              {
                "type": "ClassProperty",
                "span": {
                  "start": 2744,
                  "end": 2770,
                  "ctxt": 0
                },
                "key": {
                  "type": "Identifier",
                  "span": {
                    "start": 2744,
                    "end": 2746,
                    "ctxt": 0
                  },
                  "value": "a4",
                  "optional": false
                },
                "value": null,
                "typeAnnotation": {
                  "type": "TsTypeAnnotation",
                  "span": {
                    "start": 2746,
                    "end": 2769,
                    "ctxt": 0
                  },
                  "typeAnnotation": {
                    "type": "TsFunctionType",
                    "span": {
                      "start": 2748,
                      "end": 2769,
                      "ctxt": 0
                    },
                    "params": [
                      {
                        "type": "Identifier",
                        "span": {
                          "start": 2752,
                          "end": 2756,
                          "ctxt": 0
                        },
                        "value": "x",
                        "optional": false,
                        "typeAnnotation": {
                          "type": "TsTypeAnnotation",
                          "span": {
                            "start": 2753,
                            "end": 2756,
                            "ctxt": 0
                          },
                          "typeAnnotation": {
                            "type": "TsTypeReference",
                            "span": {
                              "start": 2755,
                              "end": 2756,
                              "ctxt": 0
                            },
                            "typeName": {
                              "type": "Identifier",
                              "span": {
                                "start": 2755,
                                "end": 2756,
                                "ctxt": 0
                              },
                              "value": "T",
                              "optional": false
                            },
                            "typeParams": null
                          }
                        }
                      },
                      {
                        "type": "Identifier",
                        "span": {
                          "start": 2758,
                          "end": 2763,
                          "ctxt": 0
                        },
                        "value": "y",
                        "optional": true,
                        "typeAnnotation": {
                          "type": "TsTypeAnnotation",
                          "span": {
                            "start": 2760,
                            "end": 2763,
                            "ctxt": 0
                          },
                          "typeAnnotation": {
                            "type": "TsTypeReference",
                            "span": {
                              "start": 2762,
                              "end": 2763,
                              "ctxt": 0
                            },
                            "typeName": {
                              "type": "Identifier",
                              "span": {
                                "start": 2762,
                                "end": 2763,
                                "ctxt": 0
                              },
                              "value": "T",
                              "optional": false
                            },
                            "typeParams": null
                          }
                        }
                      }
                    ],
                    "typeParams": {
                      "type": "TsTypeParameterDeclaration",
                      "span": {
                        "start": 2748,
                        "end": 2751,
                        "ctxt": 0
                      },
                      "parameters": [
                        {
                          "type": "TsTypeParameter",
                          "span": {
                            "start": 2749,
                            "end": 2750,
                            "ctxt": 0
                          },
                          "name": {
                            "type": "Identifier",
                            "span": {
                              "start": 2749,
                              "end": 2750,
                              "ctxt": 0
                            },
                            "value": "T",
                            "optional": false
                          },
                          "in": false,
                          "out": false,
                          "constraint": null,
                          "default": null
                        }
                      ]
                    },
                    "typeAnnotation": {
                      "type": "TsTypeAnnotation",
                      "span": {
                        "start": 2765,
                        "end": 2769,
                        "ctxt": 0
                      },
                      "typeAnnotation": {
                        "type": "TsTypeReference",
                        "span": {
                          "start": 2768,
                          "end": 2769,
                          "ctxt": 0
                        },
                        "typeName": {
                          "type": "Identifier",
                          "span": {
                            "start": 2768,
                            "end": 2769,
                            "ctxt": 0
                          },
                          "value": "T",
                          "optional": false
                        },
                        "typeParams": null
                      }
                    }
                  }
                },
                "isStatic": false,
                "decorators": [],
                "accessibility": null,
                "isAbstract": false,
                "isOptional": false,
                "isOverride": false,
                "readonly": false,
                "declare": false,
                "definite": false
              },
              {
                "type": "ClassProperty",
                "span": {
                  "start": 2779,
                  "end": 2806,
                  "ctxt": 0
                },
                "key": {
                  "type": "Identifier",
                  "span": {
                    "start": 2779,
                    "end": 2781,
                    "ctxt": 0
                  },
                  "value": "a5",
                  "optional": false
                },
                "value": null,
                "typeAnnotation": {
                  "type": "TsTypeAnnotation",
                  "span": {
                    "start": 2781,
                    "end": 2805,
                    "ctxt": 0
                  },
                  "typeAnnotation": {
                    "type": "TsFunctionType",
                    "span": {
                      "start": 2783,
                      "end": 2805,
                      "ctxt": 0
                    },
                    "params": [
                      {
                        "type": "Identifier",
                        "span": {
                          "start": 2787,
                          "end": 2792,
                          "ctxt": 0
                        },
                        "value": "x",
                        "optional": true,
                        "typeAnnotation": {
                          "type": "TsTypeAnnotation",
                          "span": {
                            "start": 2789,
                            "end": 2792,
                            "ctxt": 0
                          },
                          "typeAnnotation": {
                            "type": "TsTypeReference",
                            "span": {
                              "start": 2791,
                              "end": 2792,
                              "ctxt": 0
                            },
                            "typeName": {
                              "type": "Identifier",
                              "span": {
                                "start": 2791,
                                "end": 2792,
                                "ctxt": 0
                              },
                              "value": "T",
                              "optional": false
                            },
                            "typeParams": null
                          }
                        }
                      },
                      {
                        "type": "Identifier",
                        "span": {
                          "start": 2794,
                          "end": 2799,
                          "ctxt": 0
                        },
                        "value": "y",
                        "optional": true,
                        "typeAnnotation": {
                          "type": "TsTypeAnnotation",
                          "span": {
                            "start": 2796,
                            "end": 2799,
                            "ctxt": 0
                          },
                          "typeAnnotation": {
                            "type": "TsTypeReference",
                            "span": {
                              "start": 2798,
                              "end": 2799,
                              "ctxt": 0
                            },
                            "typeName": {
                              "type": "Identifier",
                              "span": {
                                "start": 2798,
                                "end": 2799,
                                "ctxt": 0
                              },
                              "value": "T",
                              "optional": false
                            },
                            "typeParams": null
                          }
                        }
                      }
                    ],
                    "typeParams": {
                      "type": "TsTypeParameterDeclaration",
                      "span": {
                        "start": 2783,
                        "end": 2786,
                        "ctxt": 0
                      },
                      "parameters": [
                        {
                          "type": "TsTypeParameter",
                          "span": {
                            "start": 2784,
                            "end": 2785,
                            "ctxt": 0
                          },
                          "name": {
                            "type": "Identifier",
                            "span": {
                              "start": 2784,
                              "end": 2785,
                              "ctxt": 0
                            },
                            "value": "T",
                            "optional": false
                          },
                          "in": false,
                          "out": false,
                          "constraint": null,
                          "default": null
                        }
                      ]
                    },
                    "typeAnnotation": {
                      "type": "TsTypeAnnotation",
                      "span": {
                        "start": 2801,
                        "end": 2805,
                        "ctxt": 0
                      },
                      "typeAnnotation": {
                        "type": "TsTypeReference",
                        "span": {
                          "start": 2804,
                          "end": 2805,
                          "ctxt": 0
                        },
                        "typeName": {
                          "type": "Identifier",
                          "span": {
                            "start": 2804,
                            "end": 2805,
                            "ctxt": 0
                          },
                          "value": "T",
                          "optional": false
                        },
                        "typeParams": null
                      }
                    }
                  }
                },
                "isStatic": false,
                "decorators": [],
                "accessibility": null,
                "isAbstract": false,
                "isOptional": false,
                "isOverride": false,
                "readonly": false,
                "declare": false,
                "definite": false
              },
              {
                "type": "ClassProperty",
                "span": {
                  "start": 2816,
                  "end": 4161,
                  "ctxt": 0
                },
                "key": {
                  "type": "Identifier",
                  "span": {
                    "start": 2816,
                    "end": 2820,
                    "ctxt": 0
                  },
                  "value": "init",
                  "optional": false
                },
                "value": {
                  "type": "ArrowFunctionExpression",
                  "span": {
                    "start": 2823,
                    "end": 4161,
                    "ctxt": 0
                  },
                  "params": [],
                  "body": {
                    "type": "BlockStatement",
                    "span": {
                      "start": 2829,
                      "end": 4161,
                      "ctxt": 0
                    },
                    "stmts": [
                      {
                        "type": "ExpressionStatement",
                        "span": {
                          "start": 2843,
                          "end": 2866,
                          "ctxt": 0
                        },
                        "expression": {
                          "type": "AssignmentExpression",
                          "span": {
                            "start": 2843,
                            "end": 2865,
                            "ctxt": 0
                          },
                          "operator": "=",
                          "left": {
                            "type": "MemberExpression",
                            "span": {
                              "start": 2843,
                              "end": 2849,
                              "ctxt": 0
                            },
                            "object": {
                              "type": "ThisExpression",
                              "span": {
                                "start": 2843,
                                "end": 2847,
                                "ctxt": 0
                              }
                            },
                            "property": {
                              "type": "Identifier",
                              "span": {
                                "start": 2848,
                                "end": 2849,
                                "ctxt": 0
                              },
                              "value": "a",
                              "optional": false
                            }
                          },
                          "right": {
                            "type": "ArrowFunctionExpression",
                            "span": {
                              "start": 2852,
                              "end": 2865,
                              "ctxt": 0
                            },
                            "params": [],
                            "body": {
                              "type": "NullLiteral",
                              "span": {
                                "start": 2861,
                                "end": 2865,
                                "ctxt": 0
                              }
                            },
                            "async": false,
                            "generator": false,
                            "typeParameters": {
                              "type": "TsTypeParameterDeclaration",
                              "span": {
                                "start": 2852,
                                "end": 2855,
                                "ctxt": 0
                              },
                              "parameters": [
                                {
                                  "type": "TsTypeParameter",
                                  "span": {
                                    "start": 2853,
                                    "end": 2854,
                                    "ctxt": 0
                                  },
                                  "name": {
                                    "type": "Identifier",
                                    "span": {
                                      "start": 2853,
                                      "end": 2854,
                                      "ctxt": 0
                                    },
                                    "value": "T",
                                    "optional": false
                                  },
                                  "in": false,
                                  "out": false,
                                  "constraint": null,
                                  "default": null
                                }
                              ]
                            },
                            "returnType": null
                          }
                        }
                      },
                      {
                        "type": "ExpressionStatement",
                        "span": {
                          "start": 2912,
                          "end": 2940,
                          "ctxt": 0
                        },
                        "expression": {
                          "type": "AssignmentExpression",
                          "span": {
                            "start": 2912,
                            "end": 2939,
                            "ctxt": 0
                          },
                          "operator": "=",
                          "left": {
                            "type": "MemberExpression",
                            "span": {
                              "start": 2912,
                              "end": 2918,
                              "ctxt": 0
                            },
                            "object": {
                              "type": "ThisExpression",
                              "span": {
                                "start": 2912,
                                "end": 2916,
                                "ctxt": 0
                              }
                            },
                            "property": {
                              "type": "Identifier",
                              "span": {
                                "start": 2917,
                                "end": 2918,
                                "ctxt": 0
                              },
                              "value": "a",
                              "optional": false
                            }
                          },
                          "right": {
                            "type": "ArrowFunctionExpression",
                            "span": {
                              "start": 2921,
                              "end": 2939,
                              "ctxt": 0
                            },
                            "params": [
                              {
                                "type": "Identifier",
                                "span": {
                                  "start": 2925,
                                  "end": 2930,
                                  "ctxt": 0
                                },
                                "value": "x",
                                "optional": true,
                                "typeAnnotation": {
                                  "type": "TsTypeAnnotation",
                                  "span": {
                                    "start": 2927,
                                    "end": 2930,
                                    "ctxt": 0
                                  },
                                  "typeAnnotation": {
                                    "type": "TsTypeReference",
                                    "span": {
                                      "start": 2929,
                                      "end": 2930,
                                      "ctxt": 0
                                    },
                                    "typeName": {
                                      "type": "Identifier",
                                      "span": {
                                        "start": 2929,
                                        "end": 2930,
                                        "ctxt": 0
                                      },
                                      "value": "T",
                                      "optional": false
                                    },
                                    "typeParams": null
                                  }
                                }
                              }
                            ],
                            "body": {
                              "type": "NullLiteral",
                              "span": {
                                "start": 2935,
                                "end": 2939,
                                "ctxt": 0
                              }
                            },
                            "async": false,
                            "generator": false,
                            "typeParameters": {
                              "type": "TsTypeParameterDeclaration",
                              "span": {
                                "start": 2921,
                                "end": 2924,
                                "ctxt": 0
                              },
                              "parameters": [
                                {
                                  "type": "TsTypeParameter",
                                  "span": {
                                    "start": 2922,
                                    "end": 2923,
                                    "ctxt": 0
                                  },
                                  "name": {
                                    "type": "Identifier",
                                    "span": {
                                      "start": 2922,
                                      "end": 2923,
                                      "ctxt": 0
                                    },
                                    "value": "T",
                                    "optional": false
                                  },
                                  "in": false,
                                  "out": false,
                                  "constraint": null,
                                  "default": null
                                }
                              ]
                            },
                            "returnType": null
                          }
                        }
                      },
                      {
                        "type": "ExpressionStatement",
                        "span": {
                          "start": 2986,
                          "end": 3013,
                          "ctxt": 0
                        },
                        "expression": {
                          "type": "AssignmentExpression",
                          "span": {
                            "start": 2986,
                            "end": 3012,
                            "ctxt": 0
                          },
                          "operator": "=",
                          "left": {
                            "type": "MemberExpression",
                            "span": {
                              "start": 2986,
                              "end": 2992,
                              "ctxt": 0
                            },
                            "object": {
                              "type": "ThisExpression",
                              "span": {
                                "start": 2986,
                                "end": 2990,
                                "ctxt": 0
                              }
                            },
                            "property": {
                              "type": "Identifier",
                              "span": {
                                "start": 2991,
                                "end": 2992,
                                "ctxt": 0
                              },
                              "value": "a",
                              "optional": false
                            }
                          },
                          "right": {
                            "type": "ArrowFunctionExpression",
                            "span": {
                              "start": 2995,
                              "end": 3012,
                              "ctxt": 0
                            },
                            "params": [
                              {
                                "type": "Identifier",
                                "span": {
                                  "start": 2999,
                                  "end": 3003,
                                  "ctxt": 0
                                },
                                "value": "x",
                                "optional": false,
                                "typeAnnotation": {
                                  "type": "TsTypeAnnotation",
                                  "span": {
                                    "start": 3000,
                                    "end": 3003,
                                    "ctxt": 0
                                  },
                                  "typeAnnotation": {
                                    "type": "TsTypeReference",
                                    "span": {
                                      "start": 3002,
                                      "end": 3003,
                                      "ctxt": 0
                                    },
                                    "typeName": {
                                      "type": "Identifier",
                                      "span": {
                                        "start": 3002,
                                        "end": 3003,
                                        "ctxt": 0
                                      },
                                      "value": "T",
                                      "optional": false
                                    },
                                    "typeParams": null
                                  }
                                }
                              }
                            ],
                            "body": {
                              "type": "NullLiteral",
                              "span": {
                                "start": 3008,
                                "end": 3012,
                                "ctxt": 0
                              }
                            },
                            "async": false,
                            "generator": false,
                            "typeParameters": {
                              "type": "TsTypeParameterDeclaration",
                              "span": {
                                "start": 2995,
                                "end": 2998,
                                "ctxt": 0
                              },
                              "parameters": [
                                {
                                  "type": "TsTypeParameter",
                                  "span": {
                                    "start": 2996,
                                    "end": 2997,
                                    "ctxt": 0
                                  },
                                  "name": {
                                    "type": "Identifier",
                                    "span": {
                                      "start": 2996,
                                      "end": 2997,
                                      "ctxt": 0
                                    },
                                    "value": "T",
                                    "optional": false
                                  },
                                  "in": false,
                                  "out": false,
                                  "constraint": null,
                                  "default": null
                                }
                              ]
                            },
                            "returnType": null
                          }
                        }
                      },
                      {
                        "type": "ExpressionStatement",
                        "span": {
                          "start": 3062,
                          "end": 3086,
                          "ctxt": 0
                        },
                        "expression": {
                          "type": "AssignmentExpression",
                          "span": {
                            "start": 3062,
                            "end": 3085,
                            "ctxt": 0
                          },
                          "operator": "=",
                          "left": {
                            "type": "MemberExpression",
                            "span": {
                              "start": 3062,
                              "end": 3069,
                              "ctxt": 0
                            },
                            "object": {
                              "type": "ThisExpression",
                              "span": {
                                "start": 3062,
                                "end": 3066,
                                "ctxt": 0
                              }
                            },
                            "property": {
                              "type": "Identifier",
                              "span": {
                                "start": 3067,
                                "end": 3069,
                                "ctxt": 0
                              },
                              "value": "a2",
                              "optional": false
                            }
                          },
                          "right": {
                            "type": "ArrowFunctionExpression",
                            "span": {
                              "start": 3072,
                              "end": 3085,
                              "ctxt": 0
                            },
                            "params": [],
                            "body": {
                              "type": "NullLiteral",
                              "span": {
                                "start": 3081,
                                "end": 3085,
                                "ctxt": 0
                              }
                            },
                            "async": false,
                            "generator": false,
                            "typeParameters": {
                              "type": "TsTypeParameterDeclaration",
                              "span": {
                                "start": 3072,
                                "end": 3075,
                                "ctxt": 0
                              },
                              "parameters": [
                                {
                                  "type": "TsTypeParameter",
                                  "span": {
                                    "start": 3073,
                                    "end": 3074,
                                    "ctxt": 0
                                  },
                                  "name": {
                                    "type": "Identifier",
                                    "span": {
                                      "start": 3073,
                                      "end": 3074,
                                      "ctxt": 0
                                    },
                                    "value": "T",
                                    "optional": false
                                  },
                                  "in": false,
                                  "out": false,
                                  "constraint": null,
                                  "default": null
                                }
                              ]
                            },
                            "returnType": null
                          }
                        }
                      },
                      {
                        "type": "ExpressionStatement",
                        "span": {
                          "start": 3132,
                          "end": 3161,
                          "ctxt": 0
                        },
                        "expression": {
                          "type": "AssignmentExpression",
                          "span": {
                            "start": 3132,
                            "end": 3160,
                            "ctxt": 0
                          },
                          "operator": "=",
                          "left": {
                            "type": "MemberExpression",
                            "span": {
                              "start": 3132,
                              "end": 3139,
                              "ctxt": 0
                            },
                            "object": {
                              "type": "ThisExpression",
                              "span": {
                                "start": 3132,
                                "end": 3136,
                                "ctxt": 0
                              }
                            },
                            "property": {
                              "type": "Identifier",
                              "span": {
                                "start": 3137,
                                "end": 3139,
                                "ctxt": 0
                              },
                              "value": "a2",
                              "optional": false
                            }
                          },
                          "right": {
                            "type": "ArrowFunctionExpression",
                            "span": {
                              "start": 3142,
                              "end": 3160,
                              "ctxt": 0
                            },
                            "params": [
                              {
                                "type": "Identifier",
                                "span": {
                                  "start": 3146,
                                  "end": 3151,
                                  "ctxt": 0
                                },
                                "value": "x",
                                "optional": true,
                                "typeAnnotation": {
                                  "type": "TsTypeAnnotation",
                                  "span": {
                                    "start": 3148,
                                    "end": 3151,
                                    "ctxt": 0
                                  },
                                  "typeAnnotation": {
                                    "type": "TsTypeReference",
                                    "span": {
                                      "start": 3150,
                                      "end": 3151,
                                      "ctxt": 0
                                    },
                                    "typeName": {
                                      "type": "Identifier",
                                      "span": {
                                        "start": 3150,
                                        "end": 3151,
                                        "ctxt": 0
                                      },
                                      "value": "T",
                                      "optional": false
                                    },
                                    "typeParams": null
                                  }
                                }
                              }
                            ],
                            "body": {
                              "type": "NullLiteral",
                              "span": {
                                "start": 3156,
                                "end": 3160,
                                "ctxt": 0
                              }
                            },
                            "async": false,
                            "generator": false,
                            "typeParameters": {
                              "type": "TsTypeParameterDeclaration",
                              "span": {
                                "start": 3142,
                                "end": 3145,
                                "ctxt": 0
                              },
                              "parameters": [
                                {
                                  "type": "TsTypeParameter",
                                  "span": {
                                    "start": 3143,
                                    "end": 3144,
                                    "ctxt": 0
                                  },
                                  "name": {
                                    "type": "Identifier",
                                    "span": {
                                      "start": 3143,
                                      "end": 3144,
                                      "ctxt": 0
                                    },
                                    "value": "T",
                                    "optional": false
                                  },
                                  "in": false,
                                  "out": false,
                                  "constraint": null,
                                  "default": null
                                }
                              ]
                            },
                            "returnType": null
                          }
                        }
                      },
                      {
                        "type": "ExpressionStatement",
                        "span": {
                          "start": 3207,
                          "end": 3235,
                          "ctxt": 0
                        },
                        "expression": {
                          "type": "AssignmentExpression",
                          "span": {
                            "start": 3207,
                            "end": 3234,
                            "ctxt": 0
                          },
                          "operator": "=",
                          "left": {
                            "type": "MemberExpression",
                            "span": {
                              "start": 3207,
                              "end": 3214,
                              "ctxt": 0
                            },
                            "object": {
                              "type": "ThisExpression",
                              "span": {
                                "start": 3207,
                                "end": 3211,
                                "ctxt": 0
                              }
                            },
                            "property": {
                              "type": "Identifier",
                              "span": {
                                "start": 3212,
                                "end": 3214,
                                "ctxt": 0
                              },
                              "value": "a2",
                              "optional": false
                            }
                          },
                          "right": {
                            "type": "ArrowFunctionExpression",
                            "span": {
                              "start": 3217,
                              "end": 3234,
                              "ctxt": 0
                            },
                            "params": [
                              {
                                "type": "Identifier",
                                "span": {
                                  "start": 3221,
                                  "end": 3225,
                                  "ctxt": 0
                                },
                                "value": "x",
                                "optional": false,
                                "typeAnnotation": {
                                  "type": "TsTypeAnnotation",
                                  "span": {
                                    "start": 3222,
                                    "end": 3225,
                                    "ctxt": 0
                                  },
                                  "typeAnnotation": {
                                    "type": "TsTypeReference",
                                    "span": {
                                      "start": 3224,
                                      "end": 3225,
                                      "ctxt": 0
                                    },
                                    "typeName": {
                                      "type": "Identifier",
                                      "span": {
                                        "start": 3224,
                                        "end": 3225,
                                        "ctxt": 0
                                      },
                                      "value": "T",
                                      "optional": false
                                    },
                                    "typeParams": null
                                  }
                                }
                              }
                            ],
                            "body": {
                              "type": "NullLiteral",
                              "span": {
                                "start": 3230,
                                "end": 3234,
                                "ctxt": 0
                              }
                            },
                            "async": false,
                            "generator": false,
                            "typeParameters": {
                              "type": "TsTypeParameterDeclaration",
                              "span": {
                                "start": 3217,
                                "end": 3220,
                                "ctxt": 0
                              },
                              "parameters": [
                                {
                                  "type": "TsTypeParameter",
                                  "span": {
                                    "start": 3218,
                                    "end": 3219,
                                    "ctxt": 0
                                  },
                                  "name": {
                                    "type": "Identifier",
                                    "span": {
                                      "start": 3218,
                                      "end": 3219,
                                      "ctxt": 0
                                    },
                                    "value": "T",
                                    "optional": false
                                  },
                                  "in": false,
                                  "out": false,
                                  "constraint": null,
                                  "default": null
                                }
                              ]
                            },
                            "returnType": null
                          }
                        }
                      },
                      {
                        "type": "ExpressionStatement",
                        "span": {
                          "start": 3278,
                          "end": 3302,
                          "ctxt": 0
                        },
                        "expression": {
                          "type": "AssignmentExpression",
                          "span": {
                            "start": 3278,
                            "end": 3301,
                            "ctxt": 0
                          },
                          "operator": "=",
                          "left": {
                            "type": "MemberExpression",
                            "span": {
                              "start": 3278,
                              "end": 3285,
                              "ctxt": 0
                            },
                            "object": {
                              "type": "ThisExpression",
                              "span": {
                                "start": 3278,
                                "end": 3282,
                                "ctxt": 0
                              }
                            },
                            "property": {
                              "type": "Identifier",
                              "span": {
                                "start": 3283,
                                "end": 3285,
                                "ctxt": 0
                              },
                              "value": "a3",
                              "optional": false
                            }
                          },
                          "right": {
                            "type": "ArrowFunctionExpression",
                            "span": {
                              "start": 3288,
                              "end": 3301,
                              "ctxt": 0
                            },
                            "params": [],
                            "body": {
                              "type": "NullLiteral",
                              "span": {
                                "start": 3297,
                                "end": 3301,
                                "ctxt": 0
                              }
                            },
                            "async": false,
                            "generator": false,
                            "typeParameters": {
                              "type": "TsTypeParameterDeclaration",
                              "span": {
                                "start": 3288,
                                "end": 3291,
                                "ctxt": 0
                              },
                              "parameters": [
                                {
                                  "type": "TsTypeParameter",
                                  "span": {
                                    "start": 3289,
                                    "end": 3290,
                                    "ctxt": 0
                                  },
                                  "name": {
                                    "type": "Identifier",
                                    "span": {
                                      "start": 3289,
                                      "end": 3290,
                                      "ctxt": 0
                                    },
                                    "value": "T",
                                    "optional": false
                                  },
                                  "in": false,
                                  "out": false,
                                  "constraint": null,
                                  "default": null
                                }
                              ]
                            },
                            "returnType": null
                          }
                        }
                      },
                      {
                        "type": "ExpressionStatement",
                        "span": {
                          "start": 3344,
                          "end": 3373,
                          "ctxt": 0
                        },
                        "expression": {
                          "type": "AssignmentExpression",
                          "span": {
                            "start": 3344,
                            "end": 3372,
                            "ctxt": 0
                          },
                          "operator": "=",
                          "left": {
                            "type": "MemberExpression",
                            "span": {
                              "start": 3344,
                              "end": 3351,
                              "ctxt": 0
                            },
                            "object": {
                              "type": "ThisExpression",
                              "span": {
                                "start": 3344,
                                "end": 3348,
                                "ctxt": 0
                              }
                            },
                            "property": {
                              "type": "Identifier",
                              "span": {
                                "start": 3349,
                                "end": 3351,
                                "ctxt": 0
                              },
                              "value": "a3",
                              "optional": false
                            }
                          },
                          "right": {
                            "type": "ArrowFunctionExpression",
                            "span": {
                              "start": 3354,
                              "end": 3372,
                              "ctxt": 0
                            },
                            "params": [
                              {
                                "type": "Identifier",
                                "span": {
                                  "start": 3358,
                                  "end": 3363,
                                  "ctxt": 0
                                },
                                "value": "x",
                                "optional": true,
                                "typeAnnotation": {
                                  "type": "TsTypeAnnotation",
                                  "span": {
                                    "start": 3360,
                                    "end": 3363,
                                    "ctxt": 0
                                  },
                                  "typeAnnotation": {
                                    "type": "TsTypeReference",
                                    "span": {
                                      "start": 3362,
                                      "end": 3363,
                                      "ctxt": 0
                                    },
                                    "typeName": {
                                      "type": "Identifier",
                                      "span": {
                                        "start": 3362,
                                        "end": 3363,
                                        "ctxt": 0
                                      },
                                      "value": "T",
                                      "optional": false
                                    },
                                    "typeParams": null
                                  }
                                }
                              }
                            ],
                            "body": {
                              "type": "NullLiteral",
                              "span": {
                                "start": 3368,
                                "end": 3372,
                                "ctxt": 0
                              }
                            },
                            "async": false,
                            "generator": false,
                            "typeParameters": {
                              "type": "TsTypeParameterDeclaration",
                              "span": {
                                "start": 3354,
                                "end": 3357,
                                "ctxt": 0
                              },
                              "parameters": [
                                {
                                  "type": "TsTypeParameter",
                                  "span": {
                                    "start": 3355,
                                    "end": 3356,
                                    "ctxt": 0
                                  },
                                  "name": {
                                    "type": "Identifier",
                                    "span": {
                                      "start": 3355,
                                      "end": 3356,
                                      "ctxt": 0
                                    },
                                    "value": "T",
                                    "optional": false
                                  },
                                  "in": false,
                                  "out": false,
                                  "constraint": null,
                                  "default": null
                                }
                              ]
                            },
                            "returnType": null
                          }
                        }
                      },
                      {
                        "type": "ExpressionStatement",
                        "span": {
                          "start": 3415,
                          "end": 3443,
                          "ctxt": 0
                        },
                        "expression": {
                          "type": "AssignmentExpression",
                          "span": {
                            "start": 3415,
                            "end": 3442,
                            "ctxt": 0
                          },
                          "operator": "=",
                          "left": {
                            "type": "MemberExpression",
                            "span": {
                              "start": 3415,
                              "end": 3422,
                              "ctxt": 0
                            },
                            "object": {
                              "type": "ThisExpression",
                              "span": {
                                "start": 3415,
                                "end": 3419,
                                "ctxt": 0
                              }
                            },
                            "property": {
                              "type": "Identifier",
                              "span": {
                                "start": 3420,
                                "end": 3422,
                                "ctxt": 0
                              },
                              "value": "a3",
                              "optional": false
                            }
                          },
                          "right": {
                            "type": "ArrowFunctionExpression",
                            "span": {
                              "start": 3425,
                              "end": 3442,
                              "ctxt": 0
                            },
                            "params": [
                              {
                                "type": "Identifier",
                                "span": {
                                  "start": 3429,
                                  "end": 3433,
                                  "ctxt": 0
                                },
                                "value": "x",
                                "optional": false,
                                "typeAnnotation": {
                                  "type": "TsTypeAnnotation",
                                  "span": {
                                    "start": 3430,
                                    "end": 3433,
                                    "ctxt": 0
                                  },
                                  "typeAnnotation": {
                                    "type": "TsTypeReference",
                                    "span": {
                                      "start": 3432,
                                      "end": 3433,
                                      "ctxt": 0
                                    },
                                    "typeName": {
                                      "type": "Identifier",
                                      "span": {
                                        "start": 3432,
                                        "end": 3433,
                                        "ctxt": 0
                                      },
                                      "value": "T",
                                      "optional": false
                                    },
                                    "typeParams": null
                                  }
                                }
                              }
                            ],
                            "body": {
                              "type": "NullLiteral",
                              "span": {
                                "start": 3438,
                                "end": 3442,
                                "ctxt": 0
                              }
                            },
                            "async": false,
                            "generator": false,
                            "typeParameters": {
                              "type": "TsTypeParameterDeclaration",
                              "span": {
                                "start": 3425,
                                "end": 3428,
                                "ctxt": 0
                              },
                              "parameters": [
                                {
                                  "type": "TsTypeParameter",
                                  "span": {
                                    "start": 3426,
                                    "end": 3427,
                                    "ctxt": 0
                                  },
                                  "name": {
                                    "type": "Identifier",
                                    "span": {
                                      "start": 3426,
                                      "end": 3427,
                                      "ctxt": 0
                                    },
                                    "value": "T",
                                    "optional": false
                                  },
                                  "in": false,
                                  "out": false,
                                  "constraint": null,
                                  "default": null
                                }
                              ]
                            },
                            "returnType": null
                          }
                        }
                      },
                      {
                        "type": "ExpressionStatement",
                        "span": {
                          "start": 3489,
                          "end": 3523,
                          "ctxt": 0
                        },
                        "expression": {
                          "type": "AssignmentExpression",
                          "span": {
                            "start": 3489,
                            "end": 3522,
                            "ctxt": 0
                          },
                          "operator": "=",
                          "left": {
                            "type": "MemberExpression",
                            "span": {
                              "start": 3489,
                              "end": 3496,
                              "ctxt": 0
                            },
                            "object": {
                              "type": "ThisExpression",
                              "span": {
                                "start": 3489,
                                "end": 3493,
                                "ctxt": 0
                              }
                            },
                            "property": {
                              "type": "Identifier",
                              "span": {
                                "start": 3494,
                                "end": 3496,
                                "ctxt": 0
                              },
                              "value": "a3",
                              "optional": false
                            }
                          },
                          "right": {
                            "type": "ArrowFunctionExpression",
                            "span": {
                              "start": 3499,
                              "end": 3522,
                              "ctxt": 0
                            },
                            "params": [
                              {
                                "type": "Identifier",
                                "span": {
                                  "start": 3503,
                                  "end": 3507,
                                  "ctxt": 0
                                },
                                "value": "x",
                                "optional": false,
                                "typeAnnotation": {
                                  "type": "TsTypeAnnotation",
                                  "span": {
                                    "start": 3504,
                                    "end": 3507,
                                    "ctxt": 0
                                  },
                                  "typeAnnotation": {
                                    "type": "TsTypeReference",
                                    "span": {
                                      "start": 3506,
                                      "end": 3507,
                                      "ctxt": 0
                                    },
                                    "typeName": {
                                      "type": "Identifier",
                                      "span": {
                                        "start": 3506,
                                        "end": 3507,
                                        "ctxt": 0
                                      },
                                      "value": "T",
                                      "optional": false
                                    },
                                    "typeParams": null
                                  }
                                }
                              },
                              {
                                "type": "Identifier",
                                "span": {
                                  "start": 3509,
                                  "end": 3513,
                                  "ctxt": 0
                                },
                                "value": "y",
                                "optional": false,
                                "typeAnnotation": {
                                  "type": "TsTypeAnnotation",
                                  "span": {
                                    "start": 3510,
                                    "end": 3513,
                                    "ctxt": 0
                                  },
                                  "typeAnnotation": {
                                    "type": "TsTypeReference",
                                    "span": {
                                      "start": 3512,
                                      "end": 3513,
                                      "ctxt": 0
                                    },
                                    "typeName": {
                                      "type": "Identifier",
                                      "span": {
                                        "start": 3512,
                                        "end": 3513,
                                        "ctxt": 0
                                      },
                                      "value": "T",
                                      "optional": false
                                    },
                                    "typeParams": null
                                  }
                                }
                              }
                            ],
                            "body": {
                              "type": "NullLiteral",
                              "span": {
                                "start": 3518,
                                "end": 3522,
                                "ctxt": 0
                              }
                            },
                            "async": false,
                            "generator": false,
                            "typeParameters": {
                              "type": "TsTypeParameterDeclaration",
                              "span": {
                                "start": 3499,
                                "end": 3502,
                                "ctxt": 0
                              },
                              "parameters": [
                                {
                                  "type": "TsTypeParameter",
                                  "span": {
                                    "start": 3500,
                                    "end": 3501,
                                    "ctxt": 0
                                  },
                                  "name": {
                                    "type": "Identifier",
                                    "span": {
                                      "start": 3500,
                                      "end": 3501,
                                      "ctxt": 0
                                    },
                                    "value": "T",
                                    "optional": false
                                  },
                                  "in": false,
                                  "out": false,
                                  "constraint": null,
                                  "default": null
                                }
                              ]
                            },
                            "returnType": null
                          }
                        }
                      },
                      {
                        "type": "ExpressionStatement",
                        "span": {
                          "start": 3573,
                          "end": 3597,
                          "ctxt": 0
                        },
                        "expression": {
                          "type": "AssignmentExpression",
                          "span": {
                            "start": 3573,
                            "end": 3596,
                            "ctxt": 0
                          },
                          "operator": "=",
                          "left": {
                            "type": "MemberExpression",
                            "span": {
                              "start": 3573,
                              "end": 3580,
                              "ctxt": 0
                            },
                            "object": {
                              "type": "ThisExpression",
                              "span": {
                                "start": 3573,
                                "end": 3577,
                                "ctxt": 0
                              }
                            },
                            "property": {
                              "type": "Identifier",
                              "span": {
                                "start": 3578,
                                "end": 3580,
                                "ctxt": 0
                              },
                              "value": "a4",
                              "optional": false
                            }
                          },
                          "right": {
                            "type": "ArrowFunctionExpression",
                            "span": {
                              "start": 3583,
                              "end": 3596,
                              "ctxt": 0
                            },
                            "params": [],
                            "body": {
                              "type": "NullLiteral",
                              "span": {
                                "start": 3592,
                                "end": 3596,
                                "ctxt": 0
                              }
                            },
                            "async": false,
                            "generator": false,
                            "typeParameters": {
                              "type": "TsTypeParameterDeclaration",
                              "span": {
                                "start": 3583,
                                "end": 3586,
                                "ctxt": 0
                              },
                              "parameters": [
                                {
                                  "type": "TsTypeParameter",
                                  "span": {
                                    "start": 3584,
                                    "end": 3585,
                                    "ctxt": 0
                                  },
                                  "name": {
                                    "type": "Identifier",
                                    "span": {
                                      "start": 3584,
                                      "end": 3585,
                                      "ctxt": 0
                                    },
                                    "value": "T",
                                    "optional": false
                                  },
                                  "in": false,
                                  "out": false,
                                  "constraint": null,
                                  "default": null
                                }
                              ]
                            },
                            "returnType": null
                          }
                        }
                      },
                      {
                        "type": "ExpressionStatement",
                        "span": {
                          "start": 3639,
                          "end": 3675,
                          "ctxt": 0
                        },
                        "expression": {
                          "type": "AssignmentExpression",
                          "span": {
                            "start": 3639,
                            "end": 3674,
                            "ctxt": 0
                          },
                          "operator": "=",
                          "left": {
                            "type": "MemberExpression",
                            "span": {
                              "start": 3639,
                              "end": 3646,
                              "ctxt": 0
                            },
                            "object": {
                              "type": "ThisExpression",
                              "span": {
                                "start": 3639,
                                "end": 3643,
                                "ctxt": 0
                              }
                            },
                            "property": {
                              "type": "Identifier",
                              "span": {
                                "start": 3644,
                                "end": 3646,
                                "ctxt": 0
                              },
                              "value": "a4",
                              "optional": false
                            }
                          },
                          "right": {
                            "type": "ArrowFunctionExpression",
                            "span": {
                              "start": 3649,
                              "end": 3674,
                              "ctxt": 0
                            },
                            "params": [
                              {
                                "type": "Identifier",
                                "span": {
                                  "start": 3653,
                                  "end": 3658,
                                  "ctxt": 0
                                },
                                "value": "x",
                                "optional": true,
                                "typeAnnotation": {
                                  "type": "TsTypeAnnotation",
                                  "span": {
                                    "start": 3655,
                                    "end": 3658,
                                    "ctxt": 0
                                  },
                                  "typeAnnotation": {
                                    "type": "TsTypeReference",
                                    "span": {
                                      "start": 3657,
                                      "end": 3658,
                                      "ctxt": 0
                                    },
                                    "typeName": {
                                      "type": "Identifier",
                                      "span": {
                                        "start": 3657,
                                        "end": 3658,
                                        "ctxt": 0
                                      },
                                      "value": "T",
                                      "optional": false
                                    },
                                    "typeParams": null
                                  }
                                }
                              },
                              {
                                "type": "Identifier",
                                "span": {
                                  "start": 3660,
                                  "end": 3665,
                                  "ctxt": 0
                                },
                                "value": "y",
                                "optional": true,
                                "typeAnnotation": {
                                  "type": "TsTypeAnnotation",
                                  "span": {
                                    "start": 3662,
                                    "end": 3665,
                                    "ctxt": 0
                                  },
                                  "typeAnnotation": {
                                    "type": "TsTypeReference",
                                    "span": {
                                      "start": 3664,
                                      "end": 3665,
                                      "ctxt": 0
                                    },
                                    "typeName": {
                                      "type": "Identifier",
                                      "span": {
                                        "start": 3664,
                                        "end": 3665,
                                        "ctxt": 0
                                      },
                                      "value": "T",
                                      "optional": false
                                    },
                                    "typeParams": null
                                  }
                                }
                              }
                            ],
                            "body": {
                              "type": "NullLiteral",
                              "span": {
                                "start": 3670,
                                "end": 3674,
                                "ctxt": 0
                              }
                            },
                            "async": false,
                            "generator": false,
                            "typeParameters": {
                              "type": "TsTypeParameterDeclaration",
                              "span": {
                                "start": 3649,
                                "end": 3652,
                                "ctxt": 0
                              },
                              "parameters": [
                                {
                                  "type": "TsTypeParameter",
                                  "span": {
                                    "start": 3650,
                                    "end": 3651,
                                    "ctxt": 0
                                  },
                                  "name": {
                                    "type": "Identifier",
                                    "span": {
                                      "start": 3650,
                                      "end": 3651,
                                      "ctxt": 0
                                    },
                                    "value": "T",
                                    "optional": false
                                  },
                                  "in": false,
                                  "out": false,
                                  "constraint": null,
                                  "default": null
                                }
                              ]
                            },
                            "returnType": null
                          }
                        }
                      },
                      {
                        "type": "ExpressionStatement",
                        "span": {
                          "start": 3717,
                          "end": 3745,
                          "ctxt": 0
                        },
                        "expression": {
                          "type": "AssignmentExpression",
                          "span": {
                            "start": 3717,
                            "end": 3744,
                            "ctxt": 0
                          },
                          "operator": "=",
                          "left": {
                            "type": "MemberExpression",
                            "span": {
                              "start": 3717,
                              "end": 3724,
                              "ctxt": 0
                            },
                            "object": {
                              "type": "ThisExpression",
                              "span": {
                                "start": 3717,
                                "end": 3721,
                                "ctxt": 0
                              }
                            },
                            "property": {
                              "type": "Identifier",
                              "span": {
                                "start": 3722,
                                "end": 3724,
                                "ctxt": 0
                              },
                              "value": "a4",
                              "optional": false
                            }
                          },
                          "right": {
                            "type": "ArrowFunctionExpression",
                            "span": {
                              "start": 3727,
                              "end": 3744,
                              "ctxt": 0
                            },
                            "params": [
                              {
                                "type": "Identifier",
                                "span": {
                                  "start": 3731,
                                  "end": 3735,
                                  "ctxt": 0
                                },
                                "value": "x",
                                "optional": false,
                                "typeAnnotation": {
                                  "type": "TsTypeAnnotation",
                                  "span": {
                                    "start": 3732,
                                    "end": 3735,
                                    "ctxt": 0
                                  },
                                  "typeAnnotation": {
                                    "type": "TsTypeReference",
                                    "span": {
                                      "start": 3734,
                                      "end": 3735,
                                      "ctxt": 0
                                    },
                                    "typeName": {
                                      "type": "Identifier",
                                      "span": {
                                        "start": 3734,
                                        "end": 3735,
                                        "ctxt": 0
                                      },
                                      "value": "T",
                                      "optional": false
                                    },
                                    "typeParams": null
                                  }
                                }
                              }
                            ],
                            "body": {
                              "type": "NullLiteral",
                              "span": {
                                "start": 3740,
                                "end": 3744,
                                "ctxt": 0
                              }
                            },
                            "async": false,
                            "generator": false,
                            "typeParameters": {
                              "type": "TsTypeParameterDeclaration",
                              "span": {
                                "start": 3727,
                                "end": 3730,
                                "ctxt": 0
                              },
                              "parameters": [
                                {
                                  "type": "TsTypeParameter",
                                  "span": {
                                    "start": 3728,
                                    "end": 3729,
                                    "ctxt": 0
                                  },
                                  "name": {
                                    "type": "Identifier",
                                    "span": {
                                      "start": 3728,
                                      "end": 3729,
                                      "ctxt": 0
                                    },
                                    "value": "T",
                                    "optional": false
                                  },
                                  "in": false,
                                  "out": false,
                                  "constraint": null,
                                  "default": null
                                }
                              ]
                            },
                            "returnType": null
                          }
                        }
                      },
                      {
                        "type": "ExpressionStatement",
                        "span": {
                          "start": 3791,
                          "end": 3825,
                          "ctxt": 0
                        },
                        "expression": {
                          "type": "AssignmentExpression",
                          "span": {
                            "start": 3791,
                            "end": 3824,
                            "ctxt": 0
                          },
                          "operator": "=",
                          "left": {
                            "type": "MemberExpression",
                            "span": {
                              "start": 3791,
                              "end": 3798,
                              "ctxt": 0
                            },
                            "object": {
                              "type": "ThisExpression",
                              "span": {
                                "start": 3791,
                                "end": 3795,
                                "ctxt": 0
                              }
                            },
                            "property": {
                              "type": "Identifier",
                              "span": {
                                "start": 3796,
                                "end": 3798,
                                "ctxt": 0
                              },
                              "value": "a4",
                              "optional": false
                            }
                          },
                          "right": {
                            "type": "ArrowFunctionExpression",
                            "span": {
                              "start": 3801,
                              "end": 3824,
                              "ctxt": 0
                            },
                            "params": [
                              {
                                "type": "Identifier",
                                "span": {
                                  "start": 3805,
                                  "end": 3809,
                                  "ctxt": 0
                                },
                                "value": "x",
                                "optional": false,
                                "typeAnnotation": {
                                  "type": "TsTypeAnnotation",
                                  "span": {
                                    "start": 3806,
                                    "end": 3809,
                                    "ctxt": 0
                                  },
                                  "typeAnnotation": {
                                    "type": "TsTypeReference",
                                    "span": {
                                      "start": 3808,
                                      "end": 3809,
                                      "ctxt": 0
                                    },
                                    "typeName": {
                                      "type": "Identifier",
                                      "span": {
                                        "start": 3808,
                                        "end": 3809,
                                        "ctxt": 0
                                      },
                                      "value": "T",
                                      "optional": false
                                    },
                                    "typeParams": null
                                  }
                                }
                              },
                              {
                                "type": "Identifier",
                                "span": {
                                  "start": 3811,
                                  "end": 3815,
                                  "ctxt": 0
                                },
                                "value": "y",
                                "optional": false,
                                "typeAnnotation": {
                                  "type": "TsTypeAnnotation",
                                  "span": {
                                    "start": 3812,
                                    "end": 3815,
                                    "ctxt": 0
                                  },
                                  "typeAnnotation": {
                                    "type": "TsTypeReference",
                                    "span": {
                                      "start": 3814,
                                      "end": 3815,
                                      "ctxt": 0
                                    },
                                    "typeName": {
                                      "type": "Identifier",
                                      "span": {
                                        "start": 3814,
                                        "end": 3815,
                                        "ctxt": 0
                                      },
                                      "value": "T",
                                      "optional": false
                                    },
                                    "typeParams": null
                                  }
                                }
                              }
                            ],
                            "body": {
                              "type": "NullLiteral",
                              "span": {
                                "start": 3820,
                                "end": 3824,
                                "ctxt": 0
                              }
                            },
                            "async": false,
                            "generator": false,
                            "typeParameters": {
                              "type": "TsTypeParameterDeclaration",
                              "span": {
                                "start": 3801,
                                "end": 3804,
                                "ctxt": 0
                              },
                              "parameters": [
                                {
                                  "type": "TsTypeParameter",
                                  "span": {
                                    "start": 3802,
                                    "end": 3803,
                                    "ctxt": 0
                                  },
                                  "name": {
                                    "type": "Identifier",
                                    "span": {
                                      "start": 3802,
                                      "end": 3803,
                                      "ctxt": 0
                                    },
                                    "value": "T",
                                    "optional": false
                                  },
                                  "in": false,
                                  "out": false,
                                  "constraint": null,
                                  "default": null
                                }
                              ]
                            },
                            "returnType": null
                          }
                        }
                      },
                      {
                        "type": "ExpressionStatement",
                        "span": {
                          "start": 3870,
                          "end": 3894,
                          "ctxt": 0
                        },
                        "expression": {
                          "type": "AssignmentExpression",
                          "span": {
                            "start": 3870,
                            "end": 3893,
                            "ctxt": 0
                          },
                          "operator": "=",
                          "left": {
                            "type": "MemberExpression",
                            "span": {
                              "start": 3870,
                              "end": 3877,
                              "ctxt": 0
                            },
                            "object": {
                              "type": "ThisExpression",
                              "span": {
                                "start": 3870,
                                "end": 3874,
                                "ctxt": 0
                              }
                            },
                            "property": {
                              "type": "Identifier",
                              "span": {
                                "start": 3875,
                                "end": 3877,
                                "ctxt": 0
                              },
                              "value": "a5",
                              "optional": false
                            }
                          },
                          "right": {
                            "type": "ArrowFunctionExpression",
                            "span": {
                              "start": 3880,
                              "end": 3893,
                              "ctxt": 0
                            },
                            "params": [],
                            "body": {
                              "type": "NullLiteral",
                              "span": {
                                "start": 3889,
                                "end": 3893,
                                "ctxt": 0
                              }
                            },
                            "async": false,
                            "generator": false,
                            "typeParameters": {
                              "type": "TsTypeParameterDeclaration",
                              "span": {
                                "start": 3880,
                                "end": 3883,
                                "ctxt": 0
                              },
                              "parameters": [
                                {
                                  "type": "TsTypeParameter",
                                  "span": {
                                    "start": 3881,
                                    "end": 3882,
                                    "ctxt": 0
                                  },
                                  "name": {
                                    "type": "Identifier",
                                    "span": {
                                      "start": 3881,
                                      "end": 3882,
                                      "ctxt": 0
                                    },
                                    "value": "T",
                                    "optional": false
                                  },
                                  "in": false,
                                  "out": false,
                                  "constraint": null,
                                  "default": null
                                }
                              ]
                            },
                            "returnType": null
                          }
                        }
                      },
                      {
                        "type": "ExpressionStatement",
                        "span": {
                          "start": 3936,
                          "end": 3972,
                          "ctxt": 0
                        },
                        "expression": {
                          "type": "AssignmentExpression",
                          "span": {
                            "start": 3936,
                            "end": 3971,
                            "ctxt": 0
                          },
                          "operator": "=",
                          "left": {
                            "type": "MemberExpression",
                            "span": {
                              "start": 3936,
                              "end": 3943,
                              "ctxt": 0
                            },
                            "object": {
                              "type": "ThisExpression",
                              "span": {
                                "start": 3936,
                                "end": 3940,
                                "ctxt": 0
                              }
                            },
                            "property": {
                              "type": "Identifier",
                              "span": {
                                "start": 3941,
                                "end": 3943,
                                "ctxt": 0
                              },
                              "value": "a5",
                              "optional": false
                            }
                          },
                          "right": {
                            "type": "ArrowFunctionExpression",
                            "span": {
                              "start": 3946,
                              "end": 3971,
                              "ctxt": 0
                            },
                            "params": [
                              {
                                "type": "Identifier",
                                "span": {
                                  "start": 3950,
                                  "end": 3955,
                                  "ctxt": 0
                                },
                                "value": "x",
                                "optional": true,
                                "typeAnnotation": {
                                  "type": "TsTypeAnnotation",
                                  "span": {
                                    "start": 3952,
                                    "end": 3955,
                                    "ctxt": 0
                                  },
                                  "typeAnnotation": {
                                    "type": "TsTypeReference",
                                    "span": {
                                      "start": 3954,
                                      "end": 3955,
                                      "ctxt": 0
                                    },
                                    "typeName": {
                                      "type": "Identifier",
                                      "span": {
                                        "start": 3954,
                                        "end": 3955,
                                        "ctxt": 0
                                      },
                                      "value": "T",
                                      "optional": false
                                    },
                                    "typeParams": null
                                  }
                                }
                              },
                              {
                                "type": "Identifier",
                                "span": {
                                  "start": 3957,
                                  "end": 3962,
                                  "ctxt": 0
                                },
                                "value": "y",
                                "optional": true,
                                "typeAnnotation": {
                                  "type": "TsTypeAnnotation",
                                  "span": {
                                    "start": 3959,
                                    "end": 3962,
                                    "ctxt": 0
                                  },
                                  "typeAnnotation": {
                                    "type": "TsTypeReference",
                                    "span": {
                                      "start": 3961,
                                      "end": 3962,
                                      "ctxt": 0
                                    },
                                    "typeName": {
                                      "type": "Identifier",
                                      "span": {
                                        "start": 3961,
                                        "end": 3962,
                                        "ctxt": 0
                                      },
                                      "value": "T",
                                      "optional": false
                                    },
                                    "typeParams": null
                                  }
                                }
                              }
                            ],
                            "body": {
                              "type": "NullLiteral",
                              "span": {
                                "start": 3967,
                                "end": 3971,
                                "ctxt": 0
                              }
                            },
                            "async": false,
                            "generator": false,
                            "typeParameters": {
                              "type": "TsTypeParameterDeclaration",
                              "span": {
                                "start": 3946,
                                "end": 3949,
                                "ctxt": 0
                              },
                              "parameters": [
                                {
                                  "type": "TsTypeParameter",
                                  "span": {
                                    "start": 3947,
                                    "end": 3948,
                                    "ctxt": 0
                                  },
                                  "name": {
                                    "type": "Identifier",
                                    "span": {
                                      "start": 3947,
                                      "end": 3948,
                                      "ctxt": 0
                                    },
                                    "value": "T",
                                    "optional": false
                                  },
                                  "in": false,
                                  "out": false,
                                  "constraint": null,
                                  "default": null
                                }
                              ]
                            },
                            "returnType": null
                          }
                        }
                      },
                      {
                        "type": "ExpressionStatement",
                        "span": {
                          "start": 4014,
                          "end": 4042,
                          "ctxt": 0
                        },
                        "expression": {
                          "type": "AssignmentExpression",
                          "span": {
                            "start": 4014,
                            "end": 4041,
                            "ctxt": 0
                          },
                          "operator": "=",
                          "left": {
                            "type": "MemberExpression",
                            "span": {
                              "start": 4014,
                              "end": 4021,
                              "ctxt": 0
                            },
                            "object": {
                              "type": "ThisExpression",
                              "span": {
                                "start": 4014,
                                "end": 4018,
                                "ctxt": 0
                              }
                            },
                            "property": {
                              "type": "Identifier",
                              "span": {
                                "start": 4019,
                                "end": 4021,
                                "ctxt": 0
                              },
                              "value": "a5",
                              "optional": false
                            }
                          },
                          "right": {
                            "type": "ArrowFunctionExpression",
                            "span": {
                              "start": 4024,
                              "end": 4041,
                              "ctxt": 0
                            },
                            "params": [
                              {
                                "type": "Identifier",
                                "span": {
                                  "start": 4028,
                                  "end": 4032,
                                  "ctxt": 0
                                },
                                "value": "x",
                                "optional": false,
                                "typeAnnotation": {
                                  "type": "TsTypeAnnotation",
                                  "span": {
                                    "start": 4029,
                                    "end": 4032,
                                    "ctxt": 0
                                  },
                                  "typeAnnotation": {
                                    "type": "TsTypeReference",
                                    "span": {
                                      "start": 4031,
                                      "end": 4032,
                                      "ctxt": 0
                                    },
                                    "typeName": {
                                      "type": "Identifier",
                                      "span": {
                                        "start": 4031,
                                        "end": 4032,
                                        "ctxt": 0
                                      },
                                      "value": "T",
                                      "optional": false
                                    },
                                    "typeParams": null
                                  }
                                }
                              }
                            ],
                            "body": {
                              "type": "NullLiteral",
                              "span": {
                                "start": 4037,
                                "end": 4041,
                                "ctxt": 0
                              }
                            },
                            "async": false,
                            "generator": false,
                            "typeParameters": {
                              "type": "TsTypeParameterDeclaration",
                              "span": {
                                "start": 4024,
                                "end": 4027,
                                "ctxt": 0
                              },
                              "parameters": [
                                {
                                  "type": "TsTypeParameter",
                                  "span": {
                                    "start": 4025,
                                    "end": 4026,
                                    "ctxt": 0
                                  },
                                  "name": {
                                    "type": "Identifier",
                                    "span": {
                                      "start": 4025,
                                      "end": 4026,
                                      "ctxt": 0
                                    },
                                    "value": "T",
                                    "optional": false
                                  },
                                  "in": false,
                                  "out": false,
                                  "constraint": null,
                                  "default": null
                                }
                              ]
                            },
                            "returnType": null
                          }
                        }
                      },
                      {
                        "type": "ExpressionStatement",
                        "span": {
                          "start": 4087,
                          "end": 4121,
                          "ctxt": 0
                        },
                        "expression": {
                          "type": "AssignmentExpression",
                          "span": {
                            "start": 4087,
                            "end": 4120,
                            "ctxt": 0
                          },
                          "operator": "=",
                          "left": {
                            "type": "MemberExpression",
                            "span": {
                              "start": 4087,
                              "end": 4094,
                              "ctxt": 0
                            },
                            "object": {
                              "type": "ThisExpression",
                              "span": {
                                "start": 4087,
                                "end": 4091,
                                "ctxt": 0
                              }
                            },
                            "property": {
                              "type": "Identifier",
                              "span": {
                                "start": 4092,
                                "end": 4094,
                                "ctxt": 0
                              },
                              "value": "a5",
                              "optional": false
                            }
                          },
                          "right": {
                            "type": "ArrowFunctionExpression",
                            "span": {
                              "start": 4097,
                              "end": 4120,
                              "ctxt": 0
                            },
                            "params": [
                              {
                                "type": "Identifier",
                                "span": {
                                  "start": 4101,
                                  "end": 4105,
                                  "ctxt": 0
                                },
                                "value": "x",
                                "optional": false,
                                "typeAnnotation": {
                                  "type": "TsTypeAnnotation",
                                  "span": {
                                    "start": 4102,
                                    "end": 4105,
                                    "ctxt": 0
                                  },
                                  "typeAnnotation": {
                                    "type": "TsTypeReference",
                                    "span": {
                                      "start": 4104,
                                      "end": 4105,
                                      "ctxt": 0
                                    },
                                    "typeName": {
                                      "type": "Identifier",
                                      "span": {
                                        "start": 4104,
                                        "end": 4105,
                                        "ctxt": 0
                                      },
                                      "value": "T",
                                      "optional": false
                                    },
                                    "typeParams": null
                                  }
                                }
                              },
                              {
                                "type": "Identifier",
                                "span": {
                                  "start": 4107,
                                  "end": 4111,
                                  "ctxt": 0
                                },
                                "value": "y",
                                "optional": false,
                                "typeAnnotation": {
                                  "type": "TsTypeAnnotation",
                                  "span": {
                                    "start": 4108,
                                    "end": 4111,
                                    "ctxt": 0
                                  },
                                  "typeAnnotation": {
                                    "type": "TsTypeReference",
                                    "span": {
                                      "start": 4110,
                                      "end": 4111,
                                      "ctxt": 0
                                    },
                                    "typeName": {
                                      "type": "Identifier",
                                      "span": {
                                        "start": 4110,
                                        "end": 4111,
                                        "ctxt": 0
                                      },
                                      "value": "T",
                                      "optional": false
                                    },
                                    "typeParams": null
                                  }
                                }
                              }
                            ],
                            "body": {
                              "type": "NullLiteral",
                              "span": {
                                "start": 4116,
                                "end": 4120,
                                "ctxt": 0
                              }
                            },
                            "async": false,
                            "generator": false,
                            "typeParameters": {
                              "type": "TsTypeParameterDeclaration",
                              "span": {
                                "start": 4097,
                                "end": 4100,
                                "ctxt": 0
                              },
                              "parameters": [
                                {
                                  "type": "TsTypeParameter",
                                  "span": {
                                    "start": 4098,
                                    "end": 4099,
                                    "ctxt": 0
                                  },
                                  "name": {
                                    "type": "Identifier",
                                    "span": {
                                      "start": 4098,
                                      "end": 4099,
                                      "ctxt": 0
                                    },
                                    "value": "T",
                                    "optional": false
                                  },
                                  "in": false,
                                  "out": false,
                                  "constraint": null,
                                  "default": null
                                }
                              ]
                            },
                            "returnType": null
                          }
                        }
                      }
                    ]
                  },
                  "async": false,
                  "generator": false,
                  "typeParameters": null,
                  "returnType": null
                },
                "typeAnnotation": null,
                "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": []
          }
        ]
      }
    }
  ],
  "interpreter": null
}