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": "B",
147          "decorators": [],
148          "loc": {
149            "start": {
150              "line": 17,
151              "column": 7
152            },
153            "end": {
154              "line": 17,
155              "column": 8
156            }
157          }
158        },
159        "superClass": {
160          "type": "ETSTypeReference",
161          "part": {
162            "type": "ETSTypeReferencePart",
163            "name": {
164              "type": "Identifier",
165              "name": "A",
166              "decorators": [],
167              "loc": {
168                "start": {
169                  "line": 17,
170                  "column": 17
171                },
172                "end": {
173                  "line": 17,
174                  "column": 18
175                }
176              }
177            },
178            "loc": {
179              "start": {
180                "line": 17,
181                "column": 17
182              },
183              "end": {
184                "line": 17,
185                "column": 20
186              }
187            }
188          },
189          "loc": {
190            "start": {
191              "line": 17,
192              "column": 17
193            },
194            "end": {
195              "line": 17,
196              "column": 20
197            }
198          }
199        },
200        "implements": [],
201        "body": [
202          {
203            "type": "MethodDefinition",
204            "key": {
205              "type": "Identifier",
206              "name": "constructor",
207              "decorators": [],
208              "loc": {
209                "start": {
210                  "line": 1,
211                  "column": 1
212                },
213                "end": {
214                  "line": 1,
215                  "column": 1
216                }
217              }
218            },
219            "kind": "constructor",
220            "static": false,
221            "optional": false,
222            "computed": false,
223            "value": {
224              "type": "FunctionExpression",
225              "function": {
226                "type": "ScriptFunction",
227                "id": {
228                  "type": "Identifier",
229                  "name": "constructor",
230                  "decorators": [],
231                  "loc": {
232                    "start": {
233                      "line": 1,
234                      "column": 1
235                    },
236                    "end": {
237                      "line": 1,
238                      "column": 1
239                    }
240                  }
241                },
242                "generator": false,
243                "async": false,
244                "expression": false,
245                "params": [],
246                "body": {
247                  "type": "BlockStatement",
248                  "statements": [],
249                  "loc": {
250                    "start": {
251                      "line": 1,
252                      "column": 1
253                    },
254                    "end": {
255                      "line": 1,
256                      "column": 1
257                    }
258                  }
259                },
260                "loc": {
261                  "start": {
262                    "line": 1,
263                    "column": 1
264                  },
265                  "end": {
266                    "line": 1,
267                    "column": 1
268                  }
269                }
270              },
271              "loc": {
272                "start": {
273                  "line": 1,
274                  "column": 1
275                },
276                "end": {
277                  "line": 1,
278                  "column": 1
279                }
280              }
281            },
282            "overloads": [],
283            "decorators": [],
284            "loc": {
285              "start": {
286                "line": 17,
287                "column": 21
288              },
289              "end": {
290                "line": 17,
291                "column": 21
292              }
293            }
294          }
295        ],
296        "loc": {
297          "start": {
298            "line": 17,
299            "column": 19
300          },
301          "end": {
302            "line": 17,
303            "column": 21
304          }
305        }
306      },
307      "loc": {
308        "start": {
309          "line": 17,
310          "column": 1
311        },
312        "end": {
313          "line": 17,
314          "column": 21
315        }
316      }
317    },
318    {
319      "type": "ClassDeclaration",
320      "definition": {
321        "id": {
322          "type": "Identifier",
323          "name": "ETSGLOBAL",
324          "decorators": [],
325          "loc": {
326            "start": {
327              "line": 1,
328              "column": 1
329            },
330            "end": {
331              "line": 1,
332              "column": 1
333            }
334          }
335        },
336        "superClass": null,
337        "implements": [],
338        "body": [
339          {
340            "type": "MethodDefinition",
341            "key": {
342              "type": "Identifier",
343              "name": "_$init$_",
344              "decorators": [],
345              "loc": {
346                "start": {
347                  "line": 1,
348                  "column": 1
349                },
350                "end": {
351                  "line": 1,
352                  "column": 1
353                }
354              }
355            },
356            "kind": "method",
357            "accessibility": "public",
358            "static": true,
359            "optional": false,
360            "computed": false,
361            "value": {
362              "type": "FunctionExpression",
363              "function": {
364                "type": "ScriptFunction",
365                "id": {
366                  "type": "Identifier",
367                  "name": "_$init$_",
368                  "decorators": [],
369                  "loc": {
370                    "start": {
371                      "line": 1,
372                      "column": 1
373                    },
374                    "end": {
375                      "line": 1,
376                      "column": 1
377                    }
378                  }
379                },
380                "generator": false,
381                "async": false,
382                "expression": false,
383                "params": [],
384                "body": {
385                  "type": "BlockStatement",
386                  "statements": [],
387                  "loc": {
388                    "start": {
389                      "line": 1,
390                      "column": 1
391                    },
392                    "end": {
393                      "line": 1,
394                      "column": 1
395                    }
396                  }
397                },
398                "loc": {
399                  "start": {
400                    "line": 1,
401                    "column": 1
402                  },
403                  "end": {
404                    "line": 1,
405                    "column": 1
406                  }
407                }
408              },
409              "loc": {
410                "start": {
411                  "line": 1,
412                  "column": 1
413                },
414                "end": {
415                  "line": 1,
416                  "column": 1
417                }
418              }
419            },
420            "overloads": [],
421            "decorators": [],
422            "loc": {
423              "start": {
424                "line": 1,
425                "column": 1
426              },
427              "end": {
428                "line": 1,
429                "column": 1
430              }
431            }
432          },
433          {
434            "type": "MethodDefinition",
435            "key": {
436              "type": "Identifier",
437              "name": "fn",
438              "decorators": [],
439              "loc": {
440                "start": {
441                  "line": 19,
442                  "column": 10
443                },
444                "end": {
445                  "line": 19,
446                  "column": 12
447                }
448              }
449            },
450            "kind": "method",
451            "accessibility": "public",
452            "static": true,
453            "optional": false,
454            "computed": false,
455            "value": {
456              "type": "FunctionExpression",
457              "function": {
458                "type": "ScriptFunction",
459                "id": {
460                  "type": "Identifier",
461                  "name": "fn",
462                  "decorators": [],
463                  "loc": {
464                    "start": {
465                      "line": 19,
466                      "column": 10
467                    },
468                    "end": {
469                      "line": 19,
470                      "column": 12
471                    }
472                  }
473                },
474                "generator": false,
475                "async": false,
476                "expression": false,
477                "params": [
478                  {
479                    "type": "ETSParameterExpression",
480                    "name": {
481                      "type": "Identifier",
482                      "name": "x",
483                      "typeAnnotation": {
484                        "type": "ETSTypeReference",
485                        "part": {
486                          "type": "ETSTypeReferencePart",
487                          "name": {
488                            "type": "Identifier",
489                            "name": "T",
490                            "decorators": [],
491                            "loc": {
492                              "start": {
493                                "line": 19,
494                                "column": 18
495                              },
496                              "end": {
497                                "line": 19,
498                                "column": 19
499                              }
500                            }
501                          },
502                          "loc": {
503                            "start": {
504                              "line": 19,
505                              "column": 18
506                            },
507                            "end": {
508                              "line": 19,
509                              "column": 20
510                            }
511                          }
512                        },
513                        "loc": {
514                          "start": {
515                            "line": 19,
516                            "column": 18
517                          },
518                          "end": {
519                            "line": 19,
520                            "column": 20
521                          }
522                        }
523                      },
524                      "decorators": [],
525                      "loc": {
526                        "start": {
527                          "line": 19,
528                          "column": 16
529                        },
530                        "end": {
531                          "line": 19,
532                          "column": 20
533                        }
534                      }
535                    },
536                    "loc": {
537                      "start": {
538                        "line": 19,
539                        "column": 16
540                      },
541                      "end": {
542                        "line": 19,
543                        "column": 20
544                      }
545                    }
546                  }
547                ],
548                "typeParameters": {
549                  "type": "TSTypeParameterDeclaration",
550                  "params": [
551                    {
552                      "type": "TSTypeParameter",
553                      "name": {
554                        "type": "Identifier",
555                        "name": "T",
556                        "decorators": [],
557                        "loc": {
558                          "start": {
559                            "line": 19,
560                            "column": 13
561                          },
562                          "end": {
563                            "line": 19,
564                            "column": 14
565                          }
566                        }
567                      },
568                      "loc": {
569                        "start": {
570                          "line": 19,
571                          "column": 13
572                        },
573                        "end": {
574                          "line": 19,
575                          "column": 15
576                        }
577                      }
578                    }
579                  ],
580                  "loc": {
581                    "start": {
582                      "line": 19,
583                      "column": 12
584                    },
585                    "end": {
586                      "line": 19,
587                      "column": 15
588                    }
589                  }
590                },
591                "body": {
592                  "type": "BlockStatement",
593                  "statements": [],
594                  "loc": {
595                    "start": {
596                      "line": 19,
597                      "column": 21
598                    },
599                    "end": {
600                      "line": 19,
601                      "column": 23
602                    }
603                  }
604                },
605                "loc": {
606                  "start": {
607                    "line": 19,
608                    "column": 12
609                  },
610                  "end": {
611                    "line": 19,
612                    "column": 23
613                  }
614                }
615              },
616              "loc": {
617                "start": {
618                  "line": 19,
619                  "column": 12
620                },
621                "end": {
622                  "line": 19,
623                  "column": 23
624                }
625              }
626            },
627            "overloads": [],
628            "decorators": [],
629            "loc": {
630              "start": {
631                "line": 19,
632                "column": 1
633              },
634              "end": {
635                "line": 19,
636                "column": 23
637              }
638            }
639          },
640          {
641            "type": "MethodDefinition",
642            "key": {
643              "type": "Identifier",
644              "name": "main",
645              "decorators": [],
646              "loc": {
647                "start": {
648                  "line": 21,
649                  "column": 10
650                },
651                "end": {
652                  "line": 21,
653                  "column": 14
654                }
655              }
656            },
657            "kind": "method",
658            "accessibility": "public",
659            "static": true,
660            "optional": false,
661            "computed": false,
662            "value": {
663              "type": "FunctionExpression",
664              "function": {
665                "type": "ScriptFunction",
666                "id": {
667                  "type": "Identifier",
668                  "name": "main",
669                  "decorators": [],
670                  "loc": {
671                    "start": {
672                      "line": 21,
673                      "column": 10
674                    },
675                    "end": {
676                      "line": 21,
677                      "column": 14
678                    }
679                  }
680                },
681                "generator": false,
682                "async": false,
683                "expression": false,
684                "params": [],
685                "returnType": {
686                  "type": "ETSPrimitiveType",
687                  "loc": {
688                    "start": {
689                      "line": 21,
690                      "column": 19
691                    },
692                    "end": {
693                      "line": 21,
694                      "column": 23
695                    }
696                  }
697                },
698                "body": {
699                  "type": "BlockStatement",
700                  "statements": [
701                    {
702                      "type": "VariableDeclaration",
703                      "declarations": [
704                        {
705                          "type": "VariableDeclarator",
706                          "id": {
707                            "type": "Identifier",
708                            "name": "b",
709                            "decorators": [],
710                            "loc": {
711                              "start": {
712                                "line": 22,
713                                "column": 7
714                              },
715                              "end": {
716                                "line": 22,
717                                "column": 8
718                              }
719                            }
720                          },
721                          "init": {
722                            "type": "ETSNewClassInstanceExpression",
723                            "typeReference": {
724                              "type": "ETSTypeReference",
725                              "part": {
726                                "type": "ETSTypeReferencePart",
727                                "name": {
728                                  "type": "Identifier",
729                                  "name": "B",
730                                  "decorators": [],
731                                  "loc": {
732                                    "start": {
733                                      "line": 22,
734                                      "column": 15
735                                    },
736                                    "end": {
737                                      "line": 22,
738                                      "column": 16
739                                    }
740                                  }
741                                },
742                                "loc": {
743                                  "start": {
744                                    "line": 22,
745                                    "column": 15
746                                  },
747                                  "end": {
748                                    "line": 22,
749                                    "column": 17
750                                  }
751                                }
752                              },
753                              "loc": {
754                                "start": {
755                                  "line": 22,
756                                  "column": 15
757                                },
758                                "end": {
759                                  "line": 22,
760                                  "column": 17
761                                }
762                              }
763                            },
764                            "arguments": [],
765                            "loc": {
766                              "start": {
767                                "line": 22,
768                                "column": 11
769                              },
770                              "end": {
771                                "line": 22,
772                                "column": 19
773                              }
774                            }
775                          },
776                          "loc": {
777                            "start": {
778                              "line": 22,
779                              "column": 7
780                            },
781                            "end": {
782                              "line": 22,
783                              "column": 19
784                            }
785                          }
786                        }
787                      ],
788                      "kind": "let",
789                      "loc": {
790                        "start": {
791                          "line": 22,
792                          "column": 3
793                        },
794                        "end": {
795                          "line": 22,
796                          "column": 19
797                        }
798                      }
799                    },
800                    {
801                      "type": "ExpressionStatement",
802                      "expression": {
803                        "type": "CallExpression",
804                        "callee": {
805                          "type": "Identifier",
806                          "name": "fn",
807                          "decorators": [],
808                          "loc": {
809                            "start": {
810                              "line": 24,
811                              "column": 3
812                            },
813                            "end": {
814                              "line": 24,
815                              "column": 5
816                            }
817                          }
818                        },
819                        "arguments": [
820                          {
821                            "type": "Identifier",
822                            "name": "b",
823                            "decorators": [],
824                            "loc": {
825                              "start": {
826                                "line": 24,
827                                "column": 9
828                              },
829                              "end": {
830                                "line": 24,
831                                "column": 10
832                              }
833                            }
834                          }
835                        ],
836                        "optional": false,
837                        "typeParameters": {
838                          "type": "TSTypeParameterInstantiation",
839                          "params": [
840                            {
841                              "type": "ETSTypeReference",
842                              "part": {
843                                "type": "ETSTypeReferencePart",
844                                "name": {
845                                  "type": "Identifier",
846                                  "name": "A",
847                                  "decorators": [],
848                                  "loc": {
849                                    "start": {
850                                      "line": 24,
851                                      "column": 6
852                                    },
853                                    "end": {
854                                      "line": 24,
855                                      "column": 7
856                                    }
857                                  }
858                                },
859                                "loc": {
860                                  "start": {
861                                    "line": 24,
862                                    "column": 6
863                                  },
864                                  "end": {
865                                    "line": 24,
866                                    "column": 8
867                                  }
868                                }
869                              },
870                              "loc": {
871                                "start": {
872                                  "line": 24,
873                                  "column": 6
874                                },
875                                "end": {
876                                  "line": 24,
877                                  "column": 8
878                                }
879                              }
880                            }
881                          ],
882                          "loc": {
883                            "start": {
884                              "line": 24,
885                              "column": 5
886                            },
887                            "end": {
888                              "line": 24,
889                              "column": 8
890                            }
891                          }
892                        },
893                        "loc": {
894                          "start": {
895                            "line": 24,
896                            "column": 3
897                          },
898                          "end": {
899                            "line": 24,
900                            "column": 11
901                          }
902                        }
903                      },
904                      "loc": {
905                        "start": {
906                          "line": 24,
907                          "column": 3
908                        },
909                        "end": {
910                          "line": 24,
911                          "column": 12
912                        }
913                      }
914                    }
915                  ],
916                  "loc": {
917                    "start": {
918                      "line": 21,
919                      "column": 24
920                    },
921                    "end": {
922                      "line": 25,
923                      "column": 2
924                    }
925                  }
926                },
927                "loc": {
928                  "start": {
929                    "line": 21,
930                    "column": 14
931                  },
932                  "end": {
933                    "line": 25,
934                    "column": 2
935                  }
936                }
937              },
938              "loc": {
939                "start": {
940                  "line": 21,
941                  "column": 14
942                },
943                "end": {
944                  "line": 25,
945                  "column": 2
946                }
947              }
948            },
949            "overloads": [],
950            "decorators": [],
951            "loc": {
952              "start": {
953                "line": 21,
954                "column": 1
955              },
956              "end": {
957                "line": 25,
958                "column": 2
959              }
960            }
961          }
962        ],
963        "loc": {
964          "start": {
965            "line": 1,
966            "column": 1
967          },
968          "end": {
969            "line": 1,
970            "column": 1
971          }
972        }
973      },
974      "loc": {
975        "start": {
976          "line": 1,
977          "column": 1
978        },
979        "end": {
980          "line": 1,
981          "column": 1
982        }
983      }
984    }
985  ],
986  "loc": {
987    "start": {
988      "line": 1,
989      "column": 1
990    },
991    "end": {
992      "line": 26,
993      "column": 1
994    }
995  }
996}
997