1{
2  "type": "Program",
3  "statements": [
4    {
5      "type": "ClassDeclaration",
6      "definition": {
7        "id": {
8          "type": "Identifier",
9          "name": "O2",
10          "loc": {
11            "start": {
12              "line": 17,
13              "column": 7
14            },
15            "end": {
16              "line": 17,
17              "column": 9
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": 1
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": 5
112                },
113                "end": {
114                  "line": 18,
115                  "column": 8
116                }
117              }
118            },
119            "kind": "method",
120            "static": false,
121            "optional": false,
122            "computed": false,
123            "value": {
124              "type": "FunctionExpression",
125              "function": {
126                "type": "ScriptFunction",
127                "id": null,
128                "generator": false,
129                "async": false,
130                "expression": false,
131                "params": [
132                  {
133                    "type": "Identifier",
134                    "name": "v",
135                    "typeAnnotation": {
136                      "type": "TSStringKeyword",
137                      "loc": {
138                        "start": {
139                          "line": 18,
140                          "column": 13
141                        },
142                        "end": {
143                          "line": 18,
144                          "column": 19
145                        }
146                      }
147                    },
148                    "loc": {
149                      "start": {
150                        "line": 18,
151                        "column": 10
152                      },
153                      "end": {
154                        "line": 18,
155                        "column": 11
156                      }
157                    }
158                  }
159                ],
160                "body": {
161                  "type": "BlockStatement",
162                  "statements": [],
163                  "loc": {
164                    "start": {
165                      "line": 18,
166                      "column": 21
167                    },
168                    "end": {
169                      "line": 18,
170                      "column": 23
171                    }
172                  }
173                },
174                "loc": {
175                  "start": {
176                    "line": 18,
177                    "column": 9
178                  },
179                  "end": {
180                    "line": 18,
181                    "column": 23
182                  }
183                }
184              },
185              "loc": {
186                "start": {
187                  "line": 18,
188                  "column": 9
189                },
190                "end": {
191                  "line": 18,
192                  "column": 23
193                }
194              }
195            },
196            "overloads": [],
197            "decorators": [],
198            "annotations": [],
199            "loc": {
200              "start": {
201                "line": 18,
202                "column": 5
203              },
204              "end": {
205                "line": 18,
206                "column": 23
207              }
208            }
209          },
210          {
211            "type": "MethodDefinition",
212            "key": {
213              "type": "Identifier",
214              "name": "fooo",
215              "loc": {
216                "start": {
217                  "line": 19,
218                  "column": 5
219                },
220                "end": {
221                  "line": 19,
222                  "column": 9
223                }
224              }
225            },
226            "kind": "method",
227            "static": false,
228            "optional": false,
229            "computed": false,
230            "value": {
231              "type": "FunctionExpression",
232              "function": {
233                "type": "ScriptFunction",
234                "id": null,
235                "generator": false,
236                "async": false,
237                "expression": false,
238                "params": [
239                  {
240                    "type": "Identifier",
241                    "name": "v",
242                    "typeAnnotation": {
243                      "type": "TSStringKeyword",
244                      "loc": {
245                        "start": {
246                          "line": 19,
247                          "column": 14
248                        },
249                        "end": {
250                          "line": 19,
251                          "column": 20
252                        }
253                      }
254                    },
255                    "loc": {
256                      "start": {
257                        "line": 19,
258                        "column": 11
259                      },
260                      "end": {
261                        "line": 19,
262                        "column": 12
263                      }
264                    }
265                  }
266                ],
267                "body": {
268                  "type": "BlockStatement",
269                  "statements": [],
270                  "loc": {
271                    "start": {
272                      "line": 19,
273                      "column": 22
274                    },
275                    "end": {
276                      "line": 19,
277                      "column": 24
278                    }
279                  }
280                },
281                "loc": {
282                  "start": {
283                    "line": 19,
284                    "column": 10
285                  },
286                  "end": {
287                    "line": 19,
288                    "column": 24
289                  }
290                }
291              },
292              "loc": {
293                "start": {
294                  "line": 19,
295                  "column": 10
296                },
297                "end": {
298                  "line": 19,
299                  "column": 24
300                }
301              }
302            },
303            "overloads": [],
304            "decorators": [],
305            "annotations": [],
306            "loc": {
307              "start": {
308                "line": 19,
309                "column": 5
310              },
311              "end": {
312                "line": 19,
313                "column": 24
314              }
315            }
316          }
317        ],
318        "indexSignatures": [],
319        "loc": {
320          "start": {
321            "line": 17,
322            "column": 10
323          },
324          "end": {
325            "line": 20,
326            "column": 2
327          }
328        }
329      },
330      "decorators": [],
331      "isAnnotationDeclaration": false,
332      "loc": {
333        "start": {
334          "line": 17,
335          "column": 1
336        },
337        "end": {
338          "line": 20,
339          "column": 2
340        }
341      }
342    },
343    {
344      "type": "ClassDeclaration",
345      "definition": {
346        "id": {
347          "type": "Identifier",
348          "name": "O3",
349          "loc": {
350            "start": {
351              "line": 22,
352              "column": 7
353            },
354            "end": {
355              "line": 22,
356              "column": 9
357            }
358          }
359        },
360        "superClass": {
361          "type": "Identifier",
362          "name": "O2",
363          "loc": {
364            "start": {
365              "line": 22,
366              "column": 18
367            },
368            "end": {
369              "line": 22,
370              "column": 20
371            }
372          }
373        },
374        "implements": [],
375        "constructor": {
376          "type": "MethodDefinition",
377          "key": {
378            "type": "Identifier",
379            "name": "constructor",
380            "loc": {
381              "start": {
382                "line": 1,
383                "column": 1
384              },
385              "end": {
386                "line": 1,
387                "column": 1
388              }
389            }
390          },
391          "kind": "constructor",
392          "static": false,
393          "optional": false,
394          "computed": false,
395          "value": {
396            "type": "FunctionExpression",
397            "function": {
398              "type": "ScriptFunction",
399              "id": null,
400              "generator": false,
401              "async": false,
402              "expression": false,
403              "params": [
404                {
405                  "type": "RestElement",
406                  "argument": {
407                    "type": "Identifier",
408                    "name": "args",
409                    "loc": {
410                      "start": {
411                        "line": 1,
412                        "column": 1
413                      },
414                      "end": {
415                        "line": 1,
416                        "column": 1
417                      }
418                    }
419                  },
420                  "loc": {
421                    "start": {
422                      "line": 1,
423                      "column": 1
424                    },
425                    "end": {
426                      "line": 1,
427                      "column": 1
428                    }
429                  }
430                }
431              ],
432              "body": {
433                "type": "BlockStatement",
434                "statements": [
435                  {
436                    "type": "ExpressionStatement",
437                    "expression": {
438                      "type": "CallExpression",
439                      "callee": {
440                        "type": "Super",
441                        "loc": {
442                          "start": {
443                            "line": 1,
444                            "column": 1
445                          },
446                          "end": {
447                            "line": 1,
448                            "column": 1
449                          }
450                        }
451                      },
452                      "arguments": [
453                        {
454                          "type": "SpreadElement",
455                          "argument": {
456                            "type": "Identifier",
457                            "name": "args",
458                            "loc": {
459                              "start": {
460                                "line": 1,
461                                "column": 1
462                              },
463                              "end": {
464                                "line": 1,
465                                "column": 1
466                              }
467                            }
468                          },
469                          "loc": {
470                            "start": {
471                              "line": 1,
472                              "column": 1
473                            },
474                            "end": {
475                              "line": 1,
476                              "column": 1
477                            }
478                          }
479                        }
480                      ],
481                      "optional": false,
482                      "loc": {
483                        "start": {
484                          "line": 1,
485                          "column": 1
486                        },
487                        "end": {
488                          "line": 1,
489                          "column": 1
490                        }
491                      }
492                    },
493                    "loc": {
494                      "start": {
495                        "line": 1,
496                        "column": 1
497                      },
498                      "end": {
499                        "line": 1,
500                        "column": 1
501                      }
502                    }
503                  }
504                ],
505                "loc": {
506                  "start": {
507                    "line": 1,
508                    "column": 1
509                  },
510                  "end": {
511                    "line": 1,
512                    "column": 1
513                  }
514                }
515              },
516              "loc": {
517                "start": {
518                  "line": 1,
519                  "column": 1
520                },
521                "end": {
522                  "line": 1,
523                  "column": 1
524                }
525              }
526            },
527            "loc": {
528              "start": {
529                "line": 1,
530                "column": 1
531              },
532              "end": {
533                "line": 1,
534                "column": 1
535              }
536            }
537          },
538          "overloads": [],
539          "decorators": [],
540          "annotations": [],
541          "loc": {
542            "start": {
543              "line": 22,
544              "column": 1
545            },
546            "end": {
547              "line": 25,
548              "column": 2
549            }
550          }
551        },
552        "body": [
553          {
554            "type": "MethodDefinition",
555            "key": {
556              "type": "Identifier",
557              "name": "foo",
558              "loc": {
559                "start": {
560                  "line": 23,
561                  "column": 14
562                },
563                "end": {
564                  "line": 23,
565                  "column": 17
566                }
567              }
568            },
569            "kind": "method",
570            "static": false,
571            "optional": false,
572            "override": true,
573            "computed": false,
574            "value": {
575              "type": "FunctionExpression",
576              "function": {
577                "type": "ScriptFunction",
578                "id": null,
579                "generator": false,
580                "async": false,
581                "expression": false,
582                "params": [
583                  {
584                    "type": "Identifier",
585                    "name": "v",
586                    "typeAnnotation": {
587                      "type": "TSStringKeyword",
588                      "loc": {
589                        "start": {
590                          "line": 23,
591                          "column": 22
592                        },
593                        "end": {
594                          "line": 23,
595                          "column": 28
596                        }
597                      }
598                    },
599                    "loc": {
600                      "start": {
601                        "line": 23,
602                        "column": 19
603                      },
604                      "end": {
605                        "line": 23,
606                        "column": 20
607                      }
608                    }
609                  }
610                ],
611                "body": {
612                  "type": "BlockStatement",
613                  "statements": [],
614                  "loc": {
615                    "start": {
616                      "line": 23,
617                      "column": 30
618                    },
619                    "end": {
620                      "line": 23,
621                      "column": 32
622                    }
623                  }
624                },
625                "loc": {
626                  "start": {
627                    "line": 23,
628                    "column": 18
629                  },
630                  "end": {
631                    "line": 23,
632                    "column": 32
633                  }
634                }
635              },
636              "loc": {
637                "start": {
638                  "line": 23,
639                  "column": 18
640                },
641                "end": {
642                  "line": 23,
643                  "column": 32
644                }
645              }
646            },
647            "overloads": [],
648            "decorators": [],
649            "annotations": [],
650            "loc": {
651              "start": {
652                "line": 23,
653                "column": 5
654              },
655              "end": {
656                "line": 23,
657                "column": 32
658              }
659            }
660          },
661          {
662            "type": "MethodDefinition",
663            "key": {
664              "type": "Identifier",
665              "name": "fooo",
666              "loc": {
667                "start": {
668                  "line": 24,
669                  "column": 5
670                },
671                "end": {
672                  "line": 24,
673                  "column": 9
674                }
675              }
676            },
677            "kind": "method",
678            "static": false,
679            "optional": false,
680            "computed": false,
681            "value": {
682              "type": "FunctionExpression",
683              "function": {
684                "type": "ScriptFunction",
685                "id": null,
686                "generator": false,
687                "async": false,
688                "expression": false,
689                "params": [
690                  {
691                    "type": "Identifier",
692                    "name": "v",
693                    "typeAnnotation": {
694                      "type": "TSStringKeyword",
695                      "loc": {
696                        "start": {
697                          "line": 24,
698                          "column": 14
699                        },
700                        "end": {
701                          "line": 24,
702                          "column": 20
703                        }
704                      }
705                    },
706                    "loc": {
707                      "start": {
708                        "line": 24,
709                        "column": 11
710                      },
711                      "end": {
712                        "line": 24,
713                        "column": 12
714                      }
715                    }
716                  }
717                ],
718                "body": {
719                  "type": "BlockStatement",
720                  "statements": [],
721                  "loc": {
722                    "start": {
723                      "line": 24,
724                      "column": 22
725                    },
726                    "end": {
727                      "line": 24,
728                      "column": 24
729                    }
730                  }
731                },
732                "loc": {
733                  "start": {
734                    "line": 24,
735                    "column": 10
736                  },
737                  "end": {
738                    "line": 24,
739                    "column": 24
740                  }
741                }
742              },
743              "loc": {
744                "start": {
745                  "line": 24,
746                  "column": 10
747                },
748                "end": {
749                  "line": 24,
750                  "column": 24
751                }
752              }
753            },
754            "overloads": [],
755            "decorators": [],
756            "annotations": [],
757            "loc": {
758              "start": {
759                "line": 24,
760                "column": 5
761              },
762              "end": {
763                "line": 24,
764                "column": 24
765              }
766            }
767          }
768        ],
769        "indexSignatures": [],
770        "loc": {
771          "start": {
772            "line": 22,
773            "column": 21
774          },
775          "end": {
776            "line": 25,
777            "column": 2
778          }
779        }
780      },
781      "decorators": [],
782      "isAnnotationDeclaration": false,
783      "loc": {
784        "start": {
785          "line": 22,
786          "column": 1
787        },
788        "end": {
789          "line": 25,
790          "column": 2
791        }
792      }
793    }
794  ],
795  "loc": {
796    "start": {
797      "line": 1,
798      "column": 1
799    },
800    "end": {
801      "line": 26,
802      "column": 1
803    }
804  }
805}
806