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