1{
2  "type": "Program",
3  "statements": [
4    {
5      "type": "TSInterfaceDeclaration",
6      "body": {
7        "type": "TSInterfaceBody",
8        "body": [],
9        "loc": {
10          "start": {
11            "line": 16,
12            "column": 13
13          },
14          "end": {
15            "line": 16,
16            "column": 15
17          }
18        }
19      },
20      "id": {
21        "type": "Identifier",
22        "name": "I",
23        "decorators": [],
24        "loc": {
25          "start": {
26            "line": 16,
27            "column": 11
28          },
29          "end": {
30            "line": 16,
31            "column": 12
32          }
33        }
34      },
35      "extends": [],
36      "loc": {
37        "start": {
38          "line": 16,
39          "column": 1
40        },
41        "end": {
42          "line": 17,
43          "column": 10
44        }
45      }
46    },
47    {
48      "type": "TSInterfaceDeclaration",
49      "body": {
50        "type": "TSInterfaceBody",
51        "body": [],
52        "loc": {
53          "start": {
54            "line": 17,
55            "column": 13
56          },
57          "end": {
58            "line": 17,
59            "column": 15
60          }
61        }
62      },
63      "id": {
64        "type": "Identifier",
65        "name": "J",
66        "decorators": [],
67        "loc": {
68          "start": {
69            "line": 17,
70            "column": 11
71          },
72          "end": {
73            "line": 17,
74            "column": 12
75          }
76        }
77      },
78      "extends": [],
79      "loc": {
80        "start": {
81          "line": 17,
82          "column": 1
83        },
84        "end": {
85          "line": 19,
86          "column": 6
87        }
88      }
89    },
90    {
91      "type": "ClassDeclaration",
92      "definition": {
93        "id": {
94          "type": "Identifier",
95          "name": "A",
96          "decorators": [],
97          "loc": {
98            "start": {
99              "line": 19,
100              "column": 7
101            },
102            "end": {
103              "line": 19,
104              "column": 8
105            }
106          }
107        },
108        "superClass": null,
109        "implements": [],
110        "body": [
111          {
112            "type": "MethodDefinition",
113            "key": {
114              "type": "Identifier",
115              "name": "constructor",
116              "decorators": [],
117              "loc": {
118                "start": {
119                  "line": 1,
120                  "column": 1
121                },
122                "end": {
123                  "line": 1,
124                  "column": 1
125                }
126              }
127            },
128            "kind": "constructor",
129            "static": false,
130            "optional": false,
131            "computed": false,
132            "value": {
133              "type": "FunctionExpression",
134              "function": {
135                "type": "ScriptFunction",
136                "id": {
137                  "type": "Identifier",
138                  "name": "constructor",
139                  "decorators": [],
140                  "loc": {
141                    "start": {
142                      "line": 1,
143                      "column": 1
144                    },
145                    "end": {
146                      "line": 1,
147                      "column": 1
148                    }
149                  }
150                },
151                "generator": false,
152                "async": false,
153                "expression": false,
154                "params": [],
155                "body": {
156                  "type": "BlockStatement",
157                  "statements": [],
158                  "loc": {
159                    "start": {
160                      "line": 1,
161                      "column": 1
162                    },
163                    "end": {
164                      "line": 1,
165                      "column": 1
166                    }
167                  }
168                },
169                "loc": {
170                  "start": {
171                    "line": 1,
172                    "column": 1
173                  },
174                  "end": {
175                    "line": 1,
176                    "column": 1
177                  }
178                }
179              },
180              "loc": {
181                "start": {
182                  "line": 1,
183                  "column": 1
184                },
185                "end": {
186                  "line": 1,
187                  "column": 1
188                }
189              }
190            },
191            "overloads": [],
192            "decorators": [],
193            "loc": {
194              "start": {
195                "line": 19,
196                "column": 11
197              },
198              "end": {
199                "line": 19,
200                "column": 11
201              }
202            }
203          }
204        ],
205        "loc": {
206          "start": {
207            "line": 19,
208            "column": 9
209          },
210          "end": {
211            "line": 19,
212            "column": 11
213          }
214        }
215      },
216      "loc": {
217        "start": {
218          "line": 19,
219          "column": 1
220        },
221        "end": {
222          "line": 19,
223          "column": 11
224        }
225      }
226    },
227    {
228      "type": "ClassDeclaration",
229      "definition": {
230        "id": {
231          "type": "Identifier",
232          "name": "B",
233          "decorators": [],
234          "loc": {
235            "start": {
236              "line": 20,
237              "column": 7
238            },
239            "end": {
240              "line": 20,
241              "column": 8
242            }
243          }
244        },
245        "superClass": {
246          "type": "ETSTypeReference",
247          "part": {
248            "type": "ETSTypeReferencePart",
249            "name": {
250              "type": "Identifier",
251              "name": "A",
252              "decorators": [],
253              "loc": {
254                "start": {
255                  "line": 20,
256                  "column": 17
257                },
258                "end": {
259                  "line": 20,
260                  "column": 18
261                }
262              }
263            },
264            "loc": {
265              "start": {
266                "line": 20,
267                "column": 17
268              },
269              "end": {
270                "line": 20,
271                "column": 29
272              }
273            }
274          },
275          "loc": {
276            "start": {
277              "line": 20,
278              "column": 17
279            },
280            "end": {
281              "line": 20,
282              "column": 29
283            }
284          }
285        },
286        "implements": [
287          {
288            "type": "TSClassImplements",
289            "expression": {
290              "type": "ETSTypeReference",
291              "part": {
292                "type": "ETSTypeReferencePart",
293                "name": {
294                  "type": "Identifier",
295                  "name": "I",
296                  "decorators": [],
297                  "loc": {
298                    "start": {
299                      "line": 20,
300                      "column": 30
301                    },
302                    "end": {
303                      "line": 20,
304                      "column": 31
305                    }
306                  }
307                },
308                "loc": {
309                  "start": {
310                    "line": 20,
311                    "column": 30
312                  },
313                  "end": {
314                    "line": 20,
315                    "column": 32
316                  }
317                }
318              },
319              "loc": {
320                "start": {
321                  "line": 20,
322                  "column": 30
323                },
324                "end": {
325                  "line": 20,
326                  "column": 32
327                }
328              }
329            },
330            "loc": {
331              "start": {
332                "line": 20,
333                "column": 30
334              },
335              "end": {
336                "line": 20,
337                "column": 32
338              }
339            }
340          },
341          {
342            "type": "TSClassImplements",
343            "expression": {
344              "type": "ETSTypeReference",
345              "part": {
346                "type": "ETSTypeReferencePart",
347                "name": {
348                  "type": "Identifier",
349                  "name": "J",
350                  "decorators": [],
351                  "loc": {
352                    "start": {
353                      "line": 20,
354                      "column": 33
355                    },
356                    "end": {
357                      "line": 20,
358                      "column": 34
359                    }
360                  }
361                },
362                "loc": {
363                  "start": {
364                    "line": 20,
365                    "column": 33
366                  },
367                  "end": {
368                    "line": 20,
369                    "column": 36
370                  }
371                }
372              },
373              "loc": {
374                "start": {
375                  "line": 20,
376                  "column": 33
377                },
378                "end": {
379                  "line": 20,
380                  "column": 36
381                }
382              }
383            },
384            "loc": {
385              "start": {
386                "line": 20,
387                "column": 33
388              },
389              "end": {
390                "line": 20,
391                "column": 36
392              }
393            }
394          }
395        ],
396        "body": [
397          {
398            "type": "MethodDefinition",
399            "key": {
400              "type": "Identifier",
401              "name": "constructor",
402              "decorators": [],
403              "loc": {
404                "start": {
405                  "line": 1,
406                  "column": 1
407                },
408                "end": {
409                  "line": 1,
410                  "column": 1
411                }
412              }
413            },
414            "kind": "constructor",
415            "static": false,
416            "optional": false,
417            "computed": false,
418            "value": {
419              "type": "FunctionExpression",
420              "function": {
421                "type": "ScriptFunction",
422                "id": {
423                  "type": "Identifier",
424                  "name": "constructor",
425                  "decorators": [],
426                  "loc": {
427                    "start": {
428                      "line": 1,
429                      "column": 1
430                    },
431                    "end": {
432                      "line": 1,
433                      "column": 1
434                    }
435                  }
436                },
437                "generator": false,
438                "async": false,
439                "expression": false,
440                "params": [],
441                "body": {
442                  "type": "BlockStatement",
443                  "statements": [],
444                  "loc": {
445                    "start": {
446                      "line": 1,
447                      "column": 1
448                    },
449                    "end": {
450                      "line": 1,
451                      "column": 1
452                    }
453                  }
454                },
455                "loc": {
456                  "start": {
457                    "line": 1,
458                    "column": 1
459                  },
460                  "end": {
461                    "line": 1,
462                    "column": 1
463                  }
464                }
465              },
466              "loc": {
467                "start": {
468                  "line": 1,
469                  "column": 1
470                },
471                "end": {
472                  "line": 1,
473                  "column": 1
474                }
475              }
476            },
477            "overloads": [],
478            "decorators": [],
479            "loc": {
480              "start": {
481                "line": 20,
482                "column": 37
483              },
484              "end": {
485                "line": 20,
486                "column": 37
487              }
488            }
489          }
490        ],
491        "loc": {
492          "start": {
493            "line": 20,
494            "column": 35
495          },
496          "end": {
497            "line": 20,
498            "column": 37
499          }
500        }
501      },
502      "loc": {
503        "start": {
504          "line": 20,
505          "column": 1
506        },
507        "end": {
508          "line": 20,
509          "column": 37
510        }
511      }
512    },
513    {
514      "type": "ClassDeclaration",
515      "definition": {
516        "id": {
517          "type": "Identifier",
518          "name": "C",
519          "decorators": [],
520          "loc": {
521            "start": {
522              "line": 21,
523              "column": 7
524            },
525            "end": {
526              "line": 21,
527              "column": 8
528            }
529          }
530        },
531        "superClass": {
532          "type": "ETSTypeReference",
533          "part": {
534            "type": "ETSTypeReferencePart",
535            "name": {
536              "type": "Identifier",
537              "name": "B",
538              "decorators": [],
539              "loc": {
540                "start": {
541                  "line": 21,
542                  "column": 17
543                },
544                "end": {
545                  "line": 21,
546                  "column": 18
547                }
548              }
549            },
550            "loc": {
551              "start": {
552                "line": 21,
553                "column": 17
554              },
555              "end": {
556                "line": 21,
557                "column": 20
558              }
559            }
560          },
561          "loc": {
562            "start": {
563              "line": 21,
564              "column": 17
565            },
566            "end": {
567              "line": 21,
568              "column": 20
569            }
570          }
571        },
572        "implements": [],
573        "body": [
574          {
575            "type": "MethodDefinition",
576            "key": {
577              "type": "Identifier",
578              "name": "constructor",
579              "decorators": [],
580              "loc": {
581                "start": {
582                  "line": 1,
583                  "column": 1
584                },
585                "end": {
586                  "line": 1,
587                  "column": 1
588                }
589              }
590            },
591            "kind": "constructor",
592            "static": false,
593            "optional": false,
594            "computed": false,
595            "value": {
596              "type": "FunctionExpression",
597              "function": {
598                "type": "ScriptFunction",
599                "id": {
600                  "type": "Identifier",
601                  "name": "constructor",
602                  "decorators": [],
603                  "loc": {
604                    "start": {
605                      "line": 1,
606                      "column": 1
607                    },
608                    "end": {
609                      "line": 1,
610                      "column": 1
611                    }
612                  }
613                },
614                "generator": false,
615                "async": false,
616                "expression": false,
617                "params": [],
618                "body": {
619                  "type": "BlockStatement",
620                  "statements": [],
621                  "loc": {
622                    "start": {
623                      "line": 1,
624                      "column": 1
625                    },
626                    "end": {
627                      "line": 1,
628                      "column": 1
629                    }
630                  }
631                },
632                "loc": {
633                  "start": {
634                    "line": 1,
635                    "column": 1
636                  },
637                  "end": {
638                    "line": 1,
639                    "column": 1
640                  }
641                }
642              },
643              "loc": {
644                "start": {
645                  "line": 1,
646                  "column": 1
647                },
648                "end": {
649                  "line": 1,
650                  "column": 1
651                }
652              }
653            },
654            "overloads": [],
655            "decorators": [],
656            "loc": {
657              "start": {
658                "line": 21,
659                "column": 21
660              },
661              "end": {
662                "line": 21,
663                "column": 21
664              }
665            }
666          }
667        ],
668        "loc": {
669          "start": {
670            "line": 21,
671            "column": 19
672          },
673          "end": {
674            "line": 21,
675            "column": 21
676          }
677        }
678      },
679      "loc": {
680        "start": {
681          "line": 21,
682          "column": 1
683        },
684        "end": {
685          "line": 21,
686          "column": 21
687        }
688      }
689    },
690    {
691      "type": "ClassDeclaration",
692      "definition": {
693        "id": {
694          "type": "Identifier",
695          "name": "ETSGLOBAL",
696          "decorators": [],
697          "loc": {
698            "start": {
699              "line": 1,
700              "column": 1
701            },
702            "end": {
703              "line": 1,
704              "column": 1
705            }
706          }
707        },
708        "superClass": null,
709        "implements": [],
710        "body": [
711          {
712            "type": "MethodDefinition",
713            "key": {
714              "type": "Identifier",
715              "name": "_$init$_",
716              "decorators": [],
717              "loc": {
718                "start": {
719                  "line": 1,
720                  "column": 1
721                },
722                "end": {
723                  "line": 1,
724                  "column": 1
725                }
726              }
727            },
728            "kind": "method",
729            "accessibility": "public",
730            "static": true,
731            "optional": false,
732            "computed": false,
733            "value": {
734              "type": "FunctionExpression",
735              "function": {
736                "type": "ScriptFunction",
737                "id": {
738                  "type": "Identifier",
739                  "name": "_$init$_",
740                  "decorators": [],
741                  "loc": {
742                    "start": {
743                      "line": 1,
744                      "column": 1
745                    },
746                    "end": {
747                      "line": 1,
748                      "column": 1
749                    }
750                  }
751                },
752                "generator": false,
753                "async": false,
754                "expression": false,
755                "params": [],
756                "body": {
757                  "type": "BlockStatement",
758                  "statements": [],
759                  "loc": {
760                    "start": {
761                      "line": 1,
762                      "column": 1
763                    },
764                    "end": {
765                      "line": 1,
766                      "column": 1
767                    }
768                  }
769                },
770                "loc": {
771                  "start": {
772                    "line": 1,
773                    "column": 1
774                  },
775                  "end": {
776                    "line": 1,
777                    "column": 1
778                  }
779                }
780              },
781              "loc": {
782                "start": {
783                  "line": 1,
784                  "column": 1
785                },
786                "end": {
787                  "line": 1,
788                  "column": 1
789                }
790              }
791            },
792            "overloads": [],
793            "decorators": [],
794            "loc": {
795              "start": {
796                "line": 1,
797                "column": 1
798              },
799              "end": {
800                "line": 1,
801                "column": 1
802              }
803            }
804          },
805          {
806            "type": "MethodDefinition",
807            "key": {
808              "type": "Identifier",
809              "name": "foo",
810              "decorators": [],
811              "loc": {
812                "start": {
813                  "line": 23,
814                  "column": 10
815                },
816                "end": {
817                  "line": 23,
818                  "column": 13
819                }
820              }
821            },
822            "kind": "method",
823            "accessibility": "public",
824            "static": true,
825            "optional": false,
826            "computed": false,
827            "value": {
828              "type": "FunctionExpression",
829              "function": {
830                "type": "ScriptFunction",
831                "id": {
832                  "type": "Identifier",
833                  "name": "foo",
834                  "decorators": [],
835                  "loc": {
836                    "start": {
837                      "line": 23,
838                      "column": 10
839                    },
840                    "end": {
841                      "line": 23,
842                      "column": 13
843                    }
844                  }
845                },
846                "generator": false,
847                "async": false,
848                "expression": false,
849                "params": [
850                  {
851                    "type": "ETSParameterExpression",
852                    "name": {
853                      "type": "Identifier",
854                      "name": "x",
855                      "typeAnnotation": {
856                        "type": "ETSTypeReference",
857                        "part": {
858                          "type": "ETSTypeReferencePart",
859                          "name": {
860                            "type": "Identifier",
861                            "name": "I",
862                            "decorators": [],
863                            "loc": {
864                              "start": {
865                                "line": 23,
866                                "column": 17
867                              },
868                              "end": {
869                                "line": 23,
870                                "column": 18
871                              }
872                            }
873                          },
874                          "loc": {
875                            "start": {
876                              "line": 23,
877                              "column": 17
878                            },
879                            "end": {
880                              "line": 23,
881                              "column": 19
882                            }
883                          }
884                        },
885                        "loc": {
886                          "start": {
887                            "line": 23,
888                            "column": 17
889                          },
890                          "end": {
891                            "line": 23,
892                            "column": 19
893                          }
894                        }
895                      },
896                      "decorators": [],
897                      "loc": {
898                        "start": {
899                          "line": 23,
900                          "column": 14
901                        },
902                        "end": {
903                          "line": 23,
904                          "column": 19
905                        }
906                      }
907                    },
908                    "loc": {
909                      "start": {
910                        "line": 23,
911                        "column": 14
912                      },
913                      "end": {
914                        "line": 23,
915                        "column": 19
916                      }
917                    }
918                  }
919                ],
920                "returnType": {
921                  "type": "ETSTypeReference",
922                  "part": {
923                    "type": "ETSTypeReferencePart",
924                    "name": {
925                      "type": "Identifier",
926                      "name": "string",
927                      "decorators": [],
928                      "loc": {
929                        "start": {
930                          "line": 23,
931                          "column": 21
932                        },
933                        "end": {
934                          "line": 23,
935                          "column": 27
936                        }
937                      }
938                    },
939                    "loc": {
940                      "start": {
941                        "line": 23,
942                        "column": 21
943                      },
944                      "end": {
945                        "line": 23,
946                        "column": 29
947                      }
948                    }
949                  },
950                  "loc": {
951                    "start": {
952                      "line": 23,
953                      "column": 21
954                    },
955                    "end": {
956                      "line": 23,
957                      "column": 29
958                    }
959                  }
960                },
961                "body": {
962                  "type": "BlockStatement",
963                  "statements": [
964                    {
965                      "type": "ReturnStatement",
966                      "argument": {
967                        "type": "StringLiteral",
968                        "value": "I",
969                        "loc": {
970                          "start": {
971                            "line": 24,
972                            "column": 12
973                          },
974                          "end": {
975                            "line": 24,
976                            "column": 15
977                          }
978                        }
979                      },
980                      "loc": {
981                        "start": {
982                          "line": 24,
983                          "column": 5
984                        },
985                        "end": {
986                          "line": 24,
987                          "column": 16
988                        }
989                      }
990                    }
991                  ],
992                  "loc": {
993                    "start": {
994                      "line": 23,
995                      "column": 28
996                    },
997                    "end": {
998                      "line": 25,
999                      "column": 2
1000                    }
1001                  }
1002                },
1003                "loc": {
1004                  "start": {
1005                    "line": 23,
1006                    "column": 13
1007                  },
1008                  "end": {
1009                    "line": 25,
1010                    "column": 2
1011                  }
1012                }
1013              },
1014              "loc": {
1015                "start": {
1016                  "line": 23,
1017                  "column": 13
1018                },
1019                "end": {
1020                  "line": 25,
1021                  "column": 2
1022                }
1023              }
1024            },
1025            "overloads": [
1026              {
1027                "type": "MethodDefinition",
1028                "key": {
1029                  "type": "Identifier",
1030                  "name": "foo",
1031                  "decorators": [],
1032                  "loc": {
1033                    "start": {
1034                      "line": 26,
1035                      "column": 10
1036                    },
1037                    "end": {
1038                      "line": 26,
1039                      "column": 13
1040                    }
1041                  }
1042                },
1043                "kind": "method",
1044                "accessibility": "public",
1045                "static": true,
1046                "optional": false,
1047                "computed": false,
1048                "value": {
1049                  "type": "FunctionExpression",
1050                  "function": {
1051                    "type": "ScriptFunction",
1052                    "id": {
1053                      "type": "Identifier",
1054                      "name": "foo",
1055                      "decorators": [],
1056                      "loc": {
1057                        "start": {
1058                          "line": 26,
1059                          "column": 10
1060                        },
1061                        "end": {
1062                          "line": 26,
1063                          "column": 13
1064                        }
1065                      }
1066                    },
1067                    "generator": false,
1068                    "async": false,
1069                    "expression": false,
1070                    "params": [
1071                      {
1072                        "type": "ETSParameterExpression",
1073                        "name": {
1074                          "type": "Identifier",
1075                          "name": "x",
1076                          "typeAnnotation": {
1077                            "type": "ETSTypeReference",
1078                            "part": {
1079                              "type": "ETSTypeReferencePart",
1080                              "name": {
1081                                "type": "Identifier",
1082                                "name": "J",
1083                                "decorators": [],
1084                                "loc": {
1085                                  "start": {
1086                                    "line": 26,
1087                                    "column": 17
1088                                  },
1089                                  "end": {
1090                                    "line": 26,
1091                                    "column": 18
1092                                  }
1093                                }
1094                              },
1095                              "loc": {
1096                                "start": {
1097                                  "line": 26,
1098                                  "column": 17
1099                                },
1100                                "end": {
1101                                  "line": 26,
1102                                  "column": 19
1103                                }
1104                              }
1105                            },
1106                            "loc": {
1107                              "start": {
1108                                "line": 26,
1109                                "column": 17
1110                              },
1111                              "end": {
1112                                "line": 26,
1113                                "column": 19
1114                              }
1115                            }
1116                          },
1117                          "decorators": [],
1118                          "loc": {
1119                            "start": {
1120                              "line": 26,
1121                              "column": 14
1122                            },
1123                            "end": {
1124                              "line": 26,
1125                              "column": 19
1126                            }
1127                          }
1128                        },
1129                        "loc": {
1130                          "start": {
1131                            "line": 26,
1132                            "column": 14
1133                          },
1134                          "end": {
1135                            "line": 26,
1136                            "column": 19
1137                          }
1138                        }
1139                      }
1140                    ],
1141                    "returnType": {
1142                      "type": "ETSTypeReference",
1143                      "part": {
1144                        "type": "ETSTypeReferencePart",
1145                        "name": {
1146                          "type": "Identifier",
1147                          "name": "string",
1148                          "decorators": [],
1149                          "loc": {
1150                            "start": {
1151                              "line": 26,
1152                              "column": 21
1153                            },
1154                            "end": {
1155                              "line": 26,
1156                              "column": 27
1157                            }
1158                          }
1159                        },
1160                        "loc": {
1161                          "start": {
1162                            "line": 26,
1163                            "column": 21
1164                          },
1165                          "end": {
1166                            "line": 26,
1167                            "column": 29
1168                          }
1169                        }
1170                      },
1171                      "loc": {
1172                        "start": {
1173                          "line": 26,
1174                          "column": 21
1175                        },
1176                        "end": {
1177                          "line": 26,
1178                          "column": 29
1179                        }
1180                      }
1181                    },
1182                    "body": {
1183                      "type": "BlockStatement",
1184                      "statements": [
1185                        {
1186                          "type": "ReturnStatement",
1187                          "argument": {
1188                            "type": "StringLiteral",
1189                            "value": "J",
1190                            "loc": {
1191                              "start": {
1192                                "line": 27,
1193                                "column": 12
1194                              },
1195                              "end": {
1196                                "line": 27,
1197                                "column": 15
1198                              }
1199                            }
1200                          },
1201                          "loc": {
1202                            "start": {
1203                              "line": 27,
1204                              "column": 5
1205                            },
1206                            "end": {
1207                              "line": 27,
1208                              "column": 16
1209                            }
1210                          }
1211                        }
1212                      ],
1213                      "loc": {
1214                        "start": {
1215                          "line": 26,
1216                          "column": 28
1217                        },
1218                        "end": {
1219                          "line": 28,
1220                          "column": 2
1221                        }
1222                      }
1223                    },
1224                    "loc": {
1225                      "start": {
1226                        "line": 26,
1227                        "column": 13
1228                      },
1229                      "end": {
1230                        "line": 28,
1231                        "column": 2
1232                      }
1233                    }
1234                  },
1235                  "loc": {
1236                    "start": {
1237                      "line": 26,
1238                      "column": 13
1239                    },
1240                    "end": {
1241                      "line": 28,
1242                      "column": 2
1243                    }
1244                  }
1245                },
1246                "overloads": [],
1247                "decorators": [],
1248                "loc": {
1249                  "start": {
1250                    "line": 26,
1251                    "column": 1
1252                  },
1253                  "end": {
1254                    "line": 28,
1255                    "column": 2
1256                  }
1257                }
1258              },
1259              {
1260                "type": "MethodDefinition",
1261                "key": {
1262                  "type": "Identifier",
1263                  "name": "foo",
1264                  "decorators": [],
1265                  "loc": {
1266                    "start": {
1267                      "line": 29,
1268                      "column": 10
1269                    },
1270                    "end": {
1271                      "line": 29,
1272                      "column": 13
1273                    }
1274                  }
1275                },
1276                "kind": "method",
1277                "accessibility": "public",
1278                "static": true,
1279                "optional": false,
1280                "computed": false,
1281                "value": {
1282                  "type": "FunctionExpression",
1283                  "function": {
1284                    "type": "ScriptFunction",
1285                    "id": {
1286                      "type": "Identifier",
1287                      "name": "foo",
1288                      "decorators": [],
1289                      "loc": {
1290                        "start": {
1291                          "line": 29,
1292                          "column": 10
1293                        },
1294                        "end": {
1295                          "line": 29,
1296                          "column": 13
1297                        }
1298                      }
1299                    },
1300                    "generator": false,
1301                    "async": false,
1302                    "expression": false,
1303                    "params": [
1304                      {
1305                        "type": "ETSParameterExpression",
1306                        "name": {
1307                          "type": "Identifier",
1308                          "name": "x",
1309                          "typeAnnotation": {
1310                            "type": "ETSTypeReference",
1311                            "part": {
1312                              "type": "ETSTypeReferencePart",
1313                              "name": {
1314                                "type": "Identifier",
1315                                "name": "A",
1316                                "decorators": [],
1317                                "loc": {
1318                                  "start": {
1319                                    "line": 29,
1320                                    "column": 17
1321                                  },
1322                                  "end": {
1323                                    "line": 29,
1324                                    "column": 18
1325                                  }
1326                                }
1327                              },
1328                              "loc": {
1329                                "start": {
1330                                  "line": 29,
1331                                  "column": 17
1332                                },
1333                                "end": {
1334                                  "line": 29,
1335                                  "column": 19
1336                                }
1337                              }
1338                            },
1339                            "loc": {
1340                              "start": {
1341                                "line": 29,
1342                                "column": 17
1343                              },
1344                              "end": {
1345                                "line": 29,
1346                                "column": 19
1347                              }
1348                            }
1349                          },
1350                          "decorators": [],
1351                          "loc": {
1352                            "start": {
1353                              "line": 29,
1354                              "column": 14
1355                            },
1356                            "end": {
1357                              "line": 29,
1358                              "column": 19
1359                            }
1360                          }
1361                        },
1362                        "loc": {
1363                          "start": {
1364                            "line": 29,
1365                            "column": 14
1366                          },
1367                          "end": {
1368                            "line": 29,
1369                            "column": 19
1370                          }
1371                        }
1372                      }
1373                    ],
1374                    "returnType": {
1375                      "type": "ETSTypeReference",
1376                      "part": {
1377                        "type": "ETSTypeReferencePart",
1378                        "name": {
1379                          "type": "Identifier",
1380                          "name": "string",
1381                          "decorators": [],
1382                          "loc": {
1383                            "start": {
1384                              "line": 29,
1385                              "column": 21
1386                            },
1387                            "end": {
1388                              "line": 29,
1389                              "column": 27
1390                            }
1391                          }
1392                        },
1393                        "loc": {
1394                          "start": {
1395                            "line": 29,
1396                            "column": 21
1397                          },
1398                          "end": {
1399                            "line": 29,
1400                            "column": 29
1401                          }
1402                        }
1403                      },
1404                      "loc": {
1405                        "start": {
1406                          "line": 29,
1407                          "column": 21
1408                        },
1409                        "end": {
1410                          "line": 29,
1411                          "column": 29
1412                        }
1413                      }
1414                    },
1415                    "body": {
1416                      "type": "BlockStatement",
1417                      "statements": [
1418                        {
1419                          "type": "ReturnStatement",
1420                          "argument": {
1421                            "type": "StringLiteral",
1422                            "value": "A",
1423                            "loc": {
1424                              "start": {
1425                                "line": 30,
1426                                "column": 12
1427                              },
1428                              "end": {
1429                                "line": 30,
1430                                "column": 15
1431                              }
1432                            }
1433                          },
1434                          "loc": {
1435                            "start": {
1436                              "line": 30,
1437                              "column": 5
1438                            },
1439                            "end": {
1440                              "line": 30,
1441                              "column": 16
1442                            }
1443                          }
1444                        }
1445                      ],
1446                      "loc": {
1447                        "start": {
1448                          "line": 29,
1449                          "column": 28
1450                        },
1451                        "end": {
1452                          "line": 31,
1453                          "column": 2
1454                        }
1455                      }
1456                    },
1457                    "loc": {
1458                      "start": {
1459                        "line": 29,
1460                        "column": 13
1461                      },
1462                      "end": {
1463                        "line": 31,
1464                        "column": 2
1465                      }
1466                    }
1467                  },
1468                  "loc": {
1469                    "start": {
1470                      "line": 29,
1471                      "column": 13
1472                    },
1473                    "end": {
1474                      "line": 31,
1475                      "column": 2
1476                    }
1477                  }
1478                },
1479                "overloads": [],
1480                "decorators": [],
1481                "loc": {
1482                  "start": {
1483                    "line": 29,
1484                    "column": 1
1485                  },
1486                  "end": {
1487                    "line": 31,
1488                    "column": 2
1489                  }
1490                }
1491              },
1492              {
1493                "type": "MethodDefinition",
1494                "key": {
1495                  "type": "Identifier",
1496                  "name": "foo",
1497                  "decorators": [],
1498                  "loc": {
1499                    "start": {
1500                      "line": 32,
1501                      "column": 10
1502                    },
1503                    "end": {
1504                      "line": 32,
1505                      "column": 13
1506                    }
1507                  }
1508                },
1509                "kind": "method",
1510                "accessibility": "public",
1511                "static": true,
1512                "optional": false,
1513                "computed": false,
1514                "value": {
1515                  "type": "FunctionExpression",
1516                  "function": {
1517                    "type": "ScriptFunction",
1518                    "id": {
1519                      "type": "Identifier",
1520                      "name": "foo",
1521                      "decorators": [],
1522                      "loc": {
1523                        "start": {
1524                          "line": 32,
1525                          "column": 10
1526                        },
1527                        "end": {
1528                          "line": 32,
1529                          "column": 13
1530                        }
1531                      }
1532                    },
1533                    "generator": false,
1534                    "async": false,
1535                    "expression": false,
1536                    "params": [
1537                      {
1538                        "type": "ETSParameterExpression",
1539                        "name": {
1540                          "type": "Identifier",
1541                          "name": "x",
1542                          "typeAnnotation": {
1543                            "type": "ETSTypeReference",
1544                            "part": {
1545                              "type": "ETSTypeReferencePart",
1546                              "name": {
1547                                "type": "Identifier",
1548                                "name": "B",
1549                                "decorators": [],
1550                                "loc": {
1551                                  "start": {
1552                                    "line": 32,
1553                                    "column": 17
1554                                  },
1555                                  "end": {
1556                                    "line": 32,
1557                                    "column": 18
1558                                  }
1559                                }
1560                              },
1561                              "loc": {
1562                                "start": {
1563                                  "line": 32,
1564                                  "column": 17
1565                                },
1566                                "end": {
1567                                  "line": 32,
1568                                  "column": 19
1569                                }
1570                              }
1571                            },
1572                            "loc": {
1573                              "start": {
1574                                "line": 32,
1575                                "column": 17
1576                              },
1577                              "end": {
1578                                "line": 32,
1579                                "column": 19
1580                              }
1581                            }
1582                          },
1583                          "decorators": [],
1584                          "loc": {
1585                            "start": {
1586                              "line": 32,
1587                              "column": 14
1588                            },
1589                            "end": {
1590                              "line": 32,
1591                              "column": 19
1592                            }
1593                          }
1594                        },
1595                        "loc": {
1596                          "start": {
1597                            "line": 32,
1598                            "column": 14
1599                          },
1600                          "end": {
1601                            "line": 32,
1602                            "column": 19
1603                          }
1604                        }
1605                      }
1606                    ],
1607                    "returnType": {
1608                      "type": "ETSTypeReference",
1609                      "part": {
1610                        "type": "ETSTypeReferencePart",
1611                        "name": {
1612                          "type": "Identifier",
1613                          "name": "string",
1614                          "decorators": [],
1615                          "loc": {
1616                            "start": {
1617                              "line": 32,
1618                              "column": 21
1619                            },
1620                            "end": {
1621                              "line": 32,
1622                              "column": 27
1623                            }
1624                          }
1625                        },
1626                        "loc": {
1627                          "start": {
1628                            "line": 32,
1629                            "column": 21
1630                          },
1631                          "end": {
1632                            "line": 32,
1633                            "column": 29
1634                          }
1635                        }
1636                      },
1637                      "loc": {
1638                        "start": {
1639                          "line": 32,
1640                          "column": 21
1641                        },
1642                        "end": {
1643                          "line": 32,
1644                          "column": 29
1645                        }
1646                      }
1647                    },
1648                    "body": {
1649                      "type": "BlockStatement",
1650                      "statements": [
1651                        {
1652                          "type": "ReturnStatement",
1653                          "argument": {
1654                            "type": "StringLiteral",
1655                            "value": "B",
1656                            "loc": {
1657                              "start": {
1658                                "line": 33,
1659                                "column": 12
1660                              },
1661                              "end": {
1662                                "line": 33,
1663                                "column": 15
1664                              }
1665                            }
1666                          },
1667                          "loc": {
1668                            "start": {
1669                              "line": 33,
1670                              "column": 5
1671                            },
1672                            "end": {
1673                              "line": 33,
1674                              "column": 16
1675                            }
1676                          }
1677                        }
1678                      ],
1679                      "loc": {
1680                        "start": {
1681                          "line": 32,
1682                          "column": 28
1683                        },
1684                        "end": {
1685                          "line": 34,
1686                          "column": 2
1687                        }
1688                      }
1689                    },
1690                    "loc": {
1691                      "start": {
1692                        "line": 32,
1693                        "column": 13
1694                      },
1695                      "end": {
1696                        "line": 34,
1697                        "column": 2
1698                      }
1699                    }
1700                  },
1701                  "loc": {
1702                    "start": {
1703                      "line": 32,
1704                      "column": 13
1705                    },
1706                    "end": {
1707                      "line": 34,
1708                      "column": 2
1709                    }
1710                  }
1711                },
1712                "overloads": [],
1713                "decorators": [],
1714                "loc": {
1715                  "start": {
1716                    "line": 32,
1717                    "column": 1
1718                  },
1719                  "end": {
1720                    "line": 34,
1721                    "column": 2
1722                  }
1723                }
1724              }
1725            ],
1726            "decorators": [],
1727            "loc": {
1728              "start": {
1729                "line": 23,
1730                "column": 1
1731              },
1732              "end": {
1733                "line": 25,
1734                "column": 2
1735              }
1736            }
1737          },
1738          {
1739            "type": "MethodDefinition",
1740            "key": {
1741              "type": "Identifier",
1742              "name": "main",
1743              "decorators": [],
1744              "loc": {
1745                "start": {
1746                  "line": 36,
1747                  "column": 10
1748                },
1749                "end": {
1750                  "line": 36,
1751                  "column": 14
1752                }
1753              }
1754            },
1755            "kind": "method",
1756            "accessibility": "public",
1757            "static": true,
1758            "optional": false,
1759            "computed": false,
1760            "value": {
1761              "type": "FunctionExpression",
1762              "function": {
1763                "type": "ScriptFunction",
1764                "id": {
1765                  "type": "Identifier",
1766                  "name": "main",
1767                  "decorators": [],
1768                  "loc": {
1769                    "start": {
1770                      "line": 36,
1771                      "column": 10
1772                    },
1773                    "end": {
1774                      "line": 36,
1775                      "column": 14
1776                    }
1777                  }
1778                },
1779                "generator": false,
1780                "async": false,
1781                "expression": false,
1782                "params": [],
1783                "returnType": {
1784                  "type": "ETSPrimitiveType",
1785                  "loc": {
1786                    "start": {
1787                      "line": 36,
1788                      "column": 18
1789                    },
1790                    "end": {
1791                      "line": 36,
1792                      "column": 21
1793                    }
1794                  }
1795                },
1796                "body": {
1797                  "type": "BlockStatement",
1798                  "statements": [
1799                    {
1800                      "type": "VariableDeclaration",
1801                      "declarations": [
1802                        {
1803                          "type": "VariableDeclarator",
1804                          "id": {
1805                            "type": "Identifier",
1806                            "name": "b",
1807                            "typeAnnotation": {
1808                              "type": "ETSTypeReference",
1809                              "part": {
1810                                "type": "ETSTypeReferencePart",
1811                                "name": {
1812                                  "type": "Identifier",
1813                                  "name": "string",
1814                                  "decorators": [],
1815                                  "loc": {
1816                                    "start": {
1817                                      "line": 37,
1818                                      "column": 13
1819                                    },
1820                                    "end": {
1821                                      "line": 37,
1822                                      "column": 19
1823                                    }
1824                                  }
1825                                },
1826                                "loc": {
1827                                  "start": {
1828                                    "line": 37,
1829                                    "column": 13
1830                                  },
1831                                  "end": {
1832                                    "line": 37,
1833                                    "column": 21
1834                                  }
1835                                }
1836                              },
1837                              "loc": {
1838                                "start": {
1839                                  "line": 37,
1840                                  "column": 13
1841                                },
1842                                "end": {
1843                                  "line": 37,
1844                                  "column": 21
1845                                }
1846                              }
1847                            },
1848                            "decorators": [],
1849                            "loc": {
1850                              "start": {
1851                                "line": 37,
1852                                "column": 9
1853                              },
1854                              "end": {
1855                                "line": 37,
1856                                "column": 10
1857                              }
1858                            }
1859                          },
1860                          "init": {
1861                            "type": "CallExpression",
1862                            "callee": {
1863                              "type": "Identifier",
1864                              "name": "foo",
1865                              "decorators": [],
1866                              "loc": {
1867                                "start": {
1868                                  "line": 37,
1869                                  "column": 22
1870                                },
1871                                "end": {
1872                                  "line": 37,
1873                                  "column": 25
1874                                }
1875                              }
1876                            },
1877                            "arguments": [
1878                              {
1879                                "type": "ETSNewClassInstanceExpression",
1880                                "typeReference": {
1881                                  "type": "ETSTypeReference",
1882                                  "part": {
1883                                    "type": "ETSTypeReferencePart",
1884                                    "name": {
1885                                      "type": "Identifier",
1886                                      "name": "B",
1887                                      "decorators": [],
1888                                      "loc": {
1889                                        "start": {
1890                                          "line": 37,
1891                                          "column": 30
1892                                        },
1893                                        "end": {
1894                                          "line": 37,
1895                                          "column": 31
1896                                        }
1897                                      }
1898                                    },
1899                                    "loc": {
1900                                      "start": {
1901                                        "line": 37,
1902                                        "column": 30
1903                                      },
1904                                      "end": {
1905                                        "line": 37,
1906                                        "column": 32
1907                                      }
1908                                    }
1909                                  },
1910                                  "loc": {
1911                                    "start": {
1912                                      "line": 37,
1913                                      "column": 30
1914                                    },
1915                                    "end": {
1916                                      "line": 37,
1917                                      "column": 32
1918                                    }
1919                                  }
1920                                },
1921                                "arguments": [],
1922                                "loc": {
1923                                  "start": {
1924                                    "line": 37,
1925                                    "column": 26
1926                                  },
1927                                  "end": {
1928                                    "line": 37,
1929                                    "column": 34
1930                                  }
1931                                }
1932                              }
1933                            ],
1934                            "optional": false,
1935                            "loc": {
1936                              "start": {
1937                                "line": 37,
1938                                "column": 22
1939                              },
1940                              "end": {
1941                                "line": 37,
1942                                "column": 34
1943                              }
1944                            }
1945                          },
1946                          "loc": {
1947                            "start": {
1948                              "line": 37,
1949                              "column": 9
1950                            },
1951                            "end": {
1952                              "line": 37,
1953                              "column": 34
1954                            }
1955                          }
1956                        }
1957                      ],
1958                      "kind": "let",
1959                      "loc": {
1960                        "start": {
1961                          "line": 37,
1962                          "column": 5
1963                        },
1964                        "end": {
1965                          "line": 37,
1966                          "column": 35
1967                        }
1968                      }
1969                    },
1970                    {
1971                      "type": "ReturnStatement",
1972                      "argument": {
1973                        "type": "NumberLiteral",
1974                        "value": 0,
1975                        "loc": {
1976                          "start": {
1977                            "line": 38,
1978                            "column": 12
1979                          },
1980                          "end": {
1981                            "line": 38,
1982                            "column": 13
1983                          }
1984                        }
1985                      },
1986                      "loc": {
1987                        "start": {
1988                          "line": 38,
1989                          "column": 5
1990                        },
1991                        "end": {
1992                          "line": 38,
1993                          "column": 14
1994                        }
1995                      }
1996                    }
1997                  ],
1998                  "loc": {
1999                    "start": {
2000                      "line": 36,
2001                      "column": 22
2002                    },
2003                    "end": {
2004                      "line": 39,
2005                      "column": 2
2006                    }
2007                  }
2008                },
2009                "loc": {
2010                  "start": {
2011                    "line": 36,
2012                    "column": 14
2013                  },
2014                  "end": {
2015                    "line": 39,
2016                    "column": 2
2017                  }
2018                }
2019              },
2020              "loc": {
2021                "start": {
2022                  "line": 36,
2023                  "column": 14
2024                },
2025                "end": {
2026                  "line": 39,
2027                  "column": 2
2028                }
2029              }
2030            },
2031            "overloads": [],
2032            "decorators": [],
2033            "loc": {
2034              "start": {
2035                "line": 36,
2036                "column": 1
2037              },
2038              "end": {
2039                "line": 39,
2040                "column": 2
2041              }
2042            }
2043          }
2044        ],
2045        "loc": {
2046          "start": {
2047            "line": 1,
2048            "column": 1
2049          },
2050          "end": {
2051            "line": 1,
2052            "column": 1
2053          }
2054        }
2055      },
2056      "loc": {
2057        "start": {
2058          "line": 1,
2059          "column": 1
2060        },
2061        "end": {
2062          "line": 1,
2063          "column": 1
2064        }
2065      }
2066    }
2067  ],
2068  "loc": {
2069    "start": {
2070      "line": 1,
2071      "column": 1
2072    },
2073    "end": {
2074      "line": 41,
2075      "column": 1
2076    }
2077  }
2078}
2079