1{
2  "type": "Program",
3  "statements": [
4    {
5      "type": "ClassDeclaration",
6      "definition": {
7        "id": {
8          "type": "Identifier",
9          "name": "Tup",
10          "decorators": [],
11          "loc": {
12            "start": {
13              "line": 18,
14              "column": 7
15            },
16            "end": {
17              "line": 18,
18              "column": 10
19            }
20          }
21        },
22        "typeParameters": {
23          "type": "TSTypeParameterDeclaration",
24          "params": [
25            {
26              "type": "TSTypeParameter",
27              "name": {
28                "type": "Identifier",
29                "name": "A",
30                "decorators": [],
31                "loc": {
32                  "start": {
33                    "line": 18,
34                    "column": 11
35                  },
36                  "end": {
37                    "line": 18,
38                    "column": 12
39                  }
40                }
41              },
42              "loc": {
43                "start": {
44                  "line": 18,
45                  "column": 11
46                },
47                "end": {
48                  "line": 18,
49                  "column": 13
50                }
51              }
52            },
53            {
54              "type": "TSTypeParameter",
55              "name": {
56                "type": "Identifier",
57                "name": "B",
58                "decorators": [],
59                "loc": {
60                  "start": {
61                    "line": 18,
62                    "column": 14
63                  },
64                  "end": {
65                    "line": 18,
66                    "column": 15
67                  }
68                }
69              },
70              "loc": {
71                "start": {
72                  "line": 18,
73                  "column": 14
74                },
75                "end": {
76                  "line": 18,
77                  "column": 16
78                }
79              }
80            }
81          ],
82          "loc": {
83            "start": {
84              "line": 18,
85              "column": 10
86            },
87            "end": {
88              "line": 18,
89              "column": 16
90            }
91          }
92        },
93        "superClass": null,
94        "implements": [],
95        "body": [
96          {
97            "type": "MethodDefinition",
98            "key": {
99              "type": "Identifier",
100              "name": "constructor",
101              "decorators": [],
102              "loc": {
103                "start": {
104                  "line": 1,
105                  "column": 1
106                },
107                "end": {
108                  "line": 1,
109                  "column": 1
110                }
111              }
112            },
113            "kind": "constructor",
114            "static": false,
115            "optional": false,
116            "computed": false,
117            "value": {
118              "type": "FunctionExpression",
119              "function": {
120                "type": "ScriptFunction",
121                "id": {
122                  "type": "Identifier",
123                  "name": "constructor",
124                  "decorators": [],
125                  "loc": {
126                    "start": {
127                      "line": 1,
128                      "column": 1
129                    },
130                    "end": {
131                      "line": 1,
132                      "column": 1
133                    }
134                  }
135                },
136                "generator": false,
137                "async": false,
138                "expression": false,
139                "params": [],
140                "body": {
141                  "type": "BlockStatement",
142                  "statements": [],
143                  "loc": {
144                    "start": {
145                      "line": 1,
146                      "column": 1
147                    },
148                    "end": {
149                      "line": 1,
150                      "column": 1
151                    }
152                  }
153                },
154                "loc": {
155                  "start": {
156                    "line": 1,
157                    "column": 1
158                  },
159                  "end": {
160                    "line": 1,
161                    "column": 1
162                  }
163                }
164              },
165              "loc": {
166                "start": {
167                  "line": 1,
168                  "column": 1
169                },
170                "end": {
171                  "line": 1,
172                  "column": 1
173                }
174              }
175            },
176            "overloads": [],
177            "decorators": [],
178            "loc": {
179              "start": {
180                "line": 18,
181                "column": 19
182              },
183              "end": {
184                "line": 18,
185                "column": 19
186              }
187            }
188          }
189        ],
190        "loc": {
191          "start": {
192            "line": 18,
193            "column": 17
194          },
195          "end": {
196            "line": 18,
197            "column": 19
198          }
199        }
200      },
201      "loc": {
202        "start": {
203          "line": 18,
204          "column": 1
205        },
206        "end": {
207          "line": 18,
208          "column": 19
209        }
210      }
211    },
212    {
213      "type": "ClassDeclaration",
214      "definition": {
215        "id": {
216          "type": "Identifier",
217          "name": "Tup2",
218          "decorators": [],
219          "loc": {
220            "start": {
221              "line": 19,
222              "column": 7
223            },
224            "end": {
225              "line": 19,
226              "column": 11
227            }
228          }
229        },
230        "typeParameters": {
231          "type": "TSTypeParameterDeclaration",
232          "params": [
233            {
234              "type": "TSTypeParameter",
235              "name": {
236                "type": "Identifier",
237                "name": "A",
238                "decorators": [],
239                "loc": {
240                  "start": {
241                    "line": 19,
242                    "column": 12
243                  },
244                  "end": {
245                    "line": 19,
246                    "column": 13
247                  }
248                }
249              },
250              "loc": {
251                "start": {
252                  "line": 19,
253                  "column": 12
254                },
255                "end": {
256                  "line": 19,
257                  "column": 14
258                }
259              }
260            }
261          ],
262          "loc": {
263            "start": {
264              "line": 19,
265              "column": 11
266            },
267            "end": {
268              "line": 19,
269              "column": 14
270            }
271          }
272        },
273        "superClass": null,
274        "implements": [],
275        "body": [
276          {
277            "type": "MethodDefinition",
278            "key": {
279              "type": "Identifier",
280              "name": "constructor",
281              "decorators": [],
282              "loc": {
283                "start": {
284                  "line": 1,
285                  "column": 1
286                },
287                "end": {
288                  "line": 1,
289                  "column": 1
290                }
291              }
292            },
293            "kind": "constructor",
294            "static": false,
295            "optional": false,
296            "computed": false,
297            "value": {
298              "type": "FunctionExpression",
299              "function": {
300                "type": "ScriptFunction",
301                "id": {
302                  "type": "Identifier",
303                  "name": "constructor",
304                  "decorators": [],
305                  "loc": {
306                    "start": {
307                      "line": 1,
308                      "column": 1
309                    },
310                    "end": {
311                      "line": 1,
312                      "column": 1
313                    }
314                  }
315                },
316                "generator": false,
317                "async": false,
318                "expression": false,
319                "params": [],
320                "body": {
321                  "type": "BlockStatement",
322                  "statements": [],
323                  "loc": {
324                    "start": {
325                      "line": 1,
326                      "column": 1
327                    },
328                    "end": {
329                      "line": 1,
330                      "column": 1
331                    }
332                  }
333                },
334                "loc": {
335                  "start": {
336                    "line": 1,
337                    "column": 1
338                  },
339                  "end": {
340                    "line": 1,
341                    "column": 1
342                  }
343                }
344              },
345              "loc": {
346                "start": {
347                  "line": 1,
348                  "column": 1
349                },
350                "end": {
351                  "line": 1,
352                  "column": 1
353                }
354              }
355            },
356            "overloads": [],
357            "decorators": [],
358            "loc": {
359              "start": {
360                "line": 19,
361                "column": 17
362              },
363              "end": {
364                "line": 19,
365                "column": 17
366              }
367            }
368          }
369        ],
370        "loc": {
371          "start": {
372            "line": 19,
373            "column": 15
374          },
375          "end": {
376            "line": 19,
377            "column": 17
378          }
379        }
380      },
381      "loc": {
382        "start": {
383          "line": 19,
384          "column": 1
385        },
386        "end": {
387          "line": 19,
388          "column": 17
389        }
390      }
391    },
392    {
393      "type": "ClassDeclaration",
394      "definition": {
395        "id": {
396          "type": "Identifier",
397          "name": "ETSGLOBAL",
398          "decorators": [],
399          "loc": {
400            "start": {
401              "line": 1,
402              "column": 1
403            },
404            "end": {
405              "line": 1,
406              "column": 1
407            }
408          }
409        },
410        "superClass": null,
411        "implements": [],
412        "body": [
413          {
414            "type": "MethodDefinition",
415            "key": {
416              "type": "Identifier",
417              "name": "_$init$_",
418              "decorators": [],
419              "loc": {
420                "start": {
421                  "line": 1,
422                  "column": 1
423                },
424                "end": {
425                  "line": 1,
426                  "column": 1
427                }
428              }
429            },
430            "kind": "method",
431            "accessibility": "public",
432            "static": true,
433            "optional": false,
434            "computed": false,
435            "value": {
436              "type": "FunctionExpression",
437              "function": {
438                "type": "ScriptFunction",
439                "id": {
440                  "type": "Identifier",
441                  "name": "_$init$_",
442                  "decorators": [],
443                  "loc": {
444                    "start": {
445                      "line": 1,
446                      "column": 1
447                    },
448                    "end": {
449                      "line": 1,
450                      "column": 1
451                    }
452                  }
453                },
454                "generator": false,
455                "async": false,
456                "expression": false,
457                "params": [],
458                "body": {
459                  "type": "BlockStatement",
460                  "statements": [],
461                  "loc": {
462                    "start": {
463                      "line": 1,
464                      "column": 1
465                    },
466                    "end": {
467                      "line": 1,
468                      "column": 1
469                    }
470                  }
471                },
472                "loc": {
473                  "start": {
474                    "line": 1,
475                    "column": 1
476                  },
477                  "end": {
478                    "line": 1,
479                    "column": 1
480                  }
481                }
482              },
483              "loc": {
484                "start": {
485                  "line": 1,
486                  "column": 1
487                },
488                "end": {
489                  "line": 1,
490                  "column": 1
491                }
492              }
493            },
494            "overloads": [],
495            "decorators": [],
496            "loc": {
497              "start": {
498                "line": 1,
499                "column": 1
500              },
501              "end": {
502                "line": 1,
503                "column": 1
504              }
505            }
506          },
507          {
508            "type": "MethodDefinition",
509            "key": {
510              "type": "Identifier",
511              "name": "foo",
512              "decorators": [],
513              "loc": {
514                "start": {
515                  "line": 16,
516                  "column": 10
517                },
518                "end": {
519                  "line": 16,
520                  "column": 13
521                }
522              }
523            },
524            "kind": "method",
525            "accessibility": "public",
526            "static": true,
527            "optional": false,
528            "computed": false,
529            "value": {
530              "type": "FunctionExpression",
531              "function": {
532                "type": "ScriptFunction",
533                "id": {
534                  "type": "Identifier",
535                  "name": "foo",
536                  "decorators": [],
537                  "loc": {
538                    "start": {
539                      "line": 16,
540                      "column": 10
541                    },
542                    "end": {
543                      "line": 16,
544                      "column": 13
545                    }
546                  }
547                },
548                "generator": false,
549                "async": false,
550                "expression": false,
551                "params": [
552                  {
553                    "type": "ETSParameterExpression",
554                    "name": {
555                      "type": "Identifier",
556                      "name": "x",
557                      "typeAnnotation": {
558                        "type": "ETSFunctionType",
559                        "params": [],
560                        "returnType": {
561                          "type": "ETSTypeReference",
562                          "part": {
563                            "type": "ETSTypeReferencePart",
564                            "name": {
565                              "type": "Identifier",
566                              "name": "T",
567                              "decorators": [],
568                              "loc": {
569                                "start": {
570                                  "line": 16,
571                                  "column": 26
572                                },
573                                "end": {
574                                  "line": 16,
575                                  "column": 27
576                                }
577                              }
578                            },
579                            "loc": {
580                              "start": {
581                                "line": 16,
582                                "column": 26
583                              },
584                              "end": {
585                                "line": 16,
586                                "column": 28
587                              }
588                            }
589                          },
590                          "loc": {
591                            "start": {
592                              "line": 16,
593                              "column": 26
594                            },
595                            "end": {
596                              "line": 16,
597                              "column": 28
598                            }
599                          }
600                        },
601                        "loc": {
602                          "start": {
603                            "line": 16,
604                            "column": 20
605                          },
606                          "end": {
607                            "line": 16,
608                            "column": 28
609                          }
610                        }
611                      },
612                      "decorators": [],
613                      "loc": {
614                        "start": {
615                          "line": 16,
616                          "column": 17
617                        },
618                        "end": {
619                          "line": 16,
620                          "column": 28
621                        }
622                      }
623                    },
624                    "loc": {
625                      "start": {
626                        "line": 16,
627                        "column": 17
628                      },
629                      "end": {
630                        "line": 16,
631                        "column": 28
632                      }
633                    }
634                  }
635                ],
636                "returnType": {
637                  "type": "ETSPrimitiveType",
638                  "loc": {
639                    "start": {
640                      "line": 16,
641                      "column": 30
642                    },
643                    "end": {
644                      "line": 16,
645                      "column": 34
646                    }
647                  }
648                },
649                "typeParameters": {
650                  "type": "TSTypeParameterDeclaration",
651                  "params": [
652                    {
653                      "type": "TSTypeParameter",
654                      "name": {
655                        "type": "Identifier",
656                        "name": "T",
657                        "decorators": [],
658                        "loc": {
659                          "start": {
660                            "line": 16,
661                            "column": 14
662                          },
663                          "end": {
664                            "line": 16,
665                            "column": 15
666                          }
667                        }
668                      },
669                      "loc": {
670                        "start": {
671                          "line": 16,
672                          "column": 14
673                        },
674                        "end": {
675                          "line": 16,
676                          "column": 16
677                        }
678                      }
679                    }
680                  ],
681                  "loc": {
682                    "start": {
683                      "line": 16,
684                      "column": 13
685                    },
686                    "end": {
687                      "line": 16,
688                      "column": 16
689                    }
690                  }
691                },
692                "body": {
693                  "type": "BlockStatement",
694                  "statements": [],
695                  "loc": {
696                    "start": {
697                      "line": 16,
698                      "column": 35
699                    },
700                    "end": {
701                      "line": 16,
702                      "column": 37
703                    }
704                  }
705                },
706                "loc": {
707                  "start": {
708                    "line": 16,
709                    "column": 13
710                  },
711                  "end": {
712                    "line": 16,
713                    "column": 37
714                  }
715                }
716              },
717              "loc": {
718                "start": {
719                  "line": 16,
720                  "column": 13
721                },
722                "end": {
723                  "line": 16,
724                  "column": 37
725                }
726              }
727            },
728            "overloads": [],
729            "decorators": [],
730            "loc": {
731              "start": {
732                "line": 16,
733                "column": 1
734              },
735              "end": {
736                "line": 16,
737                "column": 37
738              }
739            }
740          },
741          {
742            "type": "MethodDefinition",
743            "key": {
744              "type": "Identifier",
745              "name": "main",
746              "decorators": [],
747              "loc": {
748                "start": {
749                  "line": 21,
750                  "column": 10
751                },
752                "end": {
753                  "line": 21,
754                  "column": 14
755                }
756              }
757            },
758            "kind": "method",
759            "accessibility": "public",
760            "static": true,
761            "optional": false,
762            "computed": false,
763            "value": {
764              "type": "FunctionExpression",
765              "function": {
766                "type": "ScriptFunction",
767                "id": {
768                  "type": "Identifier",
769                  "name": "main",
770                  "decorators": [],
771                  "loc": {
772                    "start": {
773                      "line": 21,
774                      "column": 10
775                    },
776                    "end": {
777                      "line": 21,
778                      "column": 14
779                    }
780                  }
781                },
782                "generator": false,
783                "async": false,
784                "expression": false,
785                "params": [],
786                "returnType": {
787                  "type": "ETSPrimitiveType",
788                  "loc": {
789                    "start": {
790                      "line": 21,
791                      "column": 18
792                    },
793                    "end": {
794                      "line": 21,
795                      "column": 22
796                    }
797                  }
798                },
799                "body": {
800                  "type": "BlockStatement",
801                  "statements": [
802                    {
803                      "type": "ExpressionStatement",
804                      "expression": {
805                        "type": "CallExpression",
806                        "callee": {
807                          "type": "Identifier",
808                          "name": "foo",
809                          "decorators": [],
810                          "loc": {
811                            "start": {
812                              "line": 22,
813                              "column": 3
814                            },
815                            "end": {
816                              "line": 22,
817                              "column": 6
818                            }
819                          }
820                        },
821                        "arguments": [
822                          {
823                            "type": "ArrowFunctionExpression",
824                            "function": {
825                              "type": "ScriptFunction",
826                              "id": null,
827                              "generator": false,
828                              "async": false,
829                              "expression": false,
830                              "params": [],
831                              "returnType": {
832                                "type": "ETSTypeReference",
833                                "part": {
834                                  "type": "ETSTypeReferencePart",
835                                  "name": {
836                                    "type": "Identifier",
837                                    "name": "Tup",
838                                    "decorators": [],
839                                    "loc": {
840                                      "start": {
841                                        "line": 22,
842                                        "column": 64
843                                      },
844                                      "end": {
845                                        "line": 22,
846                                        "column": 67
847                                      }
848                                    }
849                                  },
850                                  "typeParams": {
851                                    "type": "TSTypeParameterInstantiation",
852                                    "params": [
853                                      {
854                                        "type": "ETSTypeReference",
855                                        "part": {
856                                          "type": "ETSTypeReferencePart",
857                                          "name": {
858                                            "type": "Identifier",
859                                            "name": "number",
860                                            "decorators": [],
861                                            "loc": {
862                                              "start": {
863                                                "line": 22,
864                                                "column": 68
865                                              },
866                                              "end": {
867                                                "line": 22,
868                                                "column": 74
869                                              }
870                                            }
871                                          },
872                                          "loc": {
873                                            "start": {
874                                              "line": 22,
875                                              "column": 68
876                                            },
877                                            "end": {
878                                              "line": 22,
879                                              "column": 75
880                                            }
881                                          }
882                                        },
883                                        "loc": {
884                                          "start": {
885                                            "line": 22,
886                                            "column": 68
887                                          },
888                                          "end": {
889                                            "line": 22,
890                                            "column": 75
891                                          }
892                                        }
893                                      },
894                                      {
895                                        "type": "ETSTypeReference",
896                                        "part": {
897                                          "type": "ETSTypeReferencePart",
898                                          "name": {
899                                            "type": "Identifier",
900                                            "name": "Tup",
901                                            "decorators": [],
902                                            "loc": {
903                                              "start": {
904                                                "line": 22,
905                                                "column": 76
906                                              },
907                                              "end": {
908                                                "line": 22,
909                                                "column": 79
910                                              }
911                                            }
912                                          },
913                                          "typeParams": {
914                                            "type": "TSTypeParameterInstantiation",
915                                            "params": [
916                                              {
917                                                "type": "ETSTypeReference",
918                                                "part": {
919                                                  "type": "ETSTypeReferencePart",
920                                                  "name": {
921                                                    "type": "Identifier",
922                                                    "name": "number",
923                                                    "decorators": [],
924                                                    "loc": {
925                                                      "start": {
926                                                        "line": 22,
927                                                        "column": 80
928                                                      },
929                                                      "end": {
930                                                        "line": 22,
931                                                        "column": 86
932                                                      }
933                                                    }
934                                                  },
935                                                  "loc": {
936                                                    "start": {
937                                                      "line": 22,
938                                                      "column": 80
939                                                    },
940                                                    "end": {
941                                                      "line": 22,
942                                                      "column": 87
943                                                    }
944                                                  }
945                                                },
946                                                "loc": {
947                                                  "start": {
948                                                    "line": 22,
949                                                    "column": 80
950                                                  },
951                                                  "end": {
952                                                    "line": 22,
953                                                    "column": 87
954                                                  }
955                                                }
956                                              },
957                                              {
958                                                "type": "ETSTypeReference",
959                                                "part": {
960                                                  "type": "ETSTypeReferencePart",
961                                                  "name": {
962                                                    "type": "Identifier",
963                                                    "name": "Tup",
964                                                    "decorators": [],
965                                                    "loc": {
966                                                      "start": {
967                                                        "line": 22,
968                                                        "column": 88
969                                                      },
970                                                      "end": {
971                                                        "line": 22,
972                                                        "column": 91
973                                                      }
974                                                    }
975                                                  },
976                                                  "typeParams": {
977                                                    "type": "TSTypeParameterInstantiation",
978                                                    "params": [
979                                                      {
980                                                        "type": "ETSTypeReference",
981                                                        "part": {
982                                                          "type": "ETSTypeReferencePart",
983                                                          "name": {
984                                                            "type": "Identifier",
985                                                            "name": "number",
986                                                            "decorators": [],
987                                                            "loc": {
988                                                              "start": {
989                                                                "line": 22,
990                                                                "column": 92
991                                                              },
992                                                              "end": {
993                                                                "line": 22,
994                                                                "column": 98
995                                                              }
996                                                            }
997                                                          },
998                                                          "loc": {
999                                                            "start": {
1000                                                              "line": 22,
1001                                                              "column": 92
1002                                                            },
1003                                                            "end": {
1004                                                              "line": 22,
1005                                                              "column": 99
1006                                                            }
1007                                                          }
1008                                                        },
1009                                                        "loc": {
1010                                                          "start": {
1011                                                            "line": 22,
1012                                                            "column": 92
1013                                                          },
1014                                                          "end": {
1015                                                            "line": 22,
1016                                                            "column": 99
1017                                                          }
1018                                                        }
1019                                                      },
1020                                                      {
1021                                                        "type": "ETSTypeReference",
1022                                                        "part": {
1023                                                          "type": "ETSTypeReferencePart",
1024                                                          "name": {
1025                                                            "type": "Identifier",
1026                                                            "name": "Tup2",
1027                                                            "decorators": [],
1028                                                            "loc": {
1029                                                              "start": {
1030                                                                "line": 22,
1031                                                                "column": 100
1032                                                              },
1033                                                              "end": {
1034                                                                "line": 22,
1035                                                                "column": 104
1036                                                              }
1037                                                            }
1038                                                          },
1039                                                          "typeParams": {
1040                                                            "type": "TSTypeParameterInstantiation",
1041                                                            "params": [
1042                                                              {
1043                                                                "type": "ETSTypeReference",
1044                                                                "part": {
1045                                                                  "type": "ETSTypeReferencePart",
1046                                                                  "name": {
1047                                                                    "type": "Identifier",
1048                                                                    "name": "String",
1049                                                                    "decorators": [],
1050                                                                    "loc": {
1051                                                                      "start": {
1052                                                                        "line": 22,
1053                                                                        "column": 105
1054                                                                      },
1055                                                                      "end": {
1056                                                                        "line": 22,
1057                                                                        "column": 111
1058                                                                      }
1059                                                                    }
1060                                                                  },
1061                                                                  "loc": {
1062                                                                    "start": {
1063                                                                      "line": 22,
1064                                                                      "column": 105
1065                                                                    },
1066                                                                    "end": {
1067                                                                      "line": 22,
1068                                                                      "column": 114
1069                                                                    }
1070                                                                  }
1071                                                                },
1072                                                                "loc": {
1073                                                                  "start": {
1074                                                                    "line": 22,
1075                                                                    "column": 105
1076                                                                  },
1077                                                                  "end": {
1078                                                                    "line": 22,
1079                                                                    "column": 114
1080                                                                  }
1081                                                                }
1082                                                              }
1083                                                            ],
1084                                                            "loc": {
1085                                                              "start": {
1086                                                                "line": 22,
1087                                                                "column": 104
1088                                                              },
1089                                                              "end": {
1090                                                                "line": 22,
1091                                                                "column": 114
1092                                                              }
1093                                                            }
1094                                                          },
1095                                                          "loc": {
1096                                                            "start": {
1097                                                              "line": 22,
1098                                                              "column": 100
1099                                                            },
1100                                                            "end": {
1101                                                              "line": 22,
1102                                                              "column": 115
1103                                                            }
1104                                                          }
1105                                                        },
1106                                                        "loc": {
1107                                                          "start": {
1108                                                            "line": 22,
1109                                                            "column": 100
1110                                                          },
1111                                                          "end": {
1112                                                            "line": 22,
1113                                                            "column": 115
1114                                                          }
1115                                                        }
1116                                                      }
1117                                                    ],
1118                                                    "loc": {
1119                                                      "start": {
1120                                                        "line": 22,
1121                                                        "column": 91
1122                                                      },
1123                                                      "end": {
1124                                                        "line": 22,
1125                                                        "column": 115
1126                                                      }
1127                                                    }
1128                                                  },
1129                                                  "loc": {
1130                                                    "start": {
1131                                                      "line": 22,
1132                                                      "column": 88
1133                                                    },
1134                                                    "end": {
1135                                                      "line": 22,
1136                                                      "column": 115
1137                                                    }
1138                                                  }
1139                                                },
1140                                                "loc": {
1141                                                  "start": {
1142                                                    "line": 22,
1143                                                    "column": 88
1144                                                  },
1145                                                  "end": {
1146                                                    "line": 22,
1147                                                    "column": 115
1148                                                  }
1149                                                }
1150                                              }
1151                                            ],
1152                                            "loc": {
1153                                              "start": {
1154                                                "line": 22,
1155                                                "column": 79
1156                                              },
1157                                              "end": {
1158                                                "line": 22,
1159                                                "column": 115
1160                                              }
1161                                            }
1162                                          },
1163                                          "loc": {
1164                                            "start": {
1165                                              "line": 22,
1166                                              "column": 76
1167                                            },
1168                                            "end": {
1169                                              "line": 22,
1170                                              "column": 115
1171                                            }
1172                                          }
1173                                        },
1174                                        "loc": {
1175                                          "start": {
1176                                            "line": 22,
1177                                            "column": 76
1178                                          },
1179                                          "end": {
1180                                            "line": 22,
1181                                            "column": 115
1182                                          }
1183                                        }
1184                                      }
1185                                    ],
1186                                    "loc": {
1187                                      "start": {
1188                                        "line": 22,
1189                                        "column": 67
1190                                      },
1191                                      "end": {
1192                                        "line": 22,
1193                                        "column": 115
1194                                      }
1195                                    }
1196                                  },
1197                                  "loc": {
1198                                    "start": {
1199                                      "line": 22,
1200                                      "column": 64
1201                                    },
1202                                    "end": {
1203                                      "line": 22,
1204                                      "column": 118
1205                                    }
1206                                  }
1207                                },
1208                                "loc": {
1209                                  "start": {
1210                                    "line": 22,
1211                                    "column": 64
1212                                  },
1213                                  "end": {
1214                                    "line": 22,
1215                                    "column": 118
1216                                  }
1217                                }
1218                              },
1219                              "body": {
1220                                "type": "BlockStatement",
1221                                "statements": [
1222                                  {
1223                                    "type": "ThrowStatement",
1224                                    "argument": {
1225                                      "type": "ETSNewClassInstanceExpression",
1226                                      "typeReference": {
1227                                        "type": "ETSTypeReference",
1228                                        "part": {
1229                                          "type": "ETSTypeReferencePart",
1230                                          "name": {
1231                                            "type": "Identifier",
1232                                            "name": "Error",
1233                                            "decorators": [],
1234                                            "loc": {
1235                                              "start": {
1236                                                "line": 22,
1237                                                "column": 131
1238                                              },
1239                                              "end": {
1240                                                "line": 22,
1241                                                "column": 136
1242                                              }
1243                                            }
1244                                          },
1245                                          "loc": {
1246                                            "start": {
1247                                              "line": 22,
1248                                              "column": 131
1249                                            },
1250                                            "end": {
1251                                              "line": 22,
1252                                              "column": 137
1253                                            }
1254                                          }
1255                                        },
1256                                        "loc": {
1257                                          "start": {
1258                                            "line": 22,
1259                                            "column": 131
1260                                          },
1261                                          "end": {
1262                                            "line": 22,
1263                                            "column": 137
1264                                          }
1265                                        }
1266                                      },
1267                                      "arguments": [],
1268                                      "loc": {
1269                                        "start": {
1270                                          "line": 22,
1271                                          "column": 127
1272                                        },
1273                                        "end": {
1274                                          "line": 22,
1275                                          "column": 140
1276                                        }
1277                                      }
1278                                    },
1279                                    "loc": {
1280                                      "start": {
1281                                        "line": 22,
1282                                        "column": 121
1283                                      },
1284                                      "end": {
1285                                        "line": 22,
1286                                        "column": 140
1287                                      }
1288                                    }
1289                                  }
1290                                ],
1291                                "loc": {
1292                                  "start": {
1293                                    "line": 22,
1294                                    "column": 119
1295                                  },
1296                                  "end": {
1297                                    "line": 22,
1298                                    "column": 140
1299                                  }
1300                                }
1301                              },
1302                              "loc": {
1303                                "start": {
1304                                  "line": 22,
1305                                  "column": 60
1306                                },
1307                                "end": {
1308                                  "line": 22,
1309                                  "column": 140
1310                                }
1311                              }
1312                            },
1313                            "loc": {
1314                              "start": {
1315                                "line": 22,
1316                                "column": 60
1317                              },
1318                              "end": {
1319                                "line": 22,
1320                                "column": 140
1321                              }
1322                            }
1323                          }
1324                        ],
1325                        "optional": false,
1326                        "typeParameters": {
1327                          "type": "TSTypeParameterInstantiation",
1328                          "params": [
1329                            {
1330                              "type": "ETSTypeReference",
1331                              "part": {
1332                                "type": "ETSTypeReferencePart",
1333                                "name": {
1334                                  "type": "Identifier",
1335                                  "name": "Tup",
1336                                  "decorators": [],
1337                                  "loc": {
1338                                    "start": {
1339                                      "line": 22,
1340                                      "column": 7
1341                                    },
1342                                    "end": {
1343                                      "line": 22,
1344                                      "column": 10
1345                                    }
1346                                  }
1347                                },
1348                                "typeParams": {
1349                                  "type": "TSTypeParameterInstantiation",
1350                                  "params": [
1351                                    {
1352                                      "type": "ETSTypeReference",
1353                                      "part": {
1354                                        "type": "ETSTypeReferencePart",
1355                                        "name": {
1356                                          "type": "Identifier",
1357                                          "name": "number",
1358                                          "decorators": [],
1359                                          "loc": {
1360                                            "start": {
1361                                              "line": 22,
1362                                              "column": 11
1363                                            },
1364                                            "end": {
1365                                              "line": 22,
1366                                              "column": 17
1367                                            }
1368                                          }
1369                                        },
1370                                        "loc": {
1371                                          "start": {
1372                                            "line": 22,
1373                                            "column": 11
1374                                          },
1375                                          "end": {
1376                                            "line": 22,
1377                                            "column": 18
1378                                          }
1379                                        }
1380                                      },
1381                                      "loc": {
1382                                        "start": {
1383                                          "line": 22,
1384                                          "column": 11
1385                                        },
1386                                        "end": {
1387                                          "line": 22,
1388                                          "column": 18
1389                                        }
1390                                      }
1391                                    },
1392                                    {
1393                                      "type": "ETSTypeReference",
1394                                      "part": {
1395                                        "type": "ETSTypeReferencePart",
1396                                        "name": {
1397                                          "type": "Identifier",
1398                                          "name": "Tup",
1399                                          "decorators": [],
1400                                          "loc": {
1401                                            "start": {
1402                                              "line": 22,
1403                                              "column": 19
1404                                            },
1405                                            "end": {
1406                                              "line": 22,
1407                                              "column": 22
1408                                            }
1409                                          }
1410                                        },
1411                                        "typeParams": {
1412                                          "type": "TSTypeParameterInstantiation",
1413                                          "params": [
1414                                            {
1415                                              "type": "ETSTypeReference",
1416                                              "part": {
1417                                                "type": "ETSTypeReferencePart",
1418                                                "name": {
1419                                                  "type": "Identifier",
1420                                                  "name": "number",
1421                                                  "decorators": [],
1422                                                  "loc": {
1423                                                    "start": {
1424                                                      "line": 22,
1425                                                      "column": 23
1426                                                    },
1427                                                    "end": {
1428                                                      "line": 22,
1429                                                      "column": 29
1430                                                    }
1431                                                  }
1432                                                },
1433                                                "loc": {
1434                                                  "start": {
1435                                                    "line": 22,
1436                                                    "column": 23
1437                                                  },
1438                                                  "end": {
1439                                                    "line": 22,
1440                                                    "column": 30
1441                                                  }
1442                                                }
1443                                              },
1444                                              "loc": {
1445                                                "start": {
1446                                                  "line": 22,
1447                                                  "column": 23
1448                                                },
1449                                                "end": {
1450                                                  "line": 22,
1451                                                  "column": 30
1452                                                }
1453                                              }
1454                                            },
1455                                            {
1456                                              "type": "ETSTypeReference",
1457                                              "part": {
1458                                                "type": "ETSTypeReferencePart",
1459                                                "name": {
1460                                                  "type": "Identifier",
1461                                                  "name": "Tup",
1462                                                  "decorators": [],
1463                                                  "loc": {
1464                                                    "start": {
1465                                                      "line": 22,
1466                                                      "column": 31
1467                                                    },
1468                                                    "end": {
1469                                                      "line": 22,
1470                                                      "column": 34
1471                                                    }
1472                                                  }
1473                                                },
1474                                                "typeParams": {
1475                                                  "type": "TSTypeParameterInstantiation",
1476                                                  "params": [
1477                                                    {
1478                                                      "type": "ETSTypeReference",
1479                                                      "part": {
1480                                                        "type": "ETSTypeReferencePart",
1481                                                        "name": {
1482                                                          "type": "Identifier",
1483                                                          "name": "number",
1484                                                          "decorators": [],
1485                                                          "loc": {
1486                                                            "start": {
1487                                                              "line": 22,
1488                                                              "column": 35
1489                                                            },
1490                                                            "end": {
1491                                                              "line": 22,
1492                                                              "column": 41
1493                                                            }
1494                                                          }
1495                                                        },
1496                                                        "loc": {
1497                                                          "start": {
1498                                                            "line": 22,
1499                                                            "column": 35
1500                                                          },
1501                                                          "end": {
1502                                                            "line": 22,
1503                                                            "column": 42
1504                                                          }
1505                                                        }
1506                                                      },
1507                                                      "loc": {
1508                                                        "start": {
1509                                                          "line": 22,
1510                                                          "column": 35
1511                                                        },
1512                                                        "end": {
1513                                                          "line": 22,
1514                                                          "column": 42
1515                                                        }
1516                                                      }
1517                                                    },
1518                                                    {
1519                                                      "type": "ETSTypeReference",
1520                                                      "part": {
1521                                                        "type": "ETSTypeReferencePart",
1522                                                        "name": {
1523                                                          "type": "Identifier",
1524                                                          "name": "Tup2",
1525                                                          "decorators": [],
1526                                                          "loc": {
1527                                                            "start": {
1528                                                              "line": 22,
1529                                                              "column": 43
1530                                                            },
1531                                                            "end": {
1532                                                              "line": 22,
1533                                                              "column": 47
1534                                                            }
1535                                                          }
1536                                                        },
1537                                                        "typeParams": {
1538                                                          "type": "TSTypeParameterInstantiation",
1539                                                          "params": [
1540                                                            {
1541                                                              "type": "ETSTypeReference",
1542                                                              "part": {
1543                                                                "type": "ETSTypeReferencePart",
1544                                                                "name": {
1545                                                                  "type": "Identifier",
1546                                                                  "name": "String",
1547                                                                  "decorators": [],
1548                                                                  "loc": {
1549                                                                    "start": {
1550                                                                      "line": 22,
1551                                                                      "column": 48
1552                                                                    },
1553                                                                    "end": {
1554                                                                      "line": 22,
1555                                                                      "column": 54
1556                                                                    }
1557                                                                  }
1558                                                                },
1559                                                                "loc": {
1560                                                                  "start": {
1561                                                                    "line": 22,
1562                                                                    "column": 48
1563                                                                  },
1564                                                                  "end": {
1565                                                                    "line": 22,
1566                                                                    "column": 57
1567                                                                  }
1568                                                                }
1569                                                              },
1570                                                              "loc": {
1571                                                                "start": {
1572                                                                  "line": 22,
1573                                                                  "column": 48
1574                                                                },
1575                                                                "end": {
1576                                                                  "line": 22,
1577                                                                  "column": 57
1578                                                                }
1579                                                              }
1580                                                            }
1581                                                          ],
1582                                                          "loc": {
1583                                                            "start": {
1584                                                              "line": 22,
1585                                                              "column": 47
1586                                                            },
1587                                                            "end": {
1588                                                              "line": 22,
1589                                                              "column": 57
1590                                                            }
1591                                                          }
1592                                                        },
1593                                                        "loc": {
1594                                                          "start": {
1595                                                            "line": 22,
1596                                                            "column": 43
1597                                                          },
1598                                                          "end": {
1599                                                            "line": 22,
1600                                                            "column": 58
1601                                                          }
1602                                                        }
1603                                                      },
1604                                                      "loc": {
1605                                                        "start": {
1606                                                          "line": 22,
1607                                                          "column": 43
1608                                                        },
1609                                                        "end": {
1610                                                          "line": 22,
1611                                                          "column": 58
1612                                                        }
1613                                                      }
1614                                                    }
1615                                                  ],
1616                                                  "loc": {
1617                                                    "start": {
1618                                                      "line": 22,
1619                                                      "column": 34
1620                                                    },
1621                                                    "end": {
1622                                                      "line": 22,
1623                                                      "column": 58
1624                                                    }
1625                                                  }
1626                                                },
1627                                                "loc": {
1628                                                  "start": {
1629                                                    "line": 22,
1630                                                    "column": 31
1631                                                  },
1632                                                  "end": {
1633                                                    "line": 22,
1634                                                    "column": 59
1635                                                  }
1636                                                }
1637                                              },
1638                                              "loc": {
1639                                                "start": {
1640                                                  "line": 22,
1641                                                  "column": 31
1642                                                },
1643                                                "end": {
1644                                                  "line": 22,
1645                                                  "column": 59
1646                                                }
1647                                              }
1648                                            }
1649                                          ],
1650                                          "loc": {
1651                                            "start": {
1652                                              "line": 22,
1653                                              "column": 22
1654                                            },
1655                                            "end": {
1656                                              "line": 22,
1657                                              "column": 59
1658                                            }
1659                                          }
1660                                        },
1661                                        "loc": {
1662                                          "start": {
1663                                            "line": 22,
1664                                            "column": 19
1665                                          },
1666                                          "end": {
1667                                            "line": 22,
1668                                            "column": 59
1669                                          }
1670                                        }
1671                                      },
1672                                      "loc": {
1673                                        "start": {
1674                                          "line": 22,
1675                                          "column": 19
1676                                        },
1677                                        "end": {
1678                                          "line": 22,
1679                                          "column": 59
1680                                        }
1681                                      }
1682                                    }
1683                                  ],
1684                                  "loc": {
1685                                    "start": {
1686                                      "line": 22,
1687                                      "column": 10
1688                                    },
1689                                    "end": {
1690                                      "line": 22,
1691                                      "column": 59
1692                                    }
1693                                  }
1694                                },
1695                                "loc": {
1696                                  "start": {
1697                                    "line": 22,
1698                                    "column": 7
1699                                  },
1700                                  "end": {
1701                                    "line": 22,
1702                                    "column": 59
1703                                  }
1704                                }
1705                              },
1706                              "loc": {
1707                                "start": {
1708                                  "line": 22,
1709                                  "column": 7
1710                                },
1711                                "end": {
1712                                  "line": 22,
1713                                  "column": 59
1714                                }
1715                              }
1716                            }
1717                          ],
1718                          "loc": {
1719                            "start": {
1720                              "line": 22,
1721                              "column": 6
1722                            },
1723                            "end": {
1724                              "line": 22,
1725                              "column": 59
1726                            }
1727                          }
1728                        },
1729                        "loc": {
1730                          "start": {
1731                            "line": 22,
1732                            "column": 3
1733                          },
1734                          "end": {
1735                            "line": 22,
1736                            "column": 141
1737                          }
1738                        }
1739                      },
1740                      "loc": {
1741                        "start": {
1742                          "line": 22,
1743                          "column": 3
1744                        },
1745                        "end": {
1746                          "line": 22,
1747                          "column": 142
1748                        }
1749                      }
1750                    }
1751                  ],
1752                  "loc": {
1753                    "start": {
1754                      "line": 21,
1755                      "column": 23
1756                    },
1757                    "end": {
1758                      "line": 23,
1759                      "column": 2
1760                    }
1761                  }
1762                },
1763                "loc": {
1764                  "start": {
1765                    "line": 21,
1766                    "column": 14
1767                  },
1768                  "end": {
1769                    "line": 23,
1770                    "column": 2
1771                  }
1772                }
1773              },
1774              "loc": {
1775                "start": {
1776                  "line": 21,
1777                  "column": 14
1778                },
1779                "end": {
1780                  "line": 23,
1781                  "column": 2
1782                }
1783              }
1784            },
1785            "overloads": [],
1786            "decorators": [],
1787            "loc": {
1788              "start": {
1789                "line": 21,
1790                "column": 1
1791              },
1792              "end": {
1793                "line": 23,
1794                "column": 2
1795              }
1796            }
1797          }
1798        ],
1799        "loc": {
1800          "start": {
1801            "line": 1,
1802            "column": 1
1803          },
1804          "end": {
1805            "line": 1,
1806            "column": 1
1807          }
1808        }
1809      },
1810      "loc": {
1811        "start": {
1812          "line": 1,
1813          "column": 1
1814        },
1815        "end": {
1816          "line": 1,
1817          "column": 1
1818        }
1819      }
1820    }
1821  ],
1822  "loc": {
1823    "start": {
1824      "line": 1,
1825      "column": 1
1826    },
1827    "end": {
1828      "line": 25,
1829      "column": 1
1830    }
1831  }
1832}
1833