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