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