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