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