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