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