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