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": 38
843                                      },
844                                      "end": {
845                                        "line": 22,
846                                        "column": 41
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": 42
865                                              },
866                                              "end": {
867                                                "line": 22,
868                                                "column": 48
869                                              }
870                                            }
871                                          },
872                                          "loc": {
873                                            "start": {
874                                              "line": 22,
875                                              "column": 42
876                                            },
877                                            "end": {
878                                              "line": 22,
879                                              "column": 49
880                                            }
881                                          }
882                                        },
883                                        "loc": {
884                                          "start": {
885                                            "line": 22,
886                                            "column": 42
887                                          },
888                                          "end": {
889                                            "line": 22,
890                                            "column": 49
891                                          }
892                                        }
893                                      },
894                                      {
895                                        "type": "ETSTypeReference",
896                                        "part": {
897                                          "type": "ETSTypeReferencePart",
898                                          "name": {
899                                            "type": "Identifier",
900                                            "name": "Tup2",
901                                            "decorators": [],
902                                            "loc": {
903                                              "start": {
904                                                "line": 22,
905                                                "column": 50
906                                              },
907                                              "end": {
908                                                "line": 22,
909                                                "column": 54
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": 55
928                                                      },
929                                                      "end": {
930                                                        "line": 22,
931                                                        "column": 61
932                                                      }
933                                                    }
934                                                  },
935                                                  "loc": {
936                                                    "start": {
937                                                      "line": 22,
938                                                      "column": 55
939                                                    },
940                                                    "end": {
941                                                      "line": 22,
942                                                      "column": 63
943                                                    }
944                                                  }
945                                                },
946                                                "loc": {
947                                                  "start": {
948                                                    "line": 22,
949                                                    "column": 55
950                                                  },
951                                                  "end": {
952                                                    "line": 22,
953                                                    "column": 63
954                                                  }
955                                                }
956                                              }
957                                            ],
958                                            "loc": {
959                                              "start": {
960                                                "line": 22,
961                                                "column": 54
962                                              },
963                                              "end": {
964                                                "line": 22,
965                                                "column": 63
966                                              }
967                                            }
968                                          },
969                                          "loc": {
970                                            "start": {
971                                              "line": 22,
972                                              "column": 50
973                                            },
974                                            "end": {
975                                              "line": 22,
976                                              "column": 63
977                                            }
978                                          }
979                                        },
980                                        "loc": {
981                                          "start": {
982                                            "line": 22,
983                                            "column": 50
984                                          },
985                                          "end": {
986                                            "line": 22,
987                                            "column": 63
988                                          }
989                                        }
990                                      }
991                                    ],
992                                    "loc": {
993                                      "start": {
994                                        "line": 22,
995                                        "column": 41
996                                      },
997                                      "end": {
998                                        "line": 22,
999                                        "column": 63
1000                                      }
1001                                    }
1002                                  },
1003                                  "loc": {
1004                                    "start": {
1005                                      "line": 22,
1006                                      "column": 38
1007                                    },
1008                                    "end": {
1009                                      "line": 22,
1010                                      "column": 66
1011                                    }
1012                                  }
1013                                },
1014                                "loc": {
1015                                  "start": {
1016                                    "line": 22,
1017                                    "column": 38
1018                                  },
1019                                  "end": {
1020                                    "line": 22,
1021                                    "column": 66
1022                                  }
1023                                }
1024                              },
1025                              "body": {
1026                                "type": "BlockStatement",
1027                                "statements": [
1028                                  {
1029                                    "type": "ThrowStatement",
1030                                    "argument": {
1031                                      "type": "ETSNewClassInstanceExpression",
1032                                      "typeReference": {
1033                                        "type": "ETSTypeReference",
1034                                        "part": {
1035                                          "type": "ETSTypeReferencePart",
1036                                          "name": {
1037                                            "type": "Identifier",
1038                                            "name": "Error",
1039                                            "decorators": [],
1040                                            "loc": {
1041                                              "start": {
1042                                                "line": 22,
1043                                                "column": 79
1044                                              },
1045                                              "end": {
1046                                                "line": 22,
1047                                                "column": 84
1048                                              }
1049                                            }
1050                                          },
1051                                          "loc": {
1052                                            "start": {
1053                                              "line": 22,
1054                                              "column": 79
1055                                            },
1056                                            "end": {
1057                                              "line": 22,
1058                                              "column": 85
1059                                            }
1060                                          }
1061                                        },
1062                                        "loc": {
1063                                          "start": {
1064                                            "line": 22,
1065                                            "column": 79
1066                                          },
1067                                          "end": {
1068                                            "line": 22,
1069                                            "column": 85
1070                                          }
1071                                        }
1072                                      },
1073                                      "arguments": [],
1074                                      "loc": {
1075                                        "start": {
1076                                          "line": 22,
1077                                          "column": 75
1078                                        },
1079                                        "end": {
1080                                          "line": 22,
1081                                          "column": 88
1082                                        }
1083                                      }
1084                                    },
1085                                    "loc": {
1086                                      "start": {
1087                                        "line": 22,
1088                                        "column": 69
1089                                      },
1090                                      "end": {
1091                                        "line": 22,
1092                                        "column": 88
1093                                      }
1094                                    }
1095                                  }
1096                                ],
1097                                "loc": {
1098                                  "start": {
1099                                    "line": 22,
1100                                    "column": 67
1101                                  },
1102                                  "end": {
1103                                    "line": 22,
1104                                    "column": 88
1105                                  }
1106                                }
1107                              },
1108                              "loc": {
1109                                "start": {
1110                                  "line": 22,
1111                                  "column": 34
1112                                },
1113                                "end": {
1114                                  "line": 22,
1115                                  "column": 88
1116                                }
1117                              }
1118                            },
1119                            "loc": {
1120                              "start": {
1121                                "line": 22,
1122                                "column": 34
1123                              },
1124                              "end": {
1125                                "line": 22,
1126                                "column": 88
1127                              }
1128                            }
1129                          }
1130                        ],
1131                        "optional": false,
1132                        "typeParameters": {
1133                          "type": "TSTypeParameterInstantiation",
1134                          "params": [
1135                            {
1136                              "type": "ETSTypeReference",
1137                              "part": {
1138                                "type": "ETSTypeReferencePart",
1139                                "name": {
1140                                  "type": "Identifier",
1141                                  "name": "Tup",
1142                                  "decorators": [],
1143                                  "loc": {
1144                                    "start": {
1145                                      "line": 22,
1146                                      "column": 7
1147                                    },
1148                                    "end": {
1149                                      "line": 22,
1150                                      "column": 10
1151                                    }
1152                                  }
1153                                },
1154                                "typeParams": {
1155                                  "type": "TSTypeParameterInstantiation",
1156                                  "params": [
1157                                    {
1158                                      "type": "ETSTypeReference",
1159                                      "part": {
1160                                        "type": "ETSTypeReferencePart",
1161                                        "name": {
1162                                          "type": "Identifier",
1163                                          "name": "number",
1164                                          "decorators": [],
1165                                          "loc": {
1166                                            "start": {
1167                                              "line": 22,
1168                                              "column": 11
1169                                            },
1170                                            "end": {
1171                                              "line": 22,
1172                                              "column": 17
1173                                            }
1174                                          }
1175                                        },
1176                                        "loc": {
1177                                          "start": {
1178                                            "line": 22,
1179                                            "column": 11
1180                                          },
1181                                          "end": {
1182                                            "line": 22,
1183                                            "column": 18
1184                                          }
1185                                        }
1186                                      },
1187                                      "loc": {
1188                                        "start": {
1189                                          "line": 22,
1190                                          "column": 11
1191                                        },
1192                                        "end": {
1193                                          "line": 22,
1194                                          "column": 18
1195                                        }
1196                                      }
1197                                    },
1198                                    {
1199                                      "type": "ETSTypeReference",
1200                                      "part": {
1201                                        "type": "ETSTypeReferencePart",
1202                                        "name": {
1203                                          "type": "Identifier",
1204                                          "name": "Tup2",
1205                                          "decorators": [],
1206                                          "loc": {
1207                                            "start": {
1208                                              "line": 22,
1209                                              "column": 19
1210                                            },
1211                                            "end": {
1212                                              "line": 22,
1213                                              "column": 23
1214                                            }
1215                                          }
1216                                        },
1217                                        "typeParams": {
1218                                          "type": "TSTypeParameterInstantiation",
1219                                          "params": [
1220                                            {
1221                                              "type": "ETSTypeReference",
1222                                              "part": {
1223                                                "type": "ETSTypeReferencePart",
1224                                                "name": {
1225                                                  "type": "Identifier",
1226                                                  "name": "number",
1227                                                  "decorators": [],
1228                                                  "loc": {
1229                                                    "start": {
1230                                                      "line": 22,
1231                                                      "column": 24
1232                                                    },
1233                                                    "end": {
1234                                                      "line": 22,
1235                                                      "column": 30
1236                                                    }
1237                                                  }
1238                                                },
1239                                                "loc": {
1240                                                  "start": {
1241                                                    "line": 22,
1242                                                    "column": 24
1243                                                  },
1244                                                  "end": {
1245                                                    "line": 22,
1246                                                    "column": 33
1247                                                  }
1248                                                }
1249                                              },
1250                                              "loc": {
1251                                                "start": {
1252                                                  "line": 22,
1253                                                  "column": 24
1254                                                },
1255                                                "end": {
1256                                                  "line": 22,
1257                                                  "column": 33
1258                                                }
1259                                              }
1260                                            }
1261                                          ],
1262                                          "loc": {
1263                                            "start": {
1264                                              "line": 22,
1265                                              "column": 23
1266                                            },
1267                                            "end": {
1268                                              "line": 22,
1269                                              "column": 33
1270                                            }
1271                                          }
1272                                        },
1273                                        "loc": {
1274                                          "start": {
1275                                            "line": 22,
1276                                            "column": 19
1277                                          },
1278                                          "end": {
1279                                            "line": 22,
1280                                            "column": 33
1281                                          }
1282                                        }
1283                                      },
1284                                      "loc": {
1285                                        "start": {
1286                                          "line": 22,
1287                                          "column": 19
1288                                        },
1289                                        "end": {
1290                                          "line": 22,
1291                                          "column": 33
1292                                        }
1293                                      }
1294                                    }
1295                                  ],
1296                                  "loc": {
1297                                    "start": {
1298                                      "line": 22,
1299                                      "column": 10
1300                                    },
1301                                    "end": {
1302                                      "line": 22,
1303                                      "column": 33
1304                                    }
1305                                  }
1306                                },
1307                                "loc": {
1308                                  "start": {
1309                                    "line": 22,
1310                                    "column": 7
1311                                  },
1312                                  "end": {
1313                                    "line": 22,
1314                                    "column": 33
1315                                  }
1316                                }
1317                              },
1318                              "loc": {
1319                                "start": {
1320                                  "line": 22,
1321                                  "column": 7
1322                                },
1323                                "end": {
1324                                  "line": 22,
1325                                  "column": 33
1326                                }
1327                              }
1328                            }
1329                          ],
1330                          "loc": {
1331                            "start": {
1332                              "line": 22,
1333                              "column": 6
1334                            },
1335                            "end": {
1336                              "line": 22,
1337                              "column": 33
1338                            }
1339                          }
1340                        },
1341                        "loc": {
1342                          "start": {
1343                            "line": 22,
1344                            "column": 3
1345                          },
1346                          "end": {
1347                            "line": 22,
1348                            "column": 89
1349                          }
1350                        }
1351                      },
1352                      "loc": {
1353                        "start": {
1354                          "line": 22,
1355                          "column": 3
1356                        },
1357                        "end": {
1358                          "line": 22,
1359                          "column": 90
1360                        }
1361                      }
1362                    }
1363                  ],
1364                  "loc": {
1365                    "start": {
1366                      "line": 21,
1367                      "column": 23
1368                    },
1369                    "end": {
1370                      "line": 23,
1371                      "column": 2
1372                    }
1373                  }
1374                },
1375                "loc": {
1376                  "start": {
1377                    "line": 21,
1378                    "column": 14
1379                  },
1380                  "end": {
1381                    "line": 23,
1382                    "column": 2
1383                  }
1384                }
1385              },
1386              "loc": {
1387                "start": {
1388                  "line": 21,
1389                  "column": 14
1390                },
1391                "end": {
1392                  "line": 23,
1393                  "column": 2
1394                }
1395              }
1396            },
1397            "overloads": [],
1398            "decorators": [],
1399            "loc": {
1400              "start": {
1401                "line": 21,
1402                "column": 1
1403              },
1404              "end": {
1405                "line": 23,
1406                "column": 2
1407              }
1408            }
1409          }
1410        ],
1411        "loc": {
1412          "start": {
1413            "line": 1,
1414            "column": 1
1415          },
1416          "end": {
1417            "line": 1,
1418            "column": 1
1419          }
1420        }
1421      },
1422      "loc": {
1423        "start": {
1424          "line": 1,
1425          "column": 1
1426        },
1427        "end": {
1428          "line": 1,
1429          "column": 1
1430        }
1431      }
1432    }
1433  ],
1434  "loc": {
1435    "start": {
1436      "line": 1,
1437      "column": 1
1438    },
1439    "end": {
1440      "line": 25,
1441      "column": 1
1442    }
1443  }
1444}
1445