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