1{
2  "type": "Program",
3  "statements": [
4    {
5      "type": "ClassDeclaration",
6      "definition": {
7        "id": {
8          "type": "Identifier",
9          "name": "B",
10          "decorators": [],
11          "loc": {
12            "start": {
13              "line": 21,
14              "column": 7
15            },
16            "end": {
17              "line": 21,
18              "column": 8
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": 22,
34                  "column": 3
35                },
36                "end": {
37                  "line": 22,
38                  "column": 6
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": 22,
58                      "column": 3
59                    },
60                    "end": {
61                      "line": 22,
62                      "column": 6
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": 22,
75                      "column": 10
76                    },
77                    "end": {
78                      "line": 22,
79                      "column": 14
80                    }
81                  }
82                },
83                "body": {
84                  "type": "BlockStatement",
85                  "statements": [],
86                  "loc": {
87                    "start": {
88                      "line": 22,
89                      "column": 15
90                    },
91                    "end": {
92                      "line": 24,
93                      "column": 4
94                    }
95                  }
96                },
97                "loc": {
98                  "start": {
99                    "line": 22,
100                    "column": 6
101                  },
102                  "end": {
103                    "line": 24,
104                    "column": 4
105                  }
106                }
107              },
108              "loc": {
109                "start": {
110                  "line": 22,
111                  "column": 6
112                },
113                "end": {
114                  "line": 24,
115                  "column": 4
116                }
117              }
118            },
119            "overloads": [],
120            "decorators": [],
121            "loc": {
122              "start": {
123                "line": 22,
124                "column": 3
125              },
126              "end": {
127                "line": 24,
128                "column": 4
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": 25,
217                "column": 2
218              },
219              "end": {
220                "line": 25,
221                "column": 2
222              }
223            }
224          }
225        ],
226        "loc": {
227          "start": {
228            "line": 21,
229            "column": 9
230          },
231          "end": {
232            "line": 25,
233            "column": 2
234          }
235        }
236      },
237      "loc": {
238        "start": {
239          "line": 21,
240          "column": 1
241        },
242        "end": {
243          "line": 25,
244          "column": 2
245        }
246      }
247    },
248    {
249      "type": "ClassDeclaration",
250      "definition": {
251        "id": {
252          "type": "Identifier",
253          "name": "A",
254          "decorators": [],
255          "loc": {
256            "start": {
257              "line": 27,
258              "column": 7
259            },
260            "end": {
261              "line": 27,
262              "column": 8
263            }
264          }
265        },
266        "superClass": {
267          "type": "ETSTypeReference",
268          "part": {
269            "type": "ETSTypeReferencePart",
270            "name": {
271              "type": "Identifier",
272              "name": "B",
273              "decorators": [],
274              "loc": {
275                "start": {
276                  "line": 27,
277                  "column": 17
278                },
279                "end": {
280                  "line": 27,
281                  "column": 18
282                }
283              }
284            },
285            "loc": {
286              "start": {
287                "line": 27,
288                "column": 17
289              },
290              "end": {
291                "line": 27,
292                "column": 20
293              }
294            }
295          },
296          "loc": {
297            "start": {
298              "line": 27,
299              "column": 17
300            },
301            "end": {
302              "line": 27,
303              "column": 20
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": 28,
318                  "column": 3
319                },
320                "end": {
321                  "line": 28,
322                  "column": 6
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": 28,
342                      "column": 3
343                    },
344                    "end": {
345                      "line": 28,
346                      "column": 6
347                    }
348                  }
349                },
350                "generator": false,
351                "async": false,
352                "expression": false,
353                "params": [
354                  {
355                    "type": "ETSParameterExpression",
356                    "name": {
357                      "type": "Identifier",
358                      "name": "a",
359                      "typeAnnotation": {
360                        "type": "ETSPrimitiveType",
361                        "loc": {
362                          "start": {
363                            "line": 28,
364                            "column": 10
365                          },
366                          "end": {
367                            "line": 28,
368                            "column": 13
369                          }
370                        }
371                      },
372                      "decorators": [],
373                      "loc": {
374                        "start": {
375                          "line": 28,
376                          "column": 7
377                        },
378                        "end": {
379                          "line": 28,
380                          "column": 13
381                        }
382                      }
383                    },
384                    "loc": {
385                      "start": {
386                        "line": 28,
387                        "column": 7
388                      },
389                      "end": {
390                        "line": 28,
391                        "column": 13
392                      }
393                    }
394                  },
395                  {
396                    "type": "ETSParameterExpression",
397                    "name": {
398                      "type": "Identifier",
399                      "name": "b",
400                      "typeAnnotation": {
401                        "type": "ETSPrimitiveType",
402                        "loc": {
403                          "start": {
404                            "line": 28,
405                            "column": 18
406                          },
407                          "end": {
408                            "line": 28,
409                            "column": 21
410                          }
411                        }
412                      },
413                      "decorators": [],
414                      "loc": {
415                        "start": {
416                          "line": 28,
417                          "column": 15
418                        },
419                        "end": {
420                          "line": 28,
421                          "column": 21
422                        }
423                      }
424                    },
425                    "loc": {
426                      "start": {
427                        "line": 28,
428                        "column": 15
429                      },
430                      "end": {
431                        "line": 28,
432                        "column": 21
433                      }
434                    }
435                  }
436                ],
437                "returnType": {
438                  "type": "ETSPrimitiveType",
439                  "loc": {
440                    "start": {
441                      "line": 28,
442                      "column": 24
443                    },
444                    "end": {
445                      "line": 28,
446                      "column": 28
447                    }
448                  }
449                },
450                "body": {
451                  "type": "BlockStatement",
452                  "statements": [],
453                  "loc": {
454                    "start": {
455                      "line": 28,
456                      "column": 29
457                    },
458                    "end": {
459                      "line": 30,
460                      "column": 4
461                    }
462                  }
463                },
464                "loc": {
465                  "start": {
466                    "line": 28,
467                    "column": 6
468                  },
469                  "end": {
470                    "line": 30,
471                    "column": 4
472                  }
473                }
474              },
475              "loc": {
476                "start": {
477                  "line": 28,
478                  "column": 6
479                },
480                "end": {
481                  "line": 30,
482                  "column": 4
483                }
484              }
485            },
486            "overloads": [],
487            "decorators": [],
488            "loc": {
489              "start": {
490                "line": 28,
491                "column": 3
492              },
493              "end": {
494                "line": 30,
495                "column": 4
496              }
497            }
498          },
499          {
500            "type": "MethodDefinition",
501            "key": {
502              "type": "Identifier",
503              "name": "bar",
504              "decorators": [],
505              "loc": {
506                "start": {
507                  "line": 32,
508                  "column": 3
509                },
510                "end": {
511                  "line": 32,
512                  "column": 6
513                }
514              }
515            },
516            "kind": "method",
517            "accessibility": "public",
518            "static": false,
519            "optional": false,
520            "computed": false,
521            "value": {
522              "type": "FunctionExpression",
523              "function": {
524                "type": "ScriptFunction",
525                "id": {
526                  "type": "Identifier",
527                  "name": "bar",
528                  "decorators": [],
529                  "loc": {
530                    "start": {
531                      "line": 32,
532                      "column": 3
533                    },
534                    "end": {
535                      "line": 32,
536                      "column": 6
537                    }
538                  }
539                },
540                "generator": false,
541                "async": false,
542                "expression": false,
543                "params": [],
544                "returnType": {
545                  "type": "ETSPrimitiveType",
546                  "loc": {
547                    "start": {
548                      "line": 32,
549                      "column": 10
550                    },
551                    "end": {
552                      "line": 32,
553                      "column": 14
554                    }
555                  }
556                },
557                "body": {
558                  "type": "BlockStatement",
559                  "statements": [
560                    {
561                      "type": "ExpressionStatement",
562                      "expression": {
563                        "type": "CallExpression",
564                        "callee": {
565                          "type": "Identifier",
566                          "name": "foo",
567                          "decorators": [],
568                          "loc": {
569                            "start": {
570                              "line": 33,
571                              "column": 5
572                            },
573                            "end": {
574                              "line": 33,
575                              "column": 8
576                            }
577                          }
578                        },
579                        "arguments": [
580                          {
581                            "type": "NumberLiteral",
582                            "value": 1,
583                            "loc": {
584                              "start": {
585                                "line": 33,
586                                "column": 9
587                              },
588                              "end": {
589                                "line": 33,
590                                "column": 10
591                              }
592                            }
593                          }
594                        ],
595                        "optional": false,
596                        "loc": {
597                          "start": {
598                            "line": 33,
599                            "column": 5
600                          },
601                          "end": {
602                            "line": 33,
603                            "column": 11
604                          }
605                        }
606                      },
607                      "loc": {
608                        "start": {
609                          "line": 33,
610                          "column": 5
611                        },
612                        "end": {
613                          "line": 33,
614                          "column": 12
615                        }
616                      }
617                    }
618                  ],
619                  "loc": {
620                    "start": {
621                      "line": 32,
622                      "column": 15
623                    },
624                    "end": {
625                      "line": 34,
626                      "column": 4
627                    }
628                  }
629                },
630                "loc": {
631                  "start": {
632                    "line": 32,
633                    "column": 6
634                  },
635                  "end": {
636                    "line": 34,
637                    "column": 4
638                  }
639                }
640              },
641              "loc": {
642                "start": {
643                  "line": 32,
644                  "column": 6
645                },
646                "end": {
647                  "line": 34,
648                  "column": 4
649                }
650              }
651            },
652            "overloads": [],
653            "decorators": [],
654            "loc": {
655              "start": {
656                "line": 32,
657                "column": 3
658              },
659              "end": {
660                "line": 34,
661                "column": 4
662              }
663            }
664          },
665          {
666            "type": "MethodDefinition",
667            "key": {
668              "type": "Identifier",
669              "name": "constructor",
670              "decorators": [],
671              "loc": {
672                "start": {
673                  "line": 1,
674                  "column": 1
675                },
676                "end": {
677                  "line": 1,
678                  "column": 1
679                }
680              }
681            },
682            "kind": "constructor",
683            "static": false,
684            "optional": false,
685            "computed": false,
686            "value": {
687              "type": "FunctionExpression",
688              "function": {
689                "type": "ScriptFunction",
690                "id": {
691                  "type": "Identifier",
692                  "name": "constructor",
693                  "decorators": [],
694                  "loc": {
695                    "start": {
696                      "line": 1,
697                      "column": 1
698                    },
699                    "end": {
700                      "line": 1,
701                      "column": 1
702                    }
703                  }
704                },
705                "generator": false,
706                "async": false,
707                "expression": false,
708                "params": [],
709                "body": {
710                  "type": "BlockStatement",
711                  "statements": [],
712                  "loc": {
713                    "start": {
714                      "line": 1,
715                      "column": 1
716                    },
717                    "end": {
718                      "line": 1,
719                      "column": 1
720                    }
721                  }
722                },
723                "loc": {
724                  "start": {
725                    "line": 1,
726                    "column": 1
727                  },
728                  "end": {
729                    "line": 1,
730                    "column": 1
731                  }
732                }
733              },
734              "loc": {
735                "start": {
736                  "line": 1,
737                  "column": 1
738                },
739                "end": {
740                  "line": 1,
741                  "column": 1
742                }
743              }
744            },
745            "overloads": [],
746            "decorators": [],
747            "loc": {
748              "start": {
749                "line": 35,
750                "column": 2
751              },
752              "end": {
753                "line": 35,
754                "column": 2
755              }
756            }
757          }
758        ],
759        "loc": {
760          "start": {
761            "line": 27,
762            "column": 19
763          },
764          "end": {
765            "line": 35,
766            "column": 2
767          }
768        }
769      },
770      "loc": {
771        "start": {
772          "line": 27,
773          "column": 1
774        },
775        "end": {
776          "line": 35,
777          "column": 2
778        }
779      }
780    },
781    {
782      "type": "ClassDeclaration",
783      "definition": {
784        "id": {
785          "type": "Identifier",
786          "name": "ETSGLOBAL",
787          "decorators": [],
788          "loc": {
789            "start": {
790              "line": 1,
791              "column": 1
792            },
793            "end": {
794              "line": 1,
795              "column": 1
796            }
797          }
798        },
799        "superClass": null,
800        "implements": [],
801        "body": [
802          {
803            "type": "MethodDefinition",
804            "key": {
805              "type": "Identifier",
806              "name": "_$init$_",
807              "decorators": [],
808              "loc": {
809                "start": {
810                  "line": 1,
811                  "column": 1
812                },
813                "end": {
814                  "line": 1,
815                  "column": 1
816                }
817              }
818            },
819            "kind": "method",
820            "accessibility": "public",
821            "static": true,
822            "optional": false,
823            "computed": false,
824            "value": {
825              "type": "FunctionExpression",
826              "function": {
827                "type": "ScriptFunction",
828                "id": {
829                  "type": "Identifier",
830                  "name": "_$init$_",
831                  "decorators": [],
832                  "loc": {
833                    "start": {
834                      "line": 1,
835                      "column": 1
836                    },
837                    "end": {
838                      "line": 1,
839                      "column": 1
840                    }
841                  }
842                },
843                "generator": false,
844                "async": false,
845                "expression": false,
846                "params": [],
847                "body": {
848                  "type": "BlockStatement",
849                  "statements": [],
850                  "loc": {
851                    "start": {
852                      "line": 1,
853                      "column": 1
854                    },
855                    "end": {
856                      "line": 1,
857                      "column": 1
858                    }
859                  }
860                },
861                "loc": {
862                  "start": {
863                    "line": 1,
864                    "column": 1
865                  },
866                  "end": {
867                    "line": 1,
868                    "column": 1
869                  }
870                }
871              },
872              "loc": {
873                "start": {
874                  "line": 1,
875                  "column": 1
876                },
877                "end": {
878                  "line": 1,
879                  "column": 1
880                }
881              }
882            },
883            "overloads": [],
884            "decorators": [],
885            "loc": {
886              "start": {
887                "line": 1,
888                "column": 1
889              },
890              "end": {
891                "line": 1,
892                "column": 1
893              }
894            }
895          },
896          {
897            "type": "MethodDefinition",
898            "key": {
899              "type": "Identifier",
900              "name": "foo",
901              "decorators": [],
902              "loc": {
903                "start": {
904                  "line": 17,
905                  "column": 10
906                },
907                "end": {
908                  "line": 17,
909                  "column": 13
910                }
911              }
912            },
913            "kind": "method",
914            "accessibility": "public",
915            "static": true,
916            "optional": false,
917            "computed": false,
918            "value": {
919              "type": "FunctionExpression",
920              "function": {
921                "type": "ScriptFunction",
922                "id": {
923                  "type": "Identifier",
924                  "name": "foo",
925                  "decorators": [],
926                  "loc": {
927                    "start": {
928                      "line": 17,
929                      "column": 10
930                    },
931                    "end": {
932                      "line": 17,
933                      "column": 13
934                    }
935                  }
936                },
937                "generator": false,
938                "async": false,
939                "expression": false,
940                "params": [
941                  {
942                    "type": "ETSParameterExpression",
943                    "name": {
944                      "type": "Identifier",
945                      "name": "a",
946                      "typeAnnotation": {
947                        "type": "ETSPrimitiveType",
948                        "loc": {
949                          "start": {
950                            "line": 17,
951                            "column": 17
952                          },
953                          "end": {
954                            "line": 17,
955                            "column": 20
956                          }
957                        }
958                      },
959                      "decorators": [],
960                      "loc": {
961                        "start": {
962                          "line": 17,
963                          "column": 14
964                        },
965                        "end": {
966                          "line": 17,
967                          "column": 20
968                        }
969                      }
970                    },
971                    "loc": {
972                      "start": {
973                        "line": 17,
974                        "column": 14
975                      },
976                      "end": {
977                        "line": 17,
978                        "column": 20
979                      }
980                    }
981                  }
982                ],
983                "returnType": {
984                  "type": "ETSPrimitiveType",
985                  "loc": {
986                    "start": {
987                      "line": 17,
988                      "column": 23
989                    },
990                    "end": {
991                      "line": 17,
992                      "column": 27
993                    }
994                  }
995                },
996                "body": {
997                  "type": "BlockStatement",
998                  "statements": [],
999                  "loc": {
1000                    "start": {
1001                      "line": 17,
1002                      "column": 28
1003                    },
1004                    "end": {
1005                      "line": 19,
1006                      "column": 2
1007                    }
1008                  }
1009                },
1010                "loc": {
1011                  "start": {
1012                    "line": 17,
1013                    "column": 13
1014                  },
1015                  "end": {
1016                    "line": 19,
1017                    "column": 2
1018                  }
1019                }
1020              },
1021              "loc": {
1022                "start": {
1023                  "line": 17,
1024                  "column": 13
1025                },
1026                "end": {
1027                  "line": 19,
1028                  "column": 2
1029                }
1030              }
1031            },
1032            "overloads": [],
1033            "decorators": [],
1034            "loc": {
1035              "start": {
1036                "line": 17,
1037                "column": 1
1038              },
1039              "end": {
1040                "line": 19,
1041                "column": 2
1042              }
1043            }
1044          }
1045        ],
1046        "loc": {
1047          "start": {
1048            "line": 1,
1049            "column": 1
1050          },
1051          "end": {
1052            "line": 1,
1053            "column": 1
1054          }
1055        }
1056      },
1057      "loc": {
1058        "start": {
1059          "line": 1,
1060          "column": 1
1061        },
1062        "end": {
1063          "line": 1,
1064          "column": 1
1065        }
1066      }
1067    }
1068  ],
1069  "loc": {
1070    "start": {
1071      "line": 1,
1072      "column": 1
1073    },
1074    "end": {
1075      "line": 36,
1076      "column": 1
1077    }
1078  }
1079}
1080