1{
2  "type": "Program",
3  "statements": [
4    {
5      "type": "ClassDeclaration",
6      "definition": {
7        "id": {
8          "type": "Identifier",
9          "name": "MyOverride",
10          "loc": {
11            "start": {
12              "line": 17,
13              "column": 16
14            },
15            "end": {
16              "line": 17,
17              "column": 26
18            }
19          }
20        },
21        "superClass": null,
22        "implements": [],
23        "constructor": {
24          "type": "MethodDefinition",
25          "key": {
26            "type": "Identifier",
27            "name": "constructor",
28            "loc": {
29              "start": {
30                "line": 1,
31                "column": 1
32              },
33              "end": {
34                "line": 1,
35                "column": 1
36              }
37            }
38          },
39          "kind": "constructor",
40          "static": false,
41          "optional": false,
42          "computed": false,
43          "value": {
44            "type": "FunctionExpression",
45            "function": {
46              "type": "ScriptFunction",
47              "id": null,
48              "generator": false,
49              "async": false,
50              "expression": false,
51              "params": [],
52              "body": {
53                "type": "BlockStatement",
54                "statements": [],
55                "loc": {
56                  "start": {
57                    "line": 1,
58                    "column": 1
59                  },
60                  "end": {
61                    "line": 1,
62                    "column": 1
63                  }
64                }
65              },
66              "loc": {
67                "start": {
68                  "line": 1,
69                  "column": 1
70                },
71                "end": {
72                  "line": 1,
73                  "column": 1
74                }
75              }
76            },
77            "loc": {
78              "start": {
79                "line": 1,
80                "column": 1
81              },
82              "end": {
83                "line": 1,
84                "column": 1
85              }
86            }
87          },
88          "overloads": [],
89          "decorators": [],
90          "annotations": [],
91          "loc": {
92            "start": {
93              "line": 17,
94              "column": 10
95            },
96            "end": {
97              "line": 20,
98              "column": 2
99            }
100          }
101        },
102        "body": [
103          {
104            "type": "MethodDefinition",
105            "key": {
106              "type": "Identifier",
107              "name": "foo",
108              "loc": {
109                "start": {
110                  "line": 18,
111                  "column": 14
112                },
113                "end": {
114                  "line": 18,
115                  "column": 17
116                }
117              }
118            },
119            "kind": "method",
120            "abstract": true,
121            "static": false,
122            "optional": false,
123            "computed": false,
124            "value": {
125              "type": "FunctionExpression",
126              "function": {
127                "type": "ScriptFunction",
128                "id": null,
129                "generator": false,
130                "async": false,
131                "expression": false,
132                "params": [],
133                "returnType": {
134                  "type": "TSUnknownKeyword",
135                  "loc": {
136                    "start": {
137                      "line": 18,
138                      "column": 21
139                    },
140                    "end": {
141                      "line": 18,
142                      "column": 28
143                    }
144                  }
145                },
146                "loc": {
147                  "start": {
148                    "line": 18,
149                    "column": 17
150                  },
151                  "end": {
152                    "line": 18,
153                    "column": 29
154                  }
155                }
156              },
157              "loc": {
158                "start": {
159                  "line": 18,
160                  "column": 17
161                },
162                "end": {
163                  "line": 18,
164                  "column": 29
165                }
166              }
167            },
168            "overloads": [],
169            "decorators": [],
170            "annotations": [],
171            "loc": {
172              "start": {
173                "line": 18,
174                "column": 5
175              },
176              "end": {
177                "line": 18,
178                "column": 29
179              }
180            }
181          },
182          {
183            "type": "MethodDefinition",
184            "key": {
185              "type": "Identifier",
186              "name": "bar",
187              "loc": {
188                "start": {
189                  "line": 19,
190                  "column": 14
191                },
192                "end": {
193                  "line": 19,
194                  "column": 17
195                }
196              }
197            },
198            "kind": "method",
199            "abstract": true,
200            "static": false,
201            "optional": false,
202            "computed": false,
203            "value": {
204              "type": "FunctionExpression",
205              "function": {
206                "type": "ScriptFunction",
207                "id": null,
208                "generator": false,
209                "async": false,
210                "expression": false,
211                "params": [],
212                "returnType": {
213                  "type": "TSVoidKeyword",
214                  "loc": {
215                    "start": {
216                      "line": 19,
217                      "column": 21
218                    },
219                    "end": {
220                      "line": 19,
221                      "column": 25
222                    }
223                  }
224                },
225                "loc": {
226                  "start": {
227                    "line": 19,
228                    "column": 17
229                  },
230                  "end": {
231                    "line": 19,
232                    "column": 26
233                  }
234                }
235              },
236              "loc": {
237                "start": {
238                  "line": 19,
239                  "column": 17
240                },
241                "end": {
242                  "line": 19,
243                  "column": 26
244                }
245              }
246            },
247            "overloads": [],
248            "decorators": [],
249            "annotations": [],
250            "loc": {
251              "start": {
252                "line": 19,
253                "column": 5
254              },
255              "end": {
256                "line": 19,
257                "column": 26
258              }
259            }
260          }
261        ],
262        "indexSignatures": [],
263        "loc": {
264          "start": {
265            "line": 17,
266            "column": 27
267          },
268          "end": {
269            "line": 20,
270            "column": 2
271          }
272        }
273      },
274      "decorators": [],
275      "isAnnotationDeclaration": false,
276      "loc": {
277        "start": {
278          "line": 17,
279          "column": 10
280        },
281        "end": {
282          "line": 20,
283          "column": 2
284        }
285      }
286    },
287    {
288      "type": "ClassDeclaration",
289      "definition": {
290        "id": {
291          "type": "Identifier",
292          "name": "SubOverride",
293          "loc": {
294            "start": {
295              "line": 22,
296              "column": 16
297            },
298            "end": {
299              "line": 22,
300              "column": 27
301            }
302          }
303        },
304        "superClass": {
305          "type": "Identifier",
306          "name": "MyOverride",
307          "loc": {
308            "start": {
309              "line": 22,
310              "column": 36
311            },
312            "end": {
313              "line": 22,
314              "column": 46
315            }
316          }
317        },
318        "implements": [],
319        "constructor": {
320          "type": "MethodDefinition",
321          "key": {
322            "type": "Identifier",
323            "name": "constructor",
324            "loc": {
325              "start": {
326                "line": 1,
327                "column": 1
328              },
329              "end": {
330                "line": 1,
331                "column": 1
332              }
333            }
334          },
335          "kind": "constructor",
336          "static": false,
337          "optional": false,
338          "computed": false,
339          "value": {
340            "type": "FunctionExpression",
341            "function": {
342              "type": "ScriptFunction",
343              "id": null,
344              "generator": false,
345              "async": false,
346              "expression": false,
347              "params": [
348                {
349                  "type": "RestElement",
350                  "argument": {
351                    "type": "Identifier",
352                    "name": "args",
353                    "loc": {
354                      "start": {
355                        "line": 1,
356                        "column": 1
357                      },
358                      "end": {
359                        "line": 1,
360                        "column": 1
361                      }
362                    }
363                  },
364                  "loc": {
365                    "start": {
366                      "line": 1,
367                      "column": 1
368                    },
369                    "end": {
370                      "line": 1,
371                      "column": 1
372                    }
373                  }
374                }
375              ],
376              "body": {
377                "type": "BlockStatement",
378                "statements": [
379                  {
380                    "type": "ExpressionStatement",
381                    "expression": {
382                      "type": "CallExpression",
383                      "callee": {
384                        "type": "Super",
385                        "loc": {
386                          "start": {
387                            "line": 1,
388                            "column": 1
389                          },
390                          "end": {
391                            "line": 1,
392                            "column": 1
393                          }
394                        }
395                      },
396                      "arguments": [
397                        {
398                          "type": "SpreadElement",
399                          "argument": {
400                            "type": "Identifier",
401                            "name": "args",
402                            "loc": {
403                              "start": {
404                                "line": 1,
405                                "column": 1
406                              },
407                              "end": {
408                                "line": 1,
409                                "column": 1
410                              }
411                            }
412                          },
413                          "loc": {
414                            "start": {
415                              "line": 1,
416                              "column": 1
417                            },
418                            "end": {
419                              "line": 1,
420                              "column": 1
421                            }
422                          }
423                        }
424                      ],
425                      "optional": false,
426                      "loc": {
427                        "start": {
428                          "line": 1,
429                          "column": 1
430                        },
431                        "end": {
432                          "line": 1,
433                          "column": 1
434                        }
435                      }
436                    },
437                    "loc": {
438                      "start": {
439                        "line": 1,
440                        "column": 1
441                      },
442                      "end": {
443                        "line": 1,
444                        "column": 1
445                      }
446                    }
447                  }
448                ],
449                "loc": {
450                  "start": {
451                    "line": 1,
452                    "column": 1
453                  },
454                  "end": {
455                    "line": 1,
456                    "column": 1
457                  }
458                }
459              },
460              "loc": {
461                "start": {
462                  "line": 1,
463                  "column": 1
464                },
465                "end": {
466                  "line": 1,
467                  "column": 1
468                }
469              }
470            },
471            "loc": {
472              "start": {
473                "line": 1,
474                "column": 1
475              },
476              "end": {
477                "line": 1,
478                "column": 1
479              }
480            }
481          },
482          "overloads": [],
483          "decorators": [],
484          "annotations": [],
485          "loc": {
486            "start": {
487              "line": 22,
488              "column": 10
489            },
490            "end": {
491              "line": 25,
492              "column": 2
493            }
494          }
495        },
496        "body": [
497          {
498            "type": "MethodDefinition",
499            "key": {
500              "type": "Identifier",
501              "name": "foo",
502              "loc": {
503                "start": {
504                  "line": 23,
505                  "column": 23
506                },
507                "end": {
508                  "line": 23,
509                  "column": 26
510                }
511              }
512            },
513            "kind": "method",
514            "abstract": true,
515            "static": false,
516            "optional": false,
517            "override": true,
518            "computed": false,
519            "value": {
520              "type": "FunctionExpression",
521              "function": {
522                "type": "ScriptFunction",
523                "id": null,
524                "generator": false,
525                "async": false,
526                "expression": false,
527                "params": [],
528                "returnType": {
529                  "type": "TSNumberKeyword",
530                  "loc": {
531                    "start": {
532                      "line": 23,
533                      "column": 30
534                    },
535                    "end": {
536                      "line": 23,
537                      "column": 36
538                    }
539                  }
540                },
541                "loc": {
542                  "start": {
543                    "line": 23,
544                    "column": 26
545                  },
546                  "end": {
547                    "line": 23,
548                    "column": 37
549                  }
550                }
551              },
552              "loc": {
553                "start": {
554                  "line": 23,
555                  "column": 26
556                },
557                "end": {
558                  "line": 23,
559                  "column": 37
560                }
561              }
562            },
563            "overloads": [],
564            "decorators": [],
565            "annotations": [],
566            "loc": {
567              "start": {
568                "line": 23,
569                "column": 5
570              },
571              "end": {
572                "line": 23,
573                "column": 37
574              }
575            }
576          },
577          {
578            "type": "MethodDefinition",
579            "key": {
580              "type": "Identifier",
581              "name": "bar",
582              "loc": {
583                "start": {
584                  "line": 24,
585                  "column": 5
586                },
587                "end": {
588                  "line": 24,
589                  "column": 8
590                }
591              }
592            },
593            "kind": "method",
594            "static": false,
595            "optional": false,
596            "computed": false,
597            "value": {
598              "type": "FunctionExpression",
599              "function": {
600                "type": "ScriptFunction",
601                "id": null,
602                "generator": false,
603                "async": false,
604                "expression": false,
605                "params": [],
606                "body": {
607                  "type": "BlockStatement",
608                  "statements": [],
609                  "loc": {
610                    "start": {
611                      "line": 24,
612                      "column": 11
613                    },
614                    "end": {
615                      "line": 24,
616                      "column": 14
617                    }
618                  }
619                },
620                "loc": {
621                  "start": {
622                    "line": 24,
623                    "column": 8
624                  },
625                  "end": {
626                    "line": 24,
627                    "column": 14
628                  }
629                }
630              },
631              "loc": {
632                "start": {
633                  "line": 24,
634                  "column": 8
635                },
636                "end": {
637                  "line": 24,
638                  "column": 14
639                }
640              }
641            },
642            "overloads": [],
643            "decorators": [],
644            "annotations": [],
645            "loc": {
646              "start": {
647                "line": 24,
648                "column": 5
649              },
650              "end": {
651                "line": 24,
652                "column": 14
653              }
654            }
655          }
656        ],
657        "indexSignatures": [],
658        "loc": {
659          "start": {
660            "line": 22,
661            "column": 47
662          },
663          "end": {
664            "line": 25,
665            "column": 2
666          }
667        }
668      },
669      "decorators": [],
670      "isAnnotationDeclaration": false,
671      "loc": {
672        "start": {
673          "line": 22,
674          "column": 10
675        },
676        "end": {
677          "line": 25,
678          "column": 2
679        }
680      }
681    }
682  ],
683  "loc": {
684    "start": {
685      "line": 1,
686      "column": 1
687    },
688    "end": {
689      "line": 25,
690      "column": 2
691    }
692  }
693}
694