• 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                                "decorators": [],
598                                "loc": {
599                                  "start": {
600                                    "line": 17,
601                                    "column": 7
602                                  },
603                                  "end": {
604                                    "line": 17,
605                                    "column": 12
606                                  }
607                                }
608                              },
609                              {
610                                "type": "UndefinedLiteral",
611                                "value": "undefined",
612                                "loc": {
613                                  "start": {
614                                    "line": 1,
615                                    "column": 1
616                                  },
617                                  "end": {
618                                    "line": 1,
619                                    "column": 1
620                                  }
621                                }
622                              }
623                            ],
624                            "optional": false,
625                            "loc": {
626                              "start": {
627                                "line": 17,
628                                "column": 3
629                              },
630                              "end": {
631                                "line": 17,
632                                "column": 36
633                              }
634                            }
635                          },
636                          "loc": {
637                            "start": {
638                              "line": 1,
639                              "column": 1
640                            },
641                            "end": {
642                              "line": 1,
643                              "column": 1
644                            }
645                          }
646                        }
647                      ],
648                      "loc": {
649                        "start": {
650                          "line": 1,
651                          "column": 1
652                        },
653                        "end": {
654                          "line": 1,
655                          "column": 1
656                        }
657                      }
658                    },
659                    "loc": {
660                      "start": {
661                        "line": 621,
662                        "column": 1
663                      },
664                      "end": {
665                        "line": 621,
666                        "column": 1
667                      }
668                    }
669                  },
670                  "loc": {
671                    "start": {
672                      "line": 1,
673                      "column": 1
674                    },
675                    "end": {
676                      "line": 1,
677                      "column": 1
678                    }
679                  }
680                },
681                "overloads": [],
682                "decorators": [],
683                "loc": {
684                  "start": {
685                    "line": 17,
686                    "column": 3
687                  },
688                  "end": {
689                    "line": 1,
690                    "column": 1
691                  }
692                }
693              }
694            ],
695            "decorators": [],
696            "loc": {
697              "start": {
698                "line": 17,
699                "column": 3
700              },
701              "end": {
702                "line": 17,
703                "column": 36
704              }
705            }
706          },
707          {
708            "type": "MethodDefinition",
709            "key": {
710              "type": "Identifier",
711              "name": "constructor",
712              "decorators": [],
713              "loc": {
714                "start": {
715                  "line": 1,
716                  "column": 1
717                },
718                "end": {
719                  "line": 1,
720                  "column": 1
721                }
722              }
723            },
724            "kind": "constructor",
725            "static": false,
726            "optional": false,
727            "computed": false,
728            "value": {
729              "type": "FunctionExpression",
730              "function": {
731                "type": "ScriptFunction",
732                "id": {
733                  "type": "Identifier",
734                  "name": "constructor",
735                  "decorators": [],
736                  "loc": {
737                    "start": {
738                      "line": 1,
739                      "column": 1
740                    },
741                    "end": {
742                      "line": 1,
743                      "column": 1
744                    }
745                  }
746                },
747                "generator": false,
748                "async": false,
749                "expression": false,
750                "params": [],
751                "body": {
752                  "type": "BlockStatement",
753                  "statements": [],
754                  "loc": {
755                    "start": {
756                      "line": 1,
757                      "column": 1
758                    },
759                    "end": {
760                      "line": 1,
761                      "column": 1
762                    }
763                  }
764                },
765                "loc": {
766                  "start": {
767                    "line": 1,
768                    "column": 1
769                  },
770                  "end": {
771                    "line": 1,
772                    "column": 1
773                  }
774                }
775              },
776              "loc": {
777                "start": {
778                  "line": 1,
779                  "column": 1
780                },
781                "end": {
782                  "line": 1,
783                  "column": 1
784                }
785              }
786            },
787            "overloads": [],
788            "decorators": [],
789            "loc": {
790              "start": {
791                "line": 18,
792                "column": 2
793              },
794              "end": {
795                "line": 18,
796                "column": 2
797              }
798            }
799          }
800        ],
801        "loc": {
802          "start": {
803            "line": 16,
804            "column": 12
805          },
806          "end": {
807            "line": 18,
808            "column": 2
809          }
810        }
811      },
812      "loc": {
813        "start": {
814          "line": 16,
815          "column": 1
816        },
817        "end": {
818          "line": 18,
819          "column": 2
820        }
821      }
822    },
823    {
824      "type": "ClassDeclaration",
825      "definition": {
826        "id": {
827          "type": "Identifier",
828          "name": "A",
829          "decorators": [],
830          "loc": {
831            "start": {
832              "line": 19,
833              "column": 7
834            },
835            "end": {
836              "line": 19,
837              "column": 8
838            }
839          }
840        },
841        "typeParameters": {
842          "type": "TSTypeParameterDeclaration",
843          "params": [
844            {
845              "type": "TSTypeParameter",
846              "name": {
847                "type": "Identifier",
848                "name": "T",
849                "decorators": [],
850                "loc": {
851                  "start": {
852                    "line": 19,
853                    "column": 9
854                  },
855                  "end": {
856                    "line": 19,
857                    "column": 10
858                  }
859                }
860              },
861              "loc": {
862                "start": {
863                  "line": 19,
864                  "column": 9
865                },
866                "end": {
867                  "line": 19,
868                  "column": 11
869                }
870              }
871            }
872          ],
873          "loc": {
874            "start": {
875              "line": 19,
876              "column": 8
877            },
878            "end": {
879              "line": 19,
880              "column": 11
881            }
882          }
883        },
884        "superClass": {
885          "type": "ETSTypeReference",
886          "part": {
887            "type": "ETSTypeReferencePart",
888            "name": {
889              "type": "Identifier",
890              "name": "B",
891              "decorators": [],
892              "loc": {
893                "start": {
894                  "line": 19,
895                  "column": 20
896                },
897                "end": {
898                  "line": 19,
899                  "column": 21
900                }
901              }
902            },
903            "typeParams": {
904              "type": "TSTypeParameterInstantiation",
905              "params": [
906                {
907                  "type": "ETSTypeReference",
908                  "part": {
909                    "type": "ETSTypeReferencePart",
910                    "name": {
911                      "type": "Identifier",
912                      "name": "T",
913                      "decorators": [],
914                      "loc": {
915                        "start": {
916                          "line": 19,
917                          "column": 22
918                        },
919                        "end": {
920                          "line": 19,
921                          "column": 23
922                        }
923                      }
924                    },
925                    "loc": {
926                      "start": {
927                        "line": 19,
928                        "column": 22
929                      },
930                      "end": {
931                        "line": 19,
932                        "column": 24
933                      }
934                    }
935                  },
936                  "loc": {
937                    "start": {
938                      "line": 19,
939                      "column": 22
940                    },
941                    "end": {
942                      "line": 19,
943                      "column": 24
944                    }
945                  }
946                }
947              ],
948              "loc": {
949                "start": {
950                  "line": 19,
951                  "column": 21
952                },
953                "end": {
954                  "line": 19,
955                  "column": 24
956                }
957              }
958            },
959            "loc": {
960              "start": {
961                "line": 19,
962                "column": 20
963              },
964              "end": {
965                "line": 19,
966                "column": 26
967              }
968            }
969          },
970          "loc": {
971            "start": {
972              "line": 19,
973              "column": 20
974            },
975            "end": {
976              "line": 19,
977              "column": 26
978            }
979          }
980        },
981        "implements": [],
982        "body": [
983          {
984            "type": "MethodDefinition",
985            "key": {
986              "type": "Identifier",
987              "name": "foo",
988              "decorators": [],
989              "loc": {
990                "start": {
991                  "line": 20,
992                  "column": 12
993                },
994                "end": {
995                  "line": 20,
996                  "column": 15
997                }
998              }
999            },
1000            "kind": "method",
1001            "accessibility": "public",
1002            "static": false,
1003            "optional": false,
1004            "computed": false,
1005            "value": {
1006              "type": "FunctionExpression",
1007              "function": {
1008                "type": "ScriptFunction",
1009                "id": {
1010                  "type": "Identifier",
1011                  "name": "foo",
1012                  "decorators": [],
1013                  "loc": {
1014                    "start": {
1015                      "line": 20,
1016                      "column": 12
1017                    },
1018                    "end": {
1019                      "line": 20,
1020                      "column": 15
1021                    }
1022                  }
1023                },
1024                "generator": false,
1025                "async": false,
1026                "expression": false,
1027                "params": [
1028                  {
1029                    "type": "ETSParameterExpression",
1030                    "name": {
1031                      "type": "Identifier",
1032                      "name": "a",
1033                      "typeAnnotation": {
1034                        "type": "ETSTypeReference",
1035                        "part": {
1036                          "type": "ETSTypeReferencePart",
1037                          "name": {
1038                            "type": "Identifier",
1039                            "name": "T",
1040                            "decorators": [],
1041                            "loc": {
1042                              "start": {
1043                                "line": 20,
1044                                "column": 19
1045                              },
1046                              "end": {
1047                                "line": 20,
1048                                "column": 20
1049                              }
1050                            }
1051                          },
1052                          "loc": {
1053                            "start": {
1054                              "line": 20,
1055                              "column": 19
1056                            },
1057                            "end": {
1058                              "line": 20,
1059                              "column": 21
1060                            }
1061                          }
1062                        },
1063                        "loc": {
1064                          "start": {
1065                            "line": 20,
1066                            "column": 19
1067                          },
1068                          "end": {
1069                            "line": 20,
1070                            "column": 21
1071                          }
1072                        }
1073                      },
1074                      "decorators": [],
1075                      "loc": {
1076                        "start": {
1077                          "line": 20,
1078                          "column": 16
1079                        },
1080                        "end": {
1081                          "line": 20,
1082                          "column": 21
1083                        }
1084                      }
1085                    },
1086                    "loc": {
1087                      "start": {
1088                        "line": 20,
1089                        "column": 16
1090                      },
1091                      "end": {
1092                        "line": 20,
1093                        "column": 21
1094                      }
1095                    }
1096                  },
1097                  {
1098                    "type": "ETSParameterExpression",
1099                    "name": {
1100                      "type": "Identifier",
1101                      "name": "op",
1102                      "typeAnnotation": {
1103                        "type": "ETSUnionType",
1104                        "types": [
1105                          {
1106                            "type": "ETSTypeReference",
1107                            "part": {
1108                              "type": "ETSTypeReferencePart",
1109                              "name": {
1110                                "type": "Identifier",
1111                                "name": "T",
1112                                "decorators": [],
1113                                "loc": {
1114                                  "start": {
1115                                    "line": 20,
1116                                    "column": 27
1117                                  },
1118                                  "end": {
1119                                    "line": 20,
1120                                    "column": 28
1121                                  }
1122                                }
1123                              },
1124                              "loc": {
1125                                "start": {
1126                                  "line": 20,
1127                                  "column": 27
1128                                },
1129                                "end": {
1130                                  "line": 20,
1131                                  "column": 29
1132                                }
1133                              }
1134                            },
1135                            "loc": {
1136                              "start": {
1137                                "line": 20,
1138                                "column": 27
1139                              },
1140                              "end": {
1141                                "line": 20,
1142                                "column": 29
1143                              }
1144                            }
1145                          },
1146                          {
1147                            "type": "ETSUndefinedType",
1148                            "loc": {
1149                              "start": {
1150                                "line": 20,
1151                                "column": 24
1152                              },
1153                              "end": {
1154                                "line": 20,
1155                                "column": 25
1156                              }
1157                            }
1158                          }
1159                        ],
1160                        "loc": {
1161                          "start": {
1162                            "line": 20,
1163                            "column": 27
1164                          },
1165                          "end": {
1166                            "line": 20,
1167                            "column": 29
1168                          }
1169                        }
1170                      },
1171                      "decorators": [],
1172                      "loc": {
1173                        "start": {
1174                          "line": 20,
1175                          "column": 22
1176                        },
1177                        "end": {
1178                          "line": 20,
1179                          "column": 29
1180                        }
1181                      }
1182                    },
1183                    "loc": {
1184                      "start": {
1185                        "line": 20,
1186                        "column": 22
1187                      },
1188                      "end": {
1189                        "line": 20,
1190                        "column": 29
1191                      }
1192                    }
1193                  }
1194                ],
1195                "returnType": {
1196                  "type": "ETSTypeReference",
1197                  "part": {
1198                    "type": "ETSTypeReferencePart",
1199                    "name": {
1200                      "type": "Identifier",
1201                      "name": "T",
1202                      "decorators": [],
1203                      "loc": {
1204                        "start": {
1205                          "line": 20,
1206                          "column": 31
1207                        },
1208                        "end": {
1209                          "line": 20,
1210                          "column": 32
1211                        }
1212                      }
1213                    },
1214                    "loc": {
1215                      "start": {
1216                        "line": 20,
1217                        "column": 31
1218                      },
1219                      "end": {
1220                        "line": 20,
1221                        "column": 34
1222                      }
1223                    }
1224                  },
1225                  "loc": {
1226                    "start": {
1227                      "line": 20,
1228                      "column": 31
1229                    },
1230                    "end": {
1231                      "line": 20,
1232                      "column": 34
1233                    }
1234                  }
1235                },
1236                "body": {
1237                  "type": "BlockStatement",
1238                  "statements": [
1239                    {
1240                      "type": "ReturnStatement",
1241                      "argument": {
1242                        "type": "Identifier",
1243                        "name": "a",
1244                        "decorators": [],
1245                        "loc": {
1246                          "start": {
1247                            "line": 20,
1248                            "column": 42
1249                          },
1250                          "end": {
1251                            "line": 20,
1252                            "column": 43
1253                          }
1254                        }
1255                      },
1256                      "loc": {
1257                        "start": {
1258                          "line": 20,
1259                          "column": 35
1260                        },
1261                        "end": {
1262                          "line": 20,
1263                          "column": 43
1264                        }
1265                      }
1266                    }
1267                  ],
1268                  "loc": {
1269                    "start": {
1270                      "line": 20,
1271                      "column": 33
1272                    },
1273                    "end": {
1274                      "line": 20,
1275                      "column": 45
1276                    }
1277                  }
1278                },
1279                "loc": {
1280                  "start": {
1281                    "line": 20,
1282                    "column": 15
1283                  },
1284                  "end": {
1285                    "line": 20,
1286                    "column": 45
1287                  }
1288                }
1289              },
1290              "loc": {
1291                "start": {
1292                  "line": 20,
1293                  "column": 15
1294                },
1295                "end": {
1296                  "line": 20,
1297                  "column": 45
1298                }
1299              }
1300            },
1301            "overloads": [
1302              {
1303                "type": "MethodDefinition",
1304                "key": {
1305                  "type": "Identifier",
1306                  "name": "foo",
1307                  "decorators": [],
1308                  "loc": {
1309                    "start": {
1310                      "line": 20,
1311                      "column": 12
1312                    },
1313                    "end": {
1314                      "line": 20,
1315                      "column": 15
1316                    }
1317                  }
1318                },
1319                "kind": "method",
1320                "accessibility": "public",
1321                "static": false,
1322                "optional": false,
1323                "computed": false,
1324                "value": {
1325                  "type": "FunctionExpression",
1326                  "function": {
1327                    "type": "ScriptFunction",
1328                    "id": {
1329                      "type": "Identifier",
1330                      "name": "foo",
1331                      "decorators": [],
1332                      "loc": {
1333                        "start": {
1334                          "line": 20,
1335                          "column": 12
1336                        },
1337                        "end": {
1338                          "line": 20,
1339                          "column": 15
1340                        }
1341                      }
1342                    },
1343                    "generator": false,
1344                    "async": false,
1345                    "expression": false,
1346                    "params": [
1347                      {
1348                        "type": "ETSParameterExpression",
1349                        "name": {
1350                          "type": "Identifier",
1351                          "name": "a",
1352                          "typeAnnotation": {
1353                            "type": "ETSTypeReference",
1354                            "part": {
1355                              "type": "ETSTypeReferencePart",
1356                              "name": {
1357                                "type": "Identifier",
1358                                "name": "T",
1359                                "decorators": [],
1360                                "loc": {
1361                                  "start": {
1362                                    "line": 20,
1363                                    "column": 19
1364                                  },
1365                                  "end": {
1366                                    "line": 20,
1367                                    "column": 20
1368                                  }
1369                                }
1370                              },
1371                              "loc": {
1372                                "start": {
1373                                  "line": 20,
1374                                  "column": 19
1375                                },
1376                                "end": {
1377                                  "line": 20,
1378                                  "column": 21
1379                                }
1380                              }
1381                            },
1382                            "loc": {
1383                              "start": {
1384                                "line": 20,
1385                                "column": 19
1386                              },
1387                              "end": {
1388                                "line": 20,
1389                                "column": 21
1390                              }
1391                            }
1392                          },
1393                          "decorators": [],
1394                          "loc": {
1395                            "start": {
1396                              "line": 20,
1397                              "column": 16
1398                            },
1399                            "end": {
1400                              "line": 20,
1401                              "column": 21
1402                            }
1403                          }
1404                        },
1405                        "loc": {
1406                          "start": {
1407                            "line": 1,
1408                            "column": 1
1409                          },
1410                          "end": {
1411                            "line": 1,
1412                            "column": 1
1413                          }
1414                        }
1415                      }
1416                    ],
1417                    "returnType": {
1418                      "type": "ETSTypeReference",
1419                      "part": {
1420                        "type": "ETSTypeReferencePart",
1421                        "name": {
1422                          "type": "Identifier",
1423                          "name": "T",
1424                          "decorators": [],
1425                          "loc": {
1426                            "start": {
1427                              "line": 20,
1428                              "column": 31
1429                            },
1430                            "end": {
1431                              "line": 20,
1432                              "column": 32
1433                            }
1434                          }
1435                        },
1436                        "loc": {
1437                          "start": {
1438                            "line": 20,
1439                            "column": 31
1440                          },
1441                          "end": {
1442                            "line": 20,
1443                            "column": 34
1444                          }
1445                        }
1446                      },
1447                      "loc": {
1448                        "start": {
1449                          "line": 20,
1450                          "column": 31
1451                        },
1452                        "end": {
1453                          "line": 20,
1454                          "column": 34
1455                        }
1456                      }
1457                    },
1458                    "body": {
1459                      "type": "BlockStatement",
1460                      "statements": [
1461                        {
1462                          "type": "ReturnStatement",
1463                          "argument": {
1464                            "type": "CallExpression",
1465                            "callee": {
1466                              "type": "MemberExpression",
1467                              "object": {
1468                                "type": "ThisExpression",
1469                                "loc": {
1470                                  "start": {
1471                                    "line": 1,
1472                                    "column": 1
1473                                  },
1474                                  "end": {
1475                                    "line": 1,
1476                                    "column": 1
1477                                  }
1478                                }
1479                              },
1480                              "property": {
1481                                "type": "Identifier",
1482                                "name": "foo",
1483                                "decorators": [],
1484                                "loc": {
1485                                  "start": {
1486                                    "line": 1,
1487                                    "column": 1
1488                                  },
1489                                  "end": {
1490                                    "line": 1,
1491                                    "column": 1
1492                                  }
1493                                }
1494                              },
1495                              "computed": false,
1496                              "optional": false,
1497                              "loc": {
1498                                "start": {
1499                                  "line": 1,
1500                                  "column": 1
1501                                },
1502                                "end": {
1503                                  "line": 1,
1504                                  "column": 1
1505                                }
1506                              }
1507                            },
1508                            "arguments": [
1509                              {
1510                                "type": "Identifier",
1511                                "name": "a",
1512                                "decorators": [],
1513                                "loc": {
1514                                  "start": {
1515                                    "line": 20,
1516                                    "column": 16
1517                                  },
1518                                  "end": {
1519                                    "line": 20,
1520                                    "column": 21
1521                                  }
1522                                }
1523                              },
1524                              {
1525                                "type": "UndefinedLiteral",
1526                                "value": "undefined",
1527                                "loc": {
1528                                  "start": {
1529                                    "line": 1,
1530                                    "column": 1
1531                                  },
1532                                  "end": {
1533                                    "line": 1,
1534                                    "column": 1
1535                                  }
1536                                }
1537                              }
1538                            ],
1539                            "optional": false,
1540                            "loc": {
1541                              "start": {
1542                                "line": 20,
1543                                "column": 3
1544                              },
1545                              "end": {
1546                                "line": 20,
1547                                "column": 45
1548                              }
1549                            }
1550                          },
1551                          "loc": {
1552                            "start": {
1553                              "line": 1,
1554                              "column": 1
1555                            },
1556                            "end": {
1557                              "line": 1,
1558                              "column": 1
1559                            }
1560                          }
1561                        }
1562                      ],
1563                      "loc": {
1564                        "start": {
1565                          "line": 1,
1566                          "column": 1
1567                        },
1568                        "end": {
1569                          "line": 1,
1570                          "column": 1
1571                        }
1572                      }
1573                    },
1574                    "loc": {
1575                      "start": {
1576                        "line": 685,
1577                        "column": 1
1578                      },
1579                      "end": {
1580                        "line": 685,
1581                        "column": 1
1582                      }
1583                    }
1584                  },
1585                  "loc": {
1586                    "start": {
1587                      "line": 1,
1588                      "column": 1
1589                    },
1590                    "end": {
1591                      "line": 1,
1592                      "column": 1
1593                    }
1594                  }
1595                },
1596                "overloads": [],
1597                "decorators": [],
1598                "loc": {
1599                  "start": {
1600                    "line": 20,
1601                    "column": 3
1602                  },
1603                  "end": {
1604                    "line": 1,
1605                    "column": 1
1606                  }
1607                }
1608              }
1609            ],
1610            "decorators": [],
1611            "loc": {
1612              "start": {
1613                "line": 20,
1614                "column": 3
1615              },
1616              "end": {
1617                "line": 20,
1618                "column": 45
1619              }
1620            }
1621          },
1622          {
1623            "type": "MethodDefinition",
1624            "key": {
1625              "type": "Identifier",
1626              "name": "constructor",
1627              "decorators": [],
1628              "loc": {
1629                "start": {
1630                  "line": 1,
1631                  "column": 1
1632                },
1633                "end": {
1634                  "line": 1,
1635                  "column": 1
1636                }
1637              }
1638            },
1639            "kind": "constructor",
1640            "static": false,
1641            "optional": false,
1642            "computed": false,
1643            "value": {
1644              "type": "FunctionExpression",
1645              "function": {
1646                "type": "ScriptFunction",
1647                "id": {
1648                  "type": "Identifier",
1649                  "name": "constructor",
1650                  "decorators": [],
1651                  "loc": {
1652                    "start": {
1653                      "line": 1,
1654                      "column": 1
1655                    },
1656                    "end": {
1657                      "line": 1,
1658                      "column": 1
1659                    }
1660                  }
1661                },
1662                "generator": false,
1663                "async": false,
1664                "expression": false,
1665                "params": [],
1666                "body": {
1667                  "type": "BlockStatement",
1668                  "statements": [],
1669                  "loc": {
1670                    "start": {
1671                      "line": 1,
1672                      "column": 1
1673                    },
1674                    "end": {
1675                      "line": 1,
1676                      "column": 1
1677                    }
1678                  }
1679                },
1680                "loc": {
1681                  "start": {
1682                    "line": 1,
1683                    "column": 1
1684                  },
1685                  "end": {
1686                    "line": 1,
1687                    "column": 1
1688                  }
1689                }
1690              },
1691              "loc": {
1692                "start": {
1693                  "line": 1,
1694                  "column": 1
1695                },
1696                "end": {
1697                  "line": 1,
1698                  "column": 1
1699                }
1700              }
1701            },
1702            "overloads": [],
1703            "decorators": [],
1704            "loc": {
1705              "start": {
1706                "line": 21,
1707                "column": 2
1708              },
1709              "end": {
1710                "line": 21,
1711                "column": 2
1712              }
1713            }
1714          }
1715        ],
1716        "loc": {
1717          "start": {
1718            "line": 19,
1719            "column": 25
1720          },
1721          "end": {
1722            "line": 21,
1723            "column": 2
1724          }
1725        }
1726      },
1727      "loc": {
1728        "start": {
1729          "line": 19,
1730          "column": 1
1731        },
1732        "end": {
1733          "line": 21,
1734          "column": 2
1735        }
1736      }
1737    },
1738    {
1739      "type": "ClassDeclaration",
1740      "definition": {
1741        "id": {
1742          "type": "Identifier",
1743          "name": "ETSGLOBAL",
1744          "decorators": [],
1745          "loc": {
1746            "start": {
1747              "line": 1,
1748              "column": 1
1749            },
1750            "end": {
1751              "line": 1,
1752              "column": 1
1753            }
1754          }
1755        },
1756        "superClass": null,
1757        "implements": [],
1758        "body": [
1759          {
1760            "type": "MethodDefinition",
1761            "key": {
1762              "type": "Identifier",
1763              "name": "_$init$_",
1764              "decorators": [],
1765              "loc": {
1766                "start": {
1767                  "line": 1,
1768                  "column": 1
1769                },
1770                "end": {
1771                  "line": 1,
1772                  "column": 1
1773                }
1774              }
1775            },
1776            "kind": "method",
1777            "accessibility": "public",
1778            "static": true,
1779            "optional": false,
1780            "computed": false,
1781            "value": {
1782              "type": "FunctionExpression",
1783              "function": {
1784                "type": "ScriptFunction",
1785                "id": {
1786                  "type": "Identifier",
1787                  "name": "_$init$_",
1788                  "decorators": [],
1789                  "loc": {
1790                    "start": {
1791                      "line": 1,
1792                      "column": 1
1793                    },
1794                    "end": {
1795                      "line": 1,
1796                      "column": 1
1797                    }
1798                  }
1799                },
1800                "generator": false,
1801                "async": false,
1802                "expression": false,
1803                "params": [],
1804                "body": {
1805                  "type": "BlockStatement",
1806                  "statements": [],
1807                  "loc": {
1808                    "start": {
1809                      "line": 1,
1810                      "column": 1
1811                    },
1812                    "end": {
1813                      "line": 1,
1814                      "column": 1
1815                    }
1816                  }
1817                },
1818                "loc": {
1819                  "start": {
1820                    "line": 1,
1821                    "column": 1
1822                  },
1823                  "end": {
1824                    "line": 1,
1825                    "column": 1
1826                  }
1827                }
1828              },
1829              "loc": {
1830                "start": {
1831                  "line": 1,
1832                  "column": 1
1833                },
1834                "end": {
1835                  "line": 1,
1836                  "column": 1
1837                }
1838              }
1839            },
1840            "overloads": [],
1841            "decorators": [],
1842            "loc": {
1843              "start": {
1844                "line": 1,
1845                "column": 1
1846              },
1847              "end": {
1848                "line": 1,
1849                "column": 1
1850              }
1851            }
1852          },
1853          {
1854            "type": "MethodDefinition",
1855            "key": {
1856              "type": "Identifier",
1857              "name": "main",
1858              "decorators": [],
1859              "loc": {
1860                "start": {
1861                  "line": 22,
1862                  "column": 10
1863                },
1864                "end": {
1865                  "line": 22,
1866                  "column": 14
1867                }
1868              }
1869            },
1870            "kind": "method",
1871            "accessibility": "public",
1872            "static": true,
1873            "optional": false,
1874            "computed": false,
1875            "value": {
1876              "type": "FunctionExpression",
1877              "function": {
1878                "type": "ScriptFunction",
1879                "id": {
1880                  "type": "Identifier",
1881                  "name": "main",
1882                  "decorators": [],
1883                  "loc": {
1884                    "start": {
1885                      "line": 22,
1886                      "column": 10
1887                    },
1888                    "end": {
1889                      "line": 22,
1890                      "column": 14
1891                    }
1892                  }
1893                },
1894                "generator": false,
1895                "async": false,
1896                "expression": false,
1897                "params": [],
1898                "body": {
1899                  "type": "BlockStatement",
1900                  "statements": [],
1901                  "loc": {
1902                    "start": {
1903                      "line": 22,
1904                      "column": 16
1905                    },
1906                    "end": {
1907                      "line": 24,
1908                      "column": 2
1909                    }
1910                  }
1911                },
1912                "loc": {
1913                  "start": {
1914                    "line": 22,
1915                    "column": 10
1916                  },
1917                  "end": {
1918                    "line": 24,
1919                    "column": 2
1920                  }
1921                }
1922              },
1923              "loc": {
1924                "start": {
1925                  "line": 22,
1926                  "column": 10
1927                },
1928                "end": {
1929                  "line": 24,
1930                  "column": 2
1931                }
1932              }
1933            },
1934            "overloads": [],
1935            "decorators": [],
1936            "loc": {
1937              "start": {
1938                "line": 22,
1939                "column": 1
1940              },
1941              "end": {
1942                "line": 24,
1943                "column": 2
1944              }
1945            }
1946          }
1947        ],
1948        "loc": {
1949          "start": {
1950            "line": 1,
1951            "column": 1
1952          },
1953          "end": {
1954            "line": 1,
1955            "column": 1
1956          }
1957        }
1958      },
1959      "loc": {
1960        "start": {
1961          "line": 1,
1962          "column": 1
1963        },
1964        "end": {
1965          "line": 1,
1966          "column": 1
1967        }
1968      }
1969    }
1970  ],
1971  "loc": {
1972    "start": {
1973      "line": 1,
1974      "column": 1
1975    },
1976    "end": {
1977      "line": 26,
1978      "column": 1
1979    }
1980  }
1981}
1982