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