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": "constructor",
30              "decorators": [],
31              "loc": {
32                "start": {
33                  "line": 1,
34                  "column": 1
35                },
36                "end": {
37                  "line": 1,
38                  "column": 1
39                }
40              }
41            },
42            "kind": "constructor",
43            "static": false,
44            "optional": false,
45            "computed": false,
46            "value": {
47              "type": "FunctionExpression",
48              "function": {
49                "type": "ScriptFunction",
50                "id": {
51                  "type": "Identifier",
52                  "name": "constructor",
53                  "decorators": [],
54                  "loc": {
55                    "start": {
56                      "line": 1,
57                      "column": 1
58                    },
59                    "end": {
60                      "line": 1,
61                      "column": 1
62                    }
63                  }
64                },
65                "generator": false,
66                "async": false,
67                "expression": false,
68                "params": [],
69                "body": {
70                  "type": "BlockStatement",
71                  "statements": [],
72                  "loc": {
73                    "start": {
74                      "line": 1,
75                      "column": 1
76                    },
77                    "end": {
78                      "line": 1,
79                      "column": 1
80                    }
81                  }
82                },
83                "loc": {
84                  "start": {
85                    "line": 1,
86                    "column": 1
87                  },
88                  "end": {
89                    "line": 1,
90                    "column": 1
91                  }
92                }
93              },
94              "loc": {
95                "start": {
96                  "line": 1,
97                  "column": 1
98                },
99                "end": {
100                  "line": 1,
101                  "column": 1
102                }
103              }
104            },
105            "overloads": [],
106            "decorators": [],
107            "loc": {
108              "start": {
109                "line": 16,
110                "column": 11
111              },
112              "end": {
113                "line": 16,
114                "column": 11
115              }
116            }
117          }
118        ],
119        "loc": {
120          "start": {
121            "line": 16,
122            "column": 9
123          },
124          "end": {
125            "line": 16,
126            "column": 11
127          }
128        }
129      },
130      "loc": {
131        "start": {
132          "line": 16,
133          "column": 1
134        },
135        "end": {
136          "line": 16,
137          "column": 11
138        }
139      }
140    },
141    {
142      "type": "ClassDeclaration",
143      "definition": {
144        "id": {
145          "type": "Identifier",
146          "name": "ETSGLOBAL",
147          "decorators": [],
148          "loc": {
149            "start": {
150              "line": 1,
151              "column": 1
152            },
153            "end": {
154              "line": 1,
155              "column": 1
156            }
157          }
158        },
159        "superClass": null,
160        "implements": [],
161        "body": [
162          {
163            "type": "MethodDefinition",
164            "key": {
165              "type": "Identifier",
166              "name": "_$init$_",
167              "decorators": [],
168              "loc": {
169                "start": {
170                  "line": 1,
171                  "column": 1
172                },
173                "end": {
174                  "line": 1,
175                  "column": 1
176                }
177              }
178            },
179            "kind": "method",
180            "accessibility": "public",
181            "static": true,
182            "optional": false,
183            "computed": false,
184            "value": {
185              "type": "FunctionExpression",
186              "function": {
187                "type": "ScriptFunction",
188                "id": {
189                  "type": "Identifier",
190                  "name": "_$init$_",
191                  "decorators": [],
192                  "loc": {
193                    "start": {
194                      "line": 1,
195                      "column": 1
196                    },
197                    "end": {
198                      "line": 1,
199                      "column": 1
200                    }
201                  }
202                },
203                "generator": false,
204                "async": false,
205                "expression": false,
206                "params": [],
207                "body": {
208                  "type": "BlockStatement",
209                  "statements": [],
210                  "loc": {
211                    "start": {
212                      "line": 1,
213                      "column": 1
214                    },
215                    "end": {
216                      "line": 1,
217                      "column": 1
218                    }
219                  }
220                },
221                "loc": {
222                  "start": {
223                    "line": 1,
224                    "column": 1
225                  },
226                  "end": {
227                    "line": 1,
228                    "column": 1
229                  }
230                }
231              },
232              "loc": {
233                "start": {
234                  "line": 1,
235                  "column": 1
236                },
237                "end": {
238                  "line": 1,
239                  "column": 1
240                }
241              }
242            },
243            "overloads": [],
244            "decorators": [],
245            "loc": {
246              "start": {
247                "line": 1,
248                "column": 1
249              },
250              "end": {
251                "line": 1,
252                "column": 1
253              }
254            }
255          },
256          {
257            "type": "MethodDefinition",
258            "key": {
259              "type": "Identifier",
260              "name": "fn",
261              "decorators": [],
262              "loc": {
263                "start": {
264                  "line": 18,
265                  "column": 10
266                },
267                "end": {
268                  "line": 18,
269                  "column": 12
270                }
271              }
272            },
273            "kind": "method",
274            "accessibility": "public",
275            "static": true,
276            "optional": false,
277            "computed": false,
278            "value": {
279              "type": "FunctionExpression",
280              "function": {
281                "type": "ScriptFunction",
282                "id": {
283                  "type": "Identifier",
284                  "name": "fn",
285                  "decorators": [],
286                  "loc": {
287                    "start": {
288                      "line": 18,
289                      "column": 10
290                    },
291                    "end": {
292                      "line": 18,
293                      "column": 12
294                    }
295                  }
296                },
297                "generator": false,
298                "async": false,
299                "expression": false,
300                "params": [
301                  {
302                    "type": "ETSParameterExpression",
303                    "name": {
304                      "type": "Identifier",
305                      "name": "x",
306                      "typeAnnotation": {
307                        "type": "ETSTypeReference",
308                        "part": {
309                          "type": "ETSTypeReferencePart",
310                          "name": {
311                            "type": "Identifier",
312                            "name": "T",
313                            "decorators": [],
314                            "loc": {
315                              "start": {
316                                "line": 18,
317                                "column": 18
318                              },
319                              "end": {
320                                "line": 18,
321                                "column": 19
322                              }
323                            }
324                          },
325                          "loc": {
326                            "start": {
327                              "line": 18,
328                              "column": 18
329                            },
330                            "end": {
331                              "line": 18,
332                              "column": 20
333                            }
334                          }
335                        },
336                        "loc": {
337                          "start": {
338                            "line": 18,
339                            "column": 18
340                          },
341                          "end": {
342                            "line": 18,
343                            "column": 20
344                          }
345                        }
346                      },
347                      "decorators": [],
348                      "loc": {
349                        "start": {
350                          "line": 18,
351                          "column": 16
352                        },
353                        "end": {
354                          "line": 18,
355                          "column": 20
356                        }
357                      }
358                    },
359                    "loc": {
360                      "start": {
361                        "line": 18,
362                        "column": 16
363                      },
364                      "end": {
365                        "line": 18,
366                        "column": 20
367                      }
368                    }
369                  }
370                ],
371                "typeParameters": {
372                  "type": "TSTypeParameterDeclaration",
373                  "params": [
374                    {
375                      "type": "TSTypeParameter",
376                      "name": {
377                        "type": "Identifier",
378                        "name": "T",
379                        "decorators": [],
380                        "loc": {
381                          "start": {
382                            "line": 18,
383                            "column": 13
384                          },
385                          "end": {
386                            "line": 18,
387                            "column": 14
388                          }
389                        }
390                      },
391                      "loc": {
392                        "start": {
393                          "line": 18,
394                          "column": 13
395                        },
396                        "end": {
397                          "line": 18,
398                          "column": 15
399                        }
400                      }
401                    }
402                  ],
403                  "loc": {
404                    "start": {
405                      "line": 18,
406                      "column": 12
407                    },
408                    "end": {
409                      "line": 18,
410                      "column": 15
411                    }
412                  }
413                },
414                "body": {
415                  "type": "BlockStatement",
416                  "statements": [],
417                  "loc": {
418                    "start": {
419                      "line": 18,
420                      "column": 21
421                    },
422                    "end": {
423                      "line": 18,
424                      "column": 23
425                    }
426                  }
427                },
428                "loc": {
429                  "start": {
430                    "line": 18,
431                    "column": 12
432                  },
433                  "end": {
434                    "line": 18,
435                    "column": 23
436                  }
437                }
438              },
439              "loc": {
440                "start": {
441                  "line": 18,
442                  "column": 12
443                },
444                "end": {
445                  "line": 18,
446                  "column": 23
447                }
448              }
449            },
450            "overloads": [],
451            "decorators": [],
452            "loc": {
453              "start": {
454                "line": 18,
455                "column": 1
456              },
457              "end": {
458                "line": 18,
459                "column": 23
460              }
461            }
462          },
463          {
464            "type": "MethodDefinition",
465            "key": {
466              "type": "Identifier",
467              "name": "main",
468              "decorators": [],
469              "loc": {
470                "start": {
471                  "line": 20,
472                  "column": 10
473                },
474                "end": {
475                  "line": 20,
476                  "column": 14
477                }
478              }
479            },
480            "kind": "method",
481            "accessibility": "public",
482            "static": true,
483            "optional": false,
484            "computed": false,
485            "value": {
486              "type": "FunctionExpression",
487              "function": {
488                "type": "ScriptFunction",
489                "id": {
490                  "type": "Identifier",
491                  "name": "main",
492                  "decorators": [],
493                  "loc": {
494                    "start": {
495                      "line": 20,
496                      "column": 10
497                    },
498                    "end": {
499                      "line": 20,
500                      "column": 14
501                    }
502                  }
503                },
504                "generator": false,
505                "async": false,
506                "expression": false,
507                "params": [],
508                "returnType": {
509                  "type": "ETSPrimitiveType",
510                  "loc": {
511                    "start": {
512                      "line": 20,
513                      "column": 19
514                    },
515                    "end": {
516                      "line": 20,
517                      "column": 23
518                    }
519                  }
520                },
521                "body": {
522                  "type": "BlockStatement",
523                  "statements": [
524                    {
525                      "type": "VariableDeclaration",
526                      "declarations": [
527                        {
528                          "type": "VariableDeclarator",
529                          "id": {
530                            "type": "Identifier",
531                            "name": "a",
532                            "decorators": [],
533                            "loc": {
534                              "start": {
535                                "line": 21,
536                                "column": 7
537                              },
538                              "end": {
539                                "line": 21,
540                                "column": 8
541                              }
542                            }
543                          },
544                          "init": {
545                            "type": "ETSNewClassInstanceExpression",
546                            "typeReference": {
547                              "type": "ETSTypeReference",
548                              "part": {
549                                "type": "ETSTypeReferencePart",
550                                "name": {
551                                  "type": "Identifier",
552                                  "name": "A",
553                                  "decorators": [],
554                                  "loc": {
555                                    "start": {
556                                      "line": 21,
557                                      "column": 15
558                                    },
559                                    "end": {
560                                      "line": 21,
561                                      "column": 16
562                                    }
563                                  }
564                                },
565                                "loc": {
566                                  "start": {
567                                    "line": 21,
568                                    "column": 15
569                                  },
570                                  "end": {
571                                    "line": 21,
572                                    "column": 17
573                                  }
574                                }
575                              },
576                              "loc": {
577                                "start": {
578                                  "line": 21,
579                                  "column": 15
580                                },
581                                "end": {
582                                  "line": 21,
583                                  "column": 17
584                                }
585                              }
586                            },
587                            "arguments": [],
588                            "loc": {
589                              "start": {
590                                "line": 21,
591                                "column": 11
592                              },
593                              "end": {
594                                "line": 21,
595                                "column": 19
596                              }
597                            }
598                          },
599                          "loc": {
600                            "start": {
601                              "line": 21,
602                              "column": 7
603                            },
604                            "end": {
605                              "line": 21,
606                              "column": 19
607                            }
608                          }
609                        }
610                      ],
611                      "kind": "let",
612                      "loc": {
613                        "start": {
614                          "line": 21,
615                          "column": 3
616                        },
617                        "end": {
618                          "line": 21,
619                          "column": 19
620                        }
621                      }
622                    },
623                    {
624                      "type": "ExpressionStatement",
625                      "expression": {
626                        "type": "CallExpression",
627                        "callee": {
628                          "type": "Identifier",
629                          "name": "fn",
630                          "decorators": [],
631                          "loc": {
632                            "start": {
633                              "line": 23,
634                              "column": 3
635                            },
636                            "end": {
637                              "line": 23,
638                              "column": 5
639                            }
640                          }
641                        },
642                        "arguments": [
643                          {
644                            "type": "Identifier",
645                            "name": "a",
646                            "decorators": [],
647                            "loc": {
648                              "start": {
649                                "line": 23,
650                                "column": 9
651                              },
652                              "end": {
653                                "line": 23,
654                                "column": 10
655                              }
656                            }
657                          }
658                        ],
659                        "optional": false,
660                        "typeParameters": {
661                          "type": "TSTypeParameterInstantiation",
662                          "params": [
663                            {
664                              "type": "ETSTypeReference",
665                              "part": {
666                                "type": "ETSTypeReferencePart",
667                                "name": {
668                                  "type": "Identifier",
669                                  "name": "A",
670                                  "decorators": [],
671                                  "loc": {
672                                    "start": {
673                                      "line": 23,
674                                      "column": 6
675                                    },
676                                    "end": {
677                                      "line": 23,
678                                      "column": 7
679                                    }
680                                  }
681                                },
682                                "loc": {
683                                  "start": {
684                                    "line": 23,
685                                    "column": 6
686                                  },
687                                  "end": {
688                                    "line": 23,
689                                    "column": 8
690                                  }
691                                }
692                              },
693                              "loc": {
694                                "start": {
695                                  "line": 23,
696                                  "column": 6
697                                },
698                                "end": {
699                                  "line": 23,
700                                  "column": 8
701                                }
702                              }
703                            }
704                          ],
705                          "loc": {
706                            "start": {
707                              "line": 23,
708                              "column": 5
709                            },
710                            "end": {
711                              "line": 23,
712                              "column": 8
713                            }
714                          }
715                        },
716                        "loc": {
717                          "start": {
718                            "line": 23,
719                            "column": 3
720                          },
721                          "end": {
722                            "line": 23,
723                            "column": 11
724                          }
725                        }
726                      },
727                      "loc": {
728                        "start": {
729                          "line": 23,
730                          "column": 3
731                        },
732                        "end": {
733                          "line": 23,
734                          "column": 12
735                        }
736                      }
737                    }
738                  ],
739                  "loc": {
740                    "start": {
741                      "line": 20,
742                      "column": 24
743                    },
744                    "end": {
745                      "line": 24,
746                      "column": 2
747                    }
748                  }
749                },
750                "loc": {
751                  "start": {
752                    "line": 20,
753                    "column": 14
754                  },
755                  "end": {
756                    "line": 24,
757                    "column": 2
758                  }
759                }
760              },
761              "loc": {
762                "start": {
763                  "line": 20,
764                  "column": 14
765                },
766                "end": {
767                  "line": 24,
768                  "column": 2
769                }
770              }
771            },
772            "overloads": [],
773            "decorators": [],
774            "loc": {
775              "start": {
776                "line": 20,
777                "column": 1
778              },
779              "end": {
780                "line": 24,
781                "column": 2
782              }
783            }
784          }
785        ],
786        "loc": {
787          "start": {
788            "line": 1,
789            "column": 1
790          },
791          "end": {
792            "line": 1,
793            "column": 1
794          }
795        }
796      },
797      "loc": {
798        "start": {
799          "line": 1,
800          "column": 1
801        },
802        "end": {
803          "line": 1,
804          "column": 1
805        }
806      }
807    }
808  ],
809  "loc": {
810    "start": {
811      "line": 1,
812      "column": 1
813    },
814    "end": {
815      "line": 25,
816      "column": 1
817    }
818  }
819}
820