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