1{
2  "type": "Program",
3  "statements": [
4    {
5      "type": "ClassDeclaration",
6      "definition": {
7        "id": {
8          "type": "Identifier",
9          "name": "A",
10          "decorators": [],
11          "loc": {
12            "start": {
13              "line": 16,
14              "column": 7
15            },
16            "end": {
17              "line": 16,
18              "column": 8
19            }
20          }
21        },
22        "superClass": null,
23        "implements": [],
24        "body": [
25          {
26            "type": "MethodDefinition",
27            "key": {
28              "type": "Identifier",
29              "name": "foo",
30              "decorators": [],
31              "loc": {
32                "start": {
33                  "line": 17,
34                  "column": 19
35                },
36                "end": {
37                  "line": 17,
38                  "column": 22
39                }
40              }
41            },
42            "kind": "method",
43            "accessibility": "public",
44            "static": true,
45            "optional": false,
46            "computed": false,
47            "value": {
48              "type": "FunctionExpression",
49              "function": {
50                "type": "ScriptFunction",
51                "id": {
52                  "type": "Identifier",
53                  "name": "foo",
54                  "decorators": [],
55                  "loc": {
56                    "start": {
57                      "line": 17,
58                      "column": 19
59                    },
60                    "end": {
61                      "line": 17,
62                      "column": 22
63                    }
64                  }
65                },
66                "generator": false,
67                "async": false,
68                "expression": false,
69                "params": [
70                  {
71                    "type": "ETSParameterExpression",
72                    "name": {
73                      "type": "Identifier",
74                      "name": "arg",
75                      "typeAnnotation": {
76                        "type": "ETSTypeReference",
77                        "part": {
78                          "type": "ETSTypeReferencePart",
79                          "name": {
80                            "type": "Identifier",
81                            "name": "A1",
82                            "decorators": [],
83                            "loc": {
84                              "start": {
85                                "line": 17,
86                                "column": 32
87                              },
88                              "end": {
89                                "line": 17,
90                                "column": 34
91                              }
92                            }
93                          },
94                          "loc": {
95                            "start": {
96                              "line": 17,
97                              "column": 32
98                            },
99                            "end": {
100                              "line": 17,
101                              "column": 35
102                            }
103                          }
104                        },
105                        "loc": {
106                          "start": {
107                            "line": 17,
108                            "column": 32
109                          },
110                          "end": {
111                            "line": 17,
112                            "column": 35
113                          }
114                        }
115                      },
116                      "decorators": [],
117                      "loc": {
118                        "start": {
119                          "line": 17,
120                          "column": 27
121                        },
122                        "end": {
123                          "line": 17,
124                          "column": 35
125                        }
126                      }
127                    },
128                    "loc": {
129                      "start": {
130                        "line": 17,
131                        "column": 27
132                      },
133                      "end": {
134                        "line": 17,
135                        "column": 35
136                      }
137                    }
138                  }
139                ],
140                "returnType": {
141                  "type": "ETSPrimitiveType",
142                  "loc": {
143                    "start": {
144                      "line": 17,
145                      "column": 37
146                    },
147                    "end": {
148                      "line": 17,
149                      "column": 41
150                    }
151                  }
152                },
153                "typeParameters": {
154                  "type": "TSTypeParameterDeclaration",
155                  "params": [
156                    {
157                      "type": "TSTypeParameter",
158                      "name": {
159                        "type": "Identifier",
160                        "name": "A1",
161                        "decorators": [],
162                        "loc": {
163                          "start": {
164                            "line": 17,
165                            "column": 23
166                          },
167                          "end": {
168                            "line": 17,
169                            "column": 25
170                          }
171                        }
172                      },
173                      "loc": {
174                        "start": {
175                          "line": 17,
176                          "column": 23
177                        },
178                        "end": {
179                          "line": 17,
180                          "column": 26
181                        }
182                      }
183                    }
184                  ],
185                  "loc": {
186                    "start": {
187                      "line": 17,
188                      "column": 22
189                    },
190                    "end": {
191                      "line": 17,
192                      "column": 26
193                    }
194                  }
195                },
196                "body": {
197                  "type": "BlockStatement",
198                  "statements": [],
199                  "loc": {
200                    "start": {
201                      "line": 17,
202                      "column": 42
203                    },
204                    "end": {
205                      "line": 17,
206                      "column": 44
207                    }
208                  }
209                },
210                "loc": {
211                  "start": {
212                    "line": 17,
213                    "column": 22
214                  },
215                  "end": {
216                    "line": 17,
217                    "column": 44
218                  }
219                }
220              },
221              "loc": {
222                "start": {
223                  "line": 17,
224                  "column": 22
225                },
226                "end": {
227                  "line": 17,
228                  "column": 44
229                }
230              }
231            },
232            "overloads": [
233              {
234                "type": "MethodDefinition",
235                "key": {
236                  "type": "Identifier",
237                  "name": "foo",
238                  "decorators": [],
239                  "loc": {
240                    "start": {
241                      "line": 18,
242                      "column": 19
243                    },
244                    "end": {
245                      "line": 18,
246                      "column": 22
247                    }
248                  }
249                },
250                "kind": "method",
251                "accessibility": "public",
252                "static": true,
253                "optional": false,
254                "computed": false,
255                "value": {
256                  "type": "FunctionExpression",
257                  "function": {
258                    "type": "ScriptFunction",
259                    "id": {
260                      "type": "Identifier",
261                      "name": "foo",
262                      "decorators": [],
263                      "loc": {
264                        "start": {
265                          "line": 18,
266                          "column": 19
267                        },
268                        "end": {
269                          "line": 18,
270                          "column": 22
271                        }
272                      }
273                    },
274                    "generator": false,
275                    "async": false,
276                    "expression": false,
277                    "params": [
278                      {
279                        "type": "ETSParameterExpression",
280                        "name": {
281                          "type": "Identifier",
282                          "name": "arg1",
283                          "typeAnnotation": {
284                            "type": "ETSTypeReference",
285                            "part": {
286                              "type": "ETSTypeReferencePart",
287                              "name": {
288                                "type": "Identifier",
289                                "name": "A1",
290                                "decorators": [],
291                                "loc": {
292                                  "start": {
293                                    "line": 18,
294                                    "column": 37
295                                  },
296                                  "end": {
297                                    "line": 18,
298                                    "column": 39
299                                  }
300                                }
301                              },
302                              "loc": {
303                                "start": {
304                                  "line": 18,
305                                  "column": 37
306                                },
307                                "end": {
308                                  "line": 18,
309                                  "column": 40
310                                }
311                              }
312                            },
313                            "loc": {
314                              "start": {
315                                "line": 18,
316                                "column": 37
317                              },
318                              "end": {
319                                "line": 18,
320                                "column": 40
321                              }
322                            }
323                          },
324                          "decorators": [],
325                          "loc": {
326                            "start": {
327                              "line": 18,
328                              "column": 31
329                            },
330                            "end": {
331                              "line": 18,
332                              "column": 40
333                            }
334                          }
335                        },
336                        "loc": {
337                          "start": {
338                            "line": 18,
339                            "column": 31
340                          },
341                          "end": {
342                            "line": 18,
343                            "column": 40
344                          }
345                        }
346                      },
347                      {
348                        "type": "ETSParameterExpression",
349                        "name": {
350                          "type": "Identifier",
351                          "name": "arg2",
352                          "typeAnnotation": {
353                            "type": "ETSTypeReference",
354                            "part": {
355                              "type": "ETSTypeReferencePart",
356                              "name": {
357                                "type": "Identifier",
358                                "name": "A2",
359                                "decorators": [],
360                                "loc": {
361                                  "start": {
362                                    "line": 18,
363                                    "column": 47
364                                  },
365                                  "end": {
366                                    "line": 18,
367                                    "column": 49
368                                  }
369                                }
370                              },
371                              "loc": {
372                                "start": {
373                                  "line": 18,
374                                  "column": 47
375                                },
376                                "end": {
377                                  "line": 18,
378                                  "column": 50
379                                }
380                              }
381                            },
382                            "loc": {
383                              "start": {
384                                "line": 18,
385                                "column": 47
386                              },
387                              "end": {
388                                "line": 18,
389                                "column": 50
390                              }
391                            }
392                          },
393                          "decorators": [],
394                          "loc": {
395                            "start": {
396                              "line": 18,
397                              "column": 41
398                            },
399                            "end": {
400                              "line": 18,
401                              "column": 50
402                            }
403                          }
404                        },
405                        "loc": {
406                          "start": {
407                            "line": 18,
408                            "column": 41
409                          },
410                          "end": {
411                            "line": 18,
412                            "column": 50
413                          }
414                        }
415                      }
416                    ],
417                    "returnType": {
418                      "type": "ETSPrimitiveType",
419                      "loc": {
420                        "start": {
421                          "line": 18,
422                          "column": 52
423                        },
424                        "end": {
425                          "line": 18,
426                          "column": 56
427                        }
428                      }
429                    },
430                    "typeParameters": {
431                      "type": "TSTypeParameterDeclaration",
432                      "params": [
433                        {
434                          "type": "TSTypeParameter",
435                          "name": {
436                            "type": "Identifier",
437                            "name": "A1",
438                            "decorators": [],
439                            "loc": {
440                              "start": {
441                                "line": 18,
442                                "column": 23
443                              },
444                              "end": {
445                                "line": 18,
446                                "column": 25
447                              }
448                            }
449                          },
450                          "loc": {
451                            "start": {
452                              "line": 18,
453                              "column": 23
454                            },
455                            "end": {
456                              "line": 18,
457                              "column": 26
458                            }
459                          }
460                        },
461                        {
462                          "type": "TSTypeParameter",
463                          "name": {
464                            "type": "Identifier",
465                            "name": "A2",
466                            "decorators": [],
467                            "loc": {
468                              "start": {
469                                "line": 18,
470                                "column": 27
471                              },
472                              "end": {
473                                "line": 18,
474                                "column": 29
475                              }
476                            }
477                          },
478                          "loc": {
479                            "start": {
480                              "line": 18,
481                              "column": 27
482                            },
483                            "end": {
484                              "line": 18,
485                              "column": 30
486                            }
487                          }
488                        }
489                      ],
490                      "loc": {
491                        "start": {
492                          "line": 18,
493                          "column": 22
494                        },
495                        "end": {
496                          "line": 18,
497                          "column": 30
498                        }
499                      }
500                    },
501                    "body": {
502                      "type": "BlockStatement",
503                      "statements": [],
504                      "loc": {
505                        "start": {
506                          "line": 18,
507                          "column": 57
508                        },
509                        "end": {
510                          "line": 18,
511                          "column": 59
512                        }
513                      }
514                    },
515                    "loc": {
516                      "start": {
517                        "line": 18,
518                        "column": 22
519                      },
520                      "end": {
521                        "line": 18,
522                        "column": 59
523                      }
524                    }
525                  },
526                  "loc": {
527                    "start": {
528                      "line": 18,
529                      "column": 22
530                    },
531                    "end": {
532                      "line": 18,
533                      "column": 59
534                    }
535                  }
536                },
537                "overloads": [],
538                "decorators": [],
539                "loc": {
540                  "start": {
541                    "line": 18,
542                    "column": 5
543                  },
544                  "end": {
545                    "line": 18,
546                    "column": 59
547                  }
548                }
549              }
550            ],
551            "decorators": [],
552            "loc": {
553              "start": {
554                "line": 17,
555                "column": 5
556              },
557              "end": {
558                "line": 17,
559                "column": 44
560              }
561            }
562          },
563          {
564            "type": "MethodDefinition",
565            "key": {
566              "type": "Identifier",
567              "name": "constructor",
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            "kind": "constructor",
581            "static": false,
582            "optional": false,
583            "computed": false,
584            "value": {
585              "type": "FunctionExpression",
586              "function": {
587                "type": "ScriptFunction",
588                "id": {
589                  "type": "Identifier",
590                  "name": "constructor",
591                  "decorators": [],
592                  "loc": {
593                    "start": {
594                      "line": 1,
595                      "column": 1
596                    },
597                    "end": {
598                      "line": 1,
599                      "column": 1
600                    }
601                  }
602                },
603                "generator": false,
604                "async": false,
605                "expression": false,
606                "params": [],
607                "body": {
608                  "type": "BlockStatement",
609                  "statements": [],
610                  "loc": {
611                    "start": {
612                      "line": 1,
613                      "column": 1
614                    },
615                    "end": {
616                      "line": 1,
617                      "column": 1
618                    }
619                  }
620                },
621                "loc": {
622                  "start": {
623                    "line": 1,
624                    "column": 1
625                  },
626                  "end": {
627                    "line": 1,
628                    "column": 1
629                  }
630                }
631              },
632              "loc": {
633                "start": {
634                  "line": 1,
635                  "column": 1
636                },
637                "end": {
638                  "line": 1,
639                  "column": 1
640                }
641              }
642            },
643            "overloads": [],
644            "decorators": [],
645            "loc": {
646              "start": {
647                "line": 19,
648                "column": 2
649              },
650              "end": {
651                "line": 19,
652                "column": 2
653              }
654            }
655          }
656        ],
657        "loc": {
658          "start": {
659            "line": 16,
660            "column": 9
661          },
662          "end": {
663            "line": 19,
664            "column": 2
665          }
666        }
667      },
668      "loc": {
669        "start": {
670          "line": 16,
671          "column": 1
672        },
673        "end": {
674          "line": 19,
675          "column": 2
676        }
677      }
678    },
679    {
680      "type": "ClassDeclaration",
681      "definition": {
682        "id": {
683          "type": "Identifier",
684          "name": "ETSGLOBAL",
685          "decorators": [],
686          "loc": {
687            "start": {
688              "line": 1,
689              "column": 1
690            },
691            "end": {
692              "line": 1,
693              "column": 1
694            }
695          }
696        },
697        "superClass": null,
698        "implements": [],
699        "body": [
700          {
701            "type": "MethodDefinition",
702            "key": {
703              "type": "Identifier",
704              "name": "_$init$_",
705              "decorators": [],
706              "loc": {
707                "start": {
708                  "line": 1,
709                  "column": 1
710                },
711                "end": {
712                  "line": 1,
713                  "column": 1
714                }
715              }
716            },
717            "kind": "method",
718            "accessibility": "public",
719            "static": true,
720            "optional": false,
721            "computed": false,
722            "value": {
723              "type": "FunctionExpression",
724              "function": {
725                "type": "ScriptFunction",
726                "id": {
727                  "type": "Identifier",
728                  "name": "_$init$_",
729                  "decorators": [],
730                  "loc": {
731                    "start": {
732                      "line": 1,
733                      "column": 1
734                    },
735                    "end": {
736                      "line": 1,
737                      "column": 1
738                    }
739                  }
740                },
741                "generator": false,
742                "async": false,
743                "expression": false,
744                "params": [],
745                "body": {
746                  "type": "BlockStatement",
747                  "statements": [],
748                  "loc": {
749                    "start": {
750                      "line": 1,
751                      "column": 1
752                    },
753                    "end": {
754                      "line": 1,
755                      "column": 1
756                    }
757                  }
758                },
759                "loc": {
760                  "start": {
761                    "line": 1,
762                    "column": 1
763                  },
764                  "end": {
765                    "line": 1,
766                    "column": 1
767                  }
768                }
769              },
770              "loc": {
771                "start": {
772                  "line": 1,
773                  "column": 1
774                },
775                "end": {
776                  "line": 1,
777                  "column": 1
778                }
779              }
780            },
781            "overloads": [],
782            "decorators": [],
783            "loc": {
784              "start": {
785                "line": 1,
786                "column": 1
787              },
788              "end": {
789                "line": 1,
790                "column": 1
791              }
792            }
793          },
794          {
795            "type": "MethodDefinition",
796            "key": {
797              "type": "Identifier",
798              "name": "main",
799              "decorators": [],
800              "loc": {
801                "start": {
802                  "line": 21,
803                  "column": 10
804                },
805                "end": {
806                  "line": 21,
807                  "column": 14
808                }
809              }
810            },
811            "kind": "method",
812            "accessibility": "public",
813            "static": true,
814            "optional": false,
815            "computed": false,
816            "value": {
817              "type": "FunctionExpression",
818              "function": {
819                "type": "ScriptFunction",
820                "id": {
821                  "type": "Identifier",
822                  "name": "main",
823                  "decorators": [],
824                  "loc": {
825                    "start": {
826                      "line": 21,
827                      "column": 10
828                    },
829                    "end": {
830                      "line": 21,
831                      "column": 14
832                    }
833                  }
834                },
835                "generator": false,
836                "async": false,
837                "expression": false,
838                "params": [],
839                "returnType": {
840                  "type": "ETSPrimitiveType",
841                  "loc": {
842                    "start": {
843                      "line": 21,
844                      "column": 18
845                    },
846                    "end": {
847                      "line": 21,
848                      "column": 21
849                    }
850                  }
851                },
852                "body": {
853                  "type": "BlockStatement",
854                  "statements": [
855                    {
856                      "type": "ExpressionStatement",
857                      "expression": {
858                        "type": "CallExpression",
859                        "callee": {
860                          "type": "MemberExpression",
861                          "object": {
862                            "type": "Identifier",
863                            "name": "A",
864                            "decorators": [],
865                            "loc": {
866                              "start": {
867                                "line": 22,
868                                "column": 5
869                              },
870                              "end": {
871                                "line": 22,
872                                "column": 6
873                              }
874                            }
875                          },
876                          "property": {
877                            "type": "Identifier",
878                            "name": "foo",
879                            "decorators": [],
880                            "loc": {
881                              "start": {
882                                "line": 22,
883                                "column": 7
884                              },
885                              "end": {
886                                "line": 22,
887                                "column": 10
888                              }
889                            }
890                          },
891                          "computed": false,
892                          "optional": false,
893                          "loc": {
894                            "start": {
895                              "line": 22,
896                              "column": 5
897                            },
898                            "end": {
899                              "line": 22,
900                              "column": 10
901                            }
902                          }
903                        },
904                        "arguments": [
905                          {
906                            "type": "StringLiteral",
907                            "value": "lll",
908                            "loc": {
909                              "start": {
910                                "line": 22,
911                                "column": 11
912                              },
913                              "end": {
914                                "line": 22,
915                                "column": 16
916                              }
917                            }
918                          }
919                        ],
920                        "optional": false,
921                        "loc": {
922                          "start": {
923                            "line": 22,
924                            "column": 5
925                          },
926                          "end": {
927                            "line": 22,
928                            "column": 17
929                          }
930                        }
931                      },
932                      "loc": {
933                        "start": {
934                          "line": 22,
935                          "column": 5
936                        },
937                        "end": {
938                          "line": 22,
939                          "column": 17
940                        }
941                      }
942                    },
943                    {
944                      "type": "ExpressionStatement",
945                      "expression": {
946                        "type": "CallExpression",
947                        "callee": {
948                          "type": "MemberExpression",
949                          "object": {
950                            "type": "Identifier",
951                            "name": "A",
952                            "decorators": [],
953                            "loc": {
954                              "start": {
955                                "line": 23,
956                                "column": 5
957                              },
958                              "end": {
959                                "line": 23,
960                                "column": 6
961                              }
962                            }
963                          },
964                          "property": {
965                            "type": "Identifier",
966                            "name": "foo",
967                            "decorators": [],
968                            "loc": {
969                              "start": {
970                                "line": 23,
971                                "column": 7
972                              },
973                              "end": {
974                                "line": 23,
975                                "column": 10
976                              }
977                            }
978                          },
979                          "computed": false,
980                          "optional": false,
981                          "loc": {
982                            "start": {
983                              "line": 23,
984                              "column": 5
985                            },
986                            "end": {
987                              "line": 23,
988                              "column": 10
989                            }
990                          }
991                        },
992                        "arguments": [
993                          {
994                            "type": "StringLiteral",
995                            "value": "lll",
996                            "loc": {
997                              "start": {
998                                "line": 23,
999                                "column": 11
1000                              },
1001                              "end": {
1002                                "line": 23,
1003                                "column": 16
1004                              }
1005                            }
1006                          },
1007                          {
1008                            "type": "NumberLiteral",
1009                            "value": 1,
1010                            "loc": {
1011                              "start": {
1012                                "line": 23,
1013                                "column": 18
1014                              },
1015                              "end": {
1016                                "line": 23,
1017                                "column": 19
1018                              }
1019                            }
1020                          }
1021                        ],
1022                        "optional": false,
1023                        "loc": {
1024                          "start": {
1025                            "line": 23,
1026                            "column": 5
1027                          },
1028                          "end": {
1029                            "line": 23,
1030                            "column": 20
1031                          }
1032                        }
1033                      },
1034                      "loc": {
1035                        "start": {
1036                          "line": 23,
1037                          "column": 5
1038                        },
1039                        "end": {
1040                          "line": 23,
1041                          "column": 20
1042                        }
1043                      }
1044                    },
1045                    {
1046                      "type": "ReturnStatement",
1047                      "argument": {
1048                        "type": "NumberLiteral",
1049                        "value": 0,
1050                        "loc": {
1051                          "start": {
1052                            "line": 24,
1053                            "column": 12
1054                          },
1055                          "end": {
1056                            "line": 24,
1057                            "column": 13
1058                          }
1059                        }
1060                      },
1061                      "loc": {
1062                        "start": {
1063                          "line": 24,
1064                          "column": 5
1065                        },
1066                        "end": {
1067                          "line": 24,
1068                          "column": 13
1069                        }
1070                      }
1071                    }
1072                  ],
1073                  "loc": {
1074                    "start": {
1075                      "line": 21,
1076                      "column": 22
1077                    },
1078                    "end": {
1079                      "line": 25,
1080                      "column": 2
1081                    }
1082                  }
1083                },
1084                "loc": {
1085                  "start": {
1086                    "line": 21,
1087                    "column": 14
1088                  },
1089                  "end": {
1090                    "line": 25,
1091                    "column": 2
1092                  }
1093                }
1094              },
1095              "loc": {
1096                "start": {
1097                  "line": 21,
1098                  "column": 14
1099                },
1100                "end": {
1101                  "line": 25,
1102                  "column": 2
1103                }
1104              }
1105            },
1106            "overloads": [],
1107            "decorators": [],
1108            "loc": {
1109              "start": {
1110                "line": 21,
1111                "column": 1
1112              },
1113              "end": {
1114                "line": 25,
1115                "column": 2
1116              }
1117            }
1118          }
1119        ],
1120        "loc": {
1121          "start": {
1122            "line": 1,
1123            "column": 1
1124          },
1125          "end": {
1126            "line": 1,
1127            "column": 1
1128          }
1129        }
1130      },
1131      "loc": {
1132        "start": {
1133          "line": 1,
1134          "column": 1
1135        },
1136        "end": {
1137          "line": 1,
1138          "column": 1
1139        }
1140      }
1141    }
1142  ],
1143  "loc": {
1144    "start": {
1145      "line": 1,
1146      "column": 1
1147    },
1148    "end": {
1149      "line": 26,
1150      "column": 1
1151    }
1152  }
1153}
1154