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