• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1{
2  "type": "Program",
3  "statements": [
4    {
5      "type": "FunctionDeclaration",
6      "function": {
7        "type": "ScriptFunction",
8        "id": {
9          "type": "Identifier",
10          "name": "func1",
11          "decorators": [],
12          "loc": {
13            "start": {
14              "line": 17,
15              "column": 10
16            },
17            "end": {
18              "line": 17,
19              "column": 15
20            }
21          }
22        },
23        "generator": false,
24        "async": false,
25        "expression": false,
26        "params": [
27          {
28            "type": "Identifier",
29            "name": "arg",
30            "typeAnnotation": {
31              "type": "TSTypeReference",
32              "typeName": {
33                "type": "Identifier",
34                "name": "Type",
35                "decorators": [],
36                "loc": {
37                  "start": {
38                    "line": 17,
39                    "column": 59
40                  },
41                  "end": {
42                    "line": 17,
43                    "column": 63
44                  }
45                }
46              },
47              "loc": {
48                "start": {
49                  "line": 17,
50                  "column": 59
51                },
52                "end": {
53                  "line": 17,
54                  "column": 63
55                }
56              }
57            },
58            "decorators": [],
59            "loc": {
60              "start": {
61                "line": 17,
62                "column": 54
63              },
64              "end": {
65                "line": 17,
66                "column": 57
67              }
68            }
69          }
70        ],
71        "returnType": {
72          "type": "TSTypeReference",
73          "typeName": {
74            "type": "Identifier",
75            "name": "Type",
76            "decorators": [],
77            "loc": {
78              "start": {
79                "line": 17,
80                "column": 66
81              },
82              "end": {
83                "line": 17,
84                "column": 70
85              }
86            }
87          },
88          "loc": {
89            "start": {
90              "line": 17,
91              "column": 66
92            },
93            "end": {
94              "line": 17,
95              "column": 70
96            }
97          }
98        },
99        "typeParameters": {
100          "type": "TSTypeParameterDeclaration",
101          "params": [
102            {
103              "type": "TSTypeParameter",
104              "name": {
105                "type": "Identifier",
106                "name": "Type",
107                "decorators": [],
108                "loc": {
109                  "start": {
110                    "line": 17,
111                    "column": 16
112                  },
113                  "end": {
114                    "line": 17,
115                    "column": 20
116                  }
117                }
118              },
119              "loc": {
120                "start": {
121                  "line": 17,
122                  "column": 16
123                },
124                "end": {
125                  "line": 17,
126                  "column": 21
127                }
128              }
129            },
130            {
131              "type": "TSTypeParameter",
132              "name": {
133                "type": "Identifier",
134                "name": "A",
135                "decorators": [],
136                "loc": {
137                  "start": {
138                    "line": 17,
139                    "column": 22
140                  },
141                  "end": {
142                    "line": 17,
143                    "column": 23
144                  }
145                }
146              },
147              "loc": {
148                "start": {
149                  "line": 17,
150                  "column": 22
151                },
152                "end": {
153                  "line": 17,
154                  "column": 24
155                }
156              }
157            },
158            {
159              "type": "TSTypeParameter",
160              "name": {
161                "type": "Identifier",
162                "name": "B",
163                "decorators": [],
164                "loc": {
165                  "start": {
166                    "line": 17,
167                    "column": 25
168                  },
169                  "end": {
170                    "line": 17,
171                    "column": 26
172                  }
173                }
174              },
175              "constraint": {
176                "type": "TSTypeOperator",
177                "operator": "readonly",
178                "typeAnnotation": {
179                  "type": "TSArrayType",
180                  "elementType": {
181                    "type": "TSNumberKeyword",
182                    "loc": {
183                      "start": {
184                        "line": 17,
185                        "column": 44
186                      },
187                      "end": {
188                        "line": 17,
189                        "column": 50
190                      }
191                    }
192                  },
193                  "loc": {
194                    "start": {
195                      "line": 17,
196                      "column": 44
197                    },
198                    "end": {
199                      "line": 17,
200                      "column": 52
201                    }
202                  }
203                },
204                "loc": {
205                  "start": {
206                    "line": 17,
207                    "column": 35
208                  },
209                  "end": {
210                    "line": 17,
211                    "column": 52
212                  }
213                }
214              },
215              "loc": {
216                "start": {
217                  "line": 17,
218                  "column": 25
219                },
220                "end": {
221                  "line": 17,
222                  "column": 53
223                }
224              }
225            }
226          ],
227          "loc": {
228            "start": {
229              "line": 17,
230              "column": 15
231            },
232            "end": {
233              "line": 17,
234              "column": 53
235            }
236          }
237        },
238        "body": {
239          "type": "BlockStatement",
240          "statements": [
241            {
242              "type": "ReturnStatement",
243              "argument": {
244                "type": "Identifier",
245                "name": "arg",
246                "decorators": [],
247                "loc": {
248                  "start": {
249                    "line": 18,
250                    "column": 12
251                  },
252                  "end": {
253                    "line": 18,
254                    "column": 15
255                  }
256                }
257              },
258              "loc": {
259                "start": {
260                  "line": 18,
261                  "column": 5
262                },
263                "end": {
264                  "line": 18,
265                  "column": 16
266                }
267              }
268            }
269          ],
270          "loc": {
271            "start": {
272              "line": 17,
273              "column": 71
274            },
275            "end": {
276              "line": 19,
277              "column": 2
278            }
279          }
280        },
281        "loc": {
282          "start": {
283            "line": 17,
284            "column": 1
285          },
286          "end": {
287            "line": 19,
288            "column": 2
289          }
290        }
291      },
292      "loc": {
293        "start": {
294          "line": 17,
295          "column": 1
296        },
297        "end": {
298          "line": 19,
299          "column": 2
300        }
301      }
302    },
303    {
304      "type": "FunctionDeclaration",
305      "function": {
306        "type": "ScriptFunction",
307        "id": {
308          "type": "Identifier",
309          "name": "func2",
310          "decorators": [],
311          "loc": {
312            "start": {
313              "line": 21,
314              "column": 10
315            },
316            "end": {
317              "line": 21,
318              "column": 15
319            }
320          }
321        },
322        "generator": false,
323        "async": false,
324        "expression": false,
325        "params": [],
326        "typeParameters": {
327          "type": "TSTypeParameterDeclaration",
328          "params": [
329            {
330              "type": "TSTypeParameter",
331              "name": {
332                "type": "Identifier",
333                "name": "A",
334                "decorators": [],
335                "loc": {
336                  "start": {
337                    "line": 21,
338                    "column": 16
339                  },
340                  "end": {
341                    "line": 21,
342                    "column": 17
343                  }
344                }
345              },
346              "constraint": {
347                "type": "TSTypeLiteral",
348                "members": [
349                  {
350                    "type": "TSPropertySignature",
351                    "computed": false,
352                    "optional": false,
353                    "readonly": false,
354                    "key": {
355                      "type": "Identifier",
356                      "name": "a",
357                      "decorators": [],
358                      "loc": {
359                        "start": {
360                          "line": 21,
361                          "column": 28
362                        },
363                        "end": {
364                          "line": 21,
365                          "column": 29
366                        }
367                      }
368                    },
369                    "typeAnnotation": {
370                      "type": "TSNumberKeyword",
371                      "loc": {
372                        "start": {
373                          "line": 21,
374                          "column": 31
375                        },
376                        "end": {
377                          "line": 21,
378                          "column": 37
379                        }
380                      }
381                    },
382                    "loc": {
383                      "start": {
384                        "line": 21,
385                        "column": 28
386                      },
387                      "end": {
388                        "line": 21,
389                        "column": 38
390                      }
391                    }
392                  },
393                  {
394                    "type": "TSPropertySignature",
395                    "computed": false,
396                    "optional": false,
397                    "readonly": false,
398                    "key": {
399                      "type": "Identifier",
400                      "name": "b",
401                      "decorators": [],
402                      "loc": {
403                        "start": {
404                          "line": 21,
405                          "column": 39
406                        },
407                        "end": {
408                          "line": 21,
409                          "column": 40
410                        }
411                      }
412                    },
413                    "typeAnnotation": {
414                      "type": "TSStringKeyword",
415                      "loc": {
416                        "start": {
417                          "line": 21,
418                          "column": 42
419                        },
420                        "end": {
421                          "line": 21,
422                          "column": 48
423                        }
424                      }
425                    },
426                    "loc": {
427                      "start": {
428                        "line": 21,
429                        "column": 39
430                      },
431                      "end": {
432                        "line": 21,
433                        "column": 50
434                      }
435                    }
436                  }
437                ],
438                "loc": {
439                  "start": {
440                    "line": 21,
441                    "column": 26
442                  },
443                  "end": {
444                    "line": 21,
445                    "column": 50
446                  }
447                }
448              },
449              "loc": {
450                "start": {
451                  "line": 21,
452                  "column": 16
453                },
454                "end": {
455                  "line": 21,
456                  "column": 51
457                }
458              }
459            }
460          ],
461          "loc": {
462            "start": {
463              "line": 21,
464              "column": 15
465            },
466            "end": {
467              "line": 21,
468              "column": 51
469            }
470          }
471        },
472        "body": {
473          "type": "BlockStatement",
474          "statements": [],
475          "loc": {
476            "start": {
477              "line": 21,
478              "column": 54
479            },
480            "end": {
481              "line": 21,
482              "column": 57
483            }
484          }
485        },
486        "loc": {
487          "start": {
488            "line": 21,
489            "column": 1
490          },
491          "end": {
492            "line": 21,
493            "column": 57
494          }
495        }
496      },
497      "loc": {
498        "start": {
499          "line": 21,
500          "column": 1
501        },
502        "end": {
503          "line": 21,
504          "column": 57
505        }
506      }
507    },
508    {
509      "type": "FunctionDeclaration",
510      "function": {
511        "type": "ScriptFunction",
512        "id": {
513          "type": "Identifier",
514          "name": "func3",
515          "decorators": [],
516          "loc": {
517            "start": {
518              "line": 23,
519              "column": 10
520            },
521            "end": {
522              "line": 23,
523              "column": 15
524            }
525          }
526        },
527        "generator": false,
528        "async": false,
529        "expression": false,
530        "params": [
531          {
532            "type": "Identifier",
533            "name": "a",
534            "typeAnnotation": {
535              "type": "TSTypeReference",
536              "typeName": {
537                "type": "Identifier",
538                "name": "A",
539                "decorators": [],
540                "loc": {
541                  "start": {
542                    "line": 23,
543                    "column": 90
544                  },
545                  "end": {
546                    "line": 23,
547                    "column": 91
548                  }
549                }
550              },
551              "loc": {
552                "start": {
553                  "line": 23,
554                  "column": 90
555                },
556                "end": {
557                  "line": 23,
558                  "column": 91
559                }
560              }
561            },
562            "decorators": [],
563            "loc": {
564              "start": {
565                "line": 23,
566                "column": 87
567              },
568              "end": {
569                "line": 23,
570                "column": 88
571              }
572            }
573          },
574          {
575            "type": "Identifier",
576            "name": "b",
577            "typeAnnotation": {
578              "type": "TSStringKeyword",
579              "loc": {
580                "start": {
581                  "line": 23,
582                  "column": 96
583                },
584                "end": {
585                  "line": 23,
586                  "column": 102
587                }
588              }
589            },
590            "decorators": [],
591            "loc": {
592              "start": {
593                "line": 23,
594                "column": 93
595              },
596              "end": {
597                "line": 23,
598                "column": 94
599              }
600            }
601          }
602        ],
603        "returnType": {
604          "type": "TSUnionType",
605          "types": [
606            {
607              "type": "TSNumberKeyword",
608              "loc": {
609                "start": {
610                  "line": 23,
611                  "column": 105
612                },
613                "end": {
614                  "line": 23,
615                  "column": 111
616                }
617              }
618            },
619            {
620              "type": "TSBooleanKeyword",
621              "loc": {
622                "start": {
623                  "line": 23,
624                  "column": 114
625                },
626                "end": {
627                  "line": 23,
628                  "column": 121
629                }
630              }
631            }
632          ],
633          "loc": {
634            "start": {
635              "line": 23,
636              "column": 105
637            },
638            "end": {
639              "line": 23,
640              "column": 121
641            }
642          }
643        },
644        "typeParameters": {
645          "type": "TSTypeParameterDeclaration",
646          "params": [
647            {
648              "type": "TSTypeParameter",
649              "name": {
650                "type": "Identifier",
651                "name": "A",
652                "decorators": [],
653                "loc": {
654                  "start": {
655                    "line": 23,
656                    "column": 16
657                  },
658                  "end": {
659                    "line": 23,
660                    "column": 17
661                  }
662                }
663              },
664              "constraint": {
665                "type": "TSTypeOperator",
666                "operator": "keyof",
667                "typeAnnotation": {
668                  "type": "TSTypeLiteral",
669                  "members": [
670                    {
671                      "type": "TSPropertySignature",
672                      "computed": false,
673                      "optional": false,
674                      "readonly": false,
675                      "key": {
676                        "type": "Identifier",
677                        "name": "a",
678                        "decorators": [],
679                        "loc": {
680                          "start": {
681                            "line": 23,
682                            "column": 34
683                          },
684                          "end": {
685                            "line": 23,
686                            "column": 35
687                          }
688                        }
689                      },
690                      "typeAnnotation": {
691                        "type": "TSTypeLiteral",
692                        "members": [
693                          {
694                            "type": "TSPropertySignature",
695                            "computed": false,
696                            "optional": false,
697                            "readonly": false,
698                            "key": {
699                              "type": "Identifier",
700                              "name": "b",
701                              "decorators": [],
702                              "loc": {
703                                "start": {
704                                  "line": 23,
705                                  "column": 39
706                                },
707                                "end": {
708                                  "line": 23,
709                                  "column": 40
710                                }
711                              }
712                            },
713                            "typeAnnotation": {
714                              "type": "TSNumberKeyword",
715                              "loc": {
716                                "start": {
717                                  "line": 23,
718                                  "column": 42
719                                },
720                                "end": {
721                                  "line": 23,
722                                  "column": 48
723                                }
724                              }
725                            },
726                            "loc": {
727                              "start": {
728                                "line": 23,
729                                "column": 39
730                              },
731                              "end": {
732                                "line": 23,
733                                "column": 49
734                              }
735                            }
736                          },
737                          {
738                            "type": "TSPropertySignature",
739                            "computed": false,
740                            "optional": false,
741                            "readonly": false,
742                            "key": {
743                              "type": "Identifier",
744                              "name": "c",
745                              "decorators": [],
746                              "loc": {
747                                "start": {
748                                  "line": 23,
749                                  "column": 50
750                                },
751                                "end": {
752                                  "line": 23,
753                                  "column": 51
754                                }
755                              }
756                            },
757                            "typeAnnotation": {
758                              "type": "TSBooleanKeyword",
759                              "loc": {
760                                "start": {
761                                  "line": 23,
762                                  "column": 53
763                                },
764                                "end": {
765                                  "line": 23,
766                                  "column": 60
767                                }
768                              }
769                            },
770                            "loc": {
771                              "start": {
772                                "line": 23,
773                                "column": 50
774                              },
775                              "end": {
776                                "line": 23,
777                                "column": 62
778                              }
779                            }
780                          }
781                        ],
782                        "loc": {
783                          "start": {
784                            "line": 23,
785                            "column": 37
786                          },
787                          "end": {
788                            "line": 23,
789                            "column": 62
790                          }
791                        }
792                      },
793                      "loc": {
794                        "start": {
795                          "line": 23,
796                          "column": 34
797                        },
798                        "end": {
799                          "line": 23,
800                          "column": 63
801                        }
802                      }
803                    },
804                    {
805                      "type": "TSPropertySignature",
806                      "computed": false,
807                      "optional": false,
808                      "readonly": false,
809                      "key": {
810                        "type": "Identifier",
811                        "name": "b",
812                        "decorators": [],
813                        "loc": {
814                          "start": {
815                            "line": 23,
816                            "column": 64
817                          },
818                          "end": {
819                            "line": 23,
820                            "column": 65
821                          }
822                        }
823                      },
824                      "typeAnnotation": {
825                        "type": "TSTupleType",
826                        "elementTypes": [
827                          {
828                            "type": "TSNumberKeyword",
829                            "loc": {
830                              "start": {
831                                "line": 23,
832                                "column": 68
833                              },
834                              "end": {
835                                "line": 23,
836                                "column": 74
837                              }
838                            }
839                          },
840                          {
841                            "type": "TSStringKeyword",
842                            "loc": {
843                              "start": {
844                                "line": 23,
845                                "column": 76
846                              },
847                              "end": {
848                                "line": 23,
849                                "column": 82
850                              }
851                            }
852                          }
853                        ],
854                        "loc": {
855                          "start": {
856                            "line": 23,
857                            "column": 67
858                          },
859                          "end": {
860                            "line": 23,
861                            "column": 83
862                          }
863                        }
864                      },
865                      "loc": {
866                        "start": {
867                          "line": 23,
868                          "column": 64
869                        },
870                        "end": {
871                          "line": 23,
872                          "column": 85
873                        }
874                      }
875                    }
876                  ],
877                  "loc": {
878                    "start": {
879                      "line": 23,
880                      "column": 32
881                    },
882                    "end": {
883                      "line": 23,
884                      "column": 85
885                    }
886                  }
887                },
888                "loc": {
889                  "start": {
890                    "line": 23,
891                    "column": 26
892                  },
893                  "end": {
894                    "line": 23,
895                    "column": 85
896                  }
897                }
898              },
899              "loc": {
900                "start": {
901                  "line": 23,
902                  "column": 16
903                },
904                "end": {
905                  "line": 23,
906                  "column": 86
907                }
908              }
909            }
910          ],
911          "loc": {
912            "start": {
913              "line": 23,
914              "column": 15
915            },
916            "end": {
917              "line": 23,
918              "column": 86
919            }
920          }
921        },
922        "body": {
923          "type": "BlockStatement",
924          "statements": [
925            {
926              "type": "ReturnStatement",
927              "argument": {
928                "type": "BooleanLiteral",
929                "value": true,
930                "loc": {
931                  "start": {
932                    "line": 24,
933                    "column": 12
934                  },
935                  "end": {
936                    "line": 24,
937                    "column": 16
938                  }
939                }
940              },
941              "loc": {
942                "start": {
943                  "line": 24,
944                  "column": 5
945                },
946                "end": {
947                  "line": 24,
948                  "column": 17
949                }
950              }
951            }
952          ],
953          "loc": {
954            "start": {
955              "line": 23,
956              "column": 122
957            },
958            "end": {
959              "line": 25,
960              "column": 2
961            }
962          }
963        },
964        "loc": {
965          "start": {
966            "line": 23,
967            "column": 1
968          },
969          "end": {
970            "line": 25,
971            "column": 2
972          }
973        }
974      },
975      "loc": {
976        "start": {
977          "line": 23,
978          "column": 1
979        },
980        "end": {
981          "line": 25,
982          "column": 2
983        }
984      }
985    },
986    {
987      "type": "TSTypeAliasDeclaration",
988      "id": {
989        "type": "Identifier",
990        "name": "PromiseConstructorLike",
991        "decorators": [],
992        "loc": {
993          "start": {
994            "line": 27,
995            "column": 14
996          },
997          "end": {
998            "line": 27,
999            "column": 36
1000          }
1001        }
1002      },
1003      "typeAnnotation": {
1004        "type": "TSConstructorType",
1005        "params": [
1006          {
1007            "type": "Identifier",
1008            "name": "executor",
1009            "typeAnnotation": {
1010              "type": "TSFunctionType",
1011              "params": [
1012                {
1013                  "type": "Identifier",
1014                  "name": "resolve",
1015                  "typeAnnotation": {
1016                    "type": "TSFunctionType",
1017                    "params": [
1018                      {
1019                        "type": "Identifier",
1020                        "name": "value",
1021                        "typeAnnotation": {
1022                          "type": "TSUnionType",
1023                          "types": [
1024                            {
1025                              "type": "TSTypeReference",
1026                              "typeName": {
1027                                "type": "Identifier",
1028                                "name": "T",
1029                                "decorators": [],
1030                                "loc": {
1031                                  "start": {
1032                                    "line": 27,
1033                                    "column": 75
1034                                  },
1035                                  "end": {
1036                                    "line": 27,
1037                                    "column": 76
1038                                  }
1039                                }
1040                              },
1041                              "loc": {
1042                                "start": {
1043                                  "line": 27,
1044                                  "column": 75
1045                                },
1046                                "end": {
1047                                  "line": 27,
1048                                  "column": 76
1049                                }
1050                              }
1051                            },
1052                            {
1053                              "type": "TSTypeReference",
1054                              "typeName": {
1055                                "type": "Identifier",
1056                                "name": "PromiseLike",
1057                                "decorators": [],
1058                                "loc": {
1059                                  "start": {
1060                                    "line": 27,
1061                                    "column": 79
1062                                  },
1063                                  "end": {
1064                                    "line": 27,
1065                                    "column": 90
1066                                  }
1067                                }
1068                              },
1069                              "typeParameters": {
1070                                "type": "TSTypeParameterInstantiation",
1071                                "params": [
1072                                  {
1073                                    "type": "TSTypeReference",
1074                                    "typeName": {
1075                                      "type": "Identifier",
1076                                      "name": "T",
1077                                      "decorators": [],
1078                                      "loc": {
1079                                        "start": {
1080                                          "line": 27,
1081                                          "column": 91
1082                                        },
1083                                        "end": {
1084                                          "line": 27,
1085                                          "column": 92
1086                                        }
1087                                      }
1088                                    },
1089                                    "loc": {
1090                                      "start": {
1091                                        "line": 27,
1092                                        "column": 91
1093                                      },
1094                                      "end": {
1095                                        "line": 27,
1096                                        "column": 92
1097                                      }
1098                                    }
1099                                  }
1100                                ],
1101                                "loc": {
1102                                  "start": {
1103                                    "line": 27,
1104                                    "column": 79
1105                                  },
1106                                  "end": {
1107                                    "line": 27,
1108                                    "column": 93
1109                                  }
1110                                }
1111                              },
1112                              "loc": {
1113                                "start": {
1114                                  "line": 27,
1115                                  "column": 79
1116                                },
1117                                "end": {
1118                                  "line": 27,
1119                                  "column": 90
1120                                }
1121                              }
1122                            }
1123                          ],
1124                          "loc": {
1125                            "start": {
1126                              "line": 27,
1127                              "column": 75
1128                            },
1129                            "end": {
1130                              "line": 27,
1131                              "column": 90
1132                            }
1133                          }
1134                        },
1135                        "decorators": [],
1136                        "loc": {
1137                          "start": {
1138                            "line": 27,
1139                            "column": 68
1140                          },
1141                          "end": {
1142                            "line": 27,
1143                            "column": 73
1144                          }
1145                        }
1146                      }
1147                    ],
1148                    "returnType": {
1149                      "type": "TSVoidKeyword",
1150                      "loc": {
1151                        "start": {
1152                          "line": 27,
1153                          "column": 98
1154                        },
1155                        "end": {
1156                          "line": 27,
1157                          "column": 102
1158                        }
1159                      }
1160                    },
1161                    "loc": {
1162                      "start": {
1163                        "line": 27,
1164                        "column": 67
1165                      },
1166                      "end": {
1167                        "line": 27,
1168                        "column": 102
1169                      }
1170                    }
1171                  },
1172                  "decorators": [],
1173                  "loc": {
1174                    "start": {
1175                      "line": 27,
1176                      "column": 58
1177                    },
1178                    "end": {
1179                      "line": 27,
1180                      "column": 65
1181                    }
1182                  }
1183                },
1184                {
1185                  "type": "Identifier",
1186                  "name": "reject",
1187                  "typeAnnotation": {
1188                    "type": "TSFunctionType",
1189                    "params": [
1190                      {
1191                        "type": "Identifier",
1192                        "name": "reason",
1193                        "typeAnnotation": {
1194                          "type": "TSAnyKeyword",
1195                          "loc": {
1196                            "start": {
1197                              "line": 27,
1198                              "column": 122
1199                            },
1200                            "end": {
1201                              "line": 27,
1202                              "column": 125
1203                            }
1204                          }
1205                        },
1206                        "optional": true,
1207                        "decorators": [],
1208                        "loc": {
1209                          "start": {
1210                            "line": 27,
1211                            "column": 113
1212                          },
1213                          "end": {
1214                            "line": 27,
1215                            "column": 119
1216                          }
1217                        }
1218                      }
1219                    ],
1220                    "returnType": {
1221                      "type": "TSVoidKeyword",
1222                      "loc": {
1223                        "start": {
1224                          "line": 27,
1225                          "column": 130
1226                        },
1227                        "end": {
1228                          "line": 27,
1229                          "column": 134
1230                        }
1231                      }
1232                    },
1233                    "loc": {
1234                      "start": {
1235                        "line": 27,
1236                        "column": 112
1237                      },
1238                      "end": {
1239                        "line": 27,
1240                        "column": 134
1241                      }
1242                    }
1243                  },
1244                  "decorators": [],
1245                  "loc": {
1246                    "start": {
1247                      "line": 27,
1248                      "column": 104
1249                    },
1250                    "end": {
1251                      "line": 27,
1252                      "column": 110
1253                    }
1254                  }
1255                }
1256              ],
1257              "returnType": {
1258                "type": "TSVoidKeyword",
1259                "loc": {
1260                  "start": {
1261                    "line": 27,
1262                    "column": 139
1263                  },
1264                  "end": {
1265                    "line": 27,
1266                    "column": 143
1267                  }
1268                }
1269              },
1270              "loc": {
1271                "start": {
1272                  "line": 27,
1273                  "column": 57
1274                },
1275                "end": {
1276                  "line": 27,
1277                  "column": 143
1278                }
1279              }
1280            },
1281            "decorators": [],
1282            "loc": {
1283              "start": {
1284                "line": 27,
1285                "column": 47
1286              },
1287              "end": {
1288                "line": 27,
1289                "column": 55
1290              }
1291            }
1292          }
1293        ],
1294        "typeParameters": {
1295          "type": "TSTypeParameterDeclaration",
1296          "params": [
1297            {
1298              "type": "TSTypeParameter",
1299              "name": {
1300                "type": "Identifier",
1301                "name": "T",
1302                "decorators": [],
1303                "loc": {
1304                  "start": {
1305                    "line": 27,
1306                    "column": 44
1307                  },
1308                  "end": {
1309                    "line": 27,
1310                    "column": 45
1311                  }
1312                }
1313              },
1314              "loc": {
1315                "start": {
1316                  "line": 27,
1317                  "column": 44
1318                },
1319                "end": {
1320                  "line": 27,
1321                  "column": 46
1322                }
1323              }
1324            }
1325          ],
1326          "loc": {
1327            "start": {
1328              "line": 27,
1329              "column": 43
1330            },
1331            "end": {
1332              "line": 27,
1333              "column": 46
1334            }
1335          }
1336        },
1337        "returnType": {
1338          "type": "TSTypeReference",
1339          "typeName": {
1340            "type": "Identifier",
1341            "name": "PromiseLike",
1342            "decorators": [],
1343            "loc": {
1344              "start": {
1345                "line": 27,
1346                "column": 148
1347              },
1348              "end": {
1349                "line": 27,
1350                "column": 159
1351              }
1352            }
1353          },
1354          "typeParameters": {
1355            "type": "TSTypeParameterInstantiation",
1356            "params": [
1357              {
1358                "type": "TSTypeReference",
1359                "typeName": {
1360                  "type": "Identifier",
1361                  "name": "T",
1362                  "decorators": [],
1363                  "loc": {
1364                    "start": {
1365                      "line": 27,
1366                      "column": 160
1367                    },
1368                    "end": {
1369                      "line": 27,
1370                      "column": 161
1371                    }
1372                  }
1373                },
1374                "loc": {
1375                  "start": {
1376                    "line": 27,
1377                    "column": 160
1378                  },
1379                  "end": {
1380                    "line": 27,
1381                    "column": 161
1382                  }
1383                }
1384              }
1385            ],
1386            "loc": {
1387              "start": {
1388                "line": 27,
1389                "column": 148
1390              },
1391              "end": {
1392                "line": 27,
1393                "column": 162
1394              }
1395            }
1396          },
1397          "loc": {
1398            "start": {
1399              "line": 27,
1400              "column": 148
1401            },
1402            "end": {
1403              "line": 27,
1404              "column": 159
1405            }
1406          }
1407        },
1408        "loc": {
1409          "start": {
1410            "line": 27,
1411            "column": 39
1412          },
1413          "end": {
1414            "line": 27,
1415            "column": 159
1416          }
1417        }
1418      },
1419      "declare": true,
1420      "loc": {
1421        "start": {
1422          "line": 27,
1423          "column": 9
1424        },
1425        "end": {
1426          "line": 27,
1427          "column": 163
1428        }
1429      }
1430    },
1431    {
1432      "type": "EmptyStatement",
1433      "loc": {
1434        "start": {
1435          "line": 27,
1436          "column": 162
1437        },
1438        "end": {
1439          "line": 27,
1440          "column": 163
1441        }
1442      }
1443    },
1444    {
1445      "type": "TSInterfaceDeclaration",
1446      "body": {
1447        "type": "TSInterfaceBody",
1448        "body": [
1449          {
1450            "type": "TSPropertySignature",
1451            "computed": false,
1452            "optional": false,
1453            "readonly": false,
1454            "key": {
1455              "type": "Identifier",
1456              "name": "a",
1457              "decorators": [],
1458              "loc": {
1459                "start": {
1460                  "line": 30,
1461                  "column": 5
1462                },
1463                "end": {
1464                  "line": 30,
1465                  "column": 6
1466                }
1467              }
1468            },
1469            "typeAnnotation": {
1470              "type": "TSNumberKeyword",
1471              "loc": {
1472                "start": {
1473                  "line": 30,
1474                  "column": 8
1475                },
1476                "end": {
1477                  "line": 30,
1478                  "column": 14
1479                }
1480              }
1481            },
1482            "loc": {
1483              "start": {
1484                "line": 30,
1485                "column": 5
1486              },
1487              "end": {
1488                "line": 30,
1489                "column": 15
1490              }
1491            }
1492          },
1493          {
1494            "type": "TSIndexSignature",
1495            "parameters": {
1496              "type": "Identifier",
1497              "name": "x",
1498              "typeAnnotation": {
1499                "type": "TSStringKeyword",
1500                "loc": {
1501                  "start": {
1502                    "line": 31,
1503                    "column": 9
1504                  },
1505                  "end": {
1506                    "line": 31,
1507                    "column": 15
1508                  }
1509                }
1510              },
1511              "decorators": [],
1512              "loc": {
1513                "start": {
1514                  "line": 31,
1515                  "column": 6
1516                },
1517                "end": {
1518                  "line": 31,
1519                  "column": 7
1520                }
1521              }
1522            },
1523            "typeAnnotation": {
1524              "type": "TSUnionType",
1525              "types": [
1526                {
1527                  "type": "TSBooleanKeyword",
1528                  "loc": {
1529                    "start": {
1530                      "line": 31,
1531                      "column": 18
1532                    },
1533                    "end": {
1534                      "line": 31,
1535                      "column": 25
1536                    }
1537                  }
1538                },
1539                {
1540                  "type": "TSNumberKeyword",
1541                  "loc": {
1542                    "start": {
1543                      "line": 31,
1544                      "column": 28
1545                    },
1546                    "end": {
1547                      "line": 31,
1548                      "column": 34
1549                    }
1550                  }
1551                }
1552              ],
1553              "loc": {
1554                "start": {
1555                  "line": 31,
1556                  "column": 18
1557                },
1558                "end": {
1559                  "line": 31,
1560                  "column": 34
1561                }
1562              }
1563            },
1564            "readonly": false,
1565            "loc": {
1566              "start": {
1567                "line": 31,
1568                "column": 5
1569              },
1570              "end": {
1571                "line": 31,
1572                "column": 35
1573              }
1574            }
1575          }
1576        ],
1577        "loc": {
1578          "start": {
1579            "line": 29,
1580            "column": 53
1581          },
1582          "end": {
1583            "line": 32,
1584            "column": 2
1585          }
1586        }
1587      },
1588      "id": {
1589        "type": "Identifier",
1590        "name": "R",
1591        "decorators": [],
1592        "loc": {
1593          "start": {
1594            "line": 29,
1595            "column": 11
1596          },
1597          "end": {
1598            "line": 29,
1599            "column": 12
1600          }
1601        }
1602      },
1603      "extends": [],
1604      "typeParameters": {
1605        "type": "TSTypeParameterDeclaration",
1606        "params": [
1607          {
1608            "type": "TSTypeParameter",
1609            "name": {
1610              "type": "Identifier",
1611              "name": "K",
1612              "decorators": [],
1613              "loc": {
1614                "start": {
1615                  "line": 29,
1616                  "column": 13
1617                },
1618                "end": {
1619                  "line": 29,
1620                  "column": 14
1621                }
1622              }
1623            },
1624            "constraint": {
1625              "type": "TSTupleType",
1626              "elementTypes": [
1627                {
1628                  "type": "TSNumberKeyword",
1629                  "loc": {
1630                    "start": {
1631                      "line": 29,
1632                      "column": 24
1633                    },
1634                    "end": {
1635                      "line": 29,
1636                      "column": 30
1637                    }
1638                  }
1639                },
1640                {
1641                  "type": "TSStringKeyword",
1642                  "loc": {
1643                    "start": {
1644                      "line": 29,
1645                      "column": 32
1646                    },
1647                    "end": {
1648                      "line": 29,
1649                      "column": 38
1650                    }
1651                  }
1652                }
1653              ],
1654              "loc": {
1655                "start": {
1656                  "line": 29,
1657                  "column": 23
1658                },
1659                "end": {
1660                  "line": 29,
1661                  "column": 39
1662                }
1663              }
1664            },
1665            "loc": {
1666              "start": {
1667                "line": 29,
1668                "column": 13
1669              },
1670              "end": {
1671                "line": 29,
1672                "column": 40
1673              }
1674            }
1675          },
1676          {
1677            "type": "TSTypeParameter",
1678            "name": {
1679              "type": "Identifier",
1680              "name": "T",
1681              "decorators": [],
1682              "loc": {
1683                "start": {
1684                  "line": 29,
1685                  "column": 41
1686                },
1687                "end": {
1688                  "line": 29,
1689                  "column": 42
1690                }
1691              }
1692            },
1693            "default": {
1694              "type": "TSStringKeyword",
1695              "loc": {
1696                "start": {
1697                  "line": 29,
1698                  "column": 45
1699                },
1700                "end": {
1701                  "line": 29,
1702                  "column": 51
1703                }
1704              }
1705            },
1706            "loc": {
1707              "start": {
1708                "line": 29,
1709                "column": 41
1710              },
1711              "end": {
1712                "line": 29,
1713                "column": 52
1714              }
1715            }
1716          }
1717        ],
1718        "loc": {
1719          "start": {
1720            "line": 29,
1721            "column": 12
1722          },
1723          "end": {
1724            "line": 29,
1725            "column": 52
1726          }
1727        }
1728      },
1729      "loc": {
1730        "start": {
1731          "line": 29,
1732          "column": 1
1733        },
1734        "end": {
1735          "line": 32,
1736          "column": 2
1737        }
1738      }
1739    },
1740    {
1741      "type": "TSInterfaceDeclaration",
1742      "body": {
1743        "type": "TSInterfaceBody",
1744        "body": [
1745          {
1746            "type": "TSCallSignatureDeclaration",
1747            "params": [],
1748            "typeParameters": {
1749              "type": "TSTypeParameterDeclaration",
1750              "params": [
1751                {
1752                  "type": "TSTypeParameter",
1753                  "name": {
1754                    "type": "Identifier",
1755                    "name": "A",
1756                    "decorators": [],
1757                    "loc": {
1758                      "start": {
1759                        "line": 35,
1760                        "column": 6
1761                      },
1762                      "end": {
1763                        "line": 35,
1764                        "column": 7
1765                      }
1766                    }
1767                  },
1768                  "loc": {
1769                    "start": {
1770                      "line": 35,
1771                      "column": 6
1772                    },
1773                    "end": {
1774                      "line": 35,
1775                      "column": 8
1776                    }
1777                  }
1778                }
1779              ],
1780              "loc": {
1781                "start": {
1782                  "line": 35,
1783                  "column": 5
1784                },
1785                "end": {
1786                  "line": 35,
1787                  "column": 8
1788                }
1789              }
1790            },
1791            "returnType": {
1792              "type": "TSNumberKeyword",
1793              "loc": {
1794                "start": {
1795                  "line": 35,
1796                  "column": 12
1797                },
1798                "end": {
1799                  "line": 35,
1800                  "column": 18
1801                }
1802              }
1803            },
1804            "loc": {
1805              "start": {
1806                "line": 35,
1807                "column": 5
1808              },
1809              "end": {
1810                "line": 35,
1811                "column": 19
1812              }
1813            }
1814          },
1815          {
1816            "type": "TSMethodSignature",
1817            "computed": false,
1818            "optional": false,
1819            "key": {
1820              "type": "Identifier",
1821              "name": "readonly",
1822              "decorators": [],
1823              "loc": {
1824                "start": {
1825                  "line": 36,
1826                  "column": 5
1827                },
1828                "end": {
1829                  "line": 36,
1830                  "column": 13
1831                }
1832              }
1833            },
1834            "params": [],
1835            "typeParameters": {
1836              "type": "TSTypeParameterDeclaration",
1837              "params": [
1838                {
1839                  "type": "TSTypeParameter",
1840                  "name": {
1841                    "type": "Identifier",
1842                    "name": "A",
1843                    "decorators": [],
1844                    "loc": {
1845                      "start": {
1846                        "line": 36,
1847                        "column": 14
1848                      },
1849                      "end": {
1850                        "line": 36,
1851                        "column": 15
1852                      }
1853                    }
1854                  },
1855                  "constraint": {
1856                    "type": "TSNumberKeyword",
1857                    "loc": {
1858                      "start": {
1859                        "line": 36,
1860                        "column": 24
1861                      },
1862                      "end": {
1863                        "line": 36,
1864                        "column": 30
1865                      }
1866                    }
1867                  },
1868                  "loc": {
1869                    "start": {
1870                      "line": 36,
1871                      "column": 14
1872                    },
1873                    "end": {
1874                      "line": 36,
1875                      "column": 31
1876                    }
1877                  }
1878                }
1879              ],
1880              "loc": {
1881                "start": {
1882                  "line": 36,
1883                  "column": 13
1884                },
1885                "end": {
1886                  "line": 36,
1887                  "column": 31
1888                }
1889              }
1890            },
1891            "typeAnnotation": {
1892              "type": "TSTupleType",
1893              "elementTypes": [
1894                {
1895                  "type": "TSBooleanKeyword",
1896                  "loc": {
1897                    "start": {
1898                      "line": 36,
1899                      "column": 36
1900                    },
1901                    "end": {
1902                      "line": 36,
1903                      "column": 43
1904                    }
1905                  }
1906                },
1907                {
1908                  "type": "TSArrayType",
1909                  "elementType": {
1910                    "type": "TSNumberKeyword",
1911                    "loc": {
1912                      "start": {
1913                        "line": 36,
1914                        "column": 45
1915                      },
1916                      "end": {
1917                        "line": 36,
1918                        "column": 51
1919                      }
1920                    }
1921                  },
1922                  "loc": {
1923                    "start": {
1924                      "line": 36,
1925                      "column": 45
1926                    },
1927                    "end": {
1928                      "line": 36,
1929                      "column": 53
1930                    }
1931                  }
1932                }
1933              ],
1934              "loc": {
1935                "start": {
1936                  "line": 36,
1937                  "column": 35
1938                },
1939                "end": {
1940                  "line": 36,
1941                  "column": 54
1942                }
1943              }
1944            },
1945            "loc": {
1946              "start": {
1947                "line": 36,
1948                "column": 5
1949              },
1950              "end": {
1951                "line": 36,
1952                "column": 55
1953              }
1954            }
1955          }
1956        ],
1957        "loc": {
1958          "start": {
1959            "line": 34,
1960            "column": 117
1961          },
1962          "end": {
1963            "line": 37,
1964            "column": 2
1965          }
1966        }
1967      },
1968      "id": {
1969        "type": "Identifier",
1970        "name": "U",
1971        "decorators": [],
1972        "loc": {
1973          "start": {
1974            "line": 34,
1975            "column": 11
1976          },
1977          "end": {
1978            "line": 34,
1979            "column": 12
1980          }
1981        }
1982      },
1983      "extends": [
1984        {
1985          "type": "TSInterfaceHeritage",
1986          "expression": {
1987            "type": "TSTypeReference",
1988            "typeName": {
1989              "type": "Identifier",
1990              "name": "R",
1991              "decorators": [],
1992              "loc": {
1993                "start": {
1994                  "line": 34,
1995                  "column": 97
1996                },
1997                "end": {
1998                  "line": 34,
1999                  "column": 98
2000                }
2001              }
2002            },
2003            "typeParameters": {
2004              "type": "TSTypeParameterInstantiation",
2005              "params": [
2006                {
2007                  "type": "TSTupleType",
2008                  "elementTypes": [
2009                    {
2010                      "type": "TSNumberKeyword",
2011                      "loc": {
2012                        "start": {
2013                          "line": 34,
2014                          "column": 100
2015                        },
2016                        "end": {
2017                          "line": 34,
2018                          "column": 106
2019                        }
2020                      }
2021                    },
2022                    {
2023                      "type": "TSStringKeyword",
2024                      "loc": {
2025                        "start": {
2026                          "line": 34,
2027                          "column": 108
2028                        },
2029                        "end": {
2030                          "line": 34,
2031                          "column": 114
2032                        }
2033                      }
2034                    }
2035                  ],
2036                  "loc": {
2037                    "start": {
2038                      "line": 34,
2039                      "column": 99
2040                    },
2041                    "end": {
2042                      "line": 34,
2043                      "column": 115
2044                    }
2045                  }
2046                }
2047              ],
2048              "loc": {
2049                "start": {
2050                  "line": 34,
2051                  "column": 97
2052                },
2053                "end": {
2054                  "line": 34,
2055                  "column": 116
2056                }
2057              }
2058            },
2059            "loc": {
2060              "start": {
2061                "line": 34,
2062                "column": 117
2063              },
2064              "end": {
2065                "line": 34,
2066                "column": 116
2067              }
2068            }
2069          },
2070          "loc": {
2071            "start": {
2072              "line": 34,
2073              "column": 117
2074            },
2075            "end": {
2076              "line": 34,
2077              "column": 116
2078            }
2079          }
2080        }
2081      ],
2082      "typeParameters": {
2083        "type": "TSTypeParameterDeclaration",
2084        "params": [
2085          {
2086            "type": "TSTypeParameter",
2087            "name": {
2088              "type": "Identifier",
2089              "name": "A",
2090              "decorators": [],
2091              "loc": {
2092                "start": {
2093                  "line": 34,
2094                  "column": 13
2095                },
2096                "end": {
2097                  "line": 34,
2098                  "column": 14
2099                }
2100              }
2101            },
2102            "constraint": {
2103              "type": "TSTypeOperator",
2104              "operator": "readonly",
2105              "typeAnnotation": {
2106                "type": "TSTupleType",
2107                "elementTypes": [
2108                  {
2109                    "type": "TSNumberKeyword",
2110                    "loc": {
2111                      "start": {
2112                        "line": 34,
2113                        "column": 33
2114                      },
2115                      "end": {
2116                        "line": 34,
2117                        "column": 39
2118                      }
2119                    }
2120                  },
2121                  {
2122                    "type": "TSNumberKeyword",
2123                    "loc": {
2124                      "start": {
2125                        "line": 34,
2126                        "column": 41
2127                      },
2128                      "end": {
2129                        "line": 34,
2130                        "column": 47
2131                      }
2132                    }
2133                  },
2134                  {
2135                    "type": "TSTypeLiteral",
2136                    "members": [
2137                      {
2138                        "type": "TSPropertySignature",
2139                        "computed": false,
2140                        "optional": false,
2141                        "readonly": false,
2142                        "key": {
2143                          "type": "Identifier",
2144                          "name": "a",
2145                          "decorators": [],
2146                          "loc": {
2147                            "start": {
2148                              "line": 34,
2149                              "column": 51
2150                            },
2151                            "end": {
2152                              "line": 34,
2153                              "column": 52
2154                            }
2155                          }
2156                        },
2157                        "typeAnnotation": {
2158                          "type": "TSNumberKeyword",
2159                          "loc": {
2160                            "start": {
2161                              "line": 34,
2162                              "column": 54
2163                            },
2164                            "end": {
2165                              "line": 34,
2166                              "column": 60
2167                            }
2168                          }
2169                        },
2170                        "loc": {
2171                          "start": {
2172                            "line": 34,
2173                            "column": 51
2174                          },
2175                          "end": {
2176                            "line": 34,
2177                            "column": 61
2178                          }
2179                        }
2180                      },
2181                      {
2182                        "type": "TSPropertySignature",
2183                        "computed": false,
2184                        "optional": false,
2185                        "readonly": false,
2186                        "key": {
2187                          "type": "Identifier",
2188                          "name": "b",
2189                          "decorators": [],
2190                          "loc": {
2191                            "start": {
2192                              "line": 34,
2193                              "column": 62
2194                            },
2195                            "end": {
2196                              "line": 34,
2197                              "column": 63
2198                            }
2199                          }
2200                        },
2201                        "typeAnnotation": {
2202                          "type": "TSStringKeyword",
2203                          "loc": {
2204                            "start": {
2205                              "line": 34,
2206                              "column": 65
2207                            },
2208                            "end": {
2209                              "line": 34,
2210                              "column": 71
2211                            }
2212                          }
2213                        },
2214                        "loc": {
2215                          "start": {
2216                            "line": 34,
2217                            "column": 62
2218                          },
2219                          "end": {
2220                            "line": 34,
2221                            "column": 73
2222                          }
2223                        }
2224                      }
2225                    ],
2226                    "loc": {
2227                      "start": {
2228                        "line": 34,
2229                        "column": 49
2230                      },
2231                      "end": {
2232                        "line": 34,
2233                        "column": 73
2234                      }
2235                    }
2236                  }
2237                ],
2238                "loc": {
2239                  "start": {
2240                    "line": 34,
2241                    "column": 32
2242                  },
2243                  "end": {
2244                    "line": 34,
2245                    "column": 74
2246                  }
2247                }
2248              },
2249              "loc": {
2250                "start": {
2251                  "line": 34,
2252                  "column": 23
2253                },
2254                "end": {
2255                  "line": 34,
2256                  "column": 74
2257                }
2258              }
2259            },
2260            "loc": {
2261              "start": {
2262                "line": 34,
2263                "column": 13
2264              },
2265              "end": {
2266                "line": 34,
2267                "column": 75
2268              }
2269            }
2270          },
2271          {
2272            "type": "TSTypeParameter",
2273            "name": {
2274              "type": "Identifier",
2275              "name": "Z",
2276              "decorators": [],
2277              "loc": {
2278                "start": {
2279                  "line": 34,
2280                  "column": 76
2281                },
2282                "end": {
2283                  "line": 34,
2284                  "column": 77
2285                }
2286              }
2287            },
2288            "default": {
2289              "type": "TSBooleanKeyword",
2290              "loc": {
2291                "start": {
2292                  "line": 34,
2293                  "column": 80
2294                },
2295                "end": {
2296                  "line": 34,
2297                  "column": 87
2298                }
2299              }
2300            },
2301            "loc": {
2302              "start": {
2303                "line": 34,
2304                "column": 76
2305              },
2306              "end": {
2307                "line": 34,
2308                "column": 88
2309              }
2310            }
2311          }
2312        ],
2313        "loc": {
2314          "start": {
2315            "line": 34,
2316            "column": 12
2317          },
2318          "end": {
2319            "line": 34,
2320            "column": 88
2321          }
2322        }
2323      },
2324      "loc": {
2325        "start": {
2326          "line": 34,
2327          "column": 1
2328        },
2329        "end": {
2330          "line": 37,
2331          "column": 2
2332        }
2333      }
2334    },
2335    {
2336      "type": "ExpressionStatement",
2337      "expression": {
2338        "type": "CallExpression",
2339        "callee": {
2340          "type": "Identifier",
2341          "name": "func1",
2342          "decorators": [],
2343          "loc": {
2344            "start": {
2345              "line": 39,
2346              "column": 1
2347            },
2348            "end": {
2349              "line": 39,
2350              "column": 6
2351            }
2352          }
2353        },
2354        "arguments": [],
2355        "optional": false,
2356        "typeParameters": {
2357          "type": "TSTypeParameterInstantiation",
2358          "params": [
2359            {
2360              "type": "TSNumberKeyword",
2361              "loc": {
2362                "start": {
2363                  "line": 39,
2364                  "column": 7
2365                },
2366                "end": {
2367                  "line": 39,
2368                  "column": 13
2369                }
2370              }
2371            },
2372            {
2373              "type": "TSStringKeyword",
2374              "loc": {
2375                "start": {
2376                  "line": 39,
2377                  "column": 15
2378                },
2379                "end": {
2380                  "line": 39,
2381                  "column": 21
2382                }
2383              }
2384            },
2385            {
2386              "type": "TSTupleType",
2387              "elementTypes": [
2388                {
2389                  "type": "TSLiteralType",
2390                  "literal": {
2391                    "type": "NumberLiteral",
2392                    "value": 1,
2393                    "loc": {
2394                      "start": {
2395                        "line": 39,
2396                        "column": 24
2397                      },
2398                      "end": {
2399                        "line": 39,
2400                        "column": 25
2401                      }
2402                    }
2403                  },
2404                  "loc": {
2405                    "start": {
2406                      "line": 39,
2407                      "column": 24
2408                    },
2409                    "end": {
2410                      "line": 39,
2411                      "column": 25
2412                    }
2413                  }
2414                },
2415                {
2416                  "type": "TSLiteralType",
2417                  "literal": {
2418                    "type": "NumberLiteral",
2419                    "value": 2,
2420                    "loc": {
2421                      "start": {
2422                        "line": 39,
2423                        "column": 27
2424                      },
2425                      "end": {
2426                        "line": 39,
2427                        "column": 28
2428                      }
2429                    }
2430                  },
2431                  "loc": {
2432                    "start": {
2433                      "line": 39,
2434                      "column": 27
2435                    },
2436                    "end": {
2437                      "line": 39,
2438                      "column": 28
2439                    }
2440                  }
2441                },
2442                {
2443                  "type": "TSLiteralType",
2444                  "literal": {
2445                    "type": "NumberLiteral",
2446                    "value": 3,
2447                    "loc": {
2448                      "start": {
2449                        "line": 39,
2450                        "column": 30
2451                      },
2452                      "end": {
2453                        "line": 39,
2454                        "column": 31
2455                      }
2456                    }
2457                  },
2458                  "loc": {
2459                    "start": {
2460                      "line": 39,
2461                      "column": 30
2462                    },
2463                    "end": {
2464                      "line": 39,
2465                      "column": 31
2466                    }
2467                  }
2468                }
2469              ],
2470              "loc": {
2471                "start": {
2472                  "line": 39,
2473                  "column": 23
2474                },
2475                "end": {
2476                  "line": 39,
2477                  "column": 32
2478                }
2479              }
2480            }
2481          ],
2482          "loc": {
2483            "start": {
2484              "line": 39,
2485              "column": 6
2486            },
2487            "end": {
2488              "line": 39,
2489              "column": 33
2490            }
2491          }
2492        },
2493        "loc": {
2494          "start": {
2495            "line": 39,
2496            "column": 1
2497          },
2498          "end": {
2499            "line": 39,
2500            "column": 35
2501          }
2502        }
2503      },
2504      "loc": {
2505        "start": {
2506          "line": 39,
2507          "column": 1
2508        },
2509        "end": {
2510          "line": 39,
2511          "column": 35
2512        }
2513      }
2514    },
2515    {
2516      "type": "ExpressionStatement",
2517      "expression": {
2518        "type": "CallExpression",
2519        "callee": {
2520          "type": "Identifier",
2521          "name": "func2",
2522          "decorators": [],
2523          "loc": {
2524            "start": {
2525              "line": 40,
2526              "column": 1
2527            },
2528            "end": {
2529              "line": 40,
2530              "column": 6
2531            }
2532          }
2533        },
2534        "arguments": [],
2535        "optional": false,
2536        "typeParameters": {
2537          "type": "TSTypeParameterInstantiation",
2538          "params": [
2539            {
2540              "type": "TSFunctionType",
2541              "params": [],
2542              "typeParameters": {
2543                "type": "TSTypeParameterDeclaration",
2544                "params": [
2545                  {
2546                    "type": "TSTypeParameter",
2547                    "name": {
2548                      "type": "Identifier",
2549                      "name": "A",
2550                      "decorators": [],
2551                      "loc": {
2552                        "start": {
2553                          "line": 40,
2554                          "column": 8
2555                        },
2556                        "end": {
2557                          "line": 40,
2558                          "column": 9
2559                        }
2560                      }
2561                    },
2562                    "loc": {
2563                      "start": {
2564                        "line": 40,
2565                        "column": 8
2566                      },
2567                      "end": {
2568                        "line": 40,
2569                        "column": 10
2570                      }
2571                    }
2572                  }
2573                ],
2574                "loc": {
2575                  "start": {
2576                    "line": 40,
2577                    "column": 7
2578                  },
2579                  "end": {
2580                    "line": 40,
2581                    "column": 10
2582                  }
2583                }
2584              },
2585              "returnType": {
2586                "type": "TSTypeLiteral",
2587                "members": [],
2588                "loc": {
2589                  "start": {
2590                    "line": 40,
2591                    "column": 16
2592                  },
2593                  "end": {
2594                    "line": 40,
2595                    "column": 18
2596                  }
2597                }
2598              },
2599              "loc": {
2600                "start": {
2601                  "line": 40,
2602                  "column": 7
2603                },
2604                "end": {
2605                  "line": 40,
2606                  "column": 18
2607                }
2608              }
2609            }
2610          ],
2611          "loc": {
2612            "start": {
2613              "line": 40,
2614              "column": 6
2615            },
2616            "end": {
2617              "line": 40,
2618              "column": 19
2619            }
2620          }
2621        },
2622        "loc": {
2623          "start": {
2624            "line": 40,
2625            "column": 1
2626          },
2627          "end": {
2628            "line": 40,
2629            "column": 21
2630          }
2631        }
2632      },
2633      "loc": {
2634        "start": {
2635          "line": 40,
2636          "column": 1
2637        },
2638        "end": {
2639          "line": 40,
2640          "column": 22
2641        }
2642      }
2643    },
2644    {
2645      "type": "VariableDeclaration",
2646      "declarations": [
2647        {
2648          "type": "VariableDeclarator",
2649          "id": {
2650            "type": "Identifier",
2651            "name": "o",
2652            "decorators": [],
2653            "loc": {
2654              "start": {
2655                "line": 42,
2656                "column": 5
2657              },
2658              "end": {
2659                "line": 42,
2660                "column": 6
2661              }
2662            }
2663          },
2664          "init": {
2665            "type": "ObjectExpression",
2666            "properties": [
2667              {
2668                "type": "Property",
2669                "method": false,
2670                "shorthand": false,
2671                "computed": false,
2672                "key": {
2673                  "type": "Identifier",
2674                  "name": "a",
2675                  "decorators": [],
2676                  "loc": {
2677                    "start": {
2678                      "line": 43,
2679                      "column": 5
2680                    },
2681                    "end": {
2682                      "line": 43,
2683                      "column": 6
2684                    }
2685                  }
2686                },
2687                "value": {
2688                  "type": "FunctionExpression",
2689                  "function": {
2690                    "type": "ScriptFunction",
2691                    "id": null,
2692                    "generator": false,
2693                    "async": false,
2694                    "expression": false,
2695                    "params": [],
2696                    "typeParameters": {
2697                      "type": "TSTypeParameterDeclaration",
2698                      "params": [
2699                        {
2700                          "type": "TSTypeParameter",
2701                          "name": {
2702                            "type": "Identifier",
2703                            "name": "B",
2704                            "decorators": [],
2705                            "loc": {
2706                              "start": {
2707                                "line": 43,
2708                                "column": 18
2709                              },
2710                              "end": {
2711                                "line": 43,
2712                                "column": 19
2713                              }
2714                            }
2715                          },
2716                          "loc": {
2717                            "start": {
2718                              "line": 43,
2719                              "column": 18
2720                            },
2721                            "end": {
2722                              "line": 43,
2723                              "column": 20
2724                            }
2725                          }
2726                        },
2727                        {
2728                          "type": "TSTypeParameter",
2729                          "name": {
2730                            "type": "Identifier",
2731                            "name": "C",
2732                            "decorators": [],
2733                            "loc": {
2734                              "start": {
2735                                "line": 43,
2736                                "column": 21
2737                              },
2738                              "end": {
2739                                "line": 43,
2740                                "column": 22
2741                              }
2742                            }
2743                          },
2744                          "constraint": {
2745                            "type": "TSTypeQuery",
2746                            "exprName": {
2747                              "type": "Identifier",
2748                              "name": "func1",
2749                              "decorators": [],
2750                              "loc": {
2751                                "start": {
2752                                  "line": 43,
2753                                  "column": 38
2754                                },
2755                                "end": {
2756                                  "line": 43,
2757                                  "column": 43
2758                                }
2759                              }
2760                            },
2761                            "loc": {
2762                              "start": {
2763                                "line": 43,
2764                                "column": 31
2765                              },
2766                              "end": {
2767                                "line": 43,
2768                                "column": 43
2769                              }
2770                            }
2771                          },
2772                          "loc": {
2773                            "start": {
2774                              "line": 43,
2775                              "column": 21
2776                            },
2777                            "end": {
2778                              "line": 43,
2779                              "column": 44
2780                            }
2781                          }
2782                        }
2783                      ],
2784                      "loc": {
2785                        "start": {
2786                          "line": 43,
2787                          "column": 17
2788                        },
2789                        "end": {
2790                          "line": 43,
2791                          "column": 44
2792                        }
2793                      }
2794                    },
2795                    "body": {
2796                      "type": "BlockStatement",
2797                      "statements": [],
2798                      "loc": {
2799                        "start": {
2800                          "line": 43,
2801                          "column": 47
2802                        },
2803                        "end": {
2804                          "line": 43,
2805                          "column": 50
2806                        }
2807                      }
2808                    },
2809                    "loc": {
2810                      "start": {
2811                        "line": 43,
2812                        "column": 8
2813                      },
2814                      "end": {
2815                        "line": 43,
2816                        "column": 50
2817                      }
2818                    }
2819                  },
2820                  "loc": {
2821                    "start": {
2822                      "line": 43,
2823                      "column": 8
2824                    },
2825                    "end": {
2826                      "line": 43,
2827                      "column": 50
2828                    }
2829                  }
2830                },
2831                "kind": "init",
2832                "loc": {
2833                  "start": {
2834                    "line": 43,
2835                    "column": 5
2836                  },
2837                  "end": {
2838                    "line": 43,
2839                    "column": 50
2840                  }
2841                }
2842              },
2843              {
2844                "type": "Property",
2845                "method": false,
2846                "shorthand": false,
2847                "computed": false,
2848                "key": {
2849                  "type": "Identifier",
2850                  "name": "b",
2851                  "decorators": [],
2852                  "loc": {
2853                    "start": {
2854                      "line": 44,
2855                      "column": 5
2856                    },
2857                    "end": {
2858                      "line": 44,
2859                      "column": 6
2860                    }
2861                  }
2862                },
2863                "value": {
2864                  "type": "FunctionExpression",
2865                  "function": {
2866                    "type": "ScriptFunction",
2867                    "id": null,
2868                    "generator": false,
2869                    "async": false,
2870                    "expression": false,
2871                    "params": [],
2872                    "typeParameters": {
2873                      "type": "TSTypeParameterDeclaration",
2874                      "params": [
2875                        {
2876                          "type": "TSTypeParameter",
2877                          "name": {
2878                            "type": "Identifier",
2879                            "name": "D",
2880                            "decorators": [],
2881                            "loc": {
2882                              "start": {
2883                                "line": 44,
2884                                "column": 18
2885                              },
2886                              "end": {
2887                                "line": 44,
2888                                "column": 19
2889                              }
2890                            }
2891                          },
2892                          "default": {
2893                            "type": "TSNumberKeyword",
2894                            "loc": {
2895                              "start": {
2896                                "line": 44,
2897                                "column": 22
2898                              },
2899                              "end": {
2900                                "line": 44,
2901                                "column": 28
2902                              }
2903                            }
2904                          },
2905                          "loc": {
2906                            "start": {
2907                              "line": 44,
2908                              "column": 18
2909                            },
2910                            "end": {
2911                              "line": 44,
2912                              "column": 29
2913                            }
2914                          }
2915                        },
2916                        {
2917                          "type": "TSTypeParameter",
2918                          "name": {
2919                            "type": "Identifier",
2920                            "name": "T",
2921                            "decorators": [],
2922                            "loc": {
2923                              "start": {
2924                                "line": 44,
2925                                "column": 30
2926                              },
2927                              "end": {
2928                                "line": 44,
2929                                "column": 31
2930                              }
2931                            }
2932                          },
2933                          "default": {
2934                            "type": "TSStringKeyword",
2935                            "loc": {
2936                              "start": {
2937                                "line": 44,
2938                                "column": 34
2939                              },
2940                              "end": {
2941                                "line": 44,
2942                                "column": 40
2943                              }
2944                            }
2945                          },
2946                          "loc": {
2947                            "start": {
2948                              "line": 44,
2949                              "column": 30
2950                            },
2951                            "end": {
2952                              "line": 44,
2953                              "column": 41
2954                            }
2955                          }
2956                        }
2957                      ],
2958                      "loc": {
2959                        "start": {
2960                          "line": 44,
2961                          "column": 17
2962                        },
2963                        "end": {
2964                          "line": 44,
2965                          "column": 41
2966                        }
2967                      }
2968                    },
2969                    "body": {
2970                      "type": "BlockStatement",
2971                      "statements": [],
2972                      "loc": {
2973                        "start": {
2974                          "line": 44,
2975                          "column": 44
2976                        },
2977                        "end": {
2978                          "line": 44,
2979                          "column": 47
2980                        }
2981                      }
2982                    },
2983                    "loc": {
2984                      "start": {
2985                        "line": 44,
2986                        "column": 8
2987                      },
2988                      "end": {
2989                        "line": 44,
2990                        "column": 47
2991                      }
2992                    }
2993                  },
2994                  "loc": {
2995                    "start": {
2996                      "line": 44,
2997                      "column": 8
2998                    },
2999                    "end": {
3000                      "line": 44,
3001                      "column": 47
3002                    }
3003                  }
3004                },
3005                "kind": "init",
3006                "loc": {
3007                  "start": {
3008                    "line": 44,
3009                    "column": 5
3010                  },
3011                  "end": {
3012                    "line": 44,
3013                    "column": 47
3014                  }
3015                }
3016              },
3017              {
3018                "type": "Property",
3019                "method": true,
3020                "shorthand": false,
3021                "computed": false,
3022                "key": {
3023                  "type": "Identifier",
3024                  "name": "c",
3025                  "decorators": [],
3026                  "loc": {
3027                    "start": {
3028                      "line": 45,
3029                      "column": 5
3030                    },
3031                    "end": {
3032                      "line": 45,
3033                      "column": 6
3034                    }
3035                  }
3036                },
3037                "value": {
3038                  "type": "FunctionExpression",
3039                  "function": {
3040                    "type": "ScriptFunction",
3041                    "id": null,
3042                    "generator": false,
3043                    "async": false,
3044                    "expression": false,
3045                    "params": [],
3046                    "typeParameters": {
3047                      "type": "TSTypeParameterDeclaration",
3048                      "params": [
3049                        {
3050                          "type": "TSTypeParameter",
3051                          "name": {
3052                            "type": "Identifier",
3053                            "name": "E",
3054                            "decorators": [],
3055                            "loc": {
3056                              "start": {
3057                                "line": 45,
3058                                "column": 7
3059                              },
3060                              "end": {
3061                                "line": 45,
3062                                "column": 8
3063                              }
3064                            }
3065                          },
3066                          "loc": {
3067                            "start": {
3068                              "line": 45,
3069                              "column": 7
3070                            },
3071                            "end": {
3072                              "line": 45,
3073                              "column": 9
3074                            }
3075                          }
3076                        },
3077                        {
3078                          "type": "TSTypeParameter",
3079                          "name": {
3080                            "type": "Identifier",
3081                            "name": "F",
3082                            "decorators": [],
3083                            "loc": {
3084                              "start": {
3085                                "line": 45,
3086                                "column": 10
3087                              },
3088                              "end": {
3089                                "line": 45,
3090                                "column": 11
3091                              }
3092                            }
3093                          },
3094                          "constraint": {
3095                            "type": "TSTypeOperator",
3096                            "operator": "readonly",
3097                            "typeAnnotation": {
3098                              "type": "TSTupleType",
3099                              "elementTypes": [],
3100                              "loc": {
3101                                "start": {
3102                                  "line": 45,
3103                                  "column": 29
3104                                },
3105                                "end": {
3106                                  "line": 45,
3107                                  "column": 31
3108                                }
3109                              }
3110                            },
3111                            "loc": {
3112                              "start": {
3113                                "line": 45,
3114                                "column": 20
3115                              },
3116                              "end": {
3117                                "line": 45,
3118                                "column": 31
3119                              }
3120                            }
3121                          },
3122                          "loc": {
3123                            "start": {
3124                              "line": 45,
3125                              "column": 10
3126                            },
3127                            "end": {
3128                              "line": 45,
3129                              "column": 32
3130                            }
3131                          }
3132                        }
3133                      ],
3134                      "loc": {
3135                        "start": {
3136                          "line": 45,
3137                          "column": 6
3138                        },
3139                        "end": {
3140                          "line": 45,
3141                          "column": 32
3142                        }
3143                      }
3144                    },
3145                    "body": {
3146                      "type": "BlockStatement",
3147                      "statements": [],
3148                      "loc": {
3149                        "start": {
3150                          "line": 45,
3151                          "column": 35
3152                        },
3153                        "end": {
3154                          "line": 45,
3155                          "column": 38
3156                        }
3157                      }
3158                    },
3159                    "loc": {
3160                      "start": {
3161                        "line": 45,
3162                        "column": 6
3163                      },
3164                      "end": {
3165                        "line": 45,
3166                        "column": 38
3167                      }
3168                    }
3169                  },
3170                  "loc": {
3171                    "start": {
3172                      "line": 45,
3173                      "column": 6
3174                    },
3175                    "end": {
3176                      "line": 45,
3177                      "column": 38
3178                    }
3179                  }
3180                },
3181                "kind": "init",
3182                "loc": {
3183                  "start": {
3184                    "line": 45,
3185                    "column": 5
3186                  },
3187                  "end": {
3188                    "line": 45,
3189                    "column": 38
3190                  }
3191                }
3192              }
3193            ],
3194            "loc": {
3195              "start": {
3196                "line": 42,
3197                "column": 9
3198              },
3199              "end": {
3200                "line": 46,
3201                "column": 2
3202              }
3203            }
3204          },
3205          "loc": {
3206            "start": {
3207              "line": 42,
3208              "column": 5
3209            },
3210            "end": {
3211              "line": 46,
3212              "column": 2
3213            }
3214          }
3215        }
3216      ],
3217      "kind": "var",
3218      "loc": {
3219        "start": {
3220          "line": 42,
3221          "column": 1
3222        },
3223        "end": {
3224          "line": 46,
3225          "column": 2
3226        }
3227      }
3228    },
3229    {
3230      "type": "ClassDeclaration",
3231      "definition": {
3232        "id": {
3233          "type": "Identifier",
3234          "name": "A",
3235          "decorators": [],
3236          "loc": {
3237            "start": {
3238              "line": 48,
3239              "column": 7
3240            },
3241            "end": {
3242              "line": 48,
3243              "column": 8
3244            }
3245          }
3246        },
3247        "typeParameters": {
3248          "type": "TSTypeParameterDeclaration",
3249          "params": [
3250            {
3251              "type": "TSTypeParameter",
3252              "name": {
3253                "type": "Identifier",
3254                "name": "T",
3255                "decorators": [],
3256                "loc": {
3257                  "start": {
3258                    "line": 48,
3259                    "column": 9
3260                  },
3261                  "end": {
3262                    "line": 48,
3263                    "column": 10
3264                  }
3265                }
3266              },
3267              "constraint": {
3268                "type": "TSTypeReference",
3269                "typeName": {
3270                  "type": "Identifier",
3271                  "name": "B",
3272                  "decorators": [],
3273                  "loc": {
3274                    "start": {
3275                      "line": 48,
3276                      "column": 19
3277                    },
3278                    "end": {
3279                      "line": 48,
3280                      "column": 20
3281                    }
3282                  }
3283                },
3284                "loc": {
3285                  "start": {
3286                    "line": 48,
3287                    "column": 19
3288                  },
3289                  "end": {
3290                    "line": 48,
3291                    "column": 20
3292                  }
3293                }
3294              },
3295              "loc": {
3296                "start": {
3297                  "line": 48,
3298                  "column": 9
3299                },
3300                "end": {
3301                  "line": 48,
3302                  "column": 21
3303                }
3304              }
3305            },
3306            {
3307              "type": "TSTypeParameter",
3308              "name": {
3309                "type": "Identifier",
3310                "name": "Z",
3311                "decorators": [],
3312                "loc": {
3313                  "start": {
3314                    "line": 48,
3315                    "column": 22
3316                  },
3317                  "end": {
3318                    "line": 48,
3319                    "column": 23
3320                  }
3321                }
3322              },
3323              "default": {
3324                "type": "TSTypeLiteral",
3325                "members": [
3326                  {
3327                    "type": "TSPropertySignature",
3328                    "computed": false,
3329                    "optional": false,
3330                    "readonly": false,
3331                    "key": {
3332                      "type": "Identifier",
3333                      "name": "a",
3334                      "decorators": [],
3335                      "loc": {
3336                        "start": {
3337                          "line": 48,
3338                          "column": 28
3339                        },
3340                        "end": {
3341                          "line": 48,
3342                          "column": 29
3343                        }
3344                      }
3345                    },
3346                    "typeAnnotation": {
3347                      "type": "TSNumberKeyword",
3348                      "loc": {
3349                        "start": {
3350                          "line": 48,
3351                          "column": 31
3352                        },
3353                        "end": {
3354                          "line": 48,
3355                          "column": 37
3356                        }
3357                      }
3358                    },
3359                    "loc": {
3360                      "start": {
3361                        "line": 48,
3362                        "column": 28
3363                      },
3364                      "end": {
3365                        "line": 48,
3366                        "column": 38
3367                      }
3368                    }
3369                  },
3370                  {
3371                    "type": "TSPropertySignature",
3372                    "computed": false,
3373                    "optional": false,
3374                    "readonly": false,
3375                    "key": {
3376                      "type": "Identifier",
3377                      "name": "b",
3378                      "decorators": [],
3379                      "loc": {
3380                        "start": {
3381                          "line": 48,
3382                          "column": 39
3383                        },
3384                        "end": {
3385                          "line": 48,
3386                          "column": 40
3387                        }
3388                      }
3389                    },
3390                    "typeAnnotation": {
3391                      "type": "TSStringKeyword",
3392                      "loc": {
3393                        "start": {
3394                          "line": 48,
3395                          "column": 42
3396                        },
3397                        "end": {
3398                          "line": 48,
3399                          "column": 48
3400                        }
3401                      }
3402                    },
3403                    "loc": {
3404                      "start": {
3405                        "line": 48,
3406                        "column": 39
3407                      },
3408                      "end": {
3409                        "line": 48,
3410                        "column": 50
3411                      }
3412                    }
3413                  }
3414                ],
3415                "loc": {
3416                  "start": {
3417                    "line": 48,
3418                    "column": 26
3419                  },
3420                  "end": {
3421                    "line": 48,
3422                    "column": 50
3423                  }
3424                }
3425              },
3426              "loc": {
3427                "start": {
3428                  "line": 48,
3429                  "column": 22
3430                },
3431                "end": {
3432                  "line": 48,
3433                  "column": 51
3434                }
3435              }
3436            }
3437          ],
3438          "loc": {
3439            "start": {
3440              "line": 48,
3441              "column": 8
3442            },
3443            "end": {
3444              "line": 48,
3445              "column": 51
3446            }
3447          }
3448        },
3449        "superClass": null,
3450        "implements": [],
3451        "constructor": {
3452          "type": "MethodDefinition",
3453          "key": {
3454            "type": "Identifier",
3455            "name": "constructor",
3456            "decorators": [],
3457            "loc": {
3458              "start": {
3459                "line": 1,
3460                "column": 1
3461              },
3462              "end": {
3463                "line": 1,
3464                "column": 1
3465              }
3466            }
3467          },
3468          "kind": "constructor",
3469          "static": false,
3470          "optional": false,
3471          "computed": false,
3472          "value": {
3473            "type": "FunctionExpression",
3474            "function": {
3475              "type": "ScriptFunction",
3476              "id": null,
3477              "generator": false,
3478              "async": false,
3479              "expression": false,
3480              "params": [],
3481              "body": {
3482                "type": "BlockStatement",
3483                "statements": [],
3484                "loc": {
3485                  "start": {
3486                    "line": 1,
3487                    "column": 1
3488                  },
3489                  "end": {
3490                    "line": 1,
3491                    "column": 1
3492                  }
3493                }
3494              },
3495              "loc": {
3496                "start": {
3497                  "line": 1,
3498                  "column": 1
3499                },
3500                "end": {
3501                  "line": 1,
3502                  "column": 1
3503                }
3504              }
3505            },
3506            "loc": {
3507              "start": {
3508                "line": 1,
3509                "column": 1
3510              },
3511              "end": {
3512                "line": 1,
3513                "column": 1
3514              }
3515            }
3516          },
3517          "overloads": [],
3518          "decorators": [],
3519          "loc": {
3520            "start": {
3521              "line": 48,
3522              "column": 1
3523            },
3524            "end": {
3525              "line": 51,
3526              "column": 2
3527            }
3528          }
3529        },
3530        "body": [
3531          {
3532            "type": "MethodDefinition",
3533            "key": {
3534              "type": "Identifier",
3535              "name": "a",
3536              "decorators": [],
3537              "loc": {
3538                "start": {
3539                  "line": 49,
3540                  "column": 12
3541                },
3542                "end": {
3543                  "line": 49,
3544                  "column": 13
3545                }
3546              }
3547            },
3548            "kind": "method",
3549            "accessibility": "public",
3550            "static": false,
3551            "optional": false,
3552            "computed": false,
3553            "value": {
3554              "type": "FunctionExpression",
3555              "function": {
3556                "type": "ScriptFunction",
3557                "id": null,
3558                "generator": false,
3559                "async": false,
3560                "expression": false,
3561                "params": [],
3562                "typeParameters": {
3563                  "type": "TSTypeParameterDeclaration",
3564                  "params": [
3565                    {
3566                      "type": "TSTypeParameter",
3567                      "name": {
3568                        "type": "Identifier",
3569                        "name": "T",
3570                        "decorators": [],
3571                        "loc": {
3572                          "start": {
3573                            "line": 49,
3574                            "column": 14
3575                          },
3576                          "end": {
3577                            "line": 49,
3578                            "column": 15
3579                          }
3580                        }
3581                      },
3582                      "loc": {
3583                        "start": {
3584                          "line": 49,
3585                          "column": 14
3586                        },
3587                        "end": {
3588                          "line": 49,
3589                          "column": 16
3590                        }
3591                      }
3592                    },
3593                    {
3594                      "type": "TSTypeParameter",
3595                      "name": {
3596                        "type": "Identifier",
3597                        "name": "R",
3598                        "decorators": [],
3599                        "loc": {
3600                          "start": {
3601                            "line": 49,
3602                            "column": 17
3603                          },
3604                          "end": {
3605                            "line": 49,
3606                            "column": 18
3607                          }
3608                        }
3609                      },
3610                      "loc": {
3611                        "start": {
3612                          "line": 49,
3613                          "column": 17
3614                        },
3615                        "end": {
3616                          "line": 49,
3617                          "column": 19
3618                        }
3619                      }
3620                    }
3621                  ],
3622                  "loc": {
3623                    "start": {
3624                      "line": 49,
3625                      "column": 13
3626                    },
3627                    "end": {
3628                      "line": 49,
3629                      "column": 19
3630                    }
3631                  }
3632                },
3633                "body": {
3634                  "type": "BlockStatement",
3635                  "statements": [],
3636                  "loc": {
3637                    "start": {
3638                      "line": 49,
3639                      "column": 22
3640                    },
3641                    "end": {
3642                      "line": 49,
3643                      "column": 25
3644                    }
3645                  }
3646                },
3647                "loc": {
3648                  "start": {
3649                    "line": 49,
3650                    "column": 13
3651                  },
3652                  "end": {
3653                    "line": 49,
3654                    "column": 25
3655                  }
3656                }
3657              },
3658              "loc": {
3659                "start": {
3660                  "line": 49,
3661                  "column": 13
3662                },
3663                "end": {
3664                  "line": 49,
3665                  "column": 25
3666                }
3667              }
3668            },
3669            "overloads": [],
3670            "decorators": [],
3671            "loc": {
3672              "start": {
3673                "line": 49,
3674                "column": 5
3675              },
3676              "end": {
3677                "line": 49,
3678                "column": 25
3679              }
3680            }
3681          },
3682          {
3683            "type": "MethodDefinition",
3684            "key": {
3685              "type": "Identifier",
3686              "name": "b",
3687              "decorators": [],
3688              "loc": {
3689                "start": {
3690                  "line": 50,
3691                  "column": 13
3692                },
3693                "end": {
3694                  "line": 50,
3695                  "column": 14
3696                }
3697              }
3698            },
3699            "kind": "method",
3700            "accessibility": "private",
3701            "static": false,
3702            "optional": false,
3703            "computed": false,
3704            "value": {
3705              "type": "FunctionExpression",
3706              "function": {
3707                "type": "ScriptFunction",
3708                "id": null,
3709                "generator": false,
3710                "async": false,
3711                "expression": false,
3712                "params": [],
3713                "typeParameters": {
3714                  "type": "TSTypeParameterDeclaration",
3715                  "params": [
3716                    {
3717                      "type": "TSTypeParameter",
3718                      "name": {
3719                        "type": "Identifier",
3720                        "name": "E",
3721                        "decorators": [],
3722                        "loc": {
3723                          "start": {
3724                            "line": 50,
3725                            "column": 15
3726                          },
3727                          "end": {
3728                            "line": 50,
3729                            "column": 16
3730                          }
3731                        }
3732                      },
3733                      "constraint": {
3734                        "type": "TSFunctionType",
3735                        "params": [
3736                          {
3737                            "type": "Identifier",
3738                            "name": "a",
3739                            "typeAnnotation": {
3740                              "type": "TSNumberKeyword",
3741                              "loc": {
3742                                "start": {
3743                                  "line": 50,
3744                                  "column": 29
3745                                },
3746                                "end": {
3747                                  "line": 50,
3748                                  "column": 35
3749                                }
3750                              }
3751                            },
3752                            "decorators": [],
3753                            "loc": {
3754                              "start": {
3755                                "line": 50,
3756                                "column": 26
3757                              },
3758                              "end": {
3759                                "line": 50,
3760                                "column": 27
3761                              }
3762                            }
3763                          },
3764                          {
3765                            "type": "Identifier",
3766                            "name": "b",
3767                            "typeAnnotation": {
3768                              "type": "TSStringKeyword",
3769                              "loc": {
3770                                "start": {
3771                                  "line": 50,
3772                                  "column": 40
3773                                },
3774                                "end": {
3775                                  "line": 50,
3776                                  "column": 46
3777                                }
3778                              }
3779                            },
3780                            "decorators": [],
3781                            "loc": {
3782                              "start": {
3783                                "line": 50,
3784                                "column": 37
3785                              },
3786                              "end": {
3787                                "line": 50,
3788                                "column": 38
3789                              }
3790                            }
3791                          }
3792                        ],
3793                        "returnType": {
3794                          "type": "TSArrayType",
3795                          "elementType": {
3796                            "type": "TSAnyKeyword",
3797                            "loc": {
3798                              "start": {
3799                                "line": 50,
3800                                "column": 51
3801                              },
3802                              "end": {
3803                                "line": 50,
3804                                "column": 54
3805                              }
3806                            }
3807                          },
3808                          "loc": {
3809                            "start": {
3810                              "line": 50,
3811                              "column": 51
3812                            },
3813                            "end": {
3814                              "line": 50,
3815                              "column": 56
3816                            }
3817                          }
3818                        },
3819                        "loc": {
3820                          "start": {
3821                            "line": 50,
3822                            "column": 25
3823                          },
3824                          "end": {
3825                            "line": 50,
3826                            "column": 56
3827                          }
3828                        }
3829                      },
3830                      "loc": {
3831                        "start": {
3832                          "line": 50,
3833                          "column": 15
3834                        },
3835                        "end": {
3836                          "line": 50,
3837                          "column": 57
3838                        }
3839                      }
3840                    }
3841                  ],
3842                  "loc": {
3843                    "start": {
3844                      "line": 50,
3845                      "column": 14
3846                    },
3847                    "end": {
3848                      "line": 50,
3849                      "column": 57
3850                    }
3851                  }
3852                },
3853                "body": {
3854                  "type": "BlockStatement",
3855                  "statements": [],
3856                  "loc": {
3857                    "start": {
3858                      "line": 50,
3859                      "column": 60
3860                    },
3861                    "end": {
3862                      "line": 50,
3863                      "column": 63
3864                    }
3865                  }
3866                },
3867                "loc": {
3868                  "start": {
3869                    "line": 50,
3870                    "column": 14
3871                  },
3872                  "end": {
3873                    "line": 50,
3874                    "column": 63
3875                  }
3876                }
3877              },
3878              "loc": {
3879                "start": {
3880                  "line": 50,
3881                  "column": 14
3882                },
3883                "end": {
3884                  "line": 50,
3885                  "column": 63
3886                }
3887              }
3888            },
3889            "overloads": [],
3890            "decorators": [],
3891            "loc": {
3892              "start": {
3893                "line": 50,
3894                "column": 5
3895              },
3896              "end": {
3897                "line": 50,
3898                "column": 63
3899              }
3900            }
3901          }
3902        ],
3903        "indexSignatures": [],
3904        "loc": {
3905          "start": {
3906            "line": 48,
3907            "column": 52
3908          },
3909          "end": {
3910            "line": 51,
3911            "column": 2
3912          }
3913        }
3914      },
3915      "decorators": [],
3916      "loc": {
3917        "start": {
3918          "line": 48,
3919          "column": 1
3920        },
3921        "end": {
3922          "line": 51,
3923          "column": 2
3924        }
3925      }
3926    },
3927    {
3928      "type": "ClassDeclaration",
3929      "definition": {
3930        "id": {
3931          "type": "Identifier",
3932          "name": "W",
3933          "decorators": [],
3934          "loc": {
3935            "start": {
3936              "line": 53,
3937              "column": 7
3938            },
3939            "end": {
3940              "line": 53,
3941              "column": 8
3942            }
3943          }
3944        },
3945        "superClass": {
3946          "type": "Identifier",
3947          "name": "T",
3948          "decorators": [],
3949          "loc": {
3950            "start": {
3951              "line": 53,
3952              "column": 17
3953            },
3954            "end": {
3955              "line": 53,
3956              "column": 18
3957            }
3958          }
3959        },
3960        "superTypeParameters": {
3961          "type": "TSTypeParameterInstantiation",
3962          "params": [
3963            {
3964              "type": "TSFunctionType",
3965              "params": [],
3966              "typeParameters": {
3967                "type": "TSTypeParameterDeclaration",
3968                "params": [
3969                  {
3970                    "type": "TSTypeParameter",
3971                    "name": {
3972                      "type": "Identifier",
3973                      "name": "B",
3974                      "decorators": [],
3975                      "loc": {
3976                        "start": {
3977                          "line": 53,
3978                          "column": 20
3979                        },
3980                        "end": {
3981                          "line": 53,
3982                          "column": 21
3983                        }
3984                      }
3985                    },
3986                    "loc": {
3987                      "start": {
3988                        "line": 53,
3989                        "column": 20
3990                      },
3991                      "end": {
3992                        "line": 53,
3993                        "column": 22
3994                      }
3995                    }
3996                  }
3997                ],
3998                "loc": {
3999                  "start": {
4000                    "line": 53,
4001                    "column": 19
4002                  },
4003                  "end": {
4004                    "line": 53,
4005                    "column": 22
4006                  }
4007                }
4008              },
4009              "returnType": {
4010                "type": "TSNumberKeyword",
4011                "loc": {
4012                  "start": {
4013                    "line": 53,
4014                    "column": 29
4015                  },
4016                  "end": {
4017                    "line": 53,
4018                    "column": 35
4019                  }
4020                }
4021              },
4022              "loc": {
4023                "start": {
4024                  "line": 53,
4025                  "column": 19
4026                },
4027                "end": {
4028                  "line": 53,
4029                  "column": 35
4030                }
4031              }
4032            },
4033            {
4034              "type": "TSArrayType",
4035              "elementType": {
4036                "type": "TSTupleType",
4037                "elementTypes": [
4038                  {
4039                    "type": "TSUnionType",
4040                    "types": [
4041                      {
4042                        "type": "TSNumberKeyword",
4043                        "loc": {
4044                          "start": {
4045                            "line": 53,
4046                            "column": 38
4047                          },
4048                          "end": {
4049                            "line": 53,
4050                            "column": 44
4051                          }
4052                        }
4053                      },
4054                      {
4055                        "type": "TSStringKeyword",
4056                        "loc": {
4057                          "start": {
4058                            "line": 53,
4059                            "column": 47
4060                          },
4061                          "end": {
4062                            "line": 53,
4063                            "column": 53
4064                          }
4065                        }
4066                      }
4067                    ],
4068                    "loc": {
4069                      "start": {
4070                        "line": 53,
4071                        "column": 38
4072                      },
4073                      "end": {
4074                        "line": 53,
4075                        "column": 53
4076                      }
4077                    }
4078                  }
4079                ],
4080                "loc": {
4081                  "start": {
4082                    "line": 53,
4083                    "column": 37
4084                  },
4085                  "end": {
4086                    "line": 53,
4087                    "column": 54
4088                  }
4089                }
4090              },
4091              "loc": {
4092                "start": {
4093                  "line": 53,
4094                  "column": 37
4095                },
4096                "end": {
4097                  "line": 53,
4098                  "column": 56
4099                }
4100              }
4101            }
4102          ],
4103          "loc": {
4104            "start": {
4105              "line": 53,
4106              "column": 18
4107            },
4108            "end": {
4109              "line": 53,
4110              "column": 57
4111            }
4112          }
4113        },
4114        "implements": [],
4115        "constructor": {
4116          "type": "MethodDefinition",
4117          "key": {
4118            "type": "Identifier",
4119            "name": "constructor",
4120            "decorators": [],
4121            "loc": {
4122              "start": {
4123                "line": 1,
4124                "column": 1
4125              },
4126              "end": {
4127                "line": 1,
4128                "column": 1
4129              }
4130            }
4131          },
4132          "kind": "constructor",
4133          "static": false,
4134          "optional": false,
4135          "computed": false,
4136          "value": {
4137            "type": "FunctionExpression",
4138            "function": {
4139              "type": "ScriptFunction",
4140              "id": null,
4141              "generator": false,
4142              "async": false,
4143              "expression": false,
4144              "params": [
4145                {
4146                  "type": "RestElement",
4147                  "argument": {
4148                    "type": "Identifier",
4149                    "name": "args",
4150                    "decorators": [],
4151                    "loc": {
4152                      "start": {
4153                        "line": 1,
4154                        "column": 1
4155                      },
4156                      "end": {
4157                        "line": 1,
4158                        "column": 1
4159                      }
4160                    }
4161                  },
4162                  "loc": {
4163                    "start": {
4164                      "line": 1,
4165                      "column": 1
4166                    },
4167                    "end": {
4168                      "line": 1,
4169                      "column": 1
4170                    }
4171                  }
4172                }
4173              ],
4174              "body": {
4175                "type": "BlockStatement",
4176                "statements": [
4177                  {
4178                    "type": "ExpressionStatement",
4179                    "expression": {
4180                      "type": "CallExpression",
4181                      "callee": {
4182                        "type": "Super",
4183                        "loc": {
4184                          "start": {
4185                            "line": 1,
4186                            "column": 1
4187                          },
4188                          "end": {
4189                            "line": 1,
4190                            "column": 1
4191                          }
4192                        }
4193                      },
4194                      "arguments": [
4195                        {
4196                          "type": "SpreadElement",
4197                          "argument": {
4198                            "type": "Identifier",
4199                            "name": "args",
4200                            "decorators": [],
4201                            "loc": {
4202                              "start": {
4203                                "line": 1,
4204                                "column": 1
4205                              },
4206                              "end": {
4207                                "line": 1,
4208                                "column": 1
4209                              }
4210                            }
4211                          },
4212                          "loc": {
4213                            "start": {
4214                              "line": 1,
4215                              "column": 1
4216                            },
4217                            "end": {
4218                              "line": 1,
4219                              "column": 1
4220                            }
4221                          }
4222                        }
4223                      ],
4224                      "optional": false,
4225                      "loc": {
4226                        "start": {
4227                          "line": 1,
4228                          "column": 1
4229                        },
4230                        "end": {
4231                          "line": 1,
4232                          "column": 1
4233                        }
4234                      }
4235                    },
4236                    "loc": {
4237                      "start": {
4238                        "line": 1,
4239                        "column": 1
4240                      },
4241                      "end": {
4242                        "line": 1,
4243                        "column": 1
4244                      }
4245                    }
4246                  }
4247                ],
4248                "loc": {
4249                  "start": {
4250                    "line": 1,
4251                    "column": 1
4252                  },
4253                  "end": {
4254                    "line": 1,
4255                    "column": 1
4256                  }
4257                }
4258              },
4259              "loc": {
4260                "start": {
4261                  "line": 1,
4262                  "column": 1
4263                },
4264                "end": {
4265                  "line": 1,
4266                  "column": 1
4267                }
4268              }
4269            },
4270            "loc": {
4271              "start": {
4272                "line": 1,
4273                "column": 1
4274              },
4275              "end": {
4276                "line": 1,
4277                "column": 1
4278              }
4279            }
4280          },
4281          "overloads": [],
4282          "decorators": [],
4283          "loc": {
4284            "start": {
4285              "line": 53,
4286              "column": 1
4287            },
4288            "end": {
4289              "line": 55,
4290              "column": 2
4291            }
4292          }
4293        },
4294        "body": [],
4295        "indexSignatures": [],
4296        "loc": {
4297          "start": {
4298            "line": 53,
4299            "column": 58
4300          },
4301          "end": {
4302            "line": 55,
4303            "column": 2
4304          }
4305        }
4306      },
4307      "decorators": [],
4308      "loc": {
4309        "start": {
4310          "line": 53,
4311          "column": 1
4312        },
4313        "end": {
4314          "line": 55,
4315          "column": 2
4316        }
4317      }
4318    },
4319    {
4320      "type": "ClassDeclaration",
4321      "definition": {
4322        "id": {
4323          "type": "Identifier",
4324          "name": "X",
4325          "decorators": [],
4326          "loc": {
4327            "start": {
4328              "line": 57,
4329              "column": 7
4330            },
4331            "end": {
4332              "line": 57,
4333              "column": 8
4334            }
4335          }
4336        },
4337        "superClass": {
4338          "type": "Identifier",
4339          "name": "Q",
4340          "decorators": [],
4341          "loc": {
4342            "start": {
4343              "line": 57,
4344              "column": 17
4345            },
4346            "end": {
4347              "line": 57,
4348              "column": 18
4349            }
4350          }
4351        },
4352        "superTypeParameters": {
4353          "type": "TSTypeParameterInstantiation",
4354          "params": [
4355            {
4356              "type": "TSNumberKeyword",
4357              "loc": {
4358                "start": {
4359                  "line": 57,
4360                  "column": 19
4361                },
4362                "end": {
4363                  "line": 57,
4364                  "column": 25
4365                }
4366              }
4367            }
4368          ],
4369          "loc": {
4370            "start": {
4371              "line": 57,
4372              "column": 18
4373            },
4374            "end": {
4375              "line": 57,
4376              "column": 26
4377            }
4378          }
4379        },
4380        "implements": [
4381          {
4382            "type": "TSClassImplements",
4383            "expression": {
4384              "type": "Identifier",
4385              "name": "S",
4386              "decorators": [],
4387              "loc": {
4388                "start": {
4389                  "line": 57,
4390                  "column": 38
4391                },
4392                "end": {
4393                  "line": 57,
4394                  "column": 39
4395                }
4396              }
4397            },
4398            "typeParameters": {
4399              "type": "TSTypeParameterInstantiation",
4400              "params": [
4401                {
4402                  "type": "TSFunctionType",
4403                  "params": [
4404                    {
4405                      "type": "Identifier",
4406                      "name": "a",
4407                      "typeAnnotation": {
4408                        "type": "TSNumberKeyword",
4409                        "loc": {
4410                          "start": {
4411                            "line": 57,
4412                            "column": 46
4413                          },
4414                          "end": {
4415                            "line": 57,
4416                            "column": 52
4417                          }
4418                        }
4419                      },
4420                      "decorators": [],
4421                      "loc": {
4422                        "start": {
4423                          "line": 57,
4424                          "column": 44
4425                        },
4426                        "end": {
4427                          "line": 57,
4428                          "column": 45
4429                        }
4430                      }
4431                    },
4432                    {
4433                      "type": "Identifier",
4434                      "name": "b",
4435                      "typeAnnotation": {
4436                        "type": "TSStringKeyword",
4437                        "loc": {
4438                          "start": {
4439                            "line": 57,
4440                            "column": 56
4441                          },
4442                          "end": {
4443                            "line": 57,
4444                            "column": 62
4445                          }
4446                        }
4447                      },
4448                      "decorators": [],
4449                      "loc": {
4450                        "start": {
4451                          "line": 57,
4452                          "column": 54
4453                        },
4454                        "end": {
4455                          "line": 57,
4456                          "column": 55
4457                        }
4458                      }
4459                    }
4460                  ],
4461                  "typeParameters": {
4462                    "type": "TSTypeParameterDeclaration",
4463                    "params": [
4464                      {
4465                        "type": "TSTypeParameter",
4466                        "name": {
4467                          "type": "Identifier",
4468                          "name": "R",
4469                          "decorators": [],
4470                          "loc": {
4471                            "start": {
4472                              "line": 57,
4473                              "column": 41
4474                            },
4475                            "end": {
4476                              "line": 57,
4477                              "column": 42
4478                            }
4479                          }
4480                        },
4481                        "loc": {
4482                          "start": {
4483                            "line": 57,
4484                            "column": 41
4485                          },
4486                          "end": {
4487                            "line": 57,
4488                            "column": 43
4489                          }
4490                        }
4491                      }
4492                    ],
4493                    "loc": {
4494                      "start": {
4495                        "line": 57,
4496                        "column": 40
4497                      },
4498                      "end": {
4499                        "line": 57,
4500                        "column": 43
4501                      }
4502                    }
4503                  },
4504                  "returnType": {
4505                    "type": "TSTupleType",
4506                    "elementTypes": [
4507                      {
4508                        "type": "TSNumberKeyword",
4509                        "loc": {
4510                          "start": {
4511                            "line": 57,
4512                            "column": 68
4513                          },
4514                          "end": {
4515                            "line": 57,
4516                            "column": 74
4517                          }
4518                        }
4519                      }
4520                    ],
4521                    "loc": {
4522                      "start": {
4523                        "line": 57,
4524                        "column": 67
4525                      },
4526                      "end": {
4527                        "line": 57,
4528                        "column": 75
4529                      }
4530                    }
4531                  },
4532                  "loc": {
4533                    "start": {
4534                      "line": 57,
4535                      "column": 40
4536                    },
4537                    "end": {
4538                      "line": 57,
4539                      "column": 75
4540                    }
4541                  }
4542                }
4543              ],
4544              "loc": {
4545                "start": {
4546                  "line": 57,
4547                  "column": 39
4548                },
4549                "end": {
4550                  "line": 57,
4551                  "column": 76
4552                }
4553              }
4554            },
4555            "loc": {
4556              "start": {
4557                "line": 57,
4558                "column": 38
4559              },
4560              "end": {
4561                "line": 57,
4562                "column": 77
4563              }
4564            }
4565          },
4566          {
4567            "type": "TSClassImplements",
4568            "expression": {
4569              "type": "Identifier",
4570              "name": "A",
4571              "decorators": [],
4572              "loc": {
4573                "start": {
4574                  "line": 57,
4575                  "column": 78
4576                },
4577                "end": {
4578                  "line": 57,
4579                  "column": 79
4580                }
4581              }
4582            },
4583            "loc": {
4584              "start": {
4585                "line": 57,
4586                "column": 78
4587              },
4588              "end": {
4589                "line": 57,
4590                "column": 81
4591              }
4592            }
4593          }
4594        ],
4595        "constructor": {
4596          "type": "MethodDefinition",
4597          "key": {
4598            "type": "Identifier",
4599            "name": "constructor",
4600            "decorators": [],
4601            "loc": {
4602              "start": {
4603                "line": 1,
4604                "column": 1
4605              },
4606              "end": {
4607                "line": 1,
4608                "column": 1
4609              }
4610            }
4611          },
4612          "kind": "constructor",
4613          "static": false,
4614          "optional": false,
4615          "computed": false,
4616          "value": {
4617            "type": "FunctionExpression",
4618            "function": {
4619              "type": "ScriptFunction",
4620              "id": null,
4621              "generator": false,
4622              "async": false,
4623              "expression": false,
4624              "params": [
4625                {
4626                  "type": "RestElement",
4627                  "argument": {
4628                    "type": "Identifier",
4629                    "name": "args",
4630                    "decorators": [],
4631                    "loc": {
4632                      "start": {
4633                        "line": 1,
4634                        "column": 1
4635                      },
4636                      "end": {
4637                        "line": 1,
4638                        "column": 1
4639                      }
4640                    }
4641                  },
4642                  "loc": {
4643                    "start": {
4644                      "line": 1,
4645                      "column": 1
4646                    },
4647                    "end": {
4648                      "line": 1,
4649                      "column": 1
4650                    }
4651                  }
4652                }
4653              ],
4654              "body": {
4655                "type": "BlockStatement",
4656                "statements": [
4657                  {
4658                    "type": "ExpressionStatement",
4659                    "expression": {
4660                      "type": "CallExpression",
4661                      "callee": {
4662                        "type": "Super",
4663                        "loc": {
4664                          "start": {
4665                            "line": 1,
4666                            "column": 1
4667                          },
4668                          "end": {
4669                            "line": 1,
4670                            "column": 1
4671                          }
4672                        }
4673                      },
4674                      "arguments": [
4675                        {
4676                          "type": "SpreadElement",
4677                          "argument": {
4678                            "type": "Identifier",
4679                            "name": "args",
4680                            "decorators": [],
4681                            "loc": {
4682                              "start": {
4683                                "line": 1,
4684                                "column": 1
4685                              },
4686                              "end": {
4687                                "line": 1,
4688                                "column": 1
4689                              }
4690                            }
4691                          },
4692                          "loc": {
4693                            "start": {
4694                              "line": 1,
4695                              "column": 1
4696                            },
4697                            "end": {
4698                              "line": 1,
4699                              "column": 1
4700                            }
4701                          }
4702                        }
4703                      ],
4704                      "optional": false,
4705                      "loc": {
4706                        "start": {
4707                          "line": 1,
4708                          "column": 1
4709                        },
4710                        "end": {
4711                          "line": 1,
4712                          "column": 1
4713                        }
4714                      }
4715                    },
4716                    "loc": {
4717                      "start": {
4718                        "line": 1,
4719                        "column": 1
4720                      },
4721                      "end": {
4722                        "line": 1,
4723                        "column": 1
4724                      }
4725                    }
4726                  }
4727                ],
4728                "loc": {
4729                  "start": {
4730                    "line": 1,
4731                    "column": 1
4732                  },
4733                  "end": {
4734                    "line": 1,
4735                    "column": 1
4736                  }
4737                }
4738              },
4739              "loc": {
4740                "start": {
4741                  "line": 1,
4742                  "column": 1
4743                },
4744                "end": {
4745                  "line": 1,
4746                  "column": 1
4747                }
4748              }
4749            },
4750            "loc": {
4751              "start": {
4752                "line": 1,
4753                "column": 1
4754              },
4755              "end": {
4756                "line": 1,
4757                "column": 1
4758              }
4759            }
4760          },
4761          "overloads": [],
4762          "decorators": [],
4763          "loc": {
4764            "start": {
4765              "line": 57,
4766              "column": 1
4767            },
4768            "end": {
4769              "line": 59,
4770              "column": 2
4771            }
4772          }
4773        },
4774        "body": [],
4775        "indexSignatures": [],
4776        "loc": {
4777          "start": {
4778            "line": 57,
4779            "column": 80
4780          },
4781          "end": {
4782            "line": 59,
4783            "column": 2
4784          }
4785        }
4786      },
4787      "decorators": [],
4788      "loc": {
4789        "start": {
4790          "line": 57,
4791          "column": 1
4792        },
4793        "end": {
4794          "line": 59,
4795          "column": 2
4796        }
4797      }
4798    },
4799    {
4800      "type": "VariableDeclaration",
4801      "declarations": [
4802        {
4803          "type": "VariableDeclarator",
4804          "id": {
4805            "type": "Identifier",
4806            "name": "a",
4807            "typeAnnotation": {
4808              "type": "TSConstructorType",
4809              "params": [],
4810              "typeParameters": {
4811                "type": "TSTypeParameterDeclaration",
4812                "params": [
4813                  {
4814                    "type": "TSTypeParameter",
4815                    "name": {
4816                      "type": "Identifier",
4817                      "name": "A",
4818                      "decorators": [],
4819                      "loc": {
4820                        "start": {
4821                          "line": 61,
4822                          "column": 13
4823                        },
4824                        "end": {
4825                          "line": 61,
4826                          "column": 14
4827                        }
4828                      }
4829                    },
4830                    "loc": {
4831                      "start": {
4832                        "line": 61,
4833                        "column": 13
4834                      },
4835                      "end": {
4836                        "line": 61,
4837                        "column": 15
4838                      }
4839                    }
4840                  }
4841                ],
4842                "loc": {
4843                  "start": {
4844                    "line": 61,
4845                    "column": 12
4846                  },
4847                  "end": {
4848                    "line": 61,
4849                    "column": 15
4850                  }
4851                }
4852              },
4853              "returnType": {
4854                "type": "TSFunctionType",
4855                "params": [],
4856                "typeParameters": {
4857                  "type": "TSTypeParameterDeclaration",
4858                  "params": [
4859                    {
4860                      "type": "TSTypeParameter",
4861                      "name": {
4862                        "type": "Identifier",
4863                        "name": "B",
4864                        "decorators": [],
4865                        "loc": {
4866                          "start": {
4867                            "line": 61,
4868                            "column": 22
4869                          },
4870                          "end": {
4871                            "line": 61,
4872                            "column": 23
4873                          }
4874                        }
4875                      },
4876                      "loc": {
4877                        "start": {
4878                          "line": 61,
4879                          "column": 22
4880                        },
4881                        "end": {
4882                          "line": 61,
4883                          "column": 24
4884                        }
4885                      }
4886                    }
4887                  ],
4888                  "loc": {
4889                    "start": {
4890                      "line": 61,
4891                      "column": 21
4892                    },
4893                    "end": {
4894                      "line": 61,
4895                      "column": 24
4896                    }
4897                  }
4898                },
4899                "returnType": {
4900                  "type": "TSStringKeyword",
4901                  "loc": {
4902                    "start": {
4903                      "line": 61,
4904                      "column": 30
4905                    },
4906                    "end": {
4907                      "line": 61,
4908                      "column": 36
4909                    }
4910                  }
4911                },
4912                "loc": {
4913                  "start": {
4914                    "line": 61,
4915                    "column": 21
4916                  },
4917                  "end": {
4918                    "line": 61,
4919                    "column": 36
4920                  }
4921                }
4922              },
4923              "loc": {
4924                "start": {
4925                  "line": 61,
4926                  "column": 8
4927                },
4928                "end": {
4929                  "line": 61,
4930                  "column": 36
4931                }
4932              }
4933            },
4934            "decorators": [],
4935            "loc": {
4936              "start": {
4937                "line": 61,
4938                "column": 5
4939              },
4940              "end": {
4941                "line": 61,
4942                "column": 6
4943              }
4944            }
4945          },
4946          "init": null,
4947          "loc": {
4948            "start": {
4949              "line": 61,
4950              "column": 5
4951            },
4952            "end": {
4953              "line": 61,
4954              "column": 6
4955            }
4956          }
4957        }
4958      ],
4959      "kind": "var",
4960      "loc": {
4961        "start": {
4962          "line": 61,
4963          "column": 1
4964        },
4965        "end": {
4966          "line": 61,
4967          "column": 37
4968        }
4969      }
4970    },
4971    {
4972      "type": "VariableDeclaration",
4973      "declarations": [
4974        {
4975          "type": "VariableDeclarator",
4976          "id": {
4977            "type": "Identifier",
4978            "name": "b",
4979            "typeAnnotation": {
4980              "type": "TSFunctionType",
4981              "params": [
4982                {
4983                  "type": "Identifier",
4984                  "name": "a",
4985                  "typeAnnotation": {
4986                    "type": "TSUnionType",
4987                    "types": [
4988                      {
4989                        "type": "TSNumberKeyword",
4990                        "loc": {
4991                          "start": {
4992                            "line": 62,
4993                            "column": 32
4994                          },
4995                          "end": {
4996                            "line": 62,
4997                            "column": 38
4998                          }
4999                        }
5000                      },
5001                      {
5002                        "type": "TSStringKeyword",
5003                        "loc": {
5004                          "start": {
5005                            "line": 62,
5006                            "column": 41
5007                          },
5008                          "end": {
5009                            "line": 62,
5010                            "column": 47
5011                          }
5012                        }
5013                      }
5014                    ],
5015                    "loc": {
5016                      "start": {
5017                        "line": 62,
5018                        "column": 32
5019                      },
5020                      "end": {
5021                        "line": 62,
5022                        "column": 47
5023                      }
5024                    }
5025                  },
5026                  "decorators": [],
5027                  "loc": {
5028                    "start": {
5029                      "line": 62,
5030                      "column": 29
5031                    },
5032                    "end": {
5033                      "line": 62,
5034                      "column": 30
5035                    }
5036                  }
5037                }
5038              ],
5039              "typeParameters": {
5040                "type": "TSTypeParameterDeclaration",
5041                "params": [
5042                  {
5043                    "type": "TSTypeParameter",
5044                    "name": {
5045                      "type": "Identifier",
5046                      "name": "A",
5047                      "decorators": [],
5048                      "loc": {
5049                        "start": {
5050                          "line": 62,
5051                          "column": 9
5052                        },
5053                        "end": {
5054                          "line": 62,
5055                          "column": 10
5056                        }
5057                      }
5058                    },
5059                    "constraint": {
5060                      "type": "TSTypeReference",
5061                      "typeName": {
5062                        "type": "Identifier",
5063                        "name": "T",
5064                        "decorators": [],
5065                        "loc": {
5066                          "start": {
5067                            "line": 62,
5068                            "column": 19
5069                          },
5070                          "end": {
5071                            "line": 62,
5072                            "column": 20
5073                          }
5074                        }
5075                      },
5076                      "loc": {
5077                        "start": {
5078                          "line": 62,
5079                          "column": 19
5080                        },
5081                        "end": {
5082                          "line": 62,
5083                          "column": 20
5084                        }
5085                      }
5086                    },
5087                    "loc": {
5088                      "start": {
5089                        "line": 62,
5090                        "column": 9
5091                      },
5092                      "end": {
5093                        "line": 62,
5094                        "column": 21
5095                      }
5096                    }
5097                  },
5098                  {
5099                    "type": "TSTypeParameter",
5100                    "name": {
5101                      "type": "Identifier",
5102                      "name": "U",
5103                      "decorators": [],
5104                      "loc": {
5105                        "start": {
5106                          "line": 62,
5107                          "column": 22
5108                        },
5109                        "end": {
5110                          "line": 62,
5111                          "column": 23
5112                        }
5113                      }
5114                    },
5115                    "default": {
5116                      "type": "TSLiteralType",
5117                      "literal": {
5118                        "type": "NumberLiteral",
5119                        "value": 5,
5120                        "loc": {
5121                          "start": {
5122                            "line": 62,
5123                            "column": 26
5124                          },
5125                          "end": {
5126                            "line": 62,
5127                            "column": 27
5128                          }
5129                        }
5130                      },
5131                      "loc": {
5132                        "start": {
5133                          "line": 62,
5134                          "column": 26
5135                        },
5136                        "end": {
5137                          "line": 62,
5138                          "column": 27
5139                        }
5140                      }
5141                    },
5142                    "loc": {
5143                      "start": {
5144                        "line": 62,
5145                        "column": 22
5146                      },
5147                      "end": {
5148                        "line": 62,
5149                        "column": 28
5150                      }
5151                    }
5152                  }
5153                ],
5154                "loc": {
5155                  "start": {
5156                    "line": 62,
5157                    "column": 8
5158                  },
5159                  "end": {
5160                    "line": 62,
5161                    "column": 28
5162                  }
5163                }
5164              },
5165              "returnType": {
5166                "type": "TSTypeLiteral",
5167                "members": [
5168                  {
5169                    "type": "TSPropertySignature",
5170                    "computed": false,
5171                    "optional": false,
5172                    "readonly": false,
5173                    "key": {
5174                      "type": "Identifier",
5175                      "name": "a",
5176                      "decorators": [],
5177                      "loc": {
5178                        "start": {
5179                          "line": 62,
5180                          "column": 54
5181                        },
5182                        "end": {
5183                          "line": 62,
5184                          "column": 55
5185                        }
5186                      }
5187                    },
5188                    "typeAnnotation": {
5189                      "type": "TSNumberKeyword",
5190                      "loc": {
5191                        "start": {
5192                          "line": 62,
5193                          "column": 57
5194                        },
5195                        "end": {
5196                          "line": 62,
5197                          "column": 63
5198                        }
5199                      }
5200                    },
5201                    "loc": {
5202                      "start": {
5203                        "line": 62,
5204                        "column": 54
5205                      },
5206                      "end": {
5207                        "line": 62,
5208                        "column": 65
5209                      }
5210                    }
5211                  }
5212                ],
5213                "loc": {
5214                  "start": {
5215                    "line": 62,
5216                    "column": 52
5217                  },
5218                  "end": {
5219                    "line": 62,
5220                    "column": 65
5221                  }
5222                }
5223              },
5224              "loc": {
5225                "start": {
5226                  "line": 62,
5227                  "column": 8
5228                },
5229                "end": {
5230                  "line": 62,
5231                  "column": 65
5232                }
5233              }
5234            },
5235            "decorators": [],
5236            "loc": {
5237              "start": {
5238                "line": 62,
5239                "column": 5
5240              },
5241              "end": {
5242                "line": 62,
5243                "column": 6
5244              }
5245            }
5246          },
5247          "init": null,
5248          "loc": {
5249            "start": {
5250              "line": 62,
5251              "column": 5
5252            },
5253            "end": {
5254              "line": 62,
5255              "column": 6
5256            }
5257          }
5258        }
5259      ],
5260      "kind": "var",
5261      "loc": {
5262        "start": {
5263          "line": 62,
5264          "column": 1
5265        },
5266        "end": {
5267          "line": 62,
5268          "column": 66
5269        }
5270      }
5271    },
5272    {
5273      "type": "VariableDeclaration",
5274      "declarations": [
5275        {
5276          "type": "VariableDeclarator",
5277          "id": {
5278            "type": "Identifier",
5279            "name": "c",
5280            "typeAnnotation": {
5281              "type": "TSIndexedAccessType",
5282              "objectType": {
5283                "type": "TSTypeReference",
5284                "typeName": {
5285                  "type": "TSQualifiedName",
5286                  "left": {
5287                    "type": "Identifier",
5288                    "name": "B",
5289                    "decorators": [],
5290                    "loc": {
5291                      "start": {
5292                        "line": 64,
5293                        "column": 8
5294                      },
5295                      "end": {
5296                        "line": 64,
5297                        "column": 9
5298                      }
5299                    }
5300                  },
5301                  "right": {
5302                    "type": "Identifier",
5303                    "name": "T",
5304                    "decorators": [],
5305                    "loc": {
5306                      "start": {
5307                        "line": 64,
5308                        "column": 10
5309                      },
5310                      "end": {
5311                        "line": 64,
5312                        "column": 11
5313                      }
5314                    }
5315                  },
5316                  "loc": {
5317                    "start": {
5318                      "line": 64,
5319                      "column": 8
5320                    },
5321                    "end": {
5322                      "line": 64,
5323                      "column": 12
5324                    }
5325                  }
5326                },
5327                "typeParameters": {
5328                  "type": "TSTypeParameterInstantiation",
5329                  "params": [
5330                    {
5331                      "type": "TSTypeReference",
5332                      "typeName": {
5333                        "type": "Identifier",
5334                        "name": "A",
5335                        "decorators": [],
5336                        "loc": {
5337                          "start": {
5338                            "line": 64,
5339                            "column": 12
5340                          },
5341                          "end": {
5342                            "line": 64,
5343                            "column": 13
5344                          }
5345                        }
5346                      },
5347                      "typeParameters": {
5348                        "type": "TSTypeParameterInstantiation",
5349                        "params": [
5350                          {
5351                            "type": "TSTypeReference",
5352                            "typeName": {
5353                              "type": "Identifier",
5354                              "name": "C",
5355                              "decorators": [],
5356                              "loc": {
5357                                "start": {
5358                                  "line": 64,
5359                                  "column": 14
5360                                },
5361                                "end": {
5362                                  "line": 64,
5363                                  "column": 15
5364                                }
5365                              }
5366                            },
5367                            "typeParameters": {
5368                              "type": "TSTypeParameterInstantiation",
5369                              "params": [
5370                                {
5371                                  "type": "TSNumberKeyword",
5372                                  "loc": {
5373                                    "start": {
5374                                      "line": 64,
5375                                      "column": 16
5376                                    },
5377                                    "end": {
5378                                      "line": 64,
5379                                      "column": 22
5380                                    }
5381                                  }
5382                                }
5383                              ],
5384                              "loc": {
5385                                "start": {
5386                                  "line": 64,
5387                                  "column": 14
5388                                },
5389                                "end": {
5390                                  "line": 64,
5391                                  "column": 25
5392                                }
5393                              }
5394                            },
5395                            "loc": {
5396                              "start": {
5397                                "line": 64,
5398                                "column": 14
5399                              },
5400                              "end": {
5401                                "line": 64,
5402                                "column": 15
5403                              }
5404                            }
5405                          }
5406                        ],
5407                        "loc": {
5408                          "start": {
5409                            "line": 64,
5410                            "column": 12
5411                          },
5412                          "end": {
5413                            "line": 64,
5414                            "column": 25
5415                          }
5416                        }
5417                      },
5418                      "loc": {
5419                        "start": {
5420                          "line": 64,
5421                          "column": 12
5422                        },
5423                        "end": {
5424                          "line": 64,
5425                          "column": 13
5426                        }
5427                      }
5428                    }
5429                  ],
5430                  "loc": {
5431                    "start": {
5432                      "line": 64,
5433                      "column": 11
5434                    },
5435                    "end": {
5436                      "line": 64,
5437                      "column": 25
5438                    }
5439                  }
5440                },
5441                "loc": {
5442                  "start": {
5443                    "line": 64,
5444                    "column": 8
5445                  },
5446                  "end": {
5447                    "line": 64,
5448                    "column": 26
5449                  }
5450                }
5451              },
5452              "indexType": {
5453                "type": "TSLiteralType",
5454                "literal": {
5455                  "type": "NumberLiteral",
5456                  "value": 0,
5457                  "loc": {
5458                    "start": {
5459                      "line": 64,
5460                      "column": 26
5461                    },
5462                    "end": {
5463                      "line": 64,
5464                      "column": 27
5465                    }
5466                  }
5467                },
5468                "loc": {
5469                  "start": {
5470                    "line": 64,
5471                    "column": 26
5472                  },
5473                  "end": {
5474                    "line": 64,
5475                    "column": 27
5476                  }
5477                }
5478              },
5479              "loc": {
5480                "start": {
5481                  "line": 64,
5482                  "column": 8
5483                },
5484                "end": {
5485                  "line": 64,
5486                  "column": 29
5487                }
5488              }
5489            },
5490            "decorators": [],
5491            "loc": {
5492              "start": {
5493                "line": 64,
5494                "column": 5
5495              },
5496              "end": {
5497                "line": 64,
5498                "column": 6
5499              }
5500            }
5501          },
5502          "init": null,
5503          "loc": {
5504            "start": {
5505              "line": 64,
5506              "column": 5
5507            },
5508            "end": {
5509              "line": 64,
5510              "column": 6
5511            }
5512          }
5513        }
5514      ],
5515      "kind": "var",
5516      "loc": {
5517        "start": {
5518          "line": 64,
5519          "column": 1
5520        },
5521        "end": {
5522          "line": 64,
5523          "column": 29
5524        }
5525      }
5526    },
5527    {
5528      "type": "VariableDeclaration",
5529      "declarations": [
5530        {
5531          "type": "VariableDeclarator",
5532          "id": {
5533            "type": "Identifier",
5534            "name": "d",
5535            "typeAnnotation": {
5536              "type": "TSTypeReference",
5537              "typeName": {
5538                "type": "Identifier",
5539                "name": "A",
5540                "decorators": [],
5541                "loc": {
5542                  "start": {
5543                    "line": 65,
5544                    "column": 8
5545                  },
5546                  "end": {
5547                    "line": 65,
5548                    "column": 9
5549                  }
5550                }
5551              },
5552              "typeParameters": {
5553                "type": "TSTypeParameterInstantiation",
5554                "params": [
5555                  {
5556                    "type": "TSNumberKeyword",
5557                    "loc": {
5558                      "start": {
5559                        "line": 65,
5560                        "column": 10
5561                      },
5562                      "end": {
5563                        "line": 65,
5564                        "column": 16
5565                      }
5566                    }
5567                  },
5568                  {
5569                    "type": "TSTypeLiteral",
5570                    "members": [
5571                      {
5572                        "type": "TSPropertySignature",
5573                        "computed": false,
5574                        "optional": false,
5575                        "readonly": false,
5576                        "key": {
5577                          "type": "Identifier",
5578                          "name": "a",
5579                          "decorators": [],
5580                          "loc": {
5581                            "start": {
5582                              "line": 65,
5583                              "column": 20
5584                            },
5585                            "end": {
5586                              "line": 65,
5587                              "column": 21
5588                            }
5589                          }
5590                        },
5591                        "typeAnnotation": {
5592                          "type": "TSNumberKeyword",
5593                          "loc": {
5594                            "start": {
5595                              "line": 65,
5596                              "column": 23
5597                            },
5598                            "end": {
5599                              "line": 65,
5600                              "column": 29
5601                            }
5602                          }
5603                        },
5604                        "loc": {
5605                          "start": {
5606                            "line": 65,
5607                            "column": 20
5608                          },
5609                          "end": {
5610                            "line": 65,
5611                            "column": 30
5612                          }
5613                        }
5614                      },
5615                      {
5616                        "type": "TSPropertySignature",
5617                        "computed": false,
5618                        "optional": false,
5619                        "readonly": false,
5620                        "key": {
5621                          "type": "Identifier",
5622                          "name": "b",
5623                          "decorators": [],
5624                          "loc": {
5625                            "start": {
5626                              "line": 65,
5627                              "column": 31
5628                            },
5629                            "end": {
5630                              "line": 65,
5631                              "column": 32
5632                            }
5633                          }
5634                        },
5635                        "typeAnnotation": {
5636                          "type": "TSStringKeyword",
5637                          "loc": {
5638                            "start": {
5639                              "line": 65,
5640                              "column": 34
5641                            },
5642                            "end": {
5643                              "line": 65,
5644                              "column": 40
5645                            }
5646                          }
5647                        },
5648                        "loc": {
5649                          "start": {
5650                            "line": 65,
5651                            "column": 31
5652                          },
5653                          "end": {
5654                            "line": 65,
5655                            "column": 42
5656                          }
5657                        }
5658                      }
5659                    ],
5660                    "loc": {
5661                      "start": {
5662                        "line": 65,
5663                        "column": 18
5664                      },
5665                      "end": {
5666                        "line": 65,
5667                        "column": 42
5668                      }
5669                    }
5670                  },
5671                  {
5672                    "type": "TSTupleType",
5673                    "elementTypes": [
5674                      {
5675                        "type": "TSNumberKeyword",
5676                        "loc": {
5677                          "start": {
5678                            "line": 65,
5679                            "column": 45
5680                          },
5681                          "end": {
5682                            "line": 65,
5683                            "column": 51
5684                          }
5685                        }
5686                      },
5687                      {
5688                        "type": "TSStringKeyword",
5689                        "loc": {
5690                          "start": {
5691                            "line": 65,
5692                            "column": 53
5693                          },
5694                          "end": {
5695                            "line": 65,
5696                            "column": 59
5697                          }
5698                        }
5699                      }
5700                    ],
5701                    "loc": {
5702                      "start": {
5703                        "line": 65,
5704                        "column": 44
5705                      },
5706                      "end": {
5707                        "line": 65,
5708                        "column": 60
5709                      }
5710                    }
5711                  }
5712                ],
5713                "loc": {
5714                  "start": {
5715                    "line": 65,
5716                    "column": 8
5717                  },
5718                  "end": {
5719                    "line": 65,
5720                    "column": 61
5721                  }
5722                }
5723              },
5724              "loc": {
5725                "start": {
5726                  "line": 65,
5727                  "column": 8
5728                },
5729                "end": {
5730                  "line": 65,
5731                  "column": 9
5732                }
5733              }
5734            },
5735            "decorators": [],
5736            "loc": {
5737              "start": {
5738                "line": 65,
5739                "column": 5
5740              },
5741              "end": {
5742                "line": 65,
5743                "column": 6
5744              }
5745            }
5746          },
5747          "init": null,
5748          "loc": {
5749            "start": {
5750              "line": 65,
5751              "column": 5
5752            },
5753            "end": {
5754              "line": 65,
5755              "column": 6
5756            }
5757          }
5758        }
5759      ],
5760      "kind": "var",
5761      "loc": {
5762        "start": {
5763          "line": 65,
5764          "column": 1
5765        },
5766        "end": {
5767          "line": 65,
5768          "column": 62
5769        }
5770      }
5771    },
5772    {
5773      "type": "VariableDeclaration",
5774      "declarations": [
5775        {
5776          "type": "VariableDeclarator",
5777          "id": {
5778            "type": "Identifier",
5779            "name": "e",
5780            "typeAnnotation": {
5781              "type": "TSTypeReference",
5782              "typeName": {
5783                "type": "Identifier",
5784                "name": "T",
5785                "decorators": [],
5786                "loc": {
5787                  "start": {
5788                    "line": 66,
5789                    "column": 8
5790                  },
5791                  "end": {
5792                    "line": 66,
5793                    "column": 9
5794                  }
5795                }
5796              },
5797              "typeParameters": {
5798                "type": "TSTypeParameterInstantiation",
5799                "params": [
5800                  {
5801                    "type": "TSFunctionType",
5802                    "params": [],
5803                    "typeParameters": {
5804                      "type": "TSTypeParameterDeclaration",
5805                      "params": [
5806                        {
5807                          "type": "TSTypeParameter",
5808                          "name": {
5809                            "type": "Identifier",
5810                            "name": "A",
5811                            "decorators": [],
5812                            "loc": {
5813                              "start": {
5814                                "line": 66,
5815                                "column": 11
5816                              },
5817                              "end": {
5818                                "line": 66,
5819                                "column": 12
5820                              }
5821                            }
5822                          },
5823                          "loc": {
5824                            "start": {
5825                              "line": 66,
5826                              "column": 11
5827                            },
5828                            "end": {
5829                              "line": 66,
5830                              "column": 13
5831                            }
5832                          }
5833                        }
5834                      ],
5835                      "loc": {
5836                        "start": {
5837                          "line": 66,
5838                          "column": 10
5839                        },
5840                        "end": {
5841                          "line": 66,
5842                          "column": 13
5843                        }
5844                      }
5845                    },
5846                    "returnType": {
5847                      "type": "TSTypeLiteral",
5848                      "members": [],
5849                      "loc": {
5850                        "start": {
5851                          "line": 66,
5852                          "column": 19
5853                        },
5854                        "end": {
5855                          "line": 66,
5856                          "column": 21
5857                        }
5858                      }
5859                    },
5860                    "loc": {
5861                      "start": {
5862                        "line": 66,
5863                        "column": 10
5864                      },
5865                      "end": {
5866                        "line": 66,
5867                        "column": 21
5868                      }
5869                    }
5870                  }
5871                ],
5872                "loc": {
5873                  "start": {
5874                    "line": 66,
5875                    "column": 8
5876                  },
5877                  "end": {
5878                    "line": 66,
5879                    "column": 22
5880                  }
5881                }
5882              },
5883              "loc": {
5884                "start": {
5885                  "line": 66,
5886                  "column": 8
5887                },
5888                "end": {
5889                  "line": 66,
5890                  "column": 9
5891                }
5892              }
5893            },
5894            "decorators": [],
5895            "loc": {
5896              "start": {
5897                "line": 66,
5898                "column": 5
5899              },
5900              "end": {
5901                "line": 66,
5902                "column": 6
5903              }
5904            }
5905          },
5906          "init": null,
5907          "loc": {
5908            "start": {
5909              "line": 66,
5910              "column": 5
5911            },
5912            "end": {
5913              "line": 66,
5914              "column": 6
5915            }
5916          }
5917        }
5918      ],
5919      "kind": "var",
5920      "loc": {
5921        "start": {
5922          "line": 66,
5923          "column": 1
5924        },
5925        "end": {
5926          "line": 66,
5927          "column": 23
5928        }
5929      }
5930    },
5931    {
5932      "type": "TSTypeAliasDeclaration",
5933      "id": {
5934        "type": "Identifier",
5935        "name": "E",
5936        "decorators": [],
5937        "loc": {
5938          "start": {
5939            "line": 68,
5940            "column": 6
5941          },
5942          "end": {
5943            "line": 68,
5944            "column": 7
5945          }
5946        }
5947      },
5948      "typeAnnotation": {
5949        "type": "TSUnionType",
5950        "types": [
5951          {
5952            "type": "TSNumberKeyword",
5953            "loc": {
5954              "start": {
5955                "line": 68,
5956                "column": 38
5957              },
5958              "end": {
5959                "line": 68,
5960                "column": 44
5961              }
5962            }
5963          },
5964          {
5965            "type": "TSTypeReference",
5966            "typeName": {
5967              "type": "Identifier",
5968              "name": "T",
5969              "decorators": [],
5970              "loc": {
5971                "start": {
5972                  "line": 68,
5973                  "column": 47
5974                },
5975                "end": {
5976                  "line": 68,
5977                  "column": 48
5978                }
5979              }
5980            },
5981            "loc": {
5982              "start": {
5983                "line": 68,
5984                "column": 47
5985              },
5986              "end": {
5987                "line": 68,
5988                "column": 48
5989              }
5990            }
5991          },
5992          {
5993            "type": "TSStringKeyword",
5994            "loc": {
5995              "start": {
5996                "line": 68,
5997                "column": 51
5998              },
5999              "end": {
6000                "line": 68,
6001                "column": 57
6002              }
6003            }
6004          }
6005        ],
6006        "loc": {
6007          "start": {
6008            "line": 68,
6009            "column": 38
6010          },
6011          "end": {
6012            "line": 68,
6013            "column": 57
6014          }
6015        }
6016      },
6017      "typeParameters": {
6018        "type": "TSTypeParameterDeclaration",
6019        "params": [
6020          {
6021            "type": "TSTypeParameter",
6022            "name": {
6023              "type": "Identifier",
6024              "name": "R",
6025              "decorators": [],
6026              "loc": {
6027                "start": {
6028                  "line": 68,
6029                  "column": 8
6030                },
6031                "end": {
6032                  "line": 68,
6033                  "column": 9
6034                }
6035              }
6036            },
6037            "constraint": {
6038              "type": "TSTypeReference",
6039              "typeName": {
6040                "type": "Identifier",
6041                "name": "B",
6042                "decorators": [],
6043                "loc": {
6044                  "start": {
6045                    "line": 68,
6046                    "column": 18
6047                  },
6048                  "end": {
6049                    "line": 68,
6050                    "column": 19
6051                  }
6052                }
6053              },
6054              "loc": {
6055                "start": {
6056                  "line": 68,
6057                  "column": 18
6058                },
6059                "end": {
6060                  "line": 68,
6061                  "column": 19
6062                }
6063              }
6064            },
6065            "loc": {
6066              "start": {
6067                "line": 68,
6068                "column": 8
6069              },
6070              "end": {
6071                "line": 68,
6072                "column": 20
6073              }
6074            }
6075          },
6076          {
6077            "type": "TSTypeParameter",
6078            "name": {
6079              "type": "Identifier",
6080              "name": "C",
6081              "decorators": [],
6082              "loc": {
6083                "start": {
6084                  "line": 68,
6085                  "column": 21
6086                },
6087                "end": {
6088                  "line": 68,
6089                  "column": 22
6090                }
6091              }
6092            },
6093            "loc": {
6094              "start": {
6095                "line": 68,
6096                "column": 21
6097              },
6098              "end": {
6099                "line": 68,
6100                "column": 23
6101              }
6102            }
6103          },
6104          {
6105            "type": "TSTypeParameter",
6106            "name": {
6107              "type": "Identifier",
6108              "name": "T",
6109              "decorators": [],
6110              "loc": {
6111                "start": {
6112                  "line": 68,
6113                  "column": 24
6114                },
6115                "end": {
6116                  "line": 68,
6117                  "column": 25
6118                }
6119              }
6120            },
6121            "default": {
6122              "type": "TSNumberKeyword",
6123              "loc": {
6124                "start": {
6125                  "line": 68,
6126                  "column": 28
6127                },
6128                "end": {
6129                  "line": 68,
6130                  "column": 34
6131                }
6132              }
6133            },
6134            "loc": {
6135              "start": {
6136                "line": 68,
6137                "column": 24
6138              },
6139              "end": {
6140                "line": 68,
6141                "column": 35
6142              }
6143            }
6144          }
6145        ],
6146        "loc": {
6147          "start": {
6148            "line": 68,
6149            "column": 7
6150          },
6151          "end": {
6152            "line": 68,
6153            "column": 35
6154          }
6155        }
6156      },
6157      "loc": {
6158        "start": {
6159          "line": 68,
6160          "column": 1
6161        },
6162        "end": {
6163          "line": 68,
6164          "column": 58
6165        }
6166      }
6167    },
6168    {
6169      "type": "EmptyStatement",
6170      "loc": {
6171        "start": {
6172          "line": 68,
6173          "column": 57
6174        },
6175        "end": {
6176          "line": 68,
6177          "column": 58
6178        }
6179      }
6180    },
6181    {
6182      "type": "TSTypeAliasDeclaration",
6183      "id": {
6184        "type": "Identifier",
6185        "name": "P",
6186        "decorators": [],
6187        "loc": {
6188          "start": {
6189            "line": 69,
6190            "column": 6
6191          },
6192          "end": {
6193            "line": 69,
6194            "column": 7
6195          }
6196        }
6197      },
6198      "typeAnnotation": {
6199        "type": "TSTypeLiteral",
6200        "members": [
6201          {
6202            "type": "TSPropertySignature",
6203            "computed": false,
6204            "optional": false,
6205            "readonly": false,
6206            "key": {
6207              "type": "Identifier",
6208              "name": "a",
6209              "decorators": [],
6210              "loc": {
6211                "start": {
6212                  "line": 69,
6213                  "column": 52
6214                },
6215                "end": {
6216                  "line": 69,
6217                  "column": 53
6218                }
6219              }
6220            },
6221            "typeAnnotation": {
6222              "type": "TSTypeReference",
6223              "typeName": {
6224                "type": "Identifier",
6225                "name": "K",
6226                "decorators": [],
6227                "loc": {
6228                  "start": {
6229                    "line": 69,
6230                    "column": 54
6231                  },
6232                  "end": {
6233                    "line": 69,
6234                    "column": 55
6235                  }
6236                }
6237              },
6238              "loc": {
6239                "start": {
6240                  "line": 69,
6241                  "column": 54
6242                },
6243                "end": {
6244                  "line": 69,
6245                  "column": 55
6246                }
6247              }
6248            },
6249            "loc": {
6250              "start": {
6251                "line": 69,
6252                "column": 52
6253              },
6254              "end": {
6255                "line": 69,
6256                "column": 56
6257              }
6258            }
6259          },
6260          {
6261            "type": "TSPropertySignature",
6262            "computed": false,
6263            "optional": false,
6264            "readonly": false,
6265            "key": {
6266              "type": "Identifier",
6267              "name": "b",
6268              "decorators": [],
6269              "loc": {
6270                "start": {
6271                  "line": 69,
6272                  "column": 57
6273                },
6274                "end": {
6275                  "line": 69,
6276                  "column": 58
6277                }
6278              }
6279            },
6280            "typeAnnotation": {
6281              "type": "TSTypeReference",
6282              "typeName": {
6283                "type": "Identifier",
6284                "name": "Q",
6285                "decorators": [],
6286                "loc": {
6287                  "start": {
6288                    "line": 69,
6289                    "column": 59
6290                  },
6291                  "end": {
6292                    "line": 69,
6293                    "column": 60
6294                  }
6295                }
6296              },
6297              "loc": {
6298                "start": {
6299                  "line": 69,
6300                  "column": 59
6301                },
6302                "end": {
6303                  "line": 69,
6304                  "column": 60
6305                }
6306              }
6307            },
6308            "loc": {
6309              "start": {
6310                "line": 69,
6311                "column": 57
6312              },
6313              "end": {
6314                "line": 69,
6315                "column": 61
6316              }
6317            }
6318          }
6319        ],
6320        "loc": {
6321          "start": {
6322            "line": 69,
6323            "column": 51
6324          },
6325          "end": {
6326            "line": 69,
6327            "column": 61
6328          }
6329        }
6330      },
6331      "typeParameters": {
6332        "type": "TSTypeParameterDeclaration",
6333        "params": [
6334          {
6335            "type": "TSTypeParameter",
6336            "name": {
6337              "type": "Identifier",
6338              "name": "K",
6339              "decorators": [],
6340              "loc": {
6341                "start": {
6342                  "line": 69,
6343                  "column": 8
6344                },
6345                "end": {
6346                  "line": 69,
6347                  "column": 9
6348                }
6349              }
6350            },
6351            "loc": {
6352              "start": {
6353                "line": 69,
6354                "column": 8
6355              },
6356              "end": {
6357                "line": 69,
6358                "column": 10
6359              }
6360            }
6361          },
6362          {
6363            "type": "TSTypeParameter",
6364            "name": {
6365              "type": "Identifier",
6366              "name": "Q",
6367              "decorators": [],
6368              "loc": {
6369                "start": {
6370                  "line": 69,
6371                  "column": 11
6372                },
6373                "end": {
6374                  "line": 69,
6375                  "column": 12
6376                }
6377              }
6378            },
6379            "default": {
6380              "type": "TSUnionType",
6381              "types": [
6382                {
6383                  "type": "TSTupleType",
6384                  "elementTypes": [
6385                    {
6386                      "type": "TSNumberKeyword",
6387                      "loc": {
6388                        "start": {
6389                          "line": 69,
6390                          "column": 16
6391                        },
6392                        "end": {
6393                          "line": 69,
6394                          "column": 22
6395                        }
6396                      }
6397                    },
6398                    {
6399                      "type": "TSNumberKeyword",
6400                      "loc": {
6401                        "start": {
6402                          "line": 69,
6403                          "column": 24
6404                        },
6405                        "end": {
6406                          "line": 69,
6407                          "column": 30
6408                        }
6409                      }
6410                    },
6411                    {
6412                      "type": "TSStringKeyword",
6413                      "loc": {
6414                        "start": {
6415                          "line": 69,
6416                          "column": 32
6417                        },
6418                        "end": {
6419                          "line": 69,
6420                          "column": 38
6421                        }
6422                      }
6423                    }
6424                  ],
6425                  "loc": {
6426                    "start": {
6427                      "line": 69,
6428                      "column": 15
6429                    },
6430                    "end": {
6431                      "line": 69,
6432                      "column": 39
6433                    }
6434                  }
6435                },
6436                {
6437                  "type": "TSArrayType",
6438                  "elementType": {
6439                    "type": "TSAnyKeyword",
6440                    "loc": {
6441                      "start": {
6442                        "line": 69,
6443                        "column": 42
6444                      },
6445                      "end": {
6446                        "line": 69,
6447                        "column": 45
6448                      }
6449                    }
6450                  },
6451                  "loc": {
6452                    "start": {
6453                      "line": 69,
6454                      "column": 42
6455                    },
6456                    "end": {
6457                      "line": 69,
6458                      "column": 47
6459                    }
6460                  }
6461                }
6462              ],
6463              "loc": {
6464                "start": {
6465                  "line": 69,
6466                  "column": 15
6467                },
6468                "end": {
6469                  "line": 69,
6470                  "column": 47
6471                }
6472              }
6473            },
6474            "loc": {
6475              "start": {
6476                "line": 69,
6477                "column": 11
6478              },
6479              "end": {
6480                "line": 69,
6481                "column": 48
6482              }
6483            }
6484          }
6485        ],
6486        "loc": {
6487          "start": {
6488            "line": 69,
6489            "column": 7
6490          },
6491          "end": {
6492            "line": 69,
6493            "column": 48
6494          }
6495        }
6496      },
6497      "loc": {
6498        "start": {
6499          "line": 69,
6500          "column": 1
6501        },
6502        "end": {
6503          "line": 69,
6504          "column": 62
6505        }
6506      }
6507    },
6508    {
6509      "type": "EmptyStatement",
6510      "loc": {
6511        "start": {
6512          "line": 69,
6513          "column": 61
6514        },
6515        "end": {
6516          "line": 69,
6517          "column": 62
6518        }
6519      }
6520    },
6521    {
6522      "type": "ExpressionStatement",
6523      "expression": {
6524        "type": "CallExpression",
6525        "callee": {
6526          "type": "Identifier",
6527          "name": "async",
6528          "decorators": [],
6529          "loc": {
6530            "start": {
6531              "line": 71,
6532              "column": 1
6533            },
6534            "end": {
6535              "line": 71,
6536              "column": 6
6537            }
6538          }
6539        },
6540        "arguments": [],
6541        "optional": false,
6542        "typeParameters": {
6543          "type": "TSTypeParameterInstantiation",
6544          "params": [
6545            {
6546              "type": "TSFunctionType",
6547              "params": [],
6548              "typeParameters": {
6549                "type": "TSTypeParameterDeclaration",
6550                "params": [
6551                  {
6552                    "type": "TSTypeParameter",
6553                    "name": {
6554                      "type": "Identifier",
6555                      "name": "A",
6556                      "decorators": [],
6557                      "loc": {
6558                        "start": {
6559                          "line": 71,
6560                          "column": 8
6561                        },
6562                        "end": {
6563                          "line": 71,
6564                          "column": 9
6565                        }
6566                      }
6567                    },
6568                    "loc": {
6569                      "start": {
6570                        "line": 71,
6571                        "column": 8
6572                      },
6573                      "end": {
6574                        "line": 71,
6575                        "column": 10
6576                      }
6577                    }
6578                  }
6579                ],
6580                "loc": {
6581                  "start": {
6582                    "line": 71,
6583                    "column": 7
6584                  },
6585                  "end": {
6586                    "line": 71,
6587                    "column": 10
6588                  }
6589                }
6590              },
6591              "returnType": {
6592                "type": "TSTypeLiteral",
6593                "members": [],
6594                "loc": {
6595                  "start": {
6596                    "line": 71,
6597                    "column": 16
6598                  },
6599                  "end": {
6600                    "line": 71,
6601                    "column": 18
6602                  }
6603                }
6604              },
6605              "loc": {
6606                "start": {
6607                  "line": 71,
6608                  "column": 7
6609                },
6610                "end": {
6611                  "line": 71,
6612                  "column": 18
6613                }
6614              }
6615            }
6616          ],
6617          "loc": {
6618            "start": {
6619              "line": 71,
6620              "column": 6
6621            },
6622            "end": {
6623              "line": 71,
6624              "column": 19
6625            }
6626          }
6627        },
6628        "loc": {
6629          "start": {
6630            "line": 71,
6631            "column": 1
6632          },
6633          "end": {
6634            "line": 71,
6635            "column": 21
6636          }
6637        }
6638      },
6639      "loc": {
6640        "start": {
6641          "line": 71,
6642          "column": 1
6643        },
6644        "end": {
6645          "line": 71,
6646          "column": 22
6647        }
6648      }
6649    },
6650    {
6651      "type": "ExpressionStatement",
6652      "expression": {
6653        "type": "CallExpression",
6654        "callee": {
6655          "type": "Identifier",
6656          "name": "async",
6657          "decorators": [],
6658          "loc": {
6659            "start": {
6660              "line": 72,
6661              "column": 1
6662            },
6663            "end": {
6664              "line": 72,
6665              "column": 6
6666            }
6667          }
6668        },
6669        "arguments": [],
6670        "optional": false,
6671        "typeParameters": {
6672          "type": "TSTypeParameterInstantiation",
6673          "params": [
6674            {
6675              "type": "TSNumberKeyword",
6676              "loc": {
6677                "start": {
6678                  "line": 72,
6679                  "column": 7
6680                },
6681                "end": {
6682                  "line": 72,
6683                  "column": 13
6684                }
6685              }
6686            }
6687          ],
6688          "loc": {
6689            "start": {
6690              "line": 72,
6691              "column": 6
6692            },
6693            "end": {
6694              "line": 72,
6695              "column": 14
6696            }
6697          }
6698        },
6699        "loc": {
6700          "start": {
6701            "line": 72,
6702            "column": 1
6703          },
6704          "end": {
6705            "line": 72,
6706            "column": 16
6707          }
6708        }
6709      },
6710      "loc": {
6711        "start": {
6712          "line": 72,
6713          "column": 1
6714        },
6715        "end": {
6716          "line": 72,
6717          "column": 17
6718        }
6719      }
6720    },
6721    {
6722      "type": "ExpressionStatement",
6723      "expression": {
6724        "type": "ArrowFunctionExpression",
6725        "function": {
6726          "type": "ScriptFunction",
6727          "id": null,
6728          "generator": false,
6729          "async": false,
6730          "expression": true,
6731          "params": [],
6732          "returnType": {
6733            "type": "TSNumberKeyword",
6734            "loc": {
6735              "start": {
6736                "line": 73,
6737                "column": 17
6738              },
6739              "end": {
6740                "line": 73,
6741                "column": 23
6742              }
6743            }
6744          },
6745          "typeParameters": {
6746            "type": "TSTypeParameterDeclaration",
6747            "params": [
6748              {
6749                "type": "TSTypeParameter",
6750                "name": {
6751                  "type": "Identifier",
6752                  "name": "A",
6753                  "decorators": [],
6754                  "loc": {
6755                    "start": {
6756                      "line": 73,
6757                      "column": 2
6758                    },
6759                    "end": {
6760                      "line": 73,
6761                      "column": 3
6762                    }
6763                  }
6764                },
6765                "constraint": {
6766                  "type": "TSTypeReference",
6767                  "typeName": {
6768                    "type": "Identifier",
6769                    "name": "B",
6770                    "decorators": [],
6771                    "loc": {
6772                      "start": {
6773                        "line": 73,
6774                        "column": 12
6775                      },
6776                      "end": {
6777                        "line": 73,
6778                        "column": 13
6779                      }
6780                    }
6781                  },
6782                  "loc": {
6783                    "start": {
6784                      "line": 73,
6785                      "column": 12
6786                    },
6787                    "end": {
6788                      "line": 73,
6789                      "column": 13
6790                    }
6791                  }
6792                },
6793                "loc": {
6794                  "start": {
6795                    "line": 73,
6796                    "column": 2
6797                  },
6798                  "end": {
6799                    "line": 73,
6800                    "column": 14
6801                  }
6802                }
6803              }
6804            ],
6805            "loc": {
6806              "start": {
6807                "line": 73,
6808                "column": 1
6809              },
6810              "end": {
6811                "line": 73,
6812                "column": 14
6813              }
6814            }
6815          },
6816          "body": {
6817            "type": "BooleanLiteral",
6818            "value": true,
6819            "loc": {
6820              "start": {
6821                "line": 73,
6822                "column": 27
6823              },
6824              "end": {
6825                "line": 73,
6826                "column": 31
6827              }
6828            }
6829          },
6830          "loc": {
6831            "start": {
6832              "line": 73,
6833              "column": 1
6834            },
6835            "end": {
6836              "line": 73,
6837              "column": 31
6838            }
6839          }
6840        },
6841        "loc": {
6842          "start": {
6843            "line": 73,
6844            "column": 1
6845          },
6846          "end": {
6847            "line": 73,
6848            "column": 31
6849          }
6850        }
6851      },
6852      "loc": {
6853        "start": {
6854          "line": 73,
6855          "column": 1
6856        },
6857        "end": {
6858          "line": 73,
6859          "column": 32
6860        }
6861      }
6862    },
6863    {
6864      "type": "ExpressionStatement",
6865      "expression": {
6866        "type": "ArrowFunctionExpression",
6867        "function": {
6868          "type": "ScriptFunction",
6869          "id": null,
6870          "generator": false,
6871          "async": true,
6872          "expression": false,
6873          "params": [],
6874          "typeParameters": {
6875            "type": "TSTypeParameterDeclaration",
6876            "params": [
6877              {
6878                "type": "TSTypeParameter",
6879                "name": {
6880                  "type": "Identifier",
6881                  "name": "A",
6882                  "decorators": [],
6883                  "loc": {
6884                    "start": {
6885                      "line": 74,
6886                      "column": 7
6887                    },
6888                    "end": {
6889                      "line": 74,
6890                      "column": 8
6891                    }
6892                  }
6893                },
6894                "constraint": {
6895                  "type": "TSTypeOperator",
6896                  "operator": "readonly",
6897                  "typeAnnotation": {
6898                    "type": "TSTupleType",
6899                    "elementTypes": [
6900                      {
6901                        "type": "TSNumberKeyword",
6902                        "loc": {
6903                          "start": {
6904                            "line": 74,
6905                            "column": 27
6906                          },
6907                          "end": {
6908                            "line": 74,
6909                            "column": 33
6910                          }
6911                        }
6912                      },
6913                      {
6914                        "type": "TSStringKeyword",
6915                        "loc": {
6916                          "start": {
6917                            "line": 74,
6918                            "column": 35
6919                          },
6920                          "end": {
6921                            "line": 74,
6922                            "column": 41
6923                          }
6924                        }
6925                      }
6926                    ],
6927                    "loc": {
6928                      "start": {
6929                        "line": 74,
6930                        "column": 26
6931                      },
6932                      "end": {
6933                        "line": 74,
6934                        "column": 42
6935                      }
6936                    }
6937                  },
6938                  "loc": {
6939                    "start": {
6940                      "line": 74,
6941                      "column": 17
6942                    },
6943                    "end": {
6944                      "line": 74,
6945                      "column": 42
6946                    }
6947                  }
6948                },
6949                "loc": {
6950                  "start": {
6951                    "line": 74,
6952                    "column": 7
6953                  },
6954                  "end": {
6955                    "line": 74,
6956                    "column": 43
6957                  }
6958                }
6959              }
6960            ],
6961            "loc": {
6962              "start": {
6963                "line": 74,
6964                "column": 6
6965              },
6966              "end": {
6967                "line": 74,
6968                "column": 43
6969              }
6970            }
6971          },
6972          "body": {
6973            "type": "BlockStatement",
6974            "statements": [
6975              {
6976                "type": "ReturnStatement",
6977                "argument": {
6978                  "type": "StringLiteral",
6979                  "value": "foo",
6980                  "loc": {
6981                    "start": {
6982                      "line": 74,
6983                      "column": 57
6984                    },
6985                    "end": {
6986                      "line": 74,
6987                      "column": 62
6988                    }
6989                  }
6990                },
6991                "loc": {
6992                  "start": {
6993                    "line": 74,
6994                    "column": 50
6995                  },
6996                  "end": {
6997                    "line": 74,
6998                    "column": 63
6999                  }
7000                }
7001              }
7002            ],
7003            "loc": {
7004              "start": {
7005                "line": 74,
7006                "column": 49
7007              },
7008              "end": {
7009                "line": 74,
7010                "column": 64
7011              }
7012            }
7013          },
7014          "loc": {
7015            "start": {
7016              "line": 74,
7017              "column": 1
7018            },
7019            "end": {
7020              "line": 74,
7021              "column": 64
7022            }
7023          }
7024        },
7025        "loc": {
7026          "start": {
7027            "line": 74,
7028            "column": 1
7029          },
7030          "end": {
7031            "line": 74,
7032            "column": 64
7033          }
7034        }
7035      },
7036      "loc": {
7037        "start": {
7038          "line": 74,
7039          "column": 1
7040        },
7041        "end": {
7042          "line": 74,
7043          "column": 65
7044        }
7045      }
7046    }
7047  ],
7048  "loc": {
7049    "start": {
7050      "line": 1,
7051      "column": 1
7052    },
7053    "end": {
7054      "line": 74,
7055      "column": 65
7056    }
7057  }
7058}
7059