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": "foo",
124              "decorators": [],
125              "loc": {
126                "start": {
127                  "line": 16,
128                  "column": 10
129                },
130                "end": {
131                  "line": 16,
132                  "column": 13
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": "foo",
148                  "decorators": [],
149                  "loc": {
150                    "start": {
151                      "line": 16,
152                      "column": 10
153                    },
154                    "end": {
155                      "line": 16,
156                      "column": 13
157                    }
158                  }
159                },
160                "generator": false,
161                "async": false,
162                "expression": false,
163                "params": [
164                  {
165                    "type": "ETSParameterExpression",
166                    "rest parameter": {
167                      "type": "RestElement",
168                      "argument": {
169                        "type": "Identifier",
170                        "name": "a",
171                        "decorators": [],
172                        "loc": {
173                          "start": {
174                            "line": 16,
175                            "column": 17
176                          },
177                          "end": {
178                            "line": 16,
179                            "column": 18
180                          }
181                        }
182                      },
183                      "typeAnnotation": {
184                        "type": "TSArrayType",
185                        "elementType": {
186                          "type": "ETSTypeReference",
187                          "part": {
188                            "type": "ETSTypeReferencePart",
189                            "name": {
190                              "type": "Identifier",
191                              "name": "Int",
192                              "decorators": [],
193                              "loc": {
194                                "start": {
195                                  "line": 16,
196                                  "column": 21
197                                },
198                                "end": {
199                                  "line": 16,
200                                  "column": 24
201                                }
202                              }
203                            },
204                            "loc": {
205                              "start": {
206                                "line": 16,
207                                "column": 21
208                              },
209                              "end": {
210                                "line": 16,
211                                "column": 25
212                              }
213                            }
214                          },
215                          "loc": {
216                            "start": {
217                              "line": 16,
218                              "column": 21
219                            },
220                            "end": {
221                              "line": 16,
222                              "column": 25
223                            }
224                          }
225                        },
226                        "loc": {
227                          "start": {
228                            "line": 16,
229                            "column": 26
230                          },
231                          "end": {
232                            "line": 16,
233                            "column": 27
234                          }
235                        }
236                      },
237                      "loc": {
238                        "start": {
239                          "line": 16,
240                          "column": 14
241                        },
242                        "end": {
243                          "line": 16,
244                          "column": 27
245                        }
246                      }
247                    },
248                    "loc": {
249                      "start": {
250                        "line": 16,
251                        "column": 14
252                      },
253                      "end": {
254                        "line": 16,
255                        "column": 27
256                      }
257                    }
258                  }
259                ],
260                "returnType": {
261                  "type": "ETSTypeReference",
262                  "part": {
263                    "type": "ETSTypeReferencePart",
264                    "name": {
265                      "type": "Identifier",
266                      "name": "Int",
267                      "decorators": [],
268                      "loc": {
269                        "start": {
270                          "line": 16,
271                          "column": 30
272                        },
273                        "end": {
274                          "line": 16,
275                          "column": 33
276                        }
277                      }
278                    },
279                    "loc": {
280                      "start": {
281                        "line": 16,
282                        "column": 30
283                      },
284                      "end": {
285                        "line": 17,
286                        "column": 2
287                      }
288                    }
289                  },
290                  "loc": {
291                    "start": {
292                      "line": 16,
293                      "column": 30
294                    },
295                    "end": {
296                      "line": 17,
297                      "column": 2
298                    }
299                  }
300                },
301                "body": {
302                  "type": "BlockStatement",
303                  "statements": [
304                    {
305                      "type": "ReturnStatement",
306                      "argument": {
307                        "type": "NumberLiteral",
308                        "value": 1,
309                        "loc": {
310                          "start": {
311                            "line": 18,
312                            "column": 12
313                          },
314                          "end": {
315                            "line": 18,
316                            "column": 13
317                          }
318                        }
319                      },
320                      "loc": {
321                        "start": {
322                          "line": 18,
323                          "column": 5
324                        },
325                        "end": {
326                          "line": 18,
327                          "column": 14
328                        }
329                      }
330                    }
331                  ],
332                  "loc": {
333                    "start": {
334                      "line": 17,
335                      "column": 1
336                    },
337                    "end": {
338                      "line": 19,
339                      "column": 2
340                    }
341                  }
342                },
343                "loc": {
344                  "start": {
345                    "line": 16,
346                    "column": 13
347                  },
348                  "end": {
349                    "line": 19,
350                    "column": 2
351                  }
352                }
353              },
354              "loc": {
355                "start": {
356                  "line": 16,
357                  "column": 13
358                },
359                "end": {
360                  "line": 19,
361                  "column": 2
362                }
363              }
364            },
365            "overloads": [
366              {
367                "type": "MethodDefinition",
368                "key": {
369                  "type": "Identifier",
370                  "name": "foo",
371                  "decorators": [],
372                  "loc": {
373                    "start": {
374                      "line": 21,
375                      "column": 10
376                    },
377                    "end": {
378                      "line": 21,
379                      "column": 13
380                    }
381                  }
382                },
383                "kind": "method",
384                "accessibility": "public",
385                "static": true,
386                "optional": false,
387                "computed": false,
388                "value": {
389                  "type": "FunctionExpression",
390                  "function": {
391                    "type": "ScriptFunction",
392                    "id": {
393                      "type": "Identifier",
394                      "name": "foo",
395                      "decorators": [],
396                      "loc": {
397                        "start": {
398                          "line": 21,
399                          "column": 10
400                        },
401                        "end": {
402                          "line": 21,
403                          "column": 13
404                        }
405                      }
406                    },
407                    "generator": false,
408                    "async": false,
409                    "expression": false,
410                    "params": [
411                      {
412                        "type": "ETSParameterExpression",
413                        "name": {
414                          "type": "Identifier",
415                          "name": "a",
416                          "typeAnnotation": {
417                            "type": "ETSTypeReference",
418                            "part": {
419                              "type": "ETSTypeReferencePart",
420                              "name": {
421                                "type": "Identifier",
422                                "name": "Int",
423                                "decorators": [],
424                                "loc": {
425                                  "start": {
426                                    "line": 21,
427                                    "column": 18
428                                  },
429                                  "end": {
430                                    "line": 21,
431                                    "column": 21
432                                  }
433                                }
434                              },
435                              "loc": {
436                                "start": {
437                                  "line": 21,
438                                  "column": 18
439                                },
440                                "end": {
441                                  "line": 21,
442                                  "column": 22
443                                }
444                              }
445                            },
446                            "loc": {
447                              "start": {
448                                "line": 21,
449                                "column": 18
450                              },
451                              "end": {
452                                "line": 21,
453                                "column": 22
454                              }
455                            }
456                          },
457                          "decorators": [],
458                          "loc": {
459                            "start": {
460                              "line": 21,
461                              "column": 14
462                            },
463                            "end": {
464                              "line": 21,
465                              "column": 22
466                            }
467                          }
468                        },
469                        "loc": {
470                          "start": {
471                            "line": 21,
472                            "column": 14
473                          },
474                          "end": {
475                            "line": 21,
476                            "column": 22
477                          }
478                        }
479                      },
480                      {
481                        "type": "ETSParameterExpression",
482                        "name": {
483                          "type": "Identifier",
484                          "name": "b",
485                          "typeAnnotation": {
486                            "type": "ETSUnionType",
487                            "types": [
488                              {
489                                "type": "ETSTypeReference",
490                                "part": {
491                                  "type": "ETSTypeReferencePart",
492                                  "name": {
493                                    "type": "Identifier",
494                                    "name": "String",
495                                    "decorators": [],
496                                    "loc": {
497                                      "start": {
498                                        "line": 21,
499                                        "column": 28
500                                      },
501                                      "end": {
502                                        "line": 21,
503                                        "column": 34
504                                      }
505                                    }
506                                  },
507                                  "loc": {
508                                    "start": {
509                                      "line": 21,
510                                      "column": 28
511                                    },
512                                    "end": {
513                                      "line": 21,
514                                      "column": 35
515                                    }
516                                  }
517                                },
518                                "loc": {
519                                  "start": {
520                                    "line": 21,
521                                    "column": 28
522                                  },
523                                  "end": {
524                                    "line": 21,
525                                    "column": 35
526                                  }
527                                }
528                              },
529                              {
530                                "type": "ETSUndefinedType",
531                                "loc": {
532                                  "start": {
533                                    "line": 21,
534                                    "column": 24
535                                  },
536                                  "end": {
537                                    "line": 21,
538                                    "column": 25
539                                  }
540                                }
541                              }
542                            ],
543                            "loc": {
544                              "start": {
545                                "line": 21,
546                                "column": 28
547                              },
548                              "end": {
549                                "line": 21,
550                                "column": 35
551                              }
552                            }
553                          },
554                          "decorators": [],
555                          "loc": {
556                            "start": {
557                              "line": 21,
558                              "column": 23
559                            },
560                            "end": {
561                              "line": 21,
562                              "column": 35
563                            }
564                          }
565                        },
566                        "loc": {
567                          "start": {
568                            "line": 21,
569                            "column": 23
570                          },
571                          "end": {
572                            "line": 21,
573                            "column": 35
574                          }
575                        }
576                      },
577                      {
578                        "type": "ETSParameterExpression",
579                        "name": {
580                          "type": "Identifier",
581                          "name": "c",
582                          "typeAnnotation": {
583                            "type": "ETSTypeReference",
584                            "part": {
585                              "type": "ETSTypeReferencePart",
586                              "name": {
587                                "type": "Identifier",
588                                "name": "Int",
589                                "decorators": [],
590                                "loc": {
591                                  "start": {
592                                    "line": 21,
593                                    "column": 40
594                                  },
595                                  "end": {
596                                    "line": 21,
597                                    "column": 43
598                                  }
599                                }
600                              },
601                              "loc": {
602                                "start": {
603                                  "line": 21,
604                                  "column": 40
605                                },
606                                "end": {
607                                  "line": 21,
608                                  "column": 45
609                                }
610                              }
611                            },
612                            "loc": {
613                              "start": {
614                                "line": 21,
615                                "column": 40
616                              },
617                              "end": {
618                                "line": 21,
619                                "column": 45
620                              }
621                            }
622                          },
623                          "decorators": [],
624                          "loc": {
625                            "start": {
626                              "line": 21,
627                              "column": 36
628                            },
629                            "end": {
630                              "line": 21,
631                              "column": 45
632                            }
633                          }
634                        },
635                        "loc": {
636                          "start": {
637                            "line": 21,
638                            "column": 36
639                          },
640                          "end": {
641                            "line": 21,
642                            "column": 48
643                          }
644                        }
645                      }
646                    ],
647                    "returnType": {
648                      "type": "ETSTypeReference",
649                      "part": {
650                        "type": "ETSTypeReferencePart",
651                        "name": {
652                          "type": "Identifier",
653                          "name": "Int",
654                          "decorators": [],
655                          "loc": {
656                            "start": {
657                              "line": 21,
658                              "column": 52
659                            },
660                            "end": {
661                              "line": 21,
662                              "column": 55
663                            }
664                          }
665                        },
666                        "loc": {
667                          "start": {
668                            "line": 21,
669                            "column": 52
670                          },
671                          "end": {
672                            "line": 22,
673                            "column": 2
674                          }
675                        }
676                      },
677                      "loc": {
678                        "start": {
679                          "line": 21,
680                          "column": 52
681                        },
682                        "end": {
683                          "line": 22,
684                          "column": 2
685                        }
686                      }
687                    },
688                    "body": {
689                      "type": "BlockStatement",
690                      "statements": [
691                        {
692                          "type": "ReturnStatement",
693                          "argument": {
694                            "type": "NumberLiteral",
695                            "value": 2,
696                            "loc": {
697                              "start": {
698                                "line": 23,
699                                "column": 12
700                              },
701                              "end": {
702                                "line": 23,
703                                "column": 13
704                              }
705                            }
706                          },
707                          "loc": {
708                            "start": {
709                              "line": 23,
710                              "column": 5
711                            },
712                            "end": {
713                              "line": 23,
714                              "column": 14
715                            }
716                          }
717                        }
718                      ],
719                      "loc": {
720                        "start": {
721                          "line": 22,
722                          "column": 1
723                        },
724                        "end": {
725                          "line": 24,
726                          "column": 2
727                        }
728                      }
729                    },
730                    "loc": {
731                      "start": {
732                        "line": 21,
733                        "column": 13
734                      },
735                      "end": {
736                        "line": 24,
737                        "column": 2
738                      }
739                    }
740                  },
741                  "loc": {
742                    "start": {
743                      "line": 21,
744                      "column": 13
745                    },
746                    "end": {
747                      "line": 24,
748                      "column": 2
749                    }
750                  }
751                },
752                "overloads": [],
753                "decorators": [],
754                "loc": {
755                  "start": {
756                    "line": 21,
757                    "column": 1
758                  },
759                  "end": {
760                    "line": 24,
761                    "column": 2
762                  }
763                }
764              },
765              {
766                "type": "MethodDefinition",
767                "key": {
768                  "type": "Identifier",
769                  "name": "foo",
770                  "decorators": [],
771                  "loc": {
772                    "start": {
773                      "line": 21,
774                      "column": 10
775                    },
776                    "end": {
777                      "line": 21,
778                      "column": 13
779                    }
780                  }
781                },
782                "kind": "method",
783                "accessibility": "public",
784                "static": true,
785                "optional": false,
786                "computed": false,
787                "value": {
788                  "type": "FunctionExpression",
789                  "function": {
790                    "type": "ScriptFunction",
791                    "id": {
792                      "type": "Identifier",
793                      "name": "foo",
794                      "decorators": [],
795                      "loc": {
796                        "start": {
797                          "line": 21,
798                          "column": 10
799                        },
800                        "end": {
801                          "line": 21,
802                          "column": 13
803                        }
804                      }
805                    },
806                    "generator": false,
807                    "async": false,
808                    "expression": false,
809                    "params": [
810                      {
811                        "type": "ETSParameterExpression",
812                        "name": {
813                          "type": "Identifier",
814                          "name": "a",
815                          "typeAnnotation": {
816                            "type": "ETSTypeReference",
817                            "part": {
818                              "type": "ETSTypeReferencePart",
819                              "name": {
820                                "type": "Identifier",
821                                "name": "Int",
822                                "decorators": [],
823                                "loc": {
824                                  "start": {
825                                    "line": 21,
826                                    "column": 18
827                                  },
828                                  "end": {
829                                    "line": 21,
830                                    "column": 21
831                                  }
832                                }
833                              },
834                              "loc": {
835                                "start": {
836                                  "line": 21,
837                                  "column": 18
838                                },
839                                "end": {
840                                  "line": 21,
841                                  "column": 22
842                                }
843                              }
844                            },
845                            "loc": {
846                              "start": {
847                                "line": 21,
848                                "column": 18
849                              },
850                              "end": {
851                                "line": 21,
852                                "column": 22
853                              }
854                            }
855                          },
856                          "decorators": [],
857                          "loc": {
858                            "start": {
859                              "line": 21,
860                              "column": 14
861                            },
862                            "end": {
863                              "line": 21,
864                              "column": 22
865                            }
866                          }
867                        },
868                        "loc": {
869                          "start": {
870                            "line": 1,
871                            "column": 1
872                          },
873                          "end": {
874                            "line": 1,
875                            "column": 1
876                          }
877                        }
878                      },
879                      {
880                        "type": "ETSParameterExpression",
881                        "name": {
882                          "type": "Identifier",
883                          "name": "b",
884                          "typeAnnotation": {
885                            "type": "ETSUnionType",
886                            "types": [
887                              {
888                                "type": "ETSTypeReference",
889                                "part": {
890                                  "type": "ETSTypeReferencePart",
891                                  "name": {
892                                    "type": "Identifier",
893                                    "name": "String",
894                                    "decorators": [],
895                                    "loc": {
896                                      "start": {
897                                        "line": 21,
898                                        "column": 28
899                                      },
900                                      "end": {
901                                        "line": 21,
902                                        "column": 34
903                                      }
904                                    }
905                                  },
906                                  "loc": {
907                                    "start": {
908                                      "line": 21,
909                                      "column": 28
910                                    },
911                                    "end": {
912                                      "line": 21,
913                                      "column": 35
914                                    }
915                                  }
916                                },
917                                "loc": {
918                                  "start": {
919                                    "line": 21,
920                                    "column": 28
921                                  },
922                                  "end": {
923                                    "line": 21,
924                                    "column": 35
925                                  }
926                                }
927                              },
928                              {
929                                "type": "ETSUndefinedType",
930                                "loc": {
931                                  "start": {
932                                    "line": 1,
933                                    "column": 1
934                                  },
935                                  "end": {
936                                    "line": 1,
937                                    "column": 1
938                                  }
939                                }
940                              }
941                            ],
942                            "loc": {
943                              "start": {
944                                "line": 1,
945                                "column": 1
946                              },
947                              "end": {
948                                "line": 1,
949                                "column": 1
950                              }
951                            }
952                          },
953                          "decorators": [],
954                          "loc": {
955                            "start": {
956                              "line": 21,
957                              "column": 23
958                            },
959                            "end": {
960                              "line": 21,
961                              "column": 35
962                            }
963                          }
964                        },
965                        "loc": {
966                          "start": {
967                            "line": 1,
968                            "column": 1
969                          },
970                          "end": {
971                            "line": 1,
972                            "column": 1
973                          }
974                        }
975                      }
976                    ],
977                    "returnType": {
978                      "type": "ETSTypeReference",
979                      "part": {
980                        "type": "ETSTypeReferencePart",
981                        "name": {
982                          "type": "Identifier",
983                          "name": "Int",
984                          "decorators": [],
985                          "loc": {
986                            "start": {
987                              "line": 21,
988                              "column": 52
989                            },
990                            "end": {
991                              "line": 21,
992                              "column": 55
993                            }
994                          }
995                        },
996                        "loc": {
997                          "start": {
998                            "line": 21,
999                            "column": 52
1000                          },
1001                          "end": {
1002                            "line": 22,
1003                            "column": 2
1004                          }
1005                        }
1006                      },
1007                      "loc": {
1008                        "start": {
1009                          "line": 21,
1010                          "column": 52
1011                        },
1012                        "end": {
1013                          "line": 22,
1014                          "column": 2
1015                        }
1016                      }
1017                    },
1018                    "body": {
1019                      "type": "BlockStatement",
1020                      "statements": [
1021                        {
1022                          "type": "ReturnStatement",
1023                          "argument": {
1024                            "type": "CallExpression",
1025                            "callee": {
1026                              "type": "Identifier",
1027                              "name": "foo",
1028                              "decorators": [],
1029                              "loc": {
1030                                "start": {
1031                                  "line": 1,
1032                                  "column": 1
1033                                },
1034                                "end": {
1035                                  "line": 1,
1036                                  "column": 1
1037                                }
1038                              }
1039                            },
1040                            "arguments": [
1041                              {
1042                                "type": "Identifier",
1043                                "name": "a",
1044                                "typeAnnotation": {
1045                                  "type": "ETSTypeReference",
1046                                  "part": {
1047                                    "type": "ETSTypeReferencePart",
1048                                    "name": {
1049                                      "type": "Identifier",
1050                                      "name": "Int",
1051                                      "decorators": [],
1052                                      "loc": {
1053                                        "start": {
1054                                          "line": 21,
1055                                          "column": 18
1056                                        },
1057                                        "end": {
1058                                          "line": 21,
1059                                          "column": 21
1060                                        }
1061                                      }
1062                                    },
1063                                    "loc": {
1064                                      "start": {
1065                                        "line": 21,
1066                                        "column": 18
1067                                      },
1068                                      "end": {
1069                                        "line": 21,
1070                                        "column": 22
1071                                      }
1072                                    }
1073                                  },
1074                                  "loc": {
1075                                    "start": {
1076                                      "line": 21,
1077                                      "column": 18
1078                                    },
1079                                    "end": {
1080                                      "line": 21,
1081                                      "column": 22
1082                                    }
1083                                  }
1084                                },
1085                                "decorators": [],
1086                                "loc": {
1087                                  "start": {
1088                                    "line": 21,
1089                                    "column": 14
1090                                  },
1091                                  "end": {
1092                                    "line": 21,
1093                                    "column": 22
1094                                  }
1095                                }
1096                              },
1097                              {
1098                                "type": "Identifier",
1099                                "name": "b",
1100                                "typeAnnotation": {
1101                                  "type": "ETSUnionType",
1102                                  "types": [
1103                                    {
1104                                      "type": "ETSTypeReference",
1105                                      "part": {
1106                                        "type": "ETSTypeReferencePart",
1107                                        "name": {
1108                                          "type": "Identifier",
1109                                          "name": "String",
1110                                          "decorators": [],
1111                                          "loc": {
1112                                            "start": {
1113                                              "line": 21,
1114                                              "column": 28
1115                                            },
1116                                            "end": {
1117                                              "line": 21,
1118                                              "column": 34
1119                                            }
1120                                          }
1121                                        },
1122                                        "loc": {
1123                                          "start": {
1124                                            "line": 21,
1125                                            "column": 28
1126                                          },
1127                                          "end": {
1128                                            "line": 21,
1129                                            "column": 35
1130                                          }
1131                                        }
1132                                      },
1133                                      "loc": {
1134                                        "start": {
1135                                          "line": 21,
1136                                          "column": 28
1137                                        },
1138                                        "end": {
1139                                          "line": 21,
1140                                          "column": 35
1141                                        }
1142                                      }
1143                                    },
1144                                    {
1145                                      "type": "ETSUndefinedType",
1146                                      "loc": {
1147                                        "start": {
1148                                          "line": 1,
1149                                          "column": 1
1150                                        },
1151                                        "end": {
1152                                          "line": 1,
1153                                          "column": 1
1154                                        }
1155                                      }
1156                                    }
1157                                  ],
1158                                  "loc": {
1159                                    "start": {
1160                                      "line": 1,
1161                                      "column": 1
1162                                    },
1163                                    "end": {
1164                                      "line": 1,
1165                                      "column": 1
1166                                    }
1167                                  }
1168                                },
1169                                "decorators": [],
1170                                "loc": {
1171                                  "start": {
1172                                    "line": 21,
1173                                    "column": 23
1174                                  },
1175                                  "end": {
1176                                    "line": 21,
1177                                    "column": 35
1178                                  }
1179                                }
1180                              },
1181                              {
1182                                "type": "NumberLiteral",
1183                                "value": 30,
1184                                "loc": {
1185                                  "start": {
1186                                    "line": 21,
1187                                    "column": 46
1188                                  },
1189                                  "end": {
1190                                    "line": 21,
1191                                    "column": 48
1192                                  }
1193                                }
1194                              }
1195                            ],
1196                            "optional": false,
1197                            "loc": {
1198                              "start": {
1199                                "line": 21,
1200                                "column": 1
1201                              },
1202                              "end": {
1203                                "line": 24,
1204                                "column": 2
1205                              }
1206                            }
1207                          },
1208                          "loc": {
1209                            "start": {
1210                              "line": 1,
1211                              "column": 1
1212                            },
1213                            "end": {
1214                              "line": 1,
1215                              "column": 1
1216                            }
1217                          }
1218                        }
1219                      ],
1220                      "loc": {
1221                        "start": {
1222                          "line": 1,
1223                          "column": 1
1224                        },
1225                        "end": {
1226                          "line": 1,
1227                          "column": 1
1228                        }
1229                      }
1230                    },
1231                    "loc": {
1232                      "start": {
1233                        "line": 658,
1234                        "column": 1
1235                      },
1236                      "end": {
1237                        "line": 658,
1238                        "column": 1
1239                      }
1240                    }
1241                  },
1242                  "loc": {
1243                    "start": {
1244                      "line": 1,
1245                      "column": 1
1246                    },
1247                    "end": {
1248                      "line": 1,
1249                      "column": 1
1250                    }
1251                  }
1252                },
1253                "overloads": [],
1254                "decorators": [],
1255                "loc": {
1256                  "start": {
1257                    "line": 21,
1258                    "column": 1
1259                  },
1260                  "end": {
1261                    "line": 1,
1262                    "column": 1
1263                  }
1264                }
1265              },
1266              {
1267                "type": "MethodDefinition",
1268                "key": {
1269                  "type": "Identifier",
1270                  "name": "foo",
1271                  "decorators": [],
1272                  "loc": {
1273                    "start": {
1274                      "line": 21,
1275                      "column": 10
1276                    },
1277                    "end": {
1278                      "line": 21,
1279                      "column": 13
1280                    }
1281                  }
1282                },
1283                "kind": "method",
1284                "accessibility": "public",
1285                "static": true,
1286                "optional": false,
1287                "computed": false,
1288                "value": {
1289                  "type": "FunctionExpression",
1290                  "function": {
1291                    "type": "ScriptFunction",
1292                    "id": {
1293                      "type": "Identifier",
1294                      "name": "foo",
1295                      "decorators": [],
1296                      "loc": {
1297                        "start": {
1298                          "line": 21,
1299                          "column": 10
1300                        },
1301                        "end": {
1302                          "line": 21,
1303                          "column": 13
1304                        }
1305                      }
1306                    },
1307                    "generator": false,
1308                    "async": false,
1309                    "expression": false,
1310                    "params": [
1311                      {
1312                        "type": "ETSParameterExpression",
1313                        "name": {
1314                          "type": "Identifier",
1315                          "name": "a",
1316                          "typeAnnotation": {
1317                            "type": "ETSTypeReference",
1318                            "part": {
1319                              "type": "ETSTypeReferencePart",
1320                              "name": {
1321                                "type": "Identifier",
1322                                "name": "Int",
1323                                "decorators": [],
1324                                "loc": {
1325                                  "start": {
1326                                    "line": 21,
1327                                    "column": 18
1328                                  },
1329                                  "end": {
1330                                    "line": 21,
1331                                    "column": 21
1332                                  }
1333                                }
1334                              },
1335                              "loc": {
1336                                "start": {
1337                                  "line": 21,
1338                                  "column": 18
1339                                },
1340                                "end": {
1341                                  "line": 21,
1342                                  "column": 22
1343                                }
1344                              }
1345                            },
1346                            "loc": {
1347                              "start": {
1348                                "line": 21,
1349                                "column": 18
1350                              },
1351                              "end": {
1352                                "line": 21,
1353                                "column": 22
1354                              }
1355                            }
1356                          },
1357                          "decorators": [],
1358                          "loc": {
1359                            "start": {
1360                              "line": 21,
1361                              "column": 14
1362                            },
1363                            "end": {
1364                              "line": 21,
1365                              "column": 22
1366                            }
1367                          }
1368                        },
1369                        "loc": {
1370                          "start": {
1371                            "line": 1,
1372                            "column": 1
1373                          },
1374                          "end": {
1375                            "line": 1,
1376                            "column": 1
1377                          }
1378                        }
1379                      }
1380                    ],
1381                    "returnType": {
1382                      "type": "ETSTypeReference",
1383                      "part": {
1384                        "type": "ETSTypeReferencePart",
1385                        "name": {
1386                          "type": "Identifier",
1387                          "name": "Int",
1388                          "decorators": [],
1389                          "loc": {
1390                            "start": {
1391                              "line": 21,
1392                              "column": 52
1393                            },
1394                            "end": {
1395                              "line": 21,
1396                              "column": 55
1397                            }
1398                          }
1399                        },
1400                        "loc": {
1401                          "start": {
1402                            "line": 21,
1403                            "column": 52
1404                          },
1405                          "end": {
1406                            "line": 22,
1407                            "column": 2
1408                          }
1409                        }
1410                      },
1411                      "loc": {
1412                        "start": {
1413                          "line": 21,
1414                          "column": 52
1415                        },
1416                        "end": {
1417                          "line": 22,
1418                          "column": 2
1419                        }
1420                      }
1421                    },
1422                    "body": {
1423                      "type": "BlockStatement",
1424                      "statements": [
1425                        {
1426                          "type": "ReturnStatement",
1427                          "argument": {
1428                            "type": "CallExpression",
1429                            "callee": {
1430                              "type": "Identifier",
1431                              "name": "foo",
1432                              "decorators": [],
1433                              "loc": {
1434                                "start": {
1435                                  "line": 1,
1436                                  "column": 1
1437                                },
1438                                "end": {
1439                                  "line": 1,
1440                                  "column": 1
1441                                }
1442                              }
1443                            },
1444                            "arguments": [
1445                              {
1446                                "type": "Identifier",
1447                                "name": "a",
1448                                "typeAnnotation": {
1449                                  "type": "ETSTypeReference",
1450                                  "part": {
1451                                    "type": "ETSTypeReferencePart",
1452                                    "name": {
1453                                      "type": "Identifier",
1454                                      "name": "Int",
1455                                      "decorators": [],
1456                                      "loc": {
1457                                        "start": {
1458                                          "line": 21,
1459                                          "column": 18
1460                                        },
1461                                        "end": {
1462                                          "line": 21,
1463                                          "column": 21
1464                                        }
1465                                      }
1466                                    },
1467                                    "loc": {
1468                                      "start": {
1469                                        "line": 21,
1470                                        "column": 18
1471                                      },
1472                                      "end": {
1473                                        "line": 21,
1474                                        "column": 22
1475                                      }
1476                                    }
1477                                  },
1478                                  "loc": {
1479                                    "start": {
1480                                      "line": 21,
1481                                      "column": 18
1482                                    },
1483                                    "end": {
1484                                      "line": 21,
1485                                      "column": 22
1486                                    }
1487                                  }
1488                                },
1489                                "decorators": [],
1490                                "loc": {
1491                                  "start": {
1492                                    "line": 21,
1493                                    "column": 14
1494                                  },
1495                                  "end": {
1496                                    "line": 21,
1497                                    "column": 22
1498                                  }
1499                                }
1500                              },
1501                              {
1502                                "type": "UndefinedLiteral",
1503                                "value": undefined,
1504                                "loc": {
1505                                  "start": {
1506                                    "line": 1,
1507                                    "column": 1
1508                                  },
1509                                  "end": {
1510                                    "line": 1,
1511                                    "column": 1
1512                                  }
1513                                }
1514                              },
1515                              {
1516                                "type": "NumberLiteral",
1517                                "value": 30,
1518                                "loc": {
1519                                  "start": {
1520                                    "line": 21,
1521                                    "column": 46
1522                                  },
1523                                  "end": {
1524                                    "line": 21,
1525                                    "column": 48
1526                                  }
1527                                }
1528                              }
1529                            ],
1530                            "optional": false,
1531                            "loc": {
1532                              "start": {
1533                                "line": 21,
1534                                "column": 1
1535                              },
1536                              "end": {
1537                                "line": 24,
1538                                "column": 2
1539                              }
1540                            }
1541                          },
1542                          "loc": {
1543                            "start": {
1544                              "line": 1,
1545                              "column": 1
1546                            },
1547                            "end": {
1548                              "line": 1,
1549                              "column": 1
1550                            }
1551                          }
1552                        }
1553                      ],
1554                      "loc": {
1555                        "start": {
1556                          "line": 1,
1557                          "column": 1
1558                        },
1559                        "end": {
1560                          "line": 1,
1561                          "column": 1
1562                        }
1563                      }
1564                    },
1565                    "loc": {
1566                      "start": {
1567                        "line": 658,
1568                        "column": 1
1569                      },
1570                      "end": {
1571                        "line": 658,
1572                        "column": 1
1573                      }
1574                    }
1575                  },
1576                  "loc": {
1577                    "start": {
1578                      "line": 1,
1579                      "column": 1
1580                    },
1581                    "end": {
1582                      "line": 1,
1583                      "column": 1
1584                    }
1585                  }
1586                },
1587                "overloads": [],
1588                "decorators": [],
1589                "loc": {
1590                  "start": {
1591                    "line": 21,
1592                    "column": 1
1593                  },
1594                  "end": {
1595                    "line": 1,
1596                    "column": 1
1597                  }
1598                }
1599              }
1600            ],
1601            "decorators": [],
1602            "loc": {
1603              "start": {
1604                "line": 16,
1605                "column": 1
1606              },
1607              "end": {
1608                "line": 19,
1609                "column": 2
1610              }
1611            }
1612          }
1613        ],
1614        "loc": {
1615          "start": {
1616            "line": 1,
1617            "column": 1
1618          },
1619          "end": {
1620            "line": 1,
1621            "column": 1
1622          }
1623        }
1624      },
1625      "loc": {
1626        "start": {
1627          "line": 1,
1628          "column": 1
1629        },
1630        "end": {
1631          "line": 1,
1632          "column": 1
1633        }
1634      }
1635    }
1636  ],
1637  "loc": {
1638    "start": {
1639      "line": 1,
1640      "column": 1
1641    },
1642    "end": {
1643      "line": 25,
1644      "column": 1
1645    }
1646  }
1647}
1648