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