{
  "type": "Script",
  "span": {
    "start": 136,
    "end": 391,
    "ctxt": 0
  },
  "body": [
    {
      "type": "TsInterfaceDeclaration",
      "span": {
        "start": 136,
        "end": 235,
        "ctxt": 0
      },
      "id": {
        "type": "Identifier",
        "span": {
          "start": 146,
          "end": 147,
          "ctxt": 0
        },
        "value": "I",
        "optional": false
      },
      "declare": false,
      "typeParams": null,
      "extends": [],
      "body": {
        "type": "TsInterfaceBody",
        "span": {
          "start": 148,
          "end": 235,
          "ctxt": 0
        },
        "body": [
          {
            "type": "TsCallSignatureDeclaration",
            "span": {
              "start": 154,
              "end": 166,
              "ctxt": 0
            },
            "params": [
              {
                "type": "Identifier",
                "span": {
                  "start": 155,
                  "end": 156,
                  "ctxt": 0
                },
                "value": "x",
                "optional": false,
                "typeAnnotation": null
              }
            ],
            "typeAnnotation": {
              "type": "TsTypeAnnotation",
              "span": {
                "start": 157,
                "end": 165,
                "ctxt": 0
              },
              "typeAnnotation": {
                "type": "TsKeywordType",
                "span": {
                  "start": 159,
                  "end": 165,
                  "ctxt": 0
                },
                "kind": "number"
              }
            },
            "typeParams": null
          },
          {
            "type": "TsCallSignatureDeclaration",
            "span": {
              "start": 171,
              "end": 188,
              "ctxt": 0
            },
            "params": [
              {
                "type": "Identifier",
                "span": {
                  "start": 172,
                  "end": 178,
                  "ctxt": 0
                },
                "value": "x",
                "optional": false,
                "typeAnnotation": {
                  "type": "TsTypeAnnotation",
                  "span": {
                    "start": 173,
                    "end": 178,
                    "ctxt": 0
                  },
                  "typeAnnotation": {
                    "type": "TsKeywordType",
                    "span": {
                      "start": 175,
                      "end": 178,
                      "ctxt": 0
                    },
                    "kind": "any"
                  }
                }
              }
            ],
            "typeAnnotation": {
              "type": "TsTypeAnnotation",
              "span": {
                "start": 179,
                "end": 187,
                "ctxt": 0
              },
              "typeAnnotation": {
                "type": "TsKeywordType",
                "span": {
                  "start": 181,
                  "end": 187,
                  "ctxt": 0
                },
                "kind": "number"
              }
            },
            "typeParams": null
          },
          {
            "type": "TsCallSignatureDeclaration",
            "span": {
              "start": 193,
              "end": 206,
              "ctxt": 0
            },
            "params": [
              {
                "type": "Identifier",
                "span": {
                  "start": 197,
                  "end": 201,
                  "ctxt": 0
                },
                "value": "x",
                "optional": false,
                "typeAnnotation": {
                  "type": "TsTypeAnnotation",
                  "span": {
                    "start": 198,
                    "end": 201,
                    "ctxt": 0
                  },
                  "typeAnnotation": {
                    "type": "TsTypeReference",
                    "span": {
                      "start": 200,
                      "end": 201,
                      "ctxt": 0
                    },
                    "typeName": {
                      "type": "Identifier",
                      "span": {
                        "start": 200,
                        "end": 201,
                        "ctxt": 0
                      },
                      "value": "T",
                      "optional": false
                    },
                    "typeParams": null
                  }
                }
              }
            ],
            "typeAnnotation": {
              "type": "TsTypeAnnotation",
              "span": {
                "start": 202,
                "end": 205,
                "ctxt": 0
              },
              "typeAnnotation": {
                "type": "TsTypeReference",
                "span": {
                  "start": 204,
                  "end": 205,
                  "ctxt": 0
                },
                "typeName": {
                  "type": "Identifier",
                  "span": {
                    "start": 204,
                    "end": 205,
                    "ctxt": 0
                  },
                  "value": "T",
                  "optional": false
                },
                "typeParams": null
              }
            },
            "typeParams": {
              "type": "TsTypeParameterDeclaration",
              "span": {
                "start": 193,
                "end": 196,
                "ctxt": 0
              },
              "parameters": [
                {
                  "type": "TsTypeParameter",
                  "span": {
                    "start": 194,
                    "end": 195,
                    "ctxt": 0
                  },
                  "name": {
                    "type": "Identifier",
                    "span": {
                      "start": 194,
                      "end": 195,
                      "ctxt": 0
                    },
                    "value": "T",
                    "optional": false
                  },
                  "constraint": null,
                  "default": null
                }
              ]
            }
          },
          {
            "type": "TsCallSignatureDeclaration",
            "span": {
              "start": 211,
              "end": 224,
              "ctxt": 0
            },
            "params": [
              {
                "type": "Identifier",
                "span": {
                  "start": 215,
                  "end": 219,
                  "ctxt": 0
                },
                "value": "x",
                "optional": false,
                "typeAnnotation": {
                  "type": "TsTypeAnnotation",
                  "span": {
                    "start": 216,
                    "end": 219,
                    "ctxt": 0
                  },
                  "typeAnnotation": {
                    "type": "TsTypeReference",
                    "span": {
                      "start": 218,
                      "end": 219,
                      "ctxt": 0
                    },
                    "typeName": {
                      "type": "Identifier",
                      "span": {
                        "start": 218,
                        "end": 219,
                        "ctxt": 0
                      },
                      "value": "U",
                      "optional": false
                    },
                    "typeParams": null
                  }
                }
              }
            ],
            "typeAnnotation": {
              "type": "TsTypeAnnotation",
              "span": {
                "start": 220,
                "end": 223,
                "ctxt": 0
              },
              "typeAnnotation": {
                "type": "TsTypeReference",
                "span": {
                  "start": 222,
                  "end": 223,
                  "ctxt": 0
                },
                "typeName": {
                  "type": "Identifier",
                  "span": {
                    "start": 222,
                    "end": 223,
                    "ctxt": 0
                  },
                  "value": "U",
                  "optional": false
                },
                "typeParams": null
              }
            },
            "typeParams": {
              "type": "TsTypeParameterDeclaration",
              "span": {
                "start": 211,
                "end": 214,
                "ctxt": 0
              },
              "parameters": [
                {
                  "type": "TsTypeParameter",
                  "span": {
                    "start": 212,
                    "end": 213,
                    "ctxt": 0
                  },
                  "name": {
                    "type": "Identifier",
                    "span": {
                      "start": 212,
                      "end": 213,
                      "ctxt": 0
                    },
                    "value": "U",
                    "optional": false
                  },
                  "constraint": null,
                  "default": null
                }
              ]
            }
          }
        ]
      }
    },
    {
      "type": "TsInterfaceDeclaration",
      "span": {
        "start": 237,
        "end": 295,
        "ctxt": 0
      },
      "id": {
        "type": "Identifier",
        "span": {
          "start": 247,
          "end": 249,
          "ctxt": 0
        },
        "value": "I2",
        "optional": false
      },
      "declare": false,
      "typeParams": {
        "type": "TsTypeParameterDeclaration",
        "span": {
          "start": 249,
          "end": 252,
          "ctxt": 0
        },
        "parameters": [
          {
            "type": "TsTypeParameter",
            "span": {
              "start": 250,
              "end": 251,
              "ctxt": 0
            },
            "name": {
              "type": "Identifier",
              "span": {
                "start": 250,
                "end": 251,
                "ctxt": 0
              },
              "value": "T",
              "optional": false
            },
            "constraint": null,
            "default": null
          }
        ]
      },
      "extends": [],
      "body": {
        "type": "TsInterfaceBody",
        "span": {
          "start": 253,
          "end": 295,
          "ctxt": 0
        },
        "body": [
          {
            "type": "TsCallSignatureDeclaration",
            "span": {
              "start": 259,
              "end": 269,
              "ctxt": 0
            },
            "params": [
              {
                "type": "Identifier",
                "span": {
                  "start": 260,
                  "end": 264,
                  "ctxt": 0
                },
                "value": "x",
                "optional": false,
                "typeAnnotation": {
                  "type": "TsTypeAnnotation",
                  "span": {
                    "start": 261,
                    "end": 264,
                    "ctxt": 0
                  },
                  "typeAnnotation": {
                    "type": "TsTypeReference",
                    "span": {
                      "start": 263,
                      "end": 264,
                      "ctxt": 0
                    },
                    "typeName": {
                      "type": "Identifier",
                      "span": {
                        "start": 263,
                        "end": 264,
                        "ctxt": 0
                      },
                      "value": "T",
                      "optional": false
                    },
                    "typeParams": null
                  }
                }
              }
            ],
            "typeAnnotation": {
              "type": "TsTypeAnnotation",
              "span": {
                "start": 265,
                "end": 268,
                "ctxt": 0
              },
              "typeAnnotation": {
                "type": "TsTypeReference",
                "span": {
                  "start": 267,
                  "end": 268,
                  "ctxt": 0
                },
                "typeName": {
                  "type": "Identifier",
                  "span": {
                    "start": 267,
                    "end": 268,
                    "ctxt": 0
                  },
                  "value": "T",
                  "optional": false
                },
                "typeParams": null
              }
            },
            "typeParams": null
          },
          {
            "type": "TsCallSignatureDeclaration",
            "span": {
              "start": 274,
              "end": 284,
              "ctxt": 0
            },
            "params": [
              {
                "type": "Identifier",
                "span": {
                  "start": 275,
                  "end": 279,
                  "ctxt": 0
                },
                "value": "x",
                "optional": false,
                "typeAnnotation": {
                  "type": "TsTypeAnnotation",
                  "span": {
                    "start": 276,
                    "end": 279,
                    "ctxt": 0
                  },
                  "typeAnnotation": {
                    "type": "TsTypeReference",
                    "span": {
                      "start": 278,
                      "end": 279,
                      "ctxt": 0
                    },
                    "typeName": {
                      "type": "Identifier",
                      "span": {
                        "start": 278,
                        "end": 279,
                        "ctxt": 0
                      },
                      "value": "T",
                      "optional": false
                    },
                    "typeParams": null
                  }
                }
              }
            ],
            "typeAnnotation": {
              "type": "TsTypeAnnotation",
              "span": {
                "start": 280,
                "end": 283,
                "ctxt": 0
              },
              "typeAnnotation": {
                "type": "TsTypeReference",
                "span": {
                  "start": 282,
                  "end": 283,
                  "ctxt": 0
                },
                "typeName": {
                  "type": "Identifier",
                  "span": {
                    "start": 282,
                    "end": 283,
                    "ctxt": 0
                  },
                  "value": "T",
                  "optional": false
                },
                "typeParams": null
              }
            },
            "typeParams": null
          }
        ]
      }
    },
    {
      "type": "VariableDeclaration",
      "span": {
        "start": 297,
        "end": 391,
        "ctxt": 0
      },
      "kind": "var",
      "declare": false,
      "declarations": [
        {
          "type": "VariableDeclarator",
          "span": {
            "start": 301,
            "end": 391,
            "ctxt": 0
          },
          "id": {
            "type": "Identifier",
            "span": {
              "start": 301,
              "end": 302,
              "ctxt": 0
            },
            "value": "a",
            "optional": false,
            "typeAnnotation": {
              "type": "TsTypeAnnotation",
              "span": {
                "start": 302,
                "end": 391,
                "ctxt": 0
              },
              "typeAnnotation": {
                "type": "TsTypeLiteral",
                "span": {
                  "start": 304,
                  "end": 391,
                  "ctxt": 0
                },
                "members": [
                  {
                    "type": "TsCallSignatureDeclaration",
                    "span": {
                      "start": 310,
                      "end": 322,
                      "ctxt": 0
                    },
                    "params": [
                      {
                        "type": "Identifier",
                        "span": {
                          "start": 311,
                          "end": 312,
                          "ctxt": 0
                        },
                        "value": "x",
                        "optional": false,
                        "typeAnnotation": null
                      }
                    ],
                    "typeAnnotation": {
                      "type": "TsTypeAnnotation",
                      "span": {
                        "start": 313,
                        "end": 321,
                        "ctxt": 0
                      },
                      "typeAnnotation": {
                        "type": "TsKeywordType",
                        "span": {
                          "start": 315,
                          "end": 321,
                          "ctxt": 0
                        },
                        "kind": "number"
                      }
                    },
                    "typeParams": null
                  },
                  {
                    "type": "TsCallSignatureDeclaration",
                    "span": {
                      "start": 327,
                      "end": 344,
                      "ctxt": 0
                    },
                    "params": [
                      {
                        "type": "Identifier",
                        "span": {
                          "start": 328,
                          "end": 334,
                          "ctxt": 0
                        },
                        "value": "x",
                        "optional": false,
                        "typeAnnotation": {
                          "type": "TsTypeAnnotation",
                          "span": {
                            "start": 329,
                            "end": 334,
                            "ctxt": 0
                          },
                          "typeAnnotation": {
                            "type": "TsKeywordType",
                            "span": {
                              "start": 331,
                              "end": 334,
                              "ctxt": 0
                            },
                            "kind": "any"
                          }
                        }
                      }
                    ],
                    "typeAnnotation": {
                      "type": "TsTypeAnnotation",
                      "span": {
                        "start": 335,
                        "end": 343,
                        "ctxt": 0
                      },
                      "typeAnnotation": {
                        "type": "TsKeywordType",
                        "span": {
                          "start": 337,
                          "end": 343,
                          "ctxt": 0
                        },
                        "kind": "number"
                      }
                    },
                    "typeParams": null
                  },
                  {
                    "type": "TsCallSignatureDeclaration",
                    "span": {
                      "start": 349,
                      "end": 362,
                      "ctxt": 0
                    },
                    "params": [
                      {
                        "type": "Identifier",
                        "span": {
                          "start": 353,
                          "end": 357,
                          "ctxt": 0
                        },
                        "value": "x",
                        "optional": false,
                        "typeAnnotation": {
                          "type": "TsTypeAnnotation",
                          "span": {
                            "start": 354,
                            "end": 357,
                            "ctxt": 0
                          },
                          "typeAnnotation": {
                            "type": "TsTypeReference",
                            "span": {
                              "start": 356,
                              "end": 357,
                              "ctxt": 0
                            },
                            "typeName": {
                              "type": "Identifier",
                              "span": {
                                "start": 356,
                                "end": 357,
                                "ctxt": 0
                              },
                              "value": "T",
                              "optional": false
                            },
                            "typeParams": null
                          }
                        }
                      }
                    ],
                    "typeAnnotation": {
                      "type": "TsTypeAnnotation",
                      "span": {
                        "start": 358,
                        "end": 361,
                        "ctxt": 0
                      },
                      "typeAnnotation": {
                        "type": "TsTypeReference",
                        "span": {
                          "start": 360,
                          "end": 361,
                          "ctxt": 0
                        },
                        "typeName": {
                          "type": "Identifier",
                          "span": {
                            "start": 360,
                            "end": 361,
                            "ctxt": 0
                          },
                          "value": "T",
                          "optional": false
                        },
                        "typeParams": null
                      }
                    },
                    "typeParams": {
                      "type": "TsTypeParameterDeclaration",
                      "span": {
                        "start": 349,
                        "end": 352,
                        "ctxt": 0
                      },
                      "parameters": [
                        {
                          "type": "TsTypeParameter",
                          "span": {
                            "start": 350,
                            "end": 351,
                            "ctxt": 0
                          },
                          "name": {
                            "type": "Identifier",
                            "span": {
                              "start": 350,
                              "end": 351,
                              "ctxt": 0
                            },
                            "value": "T",
                            "optional": false
                          },
                          "constraint": null,
                          "default": null
                        }
                      ]
                    }
                  },
                  {
                    "type": "TsCallSignatureDeclaration",
                    "span": {
                      "start": 367,
                      "end": 380,
                      "ctxt": 0
                    },
                    "params": [
                      {
                        "type": "Identifier",
                        "span": {
                          "start": 371,
                          "end": 375,
                          "ctxt": 0
                        },
                        "value": "x",
                        "optional": false,
                        "typeAnnotation": {
                          "type": "TsTypeAnnotation",
                          "span": {
                            "start": 372,
                            "end": 375,
                            "ctxt": 0
                          },
                          "typeAnnotation": {
                            "type": "TsTypeReference",
                            "span": {
                              "start": 374,
                              "end": 375,
                              "ctxt": 0
                            },
                            "typeName": {
                              "type": "Identifier",
                              "span": {
                                "start": 374,
                                "end": 375,
                                "ctxt": 0
                              },
                              "value": "T",
                              "optional": false
                            },
                            "typeParams": null
                          }
                        }
                      }
                    ],
                    "typeAnnotation": {
                      "type": "TsTypeAnnotation",
                      "span": {
                        "start": 376,
                        "end": 379,
                        "ctxt": 0
                      },
                      "typeAnnotation": {
                        "type": "TsTypeReference",
                        "span": {
                          "start": 378,
                          "end": 379,
                          "ctxt": 0
                        },
                        "typeName": {
                          "type": "Identifier",
                          "span": {
                            "start": 378,
                            "end": 379,
                            "ctxt": 0
                          },
                          "value": "T",
                          "optional": false
                        },
                        "typeParams": null
                      }
                    },
                    "typeParams": {
                      "type": "TsTypeParameterDeclaration",
                      "span": {
                        "start": 367,
                        "end": 370,
                        "ctxt": 0
                      },
                      "parameters": [
                        {
                          "type": "TsTypeParameter",
                          "span": {
                            "start": 368,
                            "end": 369,
                            "ctxt": 0
                          },
                          "name": {
                            "type": "Identifier",
                            "span": {
                              "start": 368,
                              "end": 369,
                              "ctxt": 0
                            },
                            "value": "T",
                            "optional": false
                          },
                          "constraint": null,
                          "default": null
                        }
                      ]
                    }
                  }
                ]
              }
            }
          },
          "init": null,
          "definite": false
        }
      ]
    }
  ],
  "interpreter": null
}