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