1{
2  "type": "Program",
3  "statements": [
4    {
5      "type": "ClassDeclaration",
6      "definition": {
7        "id": {
8          "type": "Identifier",
9          "name": "A",
10          "decorators": [],
11          "loc": {
12            "start": {
13              "line": 16,
14              "column": 7
15            },
16            "end": {
17              "line": 16,
18              "column": 8
19            }
20          }
21        },
22        "typeParameters": {
23          "type": "TSTypeParameterDeclaration",
24          "params": [
25            {
26              "type": "TSTypeParameter",
27              "name": {
28                "type": "Identifier",
29                "name": "TA",
30                "decorators": [],
31                "loc": {
32                  "start": {
33                    "line": 16,
34                    "column": 9
35                  },
36                  "end": {
37                    "line": 16,
38                    "column": 11
39                  }
40                }
41              },
42              "loc": {
43                "start": {
44                  "line": 16,
45                  "column": 9
46                },
47                "end": {
48                  "line": 16,
49                  "column": 12
50                }
51              }
52            }
53          ],
54          "loc": {
55            "start": {
56              "line": 16,
57              "column": 8
58            },
59            "end": {
60              "line": 16,
61              "column": 12
62            }
63          }
64        },
65        "superClass": {
66          "type": "ETSTypeReference",
67          "part": {
68            "type": "ETSTypeReferencePart",
69            "name": {
70              "type": "Identifier",
71              "name": "B",
72              "decorators": [],
73              "loc": {
74                "start": {
75                  "line": 16,
76                  "column": 21
77                },
78                "end": {
79                  "line": 16,
80                  "column": 22
81                }
82              }
83            },
84            "typeParams": {
85              "type": "TSTypeParameterInstantiation",
86              "params": [
87                {
88                  "type": "ETSTypeReference",
89                  "part": {
90                    "type": "ETSTypeReferencePart",
91                    "name": {
92                      "type": "Identifier",
93                      "name": "TA",
94                      "decorators": [],
95                      "loc": {
96                        "start": {
97                          "line": 16,
98                          "column": 23
99                        },
100                        "end": {
101                          "line": 16,
102                          "column": 25
103                        }
104                      }
105                    },
106                    "loc": {
107                      "start": {
108                        "line": 16,
109                        "column": 23
110                      },
111                      "end": {
112                        "line": 16,
113                        "column": 26
114                      }
115                    }
116                  },
117                  "loc": {
118                    "start": {
119                      "line": 16,
120                      "column": 23
121                    },
122                    "end": {
123                      "line": 16,
124                      "column": 26
125                    }
126                  }
127                }
128              ],
129              "loc": {
130                "start": {
131                  "line": 16,
132                  "column": 22
133                },
134                "end": {
135                  "line": 16,
136                  "column": 26
137                }
138              }
139            },
140            "loc": {
141              "start": {
142                "line": 16,
143                "column": 21
144              },
145              "end": {
146                "line": 16,
147                "column": 28
148              }
149            }
150          },
151          "loc": {
152            "start": {
153              "line": 16,
154              "column": 21
155            },
156            "end": {
157              "line": 16,
158              "column": 28
159            }
160          }
161        },
162        "implements": [],
163        "body": [
164          {
165            "type": "MethodDefinition",
166            "key": {
167              "type": "Identifier",
168              "name": "constructor",
169              "decorators": [],
170              "loc": {
171                "start": {
172                  "line": 1,
173                  "column": 1
174                },
175                "end": {
176                  "line": 1,
177                  "column": 1
178                }
179              }
180            },
181            "kind": "constructor",
182            "static": false,
183            "optional": false,
184            "computed": false,
185            "value": {
186              "type": "FunctionExpression",
187              "function": {
188                "type": "ScriptFunction",
189                "id": {
190                  "type": "Identifier",
191                  "name": "constructor",
192                  "decorators": [],
193                  "loc": {
194                    "start": {
195                      "line": 1,
196                      "column": 1
197                    },
198                    "end": {
199                      "line": 1,
200                      "column": 1
201                    }
202                  }
203                },
204                "generator": false,
205                "async": false,
206                "expression": false,
207                "params": [],
208                "body": {
209                  "type": "BlockStatement",
210                  "statements": [],
211                  "loc": {
212                    "start": {
213                      "line": 1,
214                      "column": 1
215                    },
216                    "end": {
217                      "line": 1,
218                      "column": 1
219                    }
220                  }
221                },
222                "loc": {
223                  "start": {
224                    "line": 1,
225                    "column": 1
226                  },
227                  "end": {
228                    "line": 1,
229                    "column": 1
230                  }
231                }
232              },
233              "loc": {
234                "start": {
235                  "line": 1,
236                  "column": 1
237                },
238                "end": {
239                  "line": 1,
240                  "column": 1
241                }
242              }
243            },
244            "overloads": [],
245            "decorators": [],
246            "loc": {
247              "start": {
248                "line": 16,
249                "column": 29
250              },
251              "end": {
252                "line": 16,
253                "column": 29
254              }
255            }
256          }
257        ],
258        "loc": {
259          "start": {
260            "line": 16,
261            "column": 27
262          },
263          "end": {
264            "line": 16,
265            "column": 29
266          }
267        }
268      },
269      "loc": {
270        "start": {
271          "line": 16,
272          "column": 1
273        },
274        "end": {
275          "line": 16,
276          "column": 29
277        }
278      }
279    },
280    {
281      "type": "ClassDeclaration",
282      "definition": {
283        "id": {
284          "type": "Identifier",
285          "name": "B",
286          "decorators": [],
287          "loc": {
288            "start": {
289              "line": 18,
290              "column": 7
291            },
292            "end": {
293              "line": 18,
294              "column": 8
295            }
296          }
297        },
298        "typeParameters": {
299          "type": "TSTypeParameterDeclaration",
300          "params": [
301            {
302              "type": "TSTypeParameter",
303              "name": {
304                "type": "Identifier",
305                "name": "TB",
306                "decorators": [],
307                "loc": {
308                  "start": {
309                    "line": 18,
310                    "column": 9
311                  },
312                  "end": {
313                    "line": 18,
314                    "column": 11
315                  }
316                }
317              },
318              "loc": {
319                "start": {
320                  "line": 18,
321                  "column": 9
322                },
323                "end": {
324                  "line": 18,
325                  "column": 12
326                }
327              }
328            }
329          ],
330          "loc": {
331            "start": {
332              "line": 18,
333              "column": 8
334            },
335            "end": {
336              "line": 18,
337              "column": 12
338            }
339          }
340        },
341        "superClass": null,
342        "implements": [],
343        "body": [
344          {
345            "type": "MethodDefinition",
346            "key": {
347              "type": "Identifier",
348              "name": "f",
349              "decorators": [],
350              "loc": {
351                "start": {
352                  "line": 19,
353                  "column": 5
354                },
355                "end": {
356                  "line": 19,
357                  "column": 6
358                }
359              }
360            },
361            "kind": "method",
362            "accessibility": "public",
363            "static": false,
364            "optional": false,
365            "computed": false,
366            "value": {
367              "type": "FunctionExpression",
368              "function": {
369                "type": "ScriptFunction",
370                "id": {
371                  "type": "Identifier",
372                  "name": "f",
373                  "decorators": [],
374                  "loc": {
375                    "start": {
376                      "line": 19,
377                      "column": 5
378                    },
379                    "end": {
380                      "line": 19,
381                      "column": 6
382                    }
383                  }
384                },
385                "generator": false,
386                "async": false,
387                "expression": false,
388                "params": [],
389                "body": {
390                  "type": "BlockStatement",
391                  "statements": [],
392                  "loc": {
393                    "start": {
394                      "line": 19,
395                      "column": 9
396                    },
397                    "end": {
398                      "line": 19,
399                      "column": 11
400                    }
401                  }
402                },
403                "loc": {
404                  "start": {
405                    "line": 19,
406                    "column": 6
407                  },
408                  "end": {
409                    "line": 19,
410                    "column": 11
411                  }
412                }
413              },
414              "loc": {
415                "start": {
416                  "line": 19,
417                  "column": 6
418                },
419                "end": {
420                  "line": 19,
421                  "column": 11
422                }
423              }
424            },
425            "overloads": [],
426            "decorators": [],
427            "loc": {
428              "start": {
429                "line": 19,
430                "column": 5
431              },
432              "end": {
433                "line": 19,
434                "column": 11
435              }
436            }
437          },
438          {
439            "type": "MethodDefinition",
440            "key": {
441              "type": "Identifier",
442              "name": "g",
443              "decorators": [],
444              "loc": {
445                "start": {
446                  "line": 20,
447                  "column": 5
448                },
449                "end": {
450                  "line": 20,
451                  "column": 6
452                }
453              }
454            },
455            "kind": "method",
456            "accessibility": "public",
457            "static": false,
458            "optional": false,
459            "computed": false,
460            "value": {
461              "type": "FunctionExpression",
462              "function": {
463                "type": "ScriptFunction",
464                "id": {
465                  "type": "Identifier",
466                  "name": "g",
467                  "decorators": [],
468                  "loc": {
469                    "start": {
470                      "line": 20,
471                      "column": 5
472                    },
473                    "end": {
474                      "line": 20,
475                      "column": 6
476                    }
477                  }
478                },
479                "generator": false,
480                "async": false,
481                "expression": false,
482                "params": [
483                  {
484                    "type": "ETSParameterExpression",
485                    "name": {
486                      "type": "Identifier",
487                      "name": "a",
488                      "typeAnnotation": {
489                        "type": "ETSTypeReference",
490                        "part": {
491                          "type": "ETSTypeReferencePart",
492                          "name": {
493                            "type": "Identifier",
494                            "name": "A",
495                            "decorators": [],
496                            "loc": {
497                              "start": {
498                                "line": 20,
499                                "column": 10
500                              },
501                              "end": {
502                                "line": 20,
503                                "column": 11
504                              }
505                            }
506                          },
507                          "typeParams": {
508                            "type": "TSTypeParameterInstantiation",
509                            "params": [
510                              {
511                                "type": "ETSTypeReference",
512                                "part": {
513                                  "type": "ETSTypeReferencePart",
514                                  "name": {
515                                    "type": "Identifier",
516                                    "name": "TB",
517                                    "decorators": [],
518                                    "loc": {
519                                      "start": {
520                                        "line": 20,
521                                        "column": 12
522                                      },
523                                      "end": {
524                                        "line": 20,
525                                        "column": 14
526                                      }
527                                    }
528                                  },
529                                  "loc": {
530                                    "start": {
531                                      "line": 20,
532                                      "column": 12
533                                    },
534                                    "end": {
535                                      "line": 20,
536                                      "column": 15
537                                    }
538                                  }
539                                },
540                                "loc": {
541                                  "start": {
542                                    "line": 20,
543                                    "column": 12
544                                  },
545                                  "end": {
546                                    "line": 20,
547                                    "column": 15
548                                  }
549                                }
550                              }
551                            ],
552                            "loc": {
553                              "start": {
554                                "line": 20,
555                                "column": 11
556                              },
557                              "end": {
558                                "line": 20,
559                                "column": 15
560                              }
561                            }
562                          },
563                          "loc": {
564                            "start": {
565                              "line": 20,
566                              "column": 10
567                            },
568                            "end": {
569                              "line": 20,
570                              "column": 16
571                            }
572                          }
573                        },
574                        "loc": {
575                          "start": {
576                            "line": 20,
577                            "column": 10
578                          },
579                          "end": {
580                            "line": 20,
581                            "column": 16
582                          }
583                        }
584                      },
585                      "decorators": [],
586                      "loc": {
587                        "start": {
588                          "line": 20,
589                          "column": 7
590                        },
591                        "end": {
592                          "line": 20,
593                          "column": 16
594                        }
595                      }
596                    },
597                    "loc": {
598                      "start": {
599                        "line": 20,
600                        "column": 7
601                      },
602                      "end": {
603                        "line": 20,
604                        "column": 16
605                      }
606                    }
607                  }
608                ],
609                "body": {
610                  "type": "BlockStatement",
611                  "statements": [
612                    {
613                      "type": "ExpressionStatement",
614                      "expression": {
615                        "type": "CallExpression",
616                        "callee": {
617                          "type": "MemberExpression",
618                          "object": {
619                            "type": "Identifier",
620                            "name": "a",
621                            "decorators": [],
622                            "loc": {
623                              "start": {
624                                "line": 21,
625                                "column": 9
626                              },
627                              "end": {
628                                "line": 21,
629                                "column": 10
630                              }
631                            }
632                          },
633                          "property": {
634                            "type": "Identifier",
635                            "name": "f",
636                            "decorators": [],
637                            "loc": {
638                              "start": {
639                                "line": 21,
640                                "column": 11
641                              },
642                              "end": {
643                                "line": 21,
644                                "column": 12
645                              }
646                            }
647                          },
648                          "computed": false,
649                          "optional": false,
650                          "loc": {
651                            "start": {
652                              "line": 21,
653                              "column": 9
654                            },
655                            "end": {
656                              "line": 21,
657                              "column": 12
658                            }
659                          }
660                        },
661                        "arguments": [],
662                        "optional": false,
663                        "loc": {
664                          "start": {
665                            "line": 21,
666                            "column": 9
667                          },
668                          "end": {
669                            "line": 21,
670                            "column": 14
671                          }
672                        }
673                      },
674                      "loc": {
675                        "start": {
676                          "line": 21,
677                          "column": 9
678                        },
679                        "end": {
680                          "line": 21,
681                          "column": 15
682                        }
683                      }
684                    }
685                  ],
686                  "loc": {
687                    "start": {
688                      "line": 20,
689                      "column": 17
690                    },
691                    "end": {
692                      "line": 22,
693                      "column": 6
694                    }
695                  }
696                },
697                "loc": {
698                  "start": {
699                    "line": 20,
700                    "column": 6
701                  },
702                  "end": {
703                    "line": 22,
704                    "column": 6
705                  }
706                }
707              },
708              "loc": {
709                "start": {
710                  "line": 20,
711                  "column": 6
712                },
713                "end": {
714                  "line": 22,
715                  "column": 6
716                }
717              }
718            },
719            "overloads": [],
720            "decorators": [],
721            "loc": {
722              "start": {
723                "line": 20,
724                "column": 5
725              },
726              "end": {
727                "line": 22,
728                "column": 6
729              }
730            }
731          },
732          {
733            "type": "MethodDefinition",
734            "key": {
735              "type": "Identifier",
736              "name": "constructor",
737              "decorators": [],
738              "loc": {
739                "start": {
740                  "line": 1,
741                  "column": 1
742                },
743                "end": {
744                  "line": 1,
745                  "column": 1
746                }
747              }
748            },
749            "kind": "constructor",
750            "static": false,
751            "optional": false,
752            "computed": false,
753            "value": {
754              "type": "FunctionExpression",
755              "function": {
756                "type": "ScriptFunction",
757                "id": {
758                  "type": "Identifier",
759                  "name": "constructor",
760                  "decorators": [],
761                  "loc": {
762                    "start": {
763                      "line": 1,
764                      "column": 1
765                    },
766                    "end": {
767                      "line": 1,
768                      "column": 1
769                    }
770                  }
771                },
772                "generator": false,
773                "async": false,
774                "expression": false,
775                "params": [],
776                "body": {
777                  "type": "BlockStatement",
778                  "statements": [],
779                  "loc": {
780                    "start": {
781                      "line": 1,
782                      "column": 1
783                    },
784                    "end": {
785                      "line": 1,
786                      "column": 1
787                    }
788                  }
789                },
790                "loc": {
791                  "start": {
792                    "line": 1,
793                    "column": 1
794                  },
795                  "end": {
796                    "line": 1,
797                    "column": 1
798                  }
799                }
800              },
801              "loc": {
802                "start": {
803                  "line": 1,
804                  "column": 1
805                },
806                "end": {
807                  "line": 1,
808                  "column": 1
809                }
810              }
811            },
812            "overloads": [],
813            "decorators": [],
814            "loc": {
815              "start": {
816                "line": 23,
817                "column": 2
818              },
819              "end": {
820                "line": 23,
821                "column": 2
822              }
823            }
824          }
825        ],
826        "loc": {
827          "start": {
828            "line": 18,
829            "column": 13
830          },
831          "end": {
832            "line": 23,
833            "column": 2
834          }
835        }
836      },
837      "loc": {
838        "start": {
839          "line": 18,
840          "column": 1
841        },
842        "end": {
843          "line": 23,
844          "column": 2
845        }
846      }
847    },
848    {
849      "type": "ClassDeclaration",
850      "definition": {
851        "id": {
852          "type": "Identifier",
853          "name": "M",
854          "decorators": [],
855          "loc": {
856            "start": {
857              "line": 25,
858              "column": 7
859            },
860            "end": {
861              "line": 25,
862              "column": 8
863            }
864          }
865        },
866        "typeParameters": {
867          "type": "TSTypeParameterDeclaration",
868          "params": [
869            {
870              "type": "TSTypeParameter",
871              "name": {
872                "type": "Identifier",
873                "name": "K",
874                "decorators": [],
875                "loc": {
876                  "start": {
877                    "line": 25,
878                    "column": 9
879                  },
880                  "end": {
881                    "line": 25,
882                    "column": 10
883                  }
884                }
885              },
886              "loc": {
887                "start": {
888                  "line": 25,
889                  "column": 9
890                },
891                "end": {
892                  "line": 25,
893                  "column": 11
894                }
895              }
896            },
897            {
898              "type": "TSTypeParameter",
899              "name": {
900                "type": "Identifier",
901                "name": "V",
902                "decorators": [],
903                "loc": {
904                  "start": {
905                    "line": 25,
906                    "column": 12
907                  },
908                  "end": {
909                    "line": 25,
910                    "column": 13
911                  }
912                }
913              },
914              "loc": {
915                "start": {
916                  "line": 25,
917                  "column": 12
918                },
919                "end": {
920                  "line": 25,
921                  "column": 14
922                }
923              }
924            }
925          ],
926          "loc": {
927            "start": {
928              "line": 25,
929              "column": 8
930            },
931            "end": {
932              "line": 25,
933              "column": 14
934            }
935          }
936        },
937        "superClass": null,
938        "implements": [],
939        "body": [
940          {
941            "type": "MethodDefinition",
942            "key": {
943              "type": "Identifier",
944              "name": "constructor",
945              "decorators": [],
946              "loc": {
947                "start": {
948                  "line": 1,
949                  "column": 1
950                },
951                "end": {
952                  "line": 1,
953                  "column": 1
954                }
955              }
956            },
957            "kind": "constructor",
958            "accessibility": "public",
959            "static": false,
960            "optional": false,
961            "computed": false,
962            "value": {
963              "type": "FunctionExpression",
964              "function": {
965                "type": "ScriptFunction",
966                "id": {
967                  "type": "Identifier",
968                  "name": "constructor",
969                  "decorators": [],
970                  "loc": {
971                    "start": {
972                      "line": 1,
973                      "column": 1
974                    },
975                    "end": {
976                      "line": 1,
977                      "column": 1
978                    }
979                  }
980                },
981                "generator": false,
982                "async": false,
983                "expression": false,
984                "params": [
985                  {
986                    "type": "ETSParameterExpression",
987                    "name": {
988                      "type": "Identifier",
989                      "name": "iter",
990                      "typeAnnotation": {
991                        "type": "ETSUnionType",
992                        "types": [
993                          {
994                            "type": "ETSTypeReference",
995                            "part": {
996                              "type": "ETSTypeReferencePart",
997                              "name": {
998                                "type": "Identifier",
999                                "name": "ArrayLike",
1000                                "decorators": [],
1001                                "loc": {
1002                                  "start": {
1003                                    "line": 26,
1004                                    "column": 23
1005                                  },
1006                                  "end": {
1007                                    "line": 26,
1008                                    "column": 32
1009                                  }
1010                                }
1011                              },
1012                              "typeParams": {
1013                                "type": "TSTypeParameterInstantiation",
1014                                "params": [
1015                                  {
1016                                    "type": "ETSTuple",
1017                                    "types": [
1018                                      {
1019                                        "type": "ETSTypeReference",
1020                                        "part": {
1021                                          "type": "ETSTypeReferencePart",
1022                                          "name": {
1023                                            "type": "Identifier",
1024                                            "name": "K",
1025                                            "decorators": [],
1026                                            "loc": {
1027                                              "start": {
1028                                                "line": 26,
1029                                                "column": 34
1030                                              },
1031                                              "end": {
1032                                                "line": 26,
1033                                                "column": 35
1034                                              }
1035                                            }
1036                                          },
1037                                          "loc": {
1038                                            "start": {
1039                                              "line": 26,
1040                                              "column": 34
1041                                            },
1042                                            "end": {
1043                                              "line": 26,
1044                                              "column": 36
1045                                            }
1046                                          }
1047                                        },
1048                                        "loc": {
1049                                          "start": {
1050                                            "line": 26,
1051                                            "column": 34
1052                                          },
1053                                          "end": {
1054                                            "line": 26,
1055                                            "column": 36
1056                                          }
1057                                        }
1058                                      },
1059                                      {
1060                                        "type": "ETSTypeReference",
1061                                        "part": {
1062                                          "type": "ETSTypeReferencePart",
1063                                          "name": {
1064                                            "type": "Identifier",
1065                                            "name": "V",
1066                                            "decorators": [],
1067                                            "loc": {
1068                                              "start": {
1069                                                "line": 26,
1070                                                "column": 37
1071                                              },
1072                                              "end": {
1073                                                "line": 26,
1074                                                "column": 38
1075                                              }
1076                                            }
1077                                          },
1078                                          "loc": {
1079                                            "start": {
1080                                              "line": 26,
1081                                              "column": 37
1082                                            },
1083                                            "end": {
1084                                              "line": 26,
1085                                              "column": 39
1086                                            }
1087                                          }
1088                                        },
1089                                        "loc": {
1090                                          "start": {
1091                                            "line": 26,
1092                                            "column": 37
1093                                          },
1094                                          "end": {
1095                                            "line": 26,
1096                                            "column": 39
1097                                          }
1098                                        }
1099                                      }
1100                                    ],
1101                                    "spreadType": null,
1102                                    "loc": {
1103                                      "start": {
1104                                        "line": 26,
1105                                        "column": 33
1106                                      },
1107                                      "end": {
1108                                        "line": 26,
1109                                        "column": 40
1110                                      }
1111                                    }
1112                                  }
1113                                ],
1114                                "loc": {
1115                                  "start": {
1116                                    "line": 26,
1117                                    "column": 32
1118                                  },
1119                                  "end": {
1120                                    "line": 26,
1121                                    "column": 40
1122                                  }
1123                                }
1124                              },
1125                              "loc": {
1126                                "start": {
1127                                  "line": 26,
1128                                  "column": 23
1129                                },
1130                                "end": {
1131                                  "line": 26,
1132                                  "column": 42
1133                                }
1134                              }
1135                            },
1136                            "loc": {
1137                              "start": {
1138                                "line": 26,
1139                                "column": 23
1140                              },
1141                              "end": {
1142                                "line": 26,
1143                                "column": 42
1144                              }
1145                            }
1146                          },
1147                          {
1148                            "type": "ETSTypeReference",
1149                            "part": {
1150                              "type": "ETSTypeReferencePart",
1151                              "name": {
1152                                "type": "Identifier",
1153                                "name": "Iterable",
1154                                "decorators": [],
1155                                "loc": {
1156                                  "start": {
1157                                    "line": 26,
1158                                    "column": 43
1159                                  },
1160                                  "end": {
1161                                    "line": 26,
1162                                    "column": 51
1163                                  }
1164                                }
1165                              },
1166                              "typeParams": {
1167                                "type": "TSTypeParameterInstantiation",
1168                                "params": [
1169                                  {
1170                                    "type": "ETSTuple",
1171                                    "types": [
1172                                      {
1173                                        "type": "ETSTypeReference",
1174                                        "part": {
1175                                          "type": "ETSTypeReferencePart",
1176                                          "name": {
1177                                            "type": "Identifier",
1178                                            "name": "K",
1179                                            "decorators": [],
1180                                            "loc": {
1181                                              "start": {
1182                                                "line": 26,
1183                                                "column": 53
1184                                              },
1185                                              "end": {
1186                                                "line": 26,
1187                                                "column": 54
1188                                              }
1189                                            }
1190                                          },
1191                                          "loc": {
1192                                            "start": {
1193                                              "line": 26,
1194                                              "column": 53
1195                                            },
1196                                            "end": {
1197                                              "line": 26,
1198                                              "column": 55
1199                                            }
1200                                          }
1201                                        },
1202                                        "loc": {
1203                                          "start": {
1204                                            "line": 26,
1205                                            "column": 53
1206                                          },
1207                                          "end": {
1208                                            "line": 26,
1209                                            "column": 55
1210                                          }
1211                                        }
1212                                      },
1213                                      {
1214                                        "type": "ETSTypeReference",
1215                                        "part": {
1216                                          "type": "ETSTypeReferencePart",
1217                                          "name": {
1218                                            "type": "Identifier",
1219                                            "name": "V",
1220                                            "decorators": [],
1221                                            "loc": {
1222                                              "start": {
1223                                                "line": 26,
1224                                                "column": 56
1225                                              },
1226                                              "end": {
1227                                                "line": 26,
1228                                                "column": 57
1229                                              }
1230                                            }
1231                                          },
1232                                          "loc": {
1233                                            "start": {
1234                                              "line": 26,
1235                                              "column": 56
1236                                            },
1237                                            "end": {
1238                                              "line": 26,
1239                                              "column": 58
1240                                            }
1241                                          }
1242                                        },
1243                                        "loc": {
1244                                          "start": {
1245                                            "line": 26,
1246                                            "column": 56
1247                                          },
1248                                          "end": {
1249                                            "line": 26,
1250                                            "column": 58
1251                                          }
1252                                        }
1253                                      }
1254                                    ],
1255                                    "spreadType": null,
1256                                    "loc": {
1257                                      "start": {
1258                                        "line": 26,
1259                                        "column": 52
1260                                      },
1261                                      "end": {
1262                                        "line": 26,
1263                                        "column": 59
1264                                      }
1265                                    }
1266                                  }
1267                                ],
1268                                "loc": {
1269                                  "start": {
1270                                    "line": 26,
1271                                    "column": 51
1272                                  },
1273                                  "end": {
1274                                    "line": 26,
1275                                    "column": 59
1276                                  }
1277                                }
1278                              },
1279                              "loc": {
1280                                "start": {
1281                                  "line": 26,
1282                                  "column": 43
1283                                },
1284                                "end": {
1285                                  "line": 26,
1286                                  "column": 60
1287                                }
1288                              }
1289                            },
1290                            "loc": {
1291                              "start": {
1292                                "line": 26,
1293                                "column": 43
1294                              },
1295                              "end": {
1296                                "line": 26,
1297                                "column": 60
1298                              }
1299                            }
1300                          }
1301                        ],
1302                        "loc": {
1303                          "start": {
1304                            "line": 26,
1305                            "column": 23
1306                          },
1307                          "end": {
1308                            "line": 26,
1309                            "column": 60
1310                          }
1311                        }
1312                      },
1313                      "decorators": [],
1314                      "loc": {
1315                        "start": {
1316                          "line": 26,
1317                          "column": 17
1318                        },
1319                        "end": {
1320                          "line": 26,
1321                          "column": 60
1322                        }
1323                      }
1324                    },
1325                    "loc": {
1326                      "start": {
1327                        "line": 26,
1328                        "column": 17
1329                      },
1330                      "end": {
1331                        "line": 26,
1332                        "column": 60
1333                      }
1334                    }
1335                  }
1336                ],
1337                "body": {
1338                  "type": "BlockStatement",
1339                  "statements": [
1340                    {
1341                      "type": "ExpressionStatement",
1342                      "expression": {
1343                        "type": "CallExpression",
1344                        "callee": {
1345                          "type": "MemberExpression",
1346                          "object": {
1347                            "type": "Identifier",
1348                            "name": "Array",
1349                            "decorators": [],
1350                            "loc": {
1351                              "start": {
1352                                "line": 27,
1353                                "column": 9
1354                              },
1355                              "end": {
1356                                "line": 27,
1357                                "column": 14
1358                              }
1359                            }
1360                          },
1361                          "property": {
1362                            "type": "Identifier",
1363                            "name": "from",
1364                            "decorators": [],
1365                            "loc": {
1366                              "start": {
1367                                "line": 27,
1368                                "column": 15
1369                              },
1370                              "end": {
1371                                "line": 27,
1372                                "column": 19
1373                              }
1374                            }
1375                          },
1376                          "computed": false,
1377                          "optional": false,
1378                          "loc": {
1379                            "start": {
1380                              "line": 27,
1381                              "column": 9
1382                            },
1383                            "end": {
1384                              "line": 27,
1385                              "column": 19
1386                            }
1387                          }
1388                        },
1389                        "arguments": [
1390                          {
1391                            "type": "Identifier",
1392                            "name": "iter",
1393                            "decorators": [],
1394                            "loc": {
1395                              "start": {
1396                                "line": 27,
1397                                "column": 28
1398                              },
1399                              "end": {
1400                                "line": 27,
1401                                "column": 32
1402                              }
1403                            }
1404                          }
1405                        ],
1406                        "optional": false,
1407                        "typeParameters": {
1408                          "type": "TSTypeParameterInstantiation",
1409                          "params": [
1410                            {
1411                              "type": "ETSTuple",
1412                              "types": [
1413                                {
1414                                  "type": "ETSTypeReference",
1415                                  "part": {
1416                                    "type": "ETSTypeReferencePart",
1417                                    "name": {
1418                                      "type": "Identifier",
1419                                      "name": "K",
1420                                      "decorators": [],
1421                                      "loc": {
1422                                        "start": {
1423                                          "line": 27,
1424                                          "column": 21
1425                                        },
1426                                        "end": {
1427                                          "line": 27,
1428                                          "column": 22
1429                                        }
1430                                      }
1431                                    },
1432                                    "loc": {
1433                                      "start": {
1434                                        "line": 27,
1435                                        "column": 21
1436                                      },
1437                                      "end": {
1438                                        "line": 27,
1439                                        "column": 23
1440                                      }
1441                                    }
1442                                  },
1443                                  "loc": {
1444                                    "start": {
1445                                      "line": 27,
1446                                      "column": 21
1447                                    },
1448                                    "end": {
1449                                      "line": 27,
1450                                      "column": 23
1451                                    }
1452                                  }
1453                                },
1454                                {
1455                                  "type": "ETSTypeReference",
1456                                  "part": {
1457                                    "type": "ETSTypeReferencePart",
1458                                    "name": {
1459                                      "type": "Identifier",
1460                                      "name": "V",
1461                                      "decorators": [],
1462                                      "loc": {
1463                                        "start": {
1464                                          "line": 27,
1465                                          "column": 24
1466                                        },
1467                                        "end": {
1468                                          "line": 27,
1469                                          "column": 25
1470                                        }
1471                                      }
1472                                    },
1473                                    "loc": {
1474                                      "start": {
1475                                        "line": 27,
1476                                        "column": 24
1477                                      },
1478                                      "end": {
1479                                        "line": 27,
1480                                        "column": 26
1481                                      }
1482                                    }
1483                                  },
1484                                  "loc": {
1485                                    "start": {
1486                                      "line": 27,
1487                                      "column": 24
1488                                    },
1489                                    "end": {
1490                                      "line": 27,
1491                                      "column": 26
1492                                    }
1493                                  }
1494                                }
1495                              ],
1496                              "spreadType": null,
1497                              "loc": {
1498                                "start": {
1499                                  "line": 27,
1500                                  "column": 20
1501                                },
1502                                "end": {
1503                                  "line": 27,
1504                                  "column": 27
1505                                }
1506                              }
1507                            }
1508                          ],
1509                          "loc": {
1510                            "start": {
1511                              "line": 27,
1512                              "column": 19
1513                            },
1514                            "end": {
1515                              "line": 27,
1516                              "column": 27
1517                            }
1518                          }
1519                        },
1520                        "loc": {
1521                          "start": {
1522                            "line": 27,
1523                            "column": 9
1524                          },
1525                          "end": {
1526                            "line": 27,
1527                            "column": 33
1528                          }
1529                        }
1530                      },
1531                      "loc": {
1532                        "start": {
1533                          "line": 27,
1534                          "column": 9
1535                        },
1536                        "end": {
1537                          "line": 27,
1538                          "column": 34
1539                        }
1540                      }
1541                    }
1542                  ],
1543                  "loc": {
1544                    "start": {
1545                      "line": 26,
1546                      "column": 61
1547                    },
1548                    "end": {
1549                      "line": 28,
1550                      "column": 6
1551                    }
1552                  }
1553                },
1554                "loc": {
1555                  "start": {
1556                    "line": 26,
1557                    "column": 16
1558                  },
1559                  "end": {
1560                    "line": 28,
1561                    "column": 6
1562                  }
1563                }
1564              },
1565              "loc": {
1566                "start": {
1567                  "line": 26,
1568                  "column": 16
1569                },
1570                "end": {
1571                  "line": 28,
1572                  "column": 6
1573                }
1574              }
1575            },
1576            "overloads": [],
1577            "decorators": [],
1578            "loc": {
1579              "start": {
1580                "line": 26,
1581                "column": 5
1582              },
1583              "end": {
1584                "line": 28,
1585                "column": 6
1586              }
1587            }
1588          }
1589        ],
1590        "loc": {
1591          "start": {
1592            "line": 25,
1593            "column": 15
1594          },
1595          "end": {
1596            "line": 29,
1597            "column": 2
1598          }
1599        }
1600      },
1601      "loc": {
1602        "start": {
1603          "line": 25,
1604          "column": 1
1605        },
1606        "end": {
1607          "line": 29,
1608          "column": 2
1609        }
1610      }
1611    },
1612    {
1613      "type": "ClassDeclaration",
1614      "definition": {
1615        "id": {
1616          "type": "Identifier",
1617          "name": "C",
1618          "decorators": [],
1619          "loc": {
1620            "start": {
1621              "line": 31,
1622              "column": 7
1623            },
1624            "end": {
1625              "line": 31,
1626              "column": 8
1627            }
1628          }
1629        },
1630        "typeParameters": {
1631          "type": "TSTypeParameterDeclaration",
1632          "params": [
1633            {
1634              "type": "TSTypeParameter",
1635              "name": {
1636                "type": "Identifier",
1637                "name": "T",
1638                "decorators": [],
1639                "loc": {
1640                  "start": {
1641                    "line": 31,
1642                    "column": 9
1643                  },
1644                  "end": {
1645                    "line": 31,
1646                    "column": 10
1647                  }
1648                }
1649              },
1650              "loc": {
1651                "start": {
1652                  "line": 31,
1653                  "column": 9
1654                },
1655                "end": {
1656                  "line": 31,
1657                  "column": 11
1658                }
1659              }
1660            }
1661          ],
1662          "loc": {
1663            "start": {
1664              "line": 31,
1665              "column": 8
1666            },
1667            "end": {
1668              "line": 31,
1669              "column": 11
1670            }
1671          }
1672        },
1673        "superClass": null,
1674        "implements": [],
1675        "body": [
1676          {
1677            "type": "MethodDefinition",
1678            "key": {
1679              "type": "Identifier",
1680              "name": "constructor",
1681              "decorators": [],
1682              "loc": {
1683                "start": {
1684                  "line": 1,
1685                  "column": 1
1686                },
1687                "end": {
1688                  "line": 1,
1689                  "column": 1
1690                }
1691              }
1692            },
1693            "kind": "constructor",
1694            "static": false,
1695            "optional": false,
1696            "computed": false,
1697            "value": {
1698              "type": "FunctionExpression",
1699              "function": {
1700                "type": "ScriptFunction",
1701                "id": {
1702                  "type": "Identifier",
1703                  "name": "constructor",
1704                  "decorators": [],
1705                  "loc": {
1706                    "start": {
1707                      "line": 1,
1708                      "column": 1
1709                    },
1710                    "end": {
1711                      "line": 1,
1712                      "column": 1
1713                    }
1714                  }
1715                },
1716                "generator": false,
1717                "async": false,
1718                "expression": false,
1719                "params": [],
1720                "body": {
1721                  "type": "BlockStatement",
1722                  "statements": [],
1723                  "loc": {
1724                    "start": {
1725                      "line": 1,
1726                      "column": 1
1727                    },
1728                    "end": {
1729                      "line": 1,
1730                      "column": 1
1731                    }
1732                  }
1733                },
1734                "loc": {
1735                  "start": {
1736                    "line": 1,
1737                    "column": 1
1738                  },
1739                  "end": {
1740                    "line": 1,
1741                    "column": 1
1742                  }
1743                }
1744              },
1745              "loc": {
1746                "start": {
1747                  "line": 1,
1748                  "column": 1
1749                },
1750                "end": {
1751                  "line": 1,
1752                  "column": 1
1753                }
1754              }
1755            },
1756            "overloads": [],
1757            "decorators": [],
1758            "loc": {
1759              "start": {
1760                "line": 31,
1761                "column": 14
1762              },
1763              "end": {
1764                "line": 31,
1765                "column": 14
1766              }
1767            }
1768          }
1769        ],
1770        "loc": {
1771          "start": {
1772            "line": 31,
1773            "column": 12
1774          },
1775          "end": {
1776            "line": 31,
1777            "column": 14
1778          }
1779        }
1780      },
1781      "loc": {
1782        "start": {
1783          "line": 31,
1784          "column": 1
1785        },
1786        "end": {
1787          "line": 31,
1788          "column": 14
1789        }
1790      }
1791    },
1792    {
1793      "type": "ClassDeclaration",
1794      "definition": {
1795        "id": {
1796          "type": "Identifier",
1797          "name": "M1",
1798          "decorators": [],
1799          "loc": {
1800            "start": {
1801              "line": 37,
1802              "column": 7
1803            },
1804            "end": {
1805              "line": 37,
1806              "column": 9
1807            }
1808          }
1809        },
1810        "typeParameters": {
1811          "type": "TSTypeParameterDeclaration",
1812          "params": [
1813            {
1814              "type": "TSTypeParameter",
1815              "name": {
1816                "type": "Identifier",
1817                "name": "K",
1818                "decorators": [],
1819                "loc": {
1820                  "start": {
1821                    "line": 37,
1822                    "column": 10
1823                  },
1824                  "end": {
1825                    "line": 37,
1826                    "column": 11
1827                  }
1828                }
1829              },
1830              "loc": {
1831                "start": {
1832                  "line": 37,
1833                  "column": 10
1834                },
1835                "end": {
1836                  "line": 37,
1837                  "column": 12
1838                }
1839              }
1840            },
1841            {
1842              "type": "TSTypeParameter",
1843              "name": {
1844                "type": "Identifier",
1845                "name": "V",
1846                "decorators": [],
1847                "loc": {
1848                  "start": {
1849                    "line": 37,
1850                    "column": 13
1851                  },
1852                  "end": {
1853                    "line": 37,
1854                    "column": 14
1855                  }
1856                }
1857              },
1858              "loc": {
1859                "start": {
1860                  "line": 37,
1861                  "column": 13
1862                },
1863                "end": {
1864                  "line": 37,
1865                  "column": 15
1866                }
1867              }
1868            }
1869          ],
1870          "loc": {
1871            "start": {
1872              "line": 37,
1873              "column": 9
1874            },
1875            "end": {
1876              "line": 37,
1877              "column": 15
1878            }
1879          }
1880        },
1881        "superClass": null,
1882        "implements": [],
1883        "body": [
1884          {
1885            "type": "MethodDefinition",
1886            "key": {
1887              "type": "Identifier",
1888              "name": "it",
1889              "decorators": [],
1890              "loc": {
1891                "start": {
1892                  "line": 38,
1893                  "column": 5
1894                },
1895                "end": {
1896                  "line": 38,
1897                  "column": 7
1898                }
1899              }
1900            },
1901            "kind": "method",
1902            "accessibility": "public",
1903            "static": false,
1904            "optional": false,
1905            "computed": false,
1906            "value": {
1907              "type": "FunctionExpression",
1908              "function": {
1909                "type": "ScriptFunction",
1910                "id": {
1911                  "type": "Identifier",
1912                  "name": "it",
1913                  "decorators": [],
1914                  "loc": {
1915                    "start": {
1916                      "line": 38,
1917                      "column": 5
1918                    },
1919                    "end": {
1920                      "line": 38,
1921                      "column": 7
1922                    }
1923                  }
1924                },
1925                "generator": false,
1926                "async": false,
1927                "expression": false,
1928                "params": [],
1929                "returnType": {
1930                  "type": "ETSTypeReference",
1931                  "part": {
1932                    "type": "ETSTypeReferencePart",
1933                    "name": {
1934                      "type": "Identifier",
1935                      "name": "C",
1936                      "decorators": [],
1937                      "loc": {
1938                        "start": {
1939                          "line": 38,
1940                          "column": 11
1941                        },
1942                        "end": {
1943                          "line": 38,
1944                          "column": 12
1945                        }
1946                      }
1947                    },
1948                    "typeParams": {
1949                      "type": "TSTypeParameterInstantiation",
1950                      "params": [
1951                        {
1952                          "type": "ETSTuple",
1953                          "types": [
1954                            {
1955                              "type": "ETSTypeReference",
1956                              "part": {
1957                                "type": "ETSTypeReferencePart",
1958                                "name": {
1959                                  "type": "Identifier",
1960                                  "name": "K",
1961                                  "decorators": [],
1962                                  "loc": {
1963                                    "start": {
1964                                      "line": 38,
1965                                      "column": 14
1966                                    },
1967                                    "end": {
1968                                      "line": 38,
1969                                      "column": 15
1970                                    }
1971                                  }
1972                                },
1973                                "loc": {
1974                                  "start": {
1975                                    "line": 38,
1976                                    "column": 14
1977                                  },
1978                                  "end": {
1979                                    "line": 38,
1980                                    "column": 16
1981                                  }
1982                                }
1983                              },
1984                              "loc": {
1985                                "start": {
1986                                  "line": 38,
1987                                  "column": 14
1988                                },
1989                                "end": {
1990                                  "line": 38,
1991                                  "column": 16
1992                                }
1993                              }
1994                            },
1995                            {
1996                              "type": "ETSTypeReference",
1997                              "part": {
1998                                "type": "ETSTypeReferencePart",
1999                                "name": {
2000                                  "type": "Identifier",
2001                                  "name": "V",
2002                                  "decorators": [],
2003                                  "loc": {
2004                                    "start": {
2005                                      "line": 38,
2006                                      "column": 17
2007                                    },
2008                                    "end": {
2009                                      "line": 38,
2010                                      "column": 18
2011                                    }
2012                                  }
2013                                },
2014                                "loc": {
2015                                  "start": {
2016                                    "line": 38,
2017                                    "column": 17
2018                                  },
2019                                  "end": {
2020                                    "line": 38,
2021                                    "column": 19
2022                                  }
2023                                }
2024                              },
2025                              "loc": {
2026                                "start": {
2027                                  "line": 38,
2028                                  "column": 17
2029                                },
2030                                "end": {
2031                                  "line": 38,
2032                                  "column": 19
2033                                }
2034                              }
2035                            }
2036                          ],
2037                          "spreadType": null,
2038                          "loc": {
2039                            "start": {
2040                              "line": 38,
2041                              "column": 13
2042                            },
2043                            "end": {
2044                              "line": 38,
2045                              "column": 20
2046                            }
2047                          }
2048                        }
2049                      ],
2050                      "loc": {
2051                        "start": {
2052                          "line": 38,
2053                          "column": 12
2054                        },
2055                        "end": {
2056                          "line": 38,
2057                          "column": 20
2058                        }
2059                      }
2060                    },
2061                    "loc": {
2062                      "start": {
2063                        "line": 38,
2064                        "column": 11
2065                      },
2066                      "end": {
2067                        "line": 38,
2068                        "column": 22
2069                      }
2070                    }
2071                  },
2072                  "loc": {
2073                    "start": {
2074                      "line": 38,
2075                      "column": 11
2076                    },
2077                    "end": {
2078                      "line": 38,
2079                      "column": 22
2080                    }
2081                  }
2082                },
2083                "body": {
2084                  "type": "BlockStatement",
2085                  "statements": [
2086                    {
2087                      "type": "ReturnStatement",
2088                      "argument": {
2089                        "type": "CallExpression",
2090                        "callee": {
2091                          "type": "MemberExpression",
2092                          "object": {
2093                            "type": "ThisExpression",
2094                            "loc": {
2095                              "start": {
2096                                "line": 39,
2097                                "column": 16
2098                              },
2099                              "end": {
2100                                "line": 39,
2101                                "column": 20
2102                              }
2103                            }
2104                          },
2105                          "property": {
2106                            "type": "Identifier",
2107                            "name": "bar",
2108                            "decorators": [],
2109                            "loc": {
2110                              "start": {
2111                                "line": 39,
2112                                "column": 21
2113                              },
2114                              "end": {
2115                                "line": 39,
2116                                "column": 24
2117                              }
2118                            }
2119                          },
2120                          "computed": false,
2121                          "optional": false,
2122                          "loc": {
2123                            "start": {
2124                              "line": 39,
2125                              "column": 16
2126                            },
2127                            "end": {
2128                              "line": 39,
2129                              "column": 24
2130                            }
2131                          }
2132                        },
2133                        "arguments": [],
2134                        "optional": false,
2135                        "loc": {
2136                          "start": {
2137                            "line": 39,
2138                            "column": 16
2139                          },
2140                          "end": {
2141                            "line": 39,
2142                            "column": 26
2143                          }
2144                        }
2145                      },
2146                      "loc": {
2147                        "start": {
2148                          "line": 39,
2149                          "column": 9
2150                        },
2151                        "end": {
2152                          "line": 39,
2153                          "column": 27
2154                        }
2155                      }
2156                    }
2157                  ],
2158                  "loc": {
2159                    "start": {
2160                      "line": 38,
2161                      "column": 21
2162                    },
2163                    "end": {
2164                      "line": 40,
2165                      "column": 6
2166                    }
2167                  }
2168                },
2169                "loc": {
2170                  "start": {
2171                    "line": 38,
2172                    "column": 7
2173                  },
2174                  "end": {
2175                    "line": 40,
2176                    "column": 6
2177                  }
2178                }
2179              },
2180              "loc": {
2181                "start": {
2182                  "line": 38,
2183                  "column": 7
2184                },
2185                "end": {
2186                  "line": 40,
2187                  "column": 6
2188                }
2189              }
2190            },
2191            "overloads": [],
2192            "decorators": [],
2193            "loc": {
2194              "start": {
2195                "line": 38,
2196                "column": 5
2197              },
2198              "end": {
2199                "line": 40,
2200                "column": 6
2201              }
2202            }
2203          },
2204          {
2205            "type": "MethodDefinition",
2206            "key": {
2207              "type": "Identifier",
2208              "name": "bar",
2209              "decorators": [],
2210              "loc": {
2211                "start": {
2212                  "line": 41,
2213                  "column": 5
2214                },
2215                "end": {
2216                  "line": 41,
2217                  "column": 8
2218                }
2219              }
2220            },
2221            "kind": "method",
2222            "accessibility": "public",
2223            "static": false,
2224            "optional": false,
2225            "computed": false,
2226            "value": {
2227              "type": "FunctionExpression",
2228              "function": {
2229                "type": "ScriptFunction",
2230                "id": {
2231                  "type": "Identifier",
2232                  "name": "bar",
2233                  "decorators": [],
2234                  "loc": {
2235                    "start": {
2236                      "line": 41,
2237                      "column": 5
2238                    },
2239                    "end": {
2240                      "line": 41,
2241                      "column": 8
2242                    }
2243                  }
2244                },
2245                "generator": false,
2246                "async": false,
2247                "expression": false,
2248                "params": [],
2249                "returnType": {
2250                  "type": "ETSTypeReference",
2251                  "part": {
2252                    "type": "ETSTypeReferencePart",
2253                    "name": {
2254                      "type": "Identifier",
2255                      "name": "C",
2256                      "decorators": [],
2257                      "loc": {
2258                        "start": {
2259                          "line": 41,
2260                          "column": 12
2261                        },
2262                        "end": {
2263                          "line": 41,
2264                          "column": 13
2265                        }
2266                      }
2267                    },
2268                    "typeParams": {
2269                      "type": "TSTypeParameterInstantiation",
2270                      "params": [
2271                        {
2272                          "type": "ETSTuple",
2273                          "types": [
2274                            {
2275                              "type": "ETSTypeReference",
2276                              "part": {
2277                                "type": "ETSTypeReferencePart",
2278                                "name": {
2279                                  "type": "Identifier",
2280                                  "name": "K",
2281                                  "decorators": [],
2282                                  "loc": {
2283                                    "start": {
2284                                      "line": 41,
2285                                      "column": 15
2286                                    },
2287                                    "end": {
2288                                      "line": 41,
2289                                      "column": 16
2290                                    }
2291                                  }
2292                                },
2293                                "loc": {
2294                                  "start": {
2295                                    "line": 41,
2296                                    "column": 15
2297                                  },
2298                                  "end": {
2299                                    "line": 41,
2300                                    "column": 17
2301                                  }
2302                                }
2303                              },
2304                              "loc": {
2305                                "start": {
2306                                  "line": 41,
2307                                  "column": 15
2308                                },
2309                                "end": {
2310                                  "line": 41,
2311                                  "column": 17
2312                                }
2313                              }
2314                            },
2315                            {
2316                              "type": "ETSTypeReference",
2317                              "part": {
2318                                "type": "ETSTypeReferencePart",
2319                                "name": {
2320                                  "type": "Identifier",
2321                                  "name": "V",
2322                                  "decorators": [],
2323                                  "loc": {
2324                                    "start": {
2325                                      "line": 41,
2326                                      "column": 18
2327                                    },
2328                                    "end": {
2329                                      "line": 41,
2330                                      "column": 19
2331                                    }
2332                                  }
2333                                },
2334                                "loc": {
2335                                  "start": {
2336                                    "line": 41,
2337                                    "column": 18
2338                                  },
2339                                  "end": {
2340                                    "line": 41,
2341                                    "column": 20
2342                                  }
2343                                }
2344                              },
2345                              "loc": {
2346                                "start": {
2347                                  "line": 41,
2348                                  "column": 18
2349                                },
2350                                "end": {
2351                                  "line": 41,
2352                                  "column": 20
2353                                }
2354                              }
2355                            }
2356                          ],
2357                          "spreadType": null,
2358                          "loc": {
2359                            "start": {
2360                              "line": 41,
2361                              "column": 14
2362                            },
2363                            "end": {
2364                              "line": 41,
2365                              "column": 21
2366                            }
2367                          }
2368                        }
2369                      ],
2370                      "loc": {
2371                        "start": {
2372                          "line": 41,
2373                          "column": 13
2374                        },
2375                        "end": {
2376                          "line": 41,
2377                          "column": 21
2378                        }
2379                      }
2380                    },
2381                    "loc": {
2382                      "start": {
2383                        "line": 41,
2384                        "column": 12
2385                      },
2386                      "end": {
2387                        "line": 41,
2388                        "column": 23
2389                      }
2390                    }
2391                  },
2392                  "loc": {
2393                    "start": {
2394                      "line": 41,
2395                      "column": 12
2396                    },
2397                    "end": {
2398                      "line": 41,
2399                      "column": 23
2400                    }
2401                  }
2402                },
2403                "body": {
2404                  "type": "BlockStatement",
2405                  "statements": [
2406                    {
2407                      "type": "ReturnStatement",
2408                      "argument": {
2409                        "type": "CallExpression",
2410                        "callee": {
2411                          "type": "Identifier",
2412                          "name": "mp",
2413                          "decorators": [],
2414                          "loc": {
2415                            "start": {
2416                              "line": 42,
2417                              "column": 16
2418                            },
2419                            "end": {
2420                              "line": 42,
2421                              "column": 18
2422                            }
2423                          }
2424                        },
2425                        "arguments": [],
2426                        "optional": false,
2427                        "typeParameters": {
2428                          "type": "TSTypeParameterInstantiation",
2429                          "params": [
2430                            {
2431                              "type": "ETSTuple",
2432                              "types": [
2433                                {
2434                                  "type": "ETSTypeReference",
2435                                  "part": {
2436                                    "type": "ETSTypeReferencePart",
2437                                    "name": {
2438                                      "type": "Identifier",
2439                                      "name": "K",
2440                                      "decorators": [],
2441                                      "loc": {
2442                                        "start": {
2443                                          "line": 42,
2444                                          "column": 20
2445                                        },
2446                                        "end": {
2447                                          "line": 42,
2448                                          "column": 21
2449                                        }
2450                                      }
2451                                    },
2452                                    "loc": {
2453                                      "start": {
2454                                        "line": 42,
2455                                        "column": 20
2456                                      },
2457                                      "end": {
2458                                        "line": 42,
2459                                        "column": 22
2460                                      }
2461                                    }
2462                                  },
2463                                  "loc": {
2464                                    "start": {
2465                                      "line": 42,
2466                                      "column": 20
2467                                    },
2468                                    "end": {
2469                                      "line": 42,
2470                                      "column": 22
2471                                    }
2472                                  }
2473                                },
2474                                {
2475                                  "type": "ETSTypeReference",
2476                                  "part": {
2477                                    "type": "ETSTypeReferencePart",
2478                                    "name": {
2479                                      "type": "Identifier",
2480                                      "name": "V",
2481                                      "decorators": [],
2482                                      "loc": {
2483                                        "start": {
2484                                          "line": 42,
2485                                          "column": 23
2486                                        },
2487                                        "end": {
2488                                          "line": 42,
2489                                          "column": 24
2490                                        }
2491                                      }
2492                                    },
2493                                    "loc": {
2494                                      "start": {
2495                                        "line": 42,
2496                                        "column": 23
2497                                      },
2498                                      "end": {
2499                                        "line": 42,
2500                                        "column": 25
2501                                      }
2502                                    }
2503                                  },
2504                                  "loc": {
2505                                    "start": {
2506                                      "line": 42,
2507                                      "column": 23
2508                                    },
2509                                    "end": {
2510                                      "line": 42,
2511                                      "column": 25
2512                                    }
2513                                  }
2514                                }
2515                              ],
2516                              "spreadType": null,
2517                              "loc": {
2518                                "start": {
2519                                  "line": 42,
2520                                  "column": 19
2521                                },
2522                                "end": {
2523                                  "line": 42,
2524                                  "column": 26
2525                                }
2526                              }
2527                            }
2528                          ],
2529                          "loc": {
2530                            "start": {
2531                              "line": 42,
2532                              "column": 18
2533                            },
2534                            "end": {
2535                              "line": 42,
2536                              "column": 26
2537                            }
2538                          }
2539                        },
2540                        "loc": {
2541                          "start": {
2542                            "line": 42,
2543                            "column": 16
2544                          },
2545                          "end": {
2546                            "line": 42,
2547                            "column": 28
2548                          }
2549                        }
2550                      },
2551                      "loc": {
2552                        "start": {
2553                          "line": 42,
2554                          "column": 9
2555                        },
2556                        "end": {
2557                          "line": 42,
2558                          "column": 29
2559                        }
2560                      }
2561                    }
2562                  ],
2563                  "loc": {
2564                    "start": {
2565                      "line": 41,
2566                      "column": 22
2567                    },
2568                    "end": {
2569                      "line": 43,
2570                      "column": 6
2571                    }
2572                  }
2573                },
2574                "loc": {
2575                  "start": {
2576                    "line": 41,
2577                    "column": 8
2578                  },
2579                  "end": {
2580                    "line": 43,
2581                    "column": 6
2582                  }
2583                }
2584              },
2585              "loc": {
2586                "start": {
2587                  "line": 41,
2588                  "column": 8
2589                },
2590                "end": {
2591                  "line": 43,
2592                  "column": 6
2593                }
2594              }
2595            },
2596            "overloads": [],
2597            "decorators": [],
2598            "loc": {
2599              "start": {
2600                "line": 41,
2601                "column": 5
2602              },
2603              "end": {
2604                "line": 43,
2605                "column": 6
2606              }
2607            }
2608          },
2609          {
2610            "type": "MethodDefinition",
2611            "key": {
2612              "type": "Identifier",
2613              "name": "constructor",
2614              "decorators": [],
2615              "loc": {
2616                "start": {
2617                  "line": 1,
2618                  "column": 1
2619                },
2620                "end": {
2621                  "line": 1,
2622                  "column": 1
2623                }
2624              }
2625            },
2626            "kind": "constructor",
2627            "static": false,
2628            "optional": false,
2629            "computed": false,
2630            "value": {
2631              "type": "FunctionExpression",
2632              "function": {
2633                "type": "ScriptFunction",
2634                "id": {
2635                  "type": "Identifier",
2636                  "name": "constructor",
2637                  "decorators": [],
2638                  "loc": {
2639                    "start": {
2640                      "line": 1,
2641                      "column": 1
2642                    },
2643                    "end": {
2644                      "line": 1,
2645                      "column": 1
2646                    }
2647                  }
2648                },
2649                "generator": false,
2650                "async": false,
2651                "expression": false,
2652                "params": [],
2653                "body": {
2654                  "type": "BlockStatement",
2655                  "statements": [],
2656                  "loc": {
2657                    "start": {
2658                      "line": 1,
2659                      "column": 1
2660                    },
2661                    "end": {
2662                      "line": 1,
2663                      "column": 1
2664                    }
2665                  }
2666                },
2667                "loc": {
2668                  "start": {
2669                    "line": 1,
2670                    "column": 1
2671                  },
2672                  "end": {
2673                    "line": 1,
2674                    "column": 1
2675                  }
2676                }
2677              },
2678              "loc": {
2679                "start": {
2680                  "line": 1,
2681                  "column": 1
2682                },
2683                "end": {
2684                  "line": 1,
2685                  "column": 1
2686                }
2687              }
2688            },
2689            "overloads": [],
2690            "decorators": [],
2691            "loc": {
2692              "start": {
2693                "line": 44,
2694                "column": 2
2695              },
2696              "end": {
2697                "line": 44,
2698                "column": 2
2699              }
2700            }
2701          }
2702        ],
2703        "loc": {
2704          "start": {
2705            "line": 37,
2706            "column": 16
2707          },
2708          "end": {
2709            "line": 44,
2710            "column": 2
2711          }
2712        }
2713      },
2714      "loc": {
2715        "start": {
2716          "line": 37,
2717          "column": 1
2718        },
2719        "end": {
2720          "line": 44,
2721          "column": 2
2722        }
2723      }
2724    },
2725    {
2726      "type": "ClassDeclaration",
2727      "definition": {
2728        "id": {
2729          "type": "Identifier",
2730          "name": "ETSGLOBAL",
2731          "decorators": [],
2732          "loc": {
2733            "start": {
2734              "line": 1,
2735              "column": 1
2736            },
2737            "end": {
2738              "line": 1,
2739              "column": 1
2740            }
2741          }
2742        },
2743        "superClass": null,
2744        "implements": [],
2745        "body": [
2746          {
2747            "type": "MethodDefinition",
2748            "key": {
2749              "type": "Identifier",
2750              "name": "_$init$_",
2751              "decorators": [],
2752              "loc": {
2753                "start": {
2754                  "line": 1,
2755                  "column": 1
2756                },
2757                "end": {
2758                  "line": 1,
2759                  "column": 1
2760                }
2761              }
2762            },
2763            "kind": "method",
2764            "accessibility": "public",
2765            "static": true,
2766            "optional": false,
2767            "computed": false,
2768            "value": {
2769              "type": "FunctionExpression",
2770              "function": {
2771                "type": "ScriptFunction",
2772                "id": {
2773                  "type": "Identifier",
2774                  "name": "_$init$_",
2775                  "decorators": [],
2776                  "loc": {
2777                    "start": {
2778                      "line": 1,
2779                      "column": 1
2780                    },
2781                    "end": {
2782                      "line": 1,
2783                      "column": 1
2784                    }
2785                  }
2786                },
2787                "generator": false,
2788                "async": false,
2789                "expression": false,
2790                "params": [],
2791                "body": {
2792                  "type": "BlockStatement",
2793                  "statements": [],
2794                  "loc": {
2795                    "start": {
2796                      "line": 1,
2797                      "column": 1
2798                    },
2799                    "end": {
2800                      "line": 1,
2801                      "column": 1
2802                    }
2803                  }
2804                },
2805                "loc": {
2806                  "start": {
2807                    "line": 1,
2808                    "column": 1
2809                  },
2810                  "end": {
2811                    "line": 1,
2812                    "column": 1
2813                  }
2814                }
2815              },
2816              "loc": {
2817                "start": {
2818                  "line": 1,
2819                  "column": 1
2820                },
2821                "end": {
2822                  "line": 1,
2823                  "column": 1
2824                }
2825              }
2826            },
2827            "overloads": [],
2828            "decorators": [],
2829            "loc": {
2830              "start": {
2831                "line": 1,
2832                "column": 1
2833              },
2834              "end": {
2835                "line": 1,
2836                "column": 1
2837              }
2838            }
2839          },
2840          {
2841            "type": "MethodDefinition",
2842            "key": {
2843              "type": "Identifier",
2844              "name": "mp",
2845              "decorators": [],
2846              "loc": {
2847                "start": {
2848                  "line": 33,
2849                  "column": 10
2850                },
2851                "end": {
2852                  "line": 33,
2853                  "column": 12
2854                }
2855              }
2856            },
2857            "kind": "method",
2858            "accessibility": "public",
2859            "static": true,
2860            "optional": false,
2861            "computed": false,
2862            "value": {
2863              "type": "FunctionExpression",
2864              "function": {
2865                "type": "ScriptFunction",
2866                "id": {
2867                  "type": "Identifier",
2868                  "name": "mp",
2869                  "decorators": [],
2870                  "loc": {
2871                    "start": {
2872                      "line": 33,
2873                      "column": 10
2874                    },
2875                    "end": {
2876                      "line": 33,
2877                      "column": 12
2878                    }
2879                  }
2880                },
2881                "generator": false,
2882                "async": false,
2883                "expression": false,
2884                "params": [],
2885                "returnType": {
2886                  "type": "ETSTypeReference",
2887                  "part": {
2888                    "type": "ETSTypeReferencePart",
2889                    "name": {
2890                      "type": "Identifier",
2891                      "name": "C",
2892                      "decorators": [],
2893                      "loc": {
2894                        "start": {
2895                          "line": 33,
2896                          "column": 19
2897                        },
2898                        "end": {
2899                          "line": 33,
2900                          "column": 20
2901                        }
2902                      }
2903                    },
2904                    "typeParams": {
2905                      "type": "TSTypeParameterInstantiation",
2906                      "params": [
2907                        {
2908                          "type": "ETSTypeReference",
2909                          "part": {
2910                            "type": "ETSTypeReferencePart",
2911                            "name": {
2912                              "type": "Identifier",
2913                              "name": "T",
2914                              "decorators": [],
2915                              "loc": {
2916                                "start": {
2917                                  "line": 33,
2918                                  "column": 21
2919                                },
2920                                "end": {
2921                                  "line": 33,
2922                                  "column": 22
2923                                }
2924                              }
2925                            },
2926                            "loc": {
2927                              "start": {
2928                                "line": 33,
2929                                "column": 21
2930                              },
2931                              "end": {
2932                                "line": 33,
2933                                "column": 23
2934                              }
2935                            }
2936                          },
2937                          "loc": {
2938                            "start": {
2939                              "line": 33,
2940                              "column": 21
2941                            },
2942                            "end": {
2943                              "line": 33,
2944                              "column": 23
2945                            }
2946                          }
2947                        }
2948                      ],
2949                      "loc": {
2950                        "start": {
2951                          "line": 33,
2952                          "column": 20
2953                        },
2954                        "end": {
2955                          "line": 33,
2956                          "column": 23
2957                        }
2958                      }
2959                    },
2960                    "loc": {
2961                      "start": {
2962                        "line": 33,
2963                        "column": 19
2964                      },
2965                      "end": {
2966                        "line": 33,
2967                        "column": 25
2968                      }
2969                    }
2970                  },
2971                  "loc": {
2972                    "start": {
2973                      "line": 33,
2974                      "column": 19
2975                    },
2976                    "end": {
2977                      "line": 33,
2978                      "column": 25
2979                    }
2980                  }
2981                },
2982                "typeParameters": {
2983                  "type": "TSTypeParameterDeclaration",
2984                  "params": [
2985                    {
2986                      "type": "TSTypeParameter",
2987                      "name": {
2988                        "type": "Identifier",
2989                        "name": "T",
2990                        "decorators": [],
2991                        "loc": {
2992                          "start": {
2993                            "line": 33,
2994                            "column": 13
2995                          },
2996                          "end": {
2997                            "line": 33,
2998                            "column": 14
2999                          }
3000                        }
3001                      },
3002                      "loc": {
3003                        "start": {
3004                          "line": 33,
3005                          "column": 13
3006                        },
3007                        "end": {
3008                          "line": 33,
3009                          "column": 15
3010                        }
3011                      }
3012                    }
3013                  ],
3014                  "loc": {
3015                    "start": {
3016                      "line": 33,
3017                      "column": 12
3018                    },
3019                    "end": {
3020                      "line": 33,
3021                      "column": 15
3022                    }
3023                  }
3024                },
3025                "body": {
3026                  "type": "BlockStatement",
3027                  "statements": [
3028                    {
3029                      "type": "ReturnStatement",
3030                      "argument": {
3031                        "type": "ETSNewClassInstanceExpression",
3032                        "typeReference": {
3033                          "type": "ETSTypeReference",
3034                          "part": {
3035                            "type": "ETSTypeReferencePart",
3036                            "name": {
3037                              "type": "Identifier",
3038                              "name": "C",
3039                              "decorators": [],
3040                              "loc": {
3041                                "start": {
3042                                  "line": 34,
3043                                  "column": 16
3044                                },
3045                                "end": {
3046                                  "line": 34,
3047                                  "column": 17
3048                                }
3049                              }
3050                            },
3051                            "typeParams": {
3052                              "type": "TSTypeParameterInstantiation",
3053                              "params": [
3054                                {
3055                                  "type": "ETSTypeReference",
3056                                  "part": {
3057                                    "type": "ETSTypeReferencePart",
3058                                    "name": {
3059                                      "type": "Identifier",
3060                                      "name": "T",
3061                                      "decorators": [],
3062                                      "loc": {
3063                                        "start": {
3064                                          "line": 34,
3065                                          "column": 18
3066                                        },
3067                                        "end": {
3068                                          "line": 34,
3069                                          "column": 19
3070                                        }
3071                                      }
3072                                    },
3073                                    "loc": {
3074                                      "start": {
3075                                        "line": 34,
3076                                        "column": 18
3077                                      },
3078                                      "end": {
3079                                        "line": 34,
3080                                        "column": 20
3081                                      }
3082                                    }
3083                                  },
3084                                  "loc": {
3085                                    "start": {
3086                                      "line": 34,
3087                                      "column": 18
3088                                    },
3089                                    "end": {
3090                                      "line": 34,
3091                                      "column": 20
3092                                    }
3093                                  }
3094                                }
3095                              ],
3096                              "loc": {
3097                                "start": {
3098                                  "line": 34,
3099                                  "column": 17
3100                                },
3101                                "end": {
3102                                  "line": 34,
3103                                  "column": 20
3104                                }
3105                              }
3106                            },
3107                            "loc": {
3108                              "start": {
3109                                "line": 34,
3110                                "column": 16
3111                              },
3112                              "end": {
3113                                "line": 34,
3114                                "column": 21
3115                              }
3116                            }
3117                          },
3118                          "loc": {
3119                            "start": {
3120                              "line": 34,
3121                              "column": 16
3122                            },
3123                            "end": {
3124                              "line": 34,
3125                              "column": 21
3126                            }
3127                          }
3128                        },
3129                        "arguments": [],
3130                        "loc": {
3131                          "start": {
3132                            "line": 34,
3133                            "column": 12
3134                          },
3135                          "end": {
3136                            "line": 34,
3137                            "column": 23
3138                          }
3139                        }
3140                      },
3141                      "loc": {
3142                        "start": {
3143                          "line": 34,
3144                          "column": 5
3145                        },
3146                        "end": {
3147                          "line": 34,
3148                          "column": 23
3149                        }
3150                      }
3151                    }
3152                  ],
3153                  "loc": {
3154                    "start": {
3155                      "line": 33,
3156                      "column": 24
3157                    },
3158                    "end": {
3159                      "line": 35,
3160                      "column": 2
3161                    }
3162                  }
3163                },
3164                "loc": {
3165                  "start": {
3166                    "line": 33,
3167                    "column": 12
3168                  },
3169                  "end": {
3170                    "line": 35,
3171                    "column": 2
3172                  }
3173                }
3174              },
3175              "loc": {
3176                "start": {
3177                  "line": 33,
3178                  "column": 12
3179                },
3180                "end": {
3181                  "line": 35,
3182                  "column": 2
3183                }
3184              }
3185            },
3186            "overloads": [],
3187            "decorators": [],
3188            "loc": {
3189              "start": {
3190                "line": 33,
3191                "column": 1
3192              },
3193              "end": {
3194                "line": 35,
3195                "column": 2
3196              }
3197            }
3198          }
3199        ],
3200        "loc": {
3201          "start": {
3202            "line": 1,
3203            "column": 1
3204          },
3205          "end": {
3206            "line": 1,
3207            "column": 1
3208          }
3209        }
3210      },
3211      "loc": {
3212        "start": {
3213          "line": 1,
3214          "column": 1
3215        },
3216        "end": {
3217          "line": 1,
3218          "column": 1
3219        }
3220      }
3221    }
3222  ],
3223  "loc": {
3224    "start": {
3225      "line": 1,
3226      "column": 1
3227    },
3228    "end": {
3229      "line": 45,
3230      "column": 1
3231    }
3232  }
3233}
3234