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                  {
71                    "type": "ETSParameterExpression",
72                    "name": {
73                      "type": "Identifier",
74                      "name": "f",
75                      "typeAnnotation": {
76                        "type": "ETSFunctionType",
77                        "params": [],
78                        "returnType": {
79                          "type": "ETSPrimitiveType",
80                          "loc": {
81                            "start": {
82                              "line": 17,
83                              "column": 24
84                            },
85                            "end": {
86                              "line": 17,
87                              "column": 28
88                            }
89                          }
90                        }
91                        "throwMarker": "throws",
92                        "loc": {
93                          "start": {
94                            "line": 17,
95                            "column": 18
96                          },
97                          "end": {
98                            "line": 17,
99                            "column": 28
100                          }
101                        }
102                      },
103                      "decorators": [],
104                      "loc": {
105                        "start": {
106                          "line": 17,
107                          "column": 15
108                        },
109                        "end": {
110                          "line": 17,
111                          "column": 28
112                        }
113                      }
114                    },
115                    "loc": {
116                      "start": {
117                        "line": 17,
118                        "column": 15
119                      },
120                      "end": {
121                        "line": 17,
122                        "column": 28
123                      }
124                    }
125                  }
126                ],
127                "body": {
128                  "type": "BlockStatement",
129                  "statements": [],
130                  "loc": {
131                    "start": {
132                      "line": 17,
133                      "column": 46
134                    },
135                    "end": {
136                      "line": 17,
137                      "column": 48
138                    }
139                  }
140                }
141                "throwMarker": "rethrows",
142                "loc": {
143                  "start": {
144                    "line": 17,
145                    "column": 14
146                  },
147                  "end": {
148                    "line": 17,
149                    "column": 48
150                  }
151                }
152              },
153              "loc": {
154                "start": {
155                  "line": 17,
156                  "column": 14
157                },
158                "end": {
159                  "line": 17,
160                  "column": 48
161                }
162              }
163            },
164            "overloads": [],
165            "decorators": [],
166            "loc": {
167              "start": {
168                "line": 17,
169                "column": 3
170              },
171              "end": {
172                "line": 17,
173                "column": 48
174              }
175            }
176          }
177        ],
178        "loc": {
179          "start": {
180            "line": 16,
181            "column": 17
182          },
183          "end": {
184            "line": 18,
185            "column": 2
186          }
187        }
188      },
189      "loc": {
190        "start": {
191          "line": 16,
192          "column": 1
193        },
194        "end": {
195          "line": 18,
196          "column": 2
197        }
198      }
199    },
200    {
201      "type": "ClassDeclaration",
202      "definition": {
203        "id": {
204          "type": "Identifier",
205          "name": "ETSGLOBAL",
206          "decorators": [],
207          "loc": {
208            "start": {
209              "line": 1,
210              "column": 1
211            },
212            "end": {
213              "line": 1,
214              "column": 1
215            }
216          }
217        },
218        "superClass": null,
219        "implements": [],
220        "body": [
221          {
222            "type": "MethodDefinition",
223            "key": {
224              "type": "Identifier",
225              "name": "_$init$_",
226              "decorators": [],
227              "loc": {
228                "start": {
229                  "line": 1,
230                  "column": 1
231                },
232                "end": {
233                  "line": 1,
234                  "column": 1
235                }
236              }
237            },
238            "kind": "method",
239            "accessibility": "public",
240            "static": true,
241            "optional": false,
242            "computed": false,
243            "value": {
244              "type": "FunctionExpression",
245              "function": {
246                "type": "ScriptFunction",
247                "id": {
248                  "type": "Identifier",
249                  "name": "_$init$_",
250                  "decorators": [],
251                  "loc": {
252                    "start": {
253                      "line": 1,
254                      "column": 1
255                    },
256                    "end": {
257                      "line": 1,
258                      "column": 1
259                    }
260                  }
261                },
262                "generator": false,
263                "async": false,
264                "expression": false,
265                "params": [],
266                "body": {
267                  "type": "BlockStatement",
268                  "statements": [],
269                  "loc": {
270                    "start": {
271                      "line": 1,
272                      "column": 1
273                    },
274                    "end": {
275                      "line": 1,
276                      "column": 1
277                    }
278                  }
279                },
280                "loc": {
281                  "start": {
282                    "line": 1,
283                    "column": 1
284                  },
285                  "end": {
286                    "line": 1,
287                    "column": 1
288                  }
289                }
290              },
291              "loc": {
292                "start": {
293                  "line": 1,
294                  "column": 1
295                },
296                "end": {
297                  "line": 1,
298                  "column": 1
299                }
300              }
301            },
302            "overloads": [],
303            "decorators": [],
304            "loc": {
305              "start": {
306                "line": 1,
307                "column": 1
308              },
309              "end": {
310                "line": 1,
311                "column": 1
312              }
313            }
314          },
315          {
316            "type": "MethodDefinition",
317            "key": {
318              "type": "Identifier",
319              "name": "TestFunction",
320              "decorators": [],
321              "loc": {
322                "start": {
323                  "line": 20,
324                  "column": 10
325                },
326                "end": {
327                  "line": 20,
328                  "column": 22
329                }
330              }
331            },
332            "kind": "method",
333            "accessibility": "public",
334            "static": true,
335            "optional": false,
336            "computed": false,
337            "value": {
338              "type": "FunctionExpression",
339              "function": {
340                "type": "ScriptFunction",
341                "id": {
342                  "type": "Identifier",
343                  "name": "TestFunction",
344                  "decorators": [],
345                  "loc": {
346                    "start": {
347                      "line": 20,
348                      "column": 10
349                    },
350                    "end": {
351                      "line": 20,
352                      "column": 22
353                    }
354                  }
355                },
356                "generator": false,
357                "async": false,
358                "expression": false,
359                "params": [],
360                "returnType": {
361                  "type": "ETSPrimitiveType",
362                  "loc": {
363                    "start": {
364                      "line": 20,
365                      "column": 26
366                    },
367                    "end": {
368                      "line": 20,
369                      "column": 30
370                    }
371                  }
372                },
373                "body": {
374                  "type": "BlockStatement",
375                  "statements": [],
376                  "loc": {
377                    "start": {
378                      "line": 20,
379                      "column": 38
380                    },
381                    "end": {
382                      "line": 20,
383                      "column": 40
384                    }
385                  }
386                }
387                "throwMarker": "throws",
388                "loc": {
389                  "start": {
390                    "line": 20,
391                    "column": 22
392                  },
393                  "end": {
394                    "line": 20,
395                    "column": 40
396                  }
397                }
398              },
399              "loc": {
400                "start": {
401                  "line": 20,
402                  "column": 22
403                },
404                "end": {
405                  "line": 20,
406                  "column": 40
407                }
408              }
409            },
410            "overloads": [],
411            "decorators": [],
412            "loc": {
413              "start": {
414                "line": 20,
415                "column": 1
416              },
417              "end": {
418                "line": 20,
419                "column": 40
420              }
421            }
422          },
423          {
424            "type": "MethodDefinition",
425            "key": {
426              "type": "Identifier",
427              "name": "main",
428              "decorators": [],
429              "loc": {
430                "start": {
431                  "line": 22,
432                  "column": 10
433                },
434                "end": {
435                  "line": 22,
436                  "column": 14
437                }
438              }
439            },
440            "kind": "method",
441            "accessibility": "public",
442            "static": true,
443            "optional": false,
444            "computed": false,
445            "value": {
446              "type": "FunctionExpression",
447              "function": {
448                "type": "ScriptFunction",
449                "id": {
450                  "type": "Identifier",
451                  "name": "main",
452                  "decorators": [],
453                  "loc": {
454                    "start": {
455                      "line": 22,
456                      "column": 10
457                    },
458                    "end": {
459                      "line": 22,
460                      "column": 14
461                    }
462                  }
463                },
464                "generator": false,
465                "async": false,
466                "expression": false,
467                "params": [],
468                "returnType": {
469                  "type": "ETSPrimitiveType",
470                  "loc": {
471                    "start": {
472                      "line": 22,
473                      "column": 18
474                    },
475                    "end": {
476                      "line": 22,
477                      "column": 22
478                    }
479                  }
480                },
481                "body": {
482                  "type": "BlockStatement",
483                  "statements": [
484                    {
485                      "type": "TryStatement",
486                      "block": {
487                        "type": "BlockStatement",
488                        "statements": [
489                          {
490                            "type": "VariableDeclaration",
491                            "declarations": [
492                              {
493                                "type": "VariableDeclarator",
494                                "id": {
495                                  "type": "Identifier",
496                                  "name": "a",
497                                  "decorators": [],
498                                  "loc": {
499                                    "start": {
500                                      "line": 24,
501                                      "column": 9
502                                    },
503                                    "end": {
504                                      "line": 24,
505                                      "column": 10
506                                    }
507                                  }
508                                },
509                                "init": {
510                                  "type": "ETSNewClassInstanceExpression",
511                                  "typeReference": {
512                                    "type": "ETSTypeReference",
513                                    "part": {
514                                      "type": "ETSTypeReferencePart",
515                                      "name": {
516                                        "type": "Identifier",
517                                        "name": "TestClass",
518                                        "decorators": [],
519                                        "loc": {
520                                          "start": {
521                                            "line": 24,
522                                            "column": 17
523                                          },
524                                          "end": {
525                                            "line": 24,
526                                            "column": 26
527                                          }
528                                        }
529                                      },
530                                      "loc": {
531                                        "start": {
532                                          "line": 24,
533                                          "column": 17
534                                        },
535                                        "end": {
536                                          "line": 24,
537                                          "column": 27
538                                        }
539                                      }
540                                    },
541                                    "loc": {
542                                      "start": {
543                                        "line": 24,
544                                        "column": 17
545                                      },
546                                      "end": {
547                                        "line": 24,
548                                        "column": 27
549                                      }
550                                    }
551                                  },
552                                  "arguments": [
553                                    {
554                                      "type": "Identifier",
555                                      "name": "TestFunction",
556                                      "decorators": [],
557                                      "loc": {
558                                        "start": {
559                                          "line": 24,
560                                          "column": 27
561                                        },
562                                        "end": {
563                                          "line": 24,
564                                          "column": 39
565                                        }
566                                      }
567                                    }
568                                  ],
569                                  "loc": {
570                                    "start": {
571                                      "line": 24,
572                                      "column": 13
573                                    },
574                                    "end": {
575                                      "line": 24,
576                                      "column": 41
577                                    }
578                                  }
579                                },
580                                "loc": {
581                                  "start": {
582                                    "line": 24,
583                                    "column": 9
584                                  },
585                                  "end": {
586                                    "line": 24,
587                                    "column": 41
588                                  }
589                                }
590                              }
591                            ],
592                            "kind": "let",
593                            "loc": {
594                              "start": {
595                                "line": 24,
596                                "column": 5
597                              },
598                              "end": {
599                                "line": 24,
600                                "column": 41
601                              }
602                            }
603                          }
604                        ],
605                        "loc": {
606                          "start": {
607                            "line": 23,
608                            "column": 7
609                          },
610                          "end": {
611                            "line": 25,
612                            "column": 4
613                          }
614                        }
615                      },
616                      "handler": [
617                        {
618                          "type": "CatchClause",
619                          "body": {
620                            "type": "BlockStatement",
621                            "statements": [],
622                            "loc": {
623                              "start": {
624                                "line": 25,
625                                "column": 15
626                              },
627                              "end": {
628                                "line": 25,
629                                "column": 17
630                              }
631                            }
632                          },
633                          "param": {
634                            "type": "Identifier",
635                            "name": "e",
636                            "decorators": [],
637                            "loc": {
638                              "start": {
639                                "line": 25,
640                                "column": 12
641                              },
642                              "end": {
643                                "line": 25,
644                                "column": 13
645                              }
646                            }
647                          },
648                          "loc": {
649                            "start": {
650                              "line": 25,
651                              "column": 5
652                            },
653                            "end": {
654                              "line": 25,
655                              "column": 17
656                            }
657                          }
658                        }
659                      ],
660                      "finalizer": null,
661                      "loc": {
662                        "start": {
663                          "line": 23,
664                          "column": 3
665                        },
666                        "end": {
667                          "line": 25,
668                          "column": 17
669                        }
670                      }
671                    }
672                  ],
673                  "loc": {
674                    "start": {
675                      "line": 22,
676                      "column": 23
677                    },
678                    "end": {
679                      "line": 26,
680                      "column": 2
681                    }
682                  }
683                },
684                "loc": {
685                  "start": {
686                    "line": 22,
687                    "column": 14
688                  },
689                  "end": {
690                    "line": 26,
691                    "column": 2
692                  }
693                }
694              },
695              "loc": {
696                "start": {
697                  "line": 22,
698                  "column": 14
699                },
700                "end": {
701                  "line": 26,
702                  "column": 2
703                }
704              }
705            },
706            "overloads": [],
707            "decorators": [],
708            "loc": {
709              "start": {
710                "line": 22,
711                "column": 1
712              },
713              "end": {
714                "line": 26,
715                "column": 2
716              }
717            }
718          }
719        ],
720        "loc": {
721          "start": {
722            "line": 1,
723            "column": 1
724          },
725          "end": {
726            "line": 1,
727            "column": 1
728          }
729        }
730      },
731      "loc": {
732        "start": {
733          "line": 1,
734          "column": 1
735        },
736        "end": {
737          "line": 1,
738          "column": 1
739        }
740      }
741    }
742  ],
743  "loc": {
744    "start": {
745      "line": 1,
746      "column": 1
747    },
748    "end": {
749      "line": 27,
750      "column": 1
751    }
752  }
753}
754