1{
2  "type": "Program",
3  "statements": [
4    {
5      "type": "ClassDeclaration",
6      "definition": {
7        "id": {
8          "type": "Identifier",
9          "name": "Base",
10          "decorators": [],
11          "loc": {
12            "start": {
13              "line": 16,
14              "column": 7
15            },
16            "end": {
17              "line": 16,
18              "column": 11
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": 17,
93                      "column": 27
94                    }
95                  }
96                },
97                "loc": {
98                  "start": {
99                    "line": 17,
100                    "column": 16
101                  },
102                  "end": {
103                    "line": 17,
104                    "column": 27
105                  }
106                }
107              },
108              "loc": {
109                "start": {
110                  "line": 17,
111                  "column": 16
112                },
113                "end": {
114                  "line": 17,
115                  "column": 27
116                }
117              }
118            },
119            "overloads": [],
120            "decorators": [],
121            "loc": {
122              "start": {
123                "line": 17,
124                "column": 5
125              },
126              "end": {
127                "line": 17,
128                "column": 27
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": 18,
217                "column": 2
218              },
219              "end": {
220                "line": 18,
221                "column": 2
222              }
223            }
224          }
225        ],
226        "loc": {
227          "start": {
228            "line": 16,
229            "column": 12
230          },
231          "end": {
232            "line": 18,
233            "column": 2
234          }
235        }
236      },
237      "loc": {
238        "start": {
239          "line": 16,
240          "column": 1
241        },
242        "end": {
243          "line": 18,
244          "column": 2
245        }
246      }
247    },
248    {
249      "type": "ClassDeclaration",
250      "definition": {
251        "id": {
252          "type": "Identifier",
253          "name": "Derived",
254          "decorators": [],
255          "loc": {
256            "start": {
257              "line": 20,
258              "column": 7
259            },
260            "end": {
261              "line": 20,
262              "column": 14
263            }
264          }
265        },
266        "superClass": {
267          "type": "ETSTypeReference",
268          "part": {
269            "type": "ETSTypeReferencePart",
270            "name": {
271              "type": "Identifier",
272              "name": "Base",
273              "decorators": [],
274              "loc": {
275                "start": {
276                  "line": 20,
277                  "column": 23
278                },
279                "end": {
280                  "line": 20,
281                  "column": 27
282                }
283              }
284            },
285            "loc": {
286              "start": {
287                "line": 20,
288                "column": 23
289              },
290              "end": {
291                "line": 20,
292                "column": 29
293              }
294            }
295          },
296          "loc": {
297            "start": {
298              "line": 20,
299              "column": 23
300            },
301            "end": {
302              "line": 20,
303              "column": 29
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": 21,
318                  "column": 14
319                },
320                "end": {
321                  "line": 21,
322                  "column": 17
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": 21,
342                      "column": 14
343                    },
344                    "end": {
345                      "line": 21,
346                      "column": 17
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": 21,
359                      "column": 21
360                    },
361                    "end": {
362                      "line": 21,
363                      "column": 25
364                    }
365                  }
366                },
367                "body": {
368                  "type": "BlockStatement",
369                  "statements": [
370                    {
371                      "type": "ExpressionStatement",
372                      "expression": {
373                        "type": "ETSLaunchExpression",
374                        "expr": {
375                          "type": "CallExpression",
376                          "callee": {
377                            "type": "MemberExpression",
378                            "object": {
379                              "type": "Super",
380                              "loc": {
381                                "start": {
382                                  "line": 22,
383                                  "column": 16
384                                },
385                                "end": {
386                                  "line": 22,
387                                  "column": 21
388                                }
389                              }
390                            },
391                            "property": {
392                              "type": "Identifier",
393                              "name": "foo",
394                              "decorators": [],
395                              "loc": {
396                                "start": {
397                                  "line": 22,
398                                  "column": 22
399                                },
400                                "end": {
401                                  "line": 22,
402                                  "column": 25
403                                }
404                              }
405                            },
406                            "computed": false,
407                            "optional": false,
408                            "loc": {
409                              "start": {
410                                "line": 22,
411                                "column": 16
412                              },
413                              "end": {
414                                "line": 22,
415                                "column": 25
416                              }
417                            }
418                          },
419                          "arguments": [],
420                          "optional": false,
421                          "loc": {
422                            "start": {
423                              "line": 22,
424                              "column": 16
425                            },
426                            "end": {
427                              "line": 22,
428                              "column": 27
429                            }
430                          }
431                        },
432                        "loc": {
433                          "start": {
434                            "line": 22,
435                            "column": 9
436                          },
437                          "end": {
438                            "line": 22,
439                            "column": 27
440                          }
441                        }
442                      },
443                      "loc": {
444                        "start": {
445                          "line": 22,
446                          "column": 9
447                        },
448                        "end": {
449                          "line": 22,
450                          "column": 28
451                        }
452                      }
453                    }
454                  ],
455                  "loc": {
456                    "start": {
457                      "line": 21,
458                      "column": 26
459                    },
460                    "end": {
461                      "line": 23,
462                      "column": 6
463                    }
464                  }
465                },
466                "loc": {
467                  "start": {
468                    "line": 21,
469                    "column": 17
470                  },
471                  "end": {
472                    "line": 23,
473                    "column": 6
474                  }
475                }
476              },
477              "loc": {
478                "start": {
479                  "line": 21,
480                  "column": 17
481                },
482                "end": {
483                  "line": 23,
484                  "column": 6
485                }
486              }
487            },
488            "overloads": [],
489            "decorators": [],
490            "loc": {
491              "start": {
492                "line": 21,
493                "column": 5
494              },
495              "end": {
496                "line": 23,
497                "column": 6
498              }
499            }
500          },
501          {
502            "type": "MethodDefinition",
503            "key": {
504              "type": "Identifier",
505              "name": "constructor",
506              "decorators": [],
507              "loc": {
508                "start": {
509                  "line": 1,
510                  "column": 1
511                },
512                "end": {
513                  "line": 1,
514                  "column": 1
515                }
516              }
517            },
518            "kind": "constructor",
519            "static": false,
520            "optional": false,
521            "computed": false,
522            "value": {
523              "type": "FunctionExpression",
524              "function": {
525                "type": "ScriptFunction",
526                "id": {
527                  "type": "Identifier",
528                  "name": "constructor",
529                  "decorators": [],
530                  "loc": {
531                    "start": {
532                      "line": 1,
533                      "column": 1
534                    },
535                    "end": {
536                      "line": 1,
537                      "column": 1
538                    }
539                  }
540                },
541                "generator": false,
542                "async": false,
543                "expression": false,
544                "params": [],
545                "body": {
546                  "type": "BlockStatement",
547                  "statements": [],
548                  "loc": {
549                    "start": {
550                      "line": 1,
551                      "column": 1
552                    },
553                    "end": {
554                      "line": 1,
555                      "column": 1
556                    }
557                  }
558                },
559                "loc": {
560                  "start": {
561                    "line": 1,
562                    "column": 1
563                  },
564                  "end": {
565                    "line": 1,
566                    "column": 1
567                  }
568                }
569              },
570              "loc": {
571                "start": {
572                  "line": 1,
573                  "column": 1
574                },
575                "end": {
576                  "line": 1,
577                  "column": 1
578                }
579              }
580            },
581            "overloads": [],
582            "decorators": [],
583            "loc": {
584              "start": {
585                "line": 24,
586                "column": 2
587              },
588              "end": {
589                "line": 24,
590                "column": 2
591              }
592            }
593          }
594        ],
595        "loc": {
596          "start": {
597            "line": 20,
598            "column": 28
599          },
600          "end": {
601            "line": 24,
602            "column": 2
603          }
604        }
605      },
606      "loc": {
607        "start": {
608          "line": 20,
609          "column": 1
610        },
611        "end": {
612          "line": 24,
613          "column": 2
614        }
615      }
616    },
617    {
618      "type": "ClassDeclaration",
619      "definition": {
620        "id": {
621          "type": "Identifier",
622          "name": "ETSGLOBAL",
623          "decorators": [],
624          "loc": {
625            "start": {
626              "line": 1,
627              "column": 1
628            },
629            "end": {
630              "line": 1,
631              "column": 1
632            }
633          }
634        },
635        "superClass": null,
636        "implements": [],
637        "body": [
638          {
639            "type": "MethodDefinition",
640            "key": {
641              "type": "Identifier",
642              "name": "_$init$_",
643              "decorators": [],
644              "loc": {
645                "start": {
646                  "line": 1,
647                  "column": 1
648                },
649                "end": {
650                  "line": 1,
651                  "column": 1
652                }
653              }
654            },
655            "kind": "method",
656            "accessibility": "public",
657            "static": true,
658            "optional": false,
659            "computed": false,
660            "value": {
661              "type": "FunctionExpression",
662              "function": {
663                "type": "ScriptFunction",
664                "id": {
665                  "type": "Identifier",
666                  "name": "_$init$_",
667                  "decorators": [],
668                  "loc": {
669                    "start": {
670                      "line": 1,
671                      "column": 1
672                    },
673                    "end": {
674                      "line": 1,
675                      "column": 1
676                    }
677                  }
678                },
679                "generator": false,
680                "async": false,
681                "expression": false,
682                "params": [],
683                "body": {
684                  "type": "BlockStatement",
685                  "statements": [],
686                  "loc": {
687                    "start": {
688                      "line": 1,
689                      "column": 1
690                    },
691                    "end": {
692                      "line": 1,
693                      "column": 1
694                    }
695                  }
696                },
697                "loc": {
698                  "start": {
699                    "line": 1,
700                    "column": 1
701                  },
702                  "end": {
703                    "line": 1,
704                    "column": 1
705                  }
706                }
707              },
708              "loc": {
709                "start": {
710                  "line": 1,
711                  "column": 1
712                },
713                "end": {
714                  "line": 1,
715                  "column": 1
716                }
717              }
718            },
719            "overloads": [],
720            "decorators": [],
721            "loc": {
722              "start": {
723                "line": 1,
724                "column": 1
725              },
726              "end": {
727                "line": 1,
728                "column": 1
729              }
730            }
731          }
732        ],
733        "loc": {
734          "start": {
735            "line": 1,
736            "column": 1
737          },
738          "end": {
739            "line": 1,
740            "column": 1
741          }
742        }
743      },
744      "loc": {
745        "start": {
746          "line": 1,
747          "column": 1
748        },
749        "end": {
750          "line": 1,
751          "column": 1
752        }
753      }
754    }
755  ],
756  "loc": {
757    "start": {
758      "line": 1,
759      "column": 1
760    },
761    "end": {
762      "line": 25,
763      "column": 1
764    }
765  }
766}
767