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