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