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