1{
2  "type": "Program",
3  "statements": [
4    {
5      "type": "ClassDeclaration",
6      "definition": {
7        "id": {
8          "type": "Identifier",
9          "name": "A",
10          "decorators": [],
11          "loc": {
12            "start": {
13              "line": 16,
14              "column": 16
15            },
16            "end": {
17              "line": 16,
18              "column": 17
19            }
20          }
21        },
22        "superClass": {
23          "type": "ETSTypeReference",
24          "part": {
25            "type": "ETSTypeReferencePart",
26            "name": {
27              "type": "Identifier",
28              "name": "B",
29              "decorators": [],
30              "loc": {
31                "start": {
32                  "line": 16,
33                  "column": 26
34                },
35                "end": {
36                  "line": 16,
37                  "column": 27
38                }
39              }
40            },
41            "loc": {
42              "start": {
43                "line": 16,
44                "column": 26
45              },
46              "end": {
47                "line": 16,
48                "column": 38
49              }
50            }
51          },
52          "loc": {
53            "start": {
54              "line": 16,
55              "column": 26
56            },
57            "end": {
58              "line": 16,
59              "column": 38
60            }
61          }
62        },
63        "implements": [
64          {
65            "type": "TSClassImplements",
66            "expression": {
67              "type": "ETSTypeReference",
68              "part": {
69                "type": "ETSTypeReferencePart",
70                "name": {
71                  "type": "Identifier",
72                  "name": "C",
73                  "decorators": [],
74                  "loc": {
75                    "start": {
76                      "line": 16,
77                      "column": 39
78                    },
79                    "end": {
80                      "line": 16,
81                      "column": 40
82                    }
83                  }
84                },
85                "loc": {
86                  "start": {
87                    "line": 16,
88                    "column": 39
89                  },
90                  "end": {
91                    "line": 16,
92                    "column": 41
93                  }
94                }
95              },
96              "loc": {
97                "start": {
98                  "line": 16,
99                  "column": 39
100                },
101                "end": {
102                  "line": 16,
103                  "column": 41
104                }
105              }
106            },
107            "loc": {
108              "start": {
109                "line": 16,
110                "column": 39
111              },
112              "end": {
113                "line": 16,
114                "column": 41
115              }
116            }
117          }
118        ],
119        "body": [
120          {
121            "type": "MethodDefinition",
122            "key": {
123              "type": "Identifier",
124              "name": "foo",
125              "decorators": [],
126              "loc": {
127                "start": {
128                  "line": 17,
129                  "column": 5
130                },
131                "end": {
132                  "line": 17,
133                  "column": 8
134                }
135              }
136            },
137            "kind": "method",
138            "accessibility": "public",
139            "static": false,
140            "optional": false,
141            "computed": false,
142            "value": {
143              "type": "FunctionExpression",
144              "function": {
145                "type": "ScriptFunction",
146                "id": {
147                  "type": "Identifier",
148                  "name": "foo",
149                  "decorators": [],
150                  "loc": {
151                    "start": {
152                      "line": 17,
153                      "column": 5
154                    },
155                    "end": {
156                      "line": 17,
157                      "column": 8
158                    }
159                  }
160                },
161                "generator": false,
162                "async": false,
163                "expression": false,
164                "params": [
165                  {
166                    "type": "ETSParameterExpression",
167                    "name": {
168                      "type": "Identifier",
169                      "name": "a",
170                      "typeAnnotation": {
171                        "type": "ETSPrimitiveType",
172                        "loc": {
173                          "start": {
174                            "line": 17,
175                            "column": 12
176                          },
177                          "end": {
178                            "line": 17,
179                            "column": 15
180                          }
181                        }
182                      },
183                      "decorators": [],
184                      "loc": {
185                        "start": {
186                          "line": 17,
187                          "column": 9
188                        },
189                        "end": {
190                          "line": 17,
191                          "column": 15
192                        }
193                      }
194                    },
195                    "loc": {
196                      "start": {
197                        "line": 17,
198                        "column": 9
199                      },
200                      "end": {
201                        "line": 17,
202                        "column": 15
203                      }
204                    }
205                  }
206                ],
207                "returnType": {
208                  "type": "ETSPrimitiveType",
209                  "loc": {
210                    "start": {
211                      "line": 17,
212                      "column": 18
213                    },
214                    "end": {
215                      "line": 17,
216                      "column": 22
217                    }
218                  }
219                },
220                "body": {
221                  "type": "BlockStatement",
222                  "statements": [],
223                  "loc": {
224                    "start": {
225                      "line": 17,
226                      "column": 23
227                    },
228                    "end": {
229                      "line": 19,
230                      "column": 6
231                    }
232                  }
233                },
234                "loc": {
235                  "start": {
236                    "line": 17,
237                    "column": 8
238                  },
239                  "end": {
240                    "line": 19,
241                    "column": 6
242                  }
243                }
244              },
245              "loc": {
246                "start": {
247                  "line": 17,
248                  "column": 8
249                },
250                "end": {
251                  "line": 19,
252                  "column": 6
253                }
254              }
255            },
256            "overloads": [
257              {
258                "type": "MethodDefinition",
259                "key": {
260                  "type": "Identifier",
261                  "name": "foo",
262                  "decorators": [],
263                  "loc": {
264                    "start": {
265                      "line": 21,
266                      "column": 5
267                    },
268                    "end": {
269                      "line": 21,
270                      "column": 8
271                    }
272                  }
273                },
274                "kind": "method",
275                "accessibility": "public",
276                "static": false,
277                "optional": false,
278                "computed": false,
279                "value": {
280                  "type": "FunctionExpression",
281                  "function": {
282                    "type": "ScriptFunction",
283                    "id": {
284                      "type": "Identifier",
285                      "name": "foo",
286                      "decorators": [],
287                      "loc": {
288                        "start": {
289                          "line": 21,
290                          "column": 5
291                        },
292                        "end": {
293                          "line": 21,
294                          "column": 8
295                        }
296                      }
297                    },
298                    "generator": false,
299                    "async": false,
300                    "expression": false,
301                    "params": [
302                      {
303                        "type": "ETSParameterExpression",
304                        "name": {
305                          "type": "Identifier",
306                          "name": "a",
307                          "typeAnnotation": {
308                            "type": "ETSPrimitiveType",
309                            "loc": {
310                              "start": {
311                                "line": 21,
312                                "column": 12
313                              },
314                              "end": {
315                                "line": 21,
316                                "column": 16
317                              }
318                            }
319                          },
320                          "decorators": [],
321                          "loc": {
322                            "start": {
323                              "line": 21,
324                              "column": 9
325                            },
326                            "end": {
327                              "line": 21,
328                              "column": 16
329                            }
330                          }
331                        },
332                        "loc": {
333                          "start": {
334                            "line": 21,
335                            "column": 9
336                          },
337                          "end": {
338                            "line": 21,
339                            "column": 16
340                          }
341                        }
342                      }
343                    ],
344                    "returnType": {
345                      "type": "ETSPrimitiveType",
346                      "loc": {
347                        "start": {
348                          "line": 21,
349                          "column": 19
350                        },
351                        "end": {
352                          "line": 21,
353                          "column": 22
354                        }
355                      }
356                    },
357                    "body": {
358                      "type": "BlockStatement",
359                      "statements": [
360                        {
361                          "type": "ReturnStatement",
362                          "argument": {
363                            "type": "NumberLiteral",
364                            "value": 2,
365                            "loc": {
366                              "start": {
367                                "line": 22,
368                                "column": 16
369                              },
370                              "end": {
371                                "line": 22,
372                                "column": 17
373                              }
374                            }
375                          },
376                          "loc": {
377                            "start": {
378                              "line": 22,
379                              "column": 9
380                            },
381                            "end": {
382                              "line": 22,
383                              "column": 18
384                            }
385                          }
386                        }
387                      ],
388                      "loc": {
389                        "start": {
390                          "line": 21,
391                          "column": 23
392                        },
393                        "end": {
394                          "line": 23,
395                          "column": 6
396                        }
397                      }
398                    },
399                    "loc": {
400                      "start": {
401                        "line": 21,
402                        "column": 8
403                      },
404                      "end": {
405                        "line": 23,
406                        "column": 6
407                      }
408                    }
409                  },
410                  "loc": {
411                    "start": {
412                      "line": 21,
413                      "column": 8
414                    },
415                    "end": {
416                      "line": 23,
417                      "column": 6
418                    }
419                  }
420                },
421                "overloads": [],
422                "decorators": [],
423                "loc": {
424                  "start": {
425                    "line": 21,
426                    "column": 5
427                  },
428                  "end": {
429                    "line": 23,
430                    "column": 6
431                  }
432                }
433              }
434            ],
435            "decorators": [],
436            "loc": {
437              "start": {
438                "line": 17,
439                "column": 5
440              },
441              "end": {
442                "line": 19,
443                "column": 6
444              }
445            }
446          },
447          {
448            "type": "MethodDefinition",
449            "key": {
450              "type": "Identifier",
451              "name": "bar",
452              "decorators": [],
453              "loc": {
454                "start": {
455                  "line": 20,
456                  "column": 14
457                },
458                "end": {
459                  "line": 20,
460                  "column": 17
461                }
462              }
463            },
464            "kind": "method",
465            "accessibility": "public",
466            "static": false,
467            "optional": false,
468            "computed": false,
469            "value": {
470              "type": "FunctionExpression",
471              "function": {
472                "type": "ScriptFunction",
473                "id": {
474                  "type": "Identifier",
475                  "name": "bar",
476                  "decorators": [],
477                  "loc": {
478                    "start": {
479                      "line": 20,
480                      "column": 14
481                    },
482                    "end": {
483                      "line": 20,
484                      "column": 17
485                    }
486                  }
487                },
488                "generator": false,
489                "async": false,
490                "expression": false,
491                "params": [
492                  {
493                    "type": "ETSParameterExpression",
494                    "name": {
495                      "type": "Identifier",
496                      "name": "b",
497                      "typeAnnotation": {
498                        "type": "ETSPrimitiveType",
499                        "loc": {
500                          "start": {
501                            "line": 20,
502                            "column": 21
503                          },
504                          "end": {
505                            "line": 20,
506                            "column": 28
507                          }
508                        }
509                      },
510                      "decorators": [],
511                      "loc": {
512                        "start": {
513                          "line": 20,
514                          "column": 18
515                        },
516                        "end": {
517                          "line": 20,
518                          "column": 28
519                        }
520                      }
521                    },
522                    "loc": {
523                      "start": {
524                        "line": 20,
525                        "column": 18
526                      },
527                      "end": {
528                        "line": 20,
529                        "column": 28
530                      }
531                    }
532                  }
533                ],
534                "returnType": {
535                  "type": "ETSPrimitiveType",
536                  "loc": {
537                    "start": {
538                      "line": 20,
539                      "column": 31
540                    },
541                    "end": {
542                      "line": 20,
543                      "column": 35
544                    }
545                  }
546                },
547                "loc": {
548                  "start": {
549                    "line": 20,
550                    "column": 17
551                  },
552                  "end": {
553                    "line": 20,
554                    "column": 17
555                  }
556                }
557              },
558              "loc": {
559                "start": {
560                  "line": 20,
561                  "column": 17
562                },
563                "end": {
564                  "line": 20,
565                  "column": 17
566                }
567              }
568            },
569            "overloads": [],
570            "decorators": [],
571            "loc": {
572              "start": {
573                "line": 20,
574                "column": 5
575              },
576              "end": {
577                "line": 20,
578                "column": 17
579              }
580            }
581          },
582          {
583            "type": "MethodDefinition",
584            "key": {
585              "type": "Identifier",
586              "name": "func",
587              "decorators": [],
588              "loc": {
589                "start": {
590                  "line": 24,
591                  "column": 14
592                },
593                "end": {
594                  "line": 24,
595                  "column": 18
596                }
597              }
598            },
599            "kind": "method",
600            "accessibility": "public",
601            "static": false,
602            "optional": false,
603            "computed": false,
604            "value": {
605              "type": "FunctionExpression",
606              "function": {
607                "type": "ScriptFunction",
608                "id": {
609                  "type": "Identifier",
610                  "name": "func",
611                  "decorators": [],
612                  "loc": {
613                    "start": {
614                      "line": 24,
615                      "column": 14
616                    },
617                    "end": {
618                      "line": 24,
619                      "column": 18
620                    }
621                  }
622                },
623                "generator": false,
624                "async": false,
625                "expression": false,
626                "params": [
627                  {
628                    "type": "ETSParameterExpression",
629                    "name": {
630                      "type": "Identifier",
631                      "name": "a",
632                      "typeAnnotation": {
633                        "type": "ETSPrimitiveType",
634                        "loc": {
635                          "start": {
636                            "line": 24,
637                            "column": 22
638                          },
639                          "end": {
640                            "line": 24,
641                            "column": 25
642                          }
643                        }
644                      },
645                      "decorators": [],
646                      "loc": {
647                        "start": {
648                          "line": 24,
649                          "column": 19
650                        },
651                        "end": {
652                          "line": 24,
653                          "column": 25
654                        }
655                      }
656                    },
657                    "loc": {
658                      "start": {
659                        "line": 24,
660                        "column": 19
661                      },
662                      "end": {
663                        "line": 24,
664                        "column": 25
665                      }
666                    }
667                  }
668                ],
669                "returnType": {
670                  "type": "ETSPrimitiveType",
671                  "loc": {
672                    "start": {
673                      "line": 24,
674                      "column": 28
675                    },
676                    "end": {
677                      "line": 24,
678                      "column": 32
679                    }
680                  }
681                },
682                "body": {
683                  "type": "BlockStatement",
684                  "statements": [],
685                  "loc": {
686                    "start": {
687                      "line": 24,
688                      "column": 33
689                    },
690                    "end": {
691                      "line": 26,
692                      "column": 6
693                    }
694                  }
695                },
696                "loc": {
697                  "start": {
698                    "line": 24,
699                    "column": 18
700                  },
701                  "end": {
702                    "line": 26,
703                    "column": 6
704                  }
705                }
706              },
707              "loc": {
708                "start": {
709                  "line": 24,
710                  "column": 18
711                },
712                "end": {
713                  "line": 26,
714                  "column": 6
715                }
716              }
717            },
718            "overloads": [],
719            "decorators": [],
720            "loc": {
721              "start": {
722                "line": 24,
723                "column": 5
724              },
725              "end": {
726                "line": 26,
727                "column": 6
728              }
729            }
730          },
731          {
732            "type": "MethodDefinition",
733            "key": {
734              "type": "Identifier",
735              "name": "constructor",
736              "decorators": [],
737              "loc": {
738                "start": {
739                  "line": 1,
740                  "column": 1
741                },
742                "end": {
743                  "line": 1,
744                  "column": 1
745                }
746              }
747            },
748            "kind": "constructor",
749            "static": false,
750            "optional": false,
751            "computed": false,
752            "value": {
753              "type": "FunctionExpression",
754              "function": {
755                "type": "ScriptFunction",
756                "id": {
757                  "type": "Identifier",
758                  "name": "constructor",
759                  "decorators": [],
760                  "loc": {
761                    "start": {
762                      "line": 1,
763                      "column": 1
764                    },
765                    "end": {
766                      "line": 1,
767                      "column": 1
768                    }
769                  }
770                },
771                "generator": false,
772                "async": false,
773                "expression": false,
774                "params": [],
775                "body": {
776                  "type": "BlockStatement",
777                  "statements": [],
778                  "loc": {
779                    "start": {
780                      "line": 1,
781                      "column": 1
782                    },
783                    "end": {
784                      "line": 1,
785                      "column": 1
786                    }
787                  }
788                },
789                "loc": {
790                  "start": {
791                    "line": 1,
792                    "column": 1
793                  },
794                  "end": {
795                    "line": 1,
796                    "column": 1
797                  }
798                }
799              },
800              "loc": {
801                "start": {
802                  "line": 1,
803                  "column": 1
804                },
805                "end": {
806                  "line": 1,
807                  "column": 1
808                }
809              }
810            },
811            "overloads": [],
812            "decorators": [],
813            "loc": {
814              "start": {
815                "line": 27,
816                "column": 2
817              },
818              "end": {
819                "line": 27,
820                "column": 2
821              }
822            }
823          }
824        ],
825        "loc": {
826          "start": {
827            "line": 16,
828            "column": 40
829          },
830          "end": {
831            "line": 27,
832            "column": 2
833          }
834        }
835      },
836      "loc": {
837        "start": {
838          "line": 16,
839          "column": 10
840        },
841        "end": {
842          "line": 27,
843          "column": 2
844        }
845      }
846    },
847    {
848      "type": "TSInterfaceDeclaration",
849      "body": {
850        "type": "TSInterfaceBody",
851        "body": [
852          {
853            "type": "MethodDefinition",
854            "key": {
855              "type": "Identifier",
856              "name": "foo",
857              "decorators": [],
858              "loc": {
859                "start": {
860                  "line": 30,
861                  "column": 5
862                },
863                "end": {
864                  "line": 30,
865                  "column": 8
866                }
867              }
868            },
869            "kind": "method",
870            "accessibility": "public",
871            "static": false,
872            "optional": false,
873            "computed": false,
874            "value": {
875              "type": "FunctionExpression",
876              "function": {
877                "type": "ScriptFunction",
878                "id": {
879                  "type": "Identifier",
880                  "name": "foo",
881                  "decorators": [],
882                  "loc": {
883                    "start": {
884                      "line": 30,
885                      "column": 5
886                    },
887                    "end": {
888                      "line": 30,
889                      "column": 8
890                    }
891                  }
892                },
893                "generator": false,
894                "async": false,
895                "expression": false,
896                "params": [
897                  {
898                    "type": "ETSParameterExpression",
899                    "name": {
900                      "type": "Identifier",
901                      "name": "a",
902                      "typeAnnotation": {
903                        "type": "ETSPrimitiveType",
904                        "loc": {
905                          "start": {
906                            "line": 30,
907                            "column": 12
908                          },
909                          "end": {
910                            "line": 30,
911                            "column": 16
912                          }
913                        }
914                      },
915                      "decorators": [],
916                      "loc": {
917                        "start": {
918                          "line": 30,
919                          "column": 9
920                        },
921                        "end": {
922                          "line": 30,
923                          "column": 16
924                        }
925                      }
926                    },
927                    "loc": {
928                      "start": {
929                        "line": 30,
930                        "column": 9
931                      },
932                      "end": {
933                        "line": 30,
934                        "column": 16
935                      }
936                    }
937                  }
938                ],
939                "returnType": {
940                  "type": "ETSPrimitiveType",
941                  "loc": {
942                    "start": {
943                      "line": 30,
944                      "column": 19
945                    },
946                    "end": {
947                      "line": 30,
948                      "column": 22
949                    }
950                  }
951                },
952                "declare": true,
953                "loc": {
954                  "start": {
955                    "line": 30,
956                    "column": 8
957                  },
958                  "end": {
959                    "line": 30,
960                    "column": 22
961                  }
962                }
963              },
964              "loc": {
965                "start": {
966                  "line": 30,
967                  "column": 8
968                },
969                "end": {
970                  "line": 30,
971                  "column": 22
972                }
973              }
974            },
975            "overloads": [],
976            "decorators": [],
977            "loc": {
978              "start": {
979                "line": 30,
980                "column": 5
981              },
982              "end": {
983                "line": 30,
984                "column": 23
985              }
986            }
987          }
988        ],
989        "loc": {
990          "start": {
991            "line": 29,
992            "column": 13
993          },
994          "end": {
995            "line": 31,
996            "column": 2
997          }
998        }
999      },
1000      "id": {
1001        "type": "Identifier",
1002        "name": "D",
1003        "decorators": [],
1004        "loc": {
1005          "start": {
1006            "line": 29,
1007            "column": 11
1008          },
1009          "end": {
1010            "line": 29,
1011            "column": 12
1012          }
1013        }
1014      },
1015      "extends": [],
1016      "loc": {
1017        "start": {
1018          "line": 29,
1019          "column": 1
1020        },
1021        "end": {
1022          "line": 33,
1023          "column": 10
1024        }
1025      }
1026    },
1027    {
1028      "type": "TSInterfaceDeclaration",
1029      "body": {
1030        "type": "TSInterfaceBody",
1031        "body": [
1032          {
1033            "type": "MethodDefinition",
1034            "key": {
1035              "type": "Identifier",
1036              "name": "interf",
1037              "decorators": [],
1038              "loc": {
1039                "start": {
1040                  "line": 34,
1041                  "column": 5
1042                },
1043                "end": {
1044                  "line": 34,
1045                  "column": 11
1046                }
1047              }
1048            },
1049            "kind": "method",
1050            "accessibility": "public",
1051            "static": false,
1052            "optional": false,
1053            "computed": false,
1054            "value": {
1055              "type": "FunctionExpression",
1056              "function": {
1057                "type": "ScriptFunction",
1058                "id": {
1059                  "type": "Identifier",
1060                  "name": "interf",
1061                  "decorators": [],
1062                  "loc": {
1063                    "start": {
1064                      "line": 34,
1065                      "column": 5
1066                    },
1067                    "end": {
1068                      "line": 34,
1069                      "column": 11
1070                    }
1071                  }
1072                },
1073                "generator": false,
1074                "async": false,
1075                "expression": false,
1076                "params": [
1077                  {
1078                    "type": "ETSParameterExpression",
1079                    "name": {
1080                      "type": "Identifier",
1081                      "name": "a",
1082                      "typeAnnotation": {
1083                        "type": "ETSPrimitiveType",
1084                        "loc": {
1085                          "start": {
1086                            "line": 34,
1087                            "column": 15
1088                          },
1089                          "end": {
1090                            "line": 34,
1091                            "column": 18
1092                          }
1093                        }
1094                      },
1095                      "decorators": [],
1096                      "loc": {
1097                        "start": {
1098                          "line": 34,
1099                          "column": 12
1100                        },
1101                        "end": {
1102                          "line": 34,
1103                          "column": 18
1104                        }
1105                      }
1106                    },
1107                    "loc": {
1108                      "start": {
1109                        "line": 34,
1110                        "column": 12
1111                      },
1112                      "end": {
1113                        "line": 34,
1114                        "column": 18
1115                      }
1116                    }
1117                  },
1118                  {
1119                    "type": "ETSParameterExpression",
1120                    "name": {
1121                      "type": "Identifier",
1122                      "name": "b",
1123                      "typeAnnotation": {
1124                        "type": "ETSPrimitiveType",
1125                        "loc": {
1126                          "start": {
1127                            "line": 34,
1128                            "column": 23
1129                          },
1130                          "end": {
1131                            "line": 34,
1132                            "column": 26
1133                          }
1134                        }
1135                      },
1136                      "decorators": [],
1137                      "loc": {
1138                        "start": {
1139                          "line": 34,
1140                          "column": 20
1141                        },
1142                        "end": {
1143                          "line": 34,
1144                          "column": 26
1145                        }
1146                      }
1147                    },
1148                    "loc": {
1149                      "start": {
1150                        "line": 34,
1151                        "column": 20
1152                      },
1153                      "end": {
1154                        "line": 34,
1155                        "column": 26
1156                      }
1157                    }
1158                  }
1159                ],
1160                "returnType": {
1161                  "type": "ETSPrimitiveType",
1162                  "loc": {
1163                    "start": {
1164                      "line": 34,
1165                      "column": 29
1166                    },
1167                    "end": {
1168                      "line": 34,
1169                      "column": 33
1170                    }
1171                  }
1172                },
1173                "declare": true,
1174                "loc": {
1175                  "start": {
1176                    "line": 34,
1177                    "column": 11
1178                  },
1179                  "end": {
1180                    "line": 34,
1181                    "column": 33
1182                  }
1183                }
1184              },
1185              "loc": {
1186                "start": {
1187                  "line": 34,
1188                  "column": 11
1189                },
1190                "end": {
1191                  "line": 34,
1192                  "column": 33
1193                }
1194              }
1195            },
1196            "overloads": [],
1197            "decorators": [],
1198            "loc": {
1199              "start": {
1200                "line": 34,
1201                "column": 5
1202              },
1203              "end": {
1204                "line": 34,
1205                "column": 34
1206              }
1207            }
1208          }
1209        ],
1210        "loc": {
1211          "start": {
1212            "line": 33,
1213            "column": 13
1214          },
1215          "end": {
1216            "line": 35,
1217            "column": 2
1218          }
1219        }
1220      },
1221      "id": {
1222        "type": "Identifier",
1223        "name": "C",
1224        "decorators": [],
1225        "loc": {
1226          "start": {
1227            "line": 33,
1228            "column": 11
1229          },
1230          "end": {
1231            "line": 33,
1232            "column": 12
1233          }
1234        }
1235      },
1236      "extends": [],
1237      "loc": {
1238        "start": {
1239          "line": 33,
1240          "column": 1
1241        },
1242        "end": {
1243          "line": 37,
1244          "column": 9
1245        }
1246      }
1247    },
1248    {
1249      "type": "ClassDeclaration",
1250      "definition": {
1251        "id": {
1252          "type": "Identifier",
1253          "name": "H",
1254          "decorators": [],
1255          "loc": {
1256            "start": {
1257              "line": 37,
1258              "column": 16
1259            },
1260            "end": {
1261              "line": 37,
1262              "column": 17
1263            }
1264          }
1265        },
1266        "superClass": null,
1267        "implements": [],
1268        "body": [
1269          {
1270            "type": "MethodDefinition",
1271            "key": {
1272              "type": "Identifier",
1273              "name": "func",
1274              "decorators": [],
1275              "loc": {
1276                "start": {
1277                  "line": 38,
1278                  "column": 14
1279                },
1280                "end": {
1281                  "line": 38,
1282                  "column": 18
1283                }
1284              }
1285            },
1286            "kind": "method",
1287            "accessibility": "public",
1288            "static": false,
1289            "optional": false,
1290            "computed": false,
1291            "value": {
1292              "type": "FunctionExpression",
1293              "function": {
1294                "type": "ScriptFunction",
1295                "id": {
1296                  "type": "Identifier",
1297                  "name": "func",
1298                  "decorators": [],
1299                  "loc": {
1300                    "start": {
1301                      "line": 38,
1302                      "column": 14
1303                    },
1304                    "end": {
1305                      "line": 38,
1306                      "column": 18
1307                    }
1308                  }
1309                },
1310                "generator": false,
1311                "async": false,
1312                "expression": false,
1313                "params": [
1314                  {
1315                    "type": "ETSParameterExpression",
1316                    "name": {
1317                      "type": "Identifier",
1318                      "name": "a",
1319                      "typeAnnotation": {
1320                        "type": "ETSPrimitiveType",
1321                        "loc": {
1322                          "start": {
1323                            "line": 38,
1324                            "column": 22
1325                          },
1326                          "end": {
1327                            "line": 38,
1328                            "column": 25
1329                          }
1330                        }
1331                      },
1332                      "decorators": [],
1333                      "loc": {
1334                        "start": {
1335                          "line": 38,
1336                          "column": 19
1337                        },
1338                        "end": {
1339                          "line": 38,
1340                          "column": 25
1341                        }
1342                      }
1343                    },
1344                    "loc": {
1345                      "start": {
1346                        "line": 38,
1347                        "column": 19
1348                      },
1349                      "end": {
1350                        "line": 38,
1351                        "column": 25
1352                      }
1353                    }
1354                  }
1355                ],
1356                "returnType": {
1357                  "type": "ETSPrimitiveType",
1358                  "loc": {
1359                    "start": {
1360                      "line": 38,
1361                      "column": 28
1362                    },
1363                    "end": {
1364                      "line": 38,
1365                      "column": 32
1366                    }
1367                  }
1368                },
1369                "loc": {
1370                  "start": {
1371                    "line": 38,
1372                    "column": 18
1373                  },
1374                  "end": {
1375                    "line": 38,
1376                    "column": 18
1377                  }
1378                }
1379              },
1380              "loc": {
1381                "start": {
1382                  "line": 38,
1383                  "column": 18
1384                },
1385                "end": {
1386                  "line": 38,
1387                  "column": 18
1388                }
1389              }
1390            },
1391            "overloads": [],
1392            "decorators": [],
1393            "loc": {
1394              "start": {
1395                "line": 38,
1396                "column": 5
1397              },
1398              "end": {
1399                "line": 38,
1400                "column": 18
1401              }
1402            }
1403          },
1404          {
1405            "type": "MethodDefinition",
1406            "key": {
1407              "type": "Identifier",
1408              "name": "test",
1409              "decorators": [],
1410              "loc": {
1411                "start": {
1412                  "line": 39,
1413                  "column": 5
1414                },
1415                "end": {
1416                  "line": 39,
1417                  "column": 9
1418                }
1419              }
1420            },
1421            "kind": "method",
1422            "accessibility": "public",
1423            "static": false,
1424            "optional": false,
1425            "computed": false,
1426            "value": {
1427              "type": "FunctionExpression",
1428              "function": {
1429                "type": "ScriptFunction",
1430                "id": {
1431                  "type": "Identifier",
1432                  "name": "test",
1433                  "decorators": [],
1434                  "loc": {
1435                    "start": {
1436                      "line": 39,
1437                      "column": 5
1438                    },
1439                    "end": {
1440                      "line": 39,
1441                      "column": 9
1442                    }
1443                  }
1444                },
1445                "generator": false,
1446                "async": false,
1447                "expression": false,
1448                "params": [
1449                  {
1450                    "type": "ETSParameterExpression",
1451                    "name": {
1452                      "type": "Identifier",
1453                      "name": "a",
1454                      "typeAnnotation": {
1455                        "type": "ETSPrimitiveType",
1456                        "loc": {
1457                          "start": {
1458                            "line": 39,
1459                            "column": 13
1460                          },
1461                          "end": {
1462                            "line": 39,
1463                            "column": 16
1464                          }
1465                        }
1466                      },
1467                      "decorators": [],
1468                      "loc": {
1469                        "start": {
1470                          "line": 39,
1471                          "column": 10
1472                        },
1473                        "end": {
1474                          "line": 39,
1475                          "column": 16
1476                        }
1477                      }
1478                    },
1479                    "loc": {
1480                      "start": {
1481                        "line": 39,
1482                        "column": 10
1483                      },
1484                      "end": {
1485                        "line": 39,
1486                        "column": 16
1487                      }
1488                    }
1489                  }
1490                ],
1491                "returnType": {
1492                  "type": "ETSPrimitiveType",
1493                  "loc": {
1494                    "start": {
1495                      "line": 39,
1496                      "column": 19
1497                    },
1498                    "end": {
1499                      "line": 39,
1500                      "column": 23
1501                    }
1502                  }
1503                },
1504                "body": {
1505                  "type": "BlockStatement",
1506                  "statements": [],
1507                  "loc": {
1508                    "start": {
1509                      "line": 39,
1510                      "column": 23
1511                    },
1512                    "end": {
1513                      "line": 41,
1514                      "column": 6
1515                    }
1516                  }
1517                },
1518                "loc": {
1519                  "start": {
1520                    "line": 39,
1521                    "column": 9
1522                  },
1523                  "end": {
1524                    "line": 41,
1525                    "column": 6
1526                  }
1527                }
1528              },
1529              "loc": {
1530                "start": {
1531                  "line": 39,
1532                  "column": 9
1533                },
1534                "end": {
1535                  "line": 41,
1536                  "column": 6
1537                }
1538              }
1539            },
1540            "overloads": [],
1541            "decorators": [],
1542            "loc": {
1543              "start": {
1544                "line": 39,
1545                "column": 5
1546              },
1547              "end": {
1548                "line": 41,
1549                "column": 6
1550              }
1551            }
1552          },
1553          {
1554            "type": "MethodDefinition",
1555            "key": {
1556              "type": "Identifier",
1557              "name": "constructor",
1558              "decorators": [],
1559              "loc": {
1560                "start": {
1561                  "line": 1,
1562                  "column": 1
1563                },
1564                "end": {
1565                  "line": 1,
1566                  "column": 1
1567                }
1568              }
1569            },
1570            "kind": "constructor",
1571            "static": false,
1572            "optional": false,
1573            "computed": false,
1574            "value": {
1575              "type": "FunctionExpression",
1576              "function": {
1577                "type": "ScriptFunction",
1578                "id": {
1579                  "type": "Identifier",
1580                  "name": "constructor",
1581                  "decorators": [],
1582                  "loc": {
1583                    "start": {
1584                      "line": 1,
1585                      "column": 1
1586                    },
1587                    "end": {
1588                      "line": 1,
1589                      "column": 1
1590                    }
1591                  }
1592                },
1593                "generator": false,
1594                "async": false,
1595                "expression": false,
1596                "params": [],
1597                "body": {
1598                  "type": "BlockStatement",
1599                  "statements": [],
1600                  "loc": {
1601                    "start": {
1602                      "line": 1,
1603                      "column": 1
1604                    },
1605                    "end": {
1606                      "line": 1,
1607                      "column": 1
1608                    }
1609                  }
1610                },
1611                "loc": {
1612                  "start": {
1613                    "line": 1,
1614                    "column": 1
1615                  },
1616                  "end": {
1617                    "line": 1,
1618                    "column": 1
1619                  }
1620                }
1621              },
1622              "loc": {
1623                "start": {
1624                  "line": 1,
1625                  "column": 1
1626                },
1627                "end": {
1628                  "line": 1,
1629                  "column": 1
1630                }
1631              }
1632            },
1633            "overloads": [],
1634            "decorators": [],
1635            "loc": {
1636              "start": {
1637                "line": 42,
1638                "column": 2
1639              },
1640              "end": {
1641                "line": 42,
1642                "column": 2
1643              }
1644            }
1645          }
1646        ],
1647        "loc": {
1648          "start": {
1649            "line": 37,
1650            "column": 18
1651          },
1652          "end": {
1653            "line": 42,
1654            "column": 2
1655          }
1656        }
1657      },
1658      "loc": {
1659        "start": {
1660          "line": 37,
1661          "column": 10
1662        },
1663        "end": {
1664          "line": 42,
1665          "column": 2
1666        }
1667      }
1668    },
1669    {
1670      "type": "ClassDeclaration",
1671      "definition": {
1672        "id": {
1673          "type": "Identifier",
1674          "name": "B",
1675          "decorators": [],
1676          "loc": {
1677            "start": {
1678              "line": 44,
1679              "column": 16
1680            },
1681            "end": {
1682              "line": 44,
1683              "column": 17
1684            }
1685          }
1686        },
1687        "superClass": {
1688          "type": "ETSTypeReference",
1689          "part": {
1690            "type": "ETSTypeReferencePart",
1691            "name": {
1692              "type": "Identifier",
1693              "name": "H",
1694              "decorators": [],
1695              "loc": {
1696                "start": {
1697                  "line": 44,
1698                  "column": 26
1699                },
1700                "end": {
1701                  "line": 44,
1702                  "column": 27
1703                }
1704              }
1705            },
1706            "loc": {
1707              "start": {
1708                "line": 44,
1709                "column": 26
1710              },
1711              "end": {
1712                "line": 44,
1713                "column": 29
1714              }
1715            }
1716          },
1717          "loc": {
1718            "start": {
1719              "line": 44,
1720              "column": 26
1721            },
1722            "end": {
1723              "line": 44,
1724              "column": 29
1725            }
1726          }
1727        },
1728        "implements": [],
1729        "body": [
1730          {
1731            "type": "MethodDefinition",
1732            "key": {
1733              "type": "Identifier",
1734              "name": "interf",
1735              "decorators": [],
1736              "loc": {
1737                "start": {
1738                  "line": 45,
1739                  "column": 5
1740                },
1741                "end": {
1742                  "line": 45,
1743                  "column": 11
1744                }
1745              }
1746            },
1747            "kind": "method",
1748            "accessibility": "public",
1749            "static": false,
1750            "optional": false,
1751            "computed": false,
1752            "value": {
1753              "type": "FunctionExpression",
1754              "function": {
1755                "type": "ScriptFunction",
1756                "id": {
1757                  "type": "Identifier",
1758                  "name": "interf",
1759                  "decorators": [],
1760                  "loc": {
1761                    "start": {
1762                      "line": 45,
1763                      "column": 5
1764                    },
1765                    "end": {
1766                      "line": 45,
1767                      "column": 11
1768                    }
1769                  }
1770                },
1771                "generator": false,
1772                "async": false,
1773                "expression": false,
1774                "params": [
1775                  {
1776                    "type": "ETSParameterExpression",
1777                    "name": {
1778                      "type": "Identifier",
1779                      "name": "a",
1780                      "typeAnnotation": {
1781                        "type": "ETSPrimitiveType",
1782                        "loc": {
1783                          "start": {
1784                            "line": 45,
1785                            "column": 15
1786                          },
1787                          "end": {
1788                            "line": 45,
1789                            "column": 18
1790                          }
1791                        }
1792                      },
1793                      "decorators": [],
1794                      "loc": {
1795                        "start": {
1796                          "line": 45,
1797                          "column": 12
1798                        },
1799                        "end": {
1800                          "line": 45,
1801                          "column": 18
1802                        }
1803                      }
1804                    },
1805                    "loc": {
1806                      "start": {
1807                        "line": 45,
1808                        "column": 12
1809                      },
1810                      "end": {
1811                        "line": 45,
1812                        "column": 18
1813                      }
1814                    }
1815                  },
1816                  {
1817                    "type": "ETSParameterExpression",
1818                    "name": {
1819                      "type": "Identifier",
1820                      "name": "b",
1821                      "typeAnnotation": {
1822                        "type": "ETSPrimitiveType",
1823                        "loc": {
1824                          "start": {
1825                            "line": 45,
1826                            "column": 23
1827                          },
1828                          "end": {
1829                            "line": 45,
1830                            "column": 26
1831                          }
1832                        }
1833                      },
1834                      "decorators": [],
1835                      "loc": {
1836                        "start": {
1837                          "line": 45,
1838                          "column": 20
1839                        },
1840                        "end": {
1841                          "line": 45,
1842                          "column": 26
1843                        }
1844                      }
1845                    },
1846                    "loc": {
1847                      "start": {
1848                        "line": 45,
1849                        "column": 20
1850                      },
1851                      "end": {
1852                        "line": 45,
1853                        "column": 26
1854                      }
1855                    }
1856                  }
1857                ],
1858                "returnType": {
1859                  "type": "ETSPrimitiveType",
1860                  "loc": {
1861                    "start": {
1862                      "line": 45,
1863                      "column": 29
1864                    },
1865                    "end": {
1866                      "line": 45,
1867                      "column": 33
1868                    }
1869                  }
1870                },
1871                "body": {
1872                  "type": "BlockStatement",
1873                  "statements": [],
1874                  "loc": {
1875                    "start": {
1876                      "line": 45,
1877                      "column": 33
1878                    },
1879                    "end": {
1880                      "line": 47,
1881                      "column": 6
1882                    }
1883                  }
1884                },
1885                "loc": {
1886                  "start": {
1887                    "line": 45,
1888                    "column": 11
1889                  },
1890                  "end": {
1891                    "line": 47,
1892                    "column": 6
1893                  }
1894                }
1895              },
1896              "loc": {
1897                "start": {
1898                  "line": 45,
1899                  "column": 11
1900                },
1901                "end": {
1902                  "line": 47,
1903                  "column": 6
1904                }
1905              }
1906            },
1907            "overloads": [],
1908            "decorators": [],
1909            "loc": {
1910              "start": {
1911                "line": 45,
1912                "column": 5
1913              },
1914              "end": {
1915                "line": 47,
1916                "column": 6
1917              }
1918            }
1919          },
1920          {
1921            "type": "MethodDefinition",
1922            "key": {
1923              "type": "Identifier",
1924              "name": "constructor",
1925              "decorators": [],
1926              "loc": {
1927                "start": {
1928                  "line": 1,
1929                  "column": 1
1930                },
1931                "end": {
1932                  "line": 1,
1933                  "column": 1
1934                }
1935              }
1936            },
1937            "kind": "constructor",
1938            "static": false,
1939            "optional": false,
1940            "computed": false,
1941            "value": {
1942              "type": "FunctionExpression",
1943              "function": {
1944                "type": "ScriptFunction",
1945                "id": {
1946                  "type": "Identifier",
1947                  "name": "constructor",
1948                  "decorators": [],
1949                  "loc": {
1950                    "start": {
1951                      "line": 1,
1952                      "column": 1
1953                    },
1954                    "end": {
1955                      "line": 1,
1956                      "column": 1
1957                    }
1958                  }
1959                },
1960                "generator": false,
1961                "async": false,
1962                "expression": false,
1963                "params": [],
1964                "body": {
1965                  "type": "BlockStatement",
1966                  "statements": [],
1967                  "loc": {
1968                    "start": {
1969                      "line": 1,
1970                      "column": 1
1971                    },
1972                    "end": {
1973                      "line": 1,
1974                      "column": 1
1975                    }
1976                  }
1977                },
1978                "loc": {
1979                  "start": {
1980                    "line": 1,
1981                    "column": 1
1982                  },
1983                  "end": {
1984                    "line": 1,
1985                    "column": 1
1986                  }
1987                }
1988              },
1989              "loc": {
1990                "start": {
1991                  "line": 1,
1992                  "column": 1
1993                },
1994                "end": {
1995                  "line": 1,
1996                  "column": 1
1997                }
1998              }
1999            },
2000            "overloads": [],
2001            "decorators": [],
2002            "loc": {
2003              "start": {
2004                "line": 48,
2005                "column": 2
2006              },
2007              "end": {
2008                "line": 48,
2009                "column": 2
2010              }
2011            }
2012          }
2013        ],
2014        "loc": {
2015          "start": {
2016            "line": 44,
2017            "column": 28
2018          },
2019          "end": {
2020            "line": 48,
2021            "column": 2
2022          }
2023        }
2024      },
2025      "loc": {
2026        "start": {
2027          "line": 44,
2028          "column": 10
2029        },
2030        "end": {
2031          "line": 48,
2032          "column": 2
2033        }
2034      }
2035    },
2036    {
2037      "type": "TSInterfaceDeclaration",
2038      "body": {
2039        "type": "TSInterfaceBody",
2040        "body": [
2041          {
2042            "type": "MethodDefinition",
2043            "key": {
2044              "type": "Identifier",
2045              "name": "test",
2046              "decorators": [],
2047              "loc": {
2048                "start": {
2049                  "line": 51,
2050                  "column": 5
2051                },
2052                "end": {
2053                  "line": 51,
2054                  "column": 9
2055                }
2056              }
2057            },
2058            "kind": "method",
2059            "accessibility": "public",
2060            "static": false,
2061            "optional": false,
2062            "computed": false,
2063            "value": {
2064              "type": "FunctionExpression",
2065              "function": {
2066                "type": "ScriptFunction",
2067                "id": {
2068                  "type": "Identifier",
2069                  "name": "test",
2070                  "decorators": [],
2071                  "loc": {
2072                    "start": {
2073                      "line": 51,
2074                      "column": 5
2075                    },
2076                    "end": {
2077                      "line": 51,
2078                      "column": 9
2079                    }
2080                  }
2081                },
2082                "generator": false,
2083                "async": false,
2084                "expression": false,
2085                "params": [
2086                  {
2087                    "type": "ETSParameterExpression",
2088                    "name": {
2089                      "type": "Identifier",
2090                      "name": "a",
2091                      "typeAnnotation": {
2092                        "type": "ETSPrimitiveType",
2093                        "loc": {
2094                          "start": {
2095                            "line": 51,
2096                            "column": 13
2097                          },
2098                          "end": {
2099                            "line": 51,
2100                            "column": 16
2101                          }
2102                        }
2103                      },
2104                      "decorators": [],
2105                      "loc": {
2106                        "start": {
2107                          "line": 51,
2108                          "column": 10
2109                        },
2110                        "end": {
2111                          "line": 51,
2112                          "column": 16
2113                        }
2114                      }
2115                    },
2116                    "loc": {
2117                      "start": {
2118                        "line": 51,
2119                        "column": 10
2120                      },
2121                      "end": {
2122                        "line": 51,
2123                        "column": 16
2124                      }
2125                    }
2126                  }
2127                ],
2128                "returnType": {
2129                  "type": "ETSPrimitiveType",
2130                  "loc": {
2131                    "start": {
2132                      "line": 51,
2133                      "column": 19
2134                    },
2135                    "end": {
2136                      "line": 51,
2137                      "column": 23
2138                    }
2139                  }
2140                },
2141                "declare": true,
2142                "loc": {
2143                  "start": {
2144                    "line": 51,
2145                    "column": 9
2146                  },
2147                  "end": {
2148                    "line": 51,
2149                    "column": 23
2150                  }
2151                }
2152              },
2153              "loc": {
2154                "start": {
2155                  "line": 51,
2156                  "column": 9
2157                },
2158                "end": {
2159                  "line": 51,
2160                  "column": 23
2161                }
2162              }
2163            },
2164            "overloads": [],
2165            "decorators": [],
2166            "loc": {
2167              "start": {
2168                "line": 51,
2169                "column": 5
2170              },
2171              "end": {
2172                "line": 51,
2173                "column": 24
2174              }
2175            }
2176          }
2177        ],
2178        "loc": {
2179          "start": {
2180            "line": 50,
2181            "column": 13
2182          },
2183          "end": {
2184            "line": 52,
2185            "column": 2
2186          }
2187        }
2188      },
2189      "id": {
2190        "type": "Identifier",
2191        "name": "F",
2192        "decorators": [],
2193        "loc": {
2194          "start": {
2195            "line": 50,
2196            "column": 11
2197          },
2198          "end": {
2199            "line": 50,
2200            "column": 12
2201          }
2202        }
2203      },
2204      "extends": [],
2205      "loc": {
2206        "start": {
2207          "line": 50,
2208          "column": 1
2209        },
2210        "end": {
2211          "line": 54,
2212          "column": 6
2213        }
2214      }
2215    },
2216    {
2217      "type": "ClassDeclaration",
2218      "definition": {
2219        "id": {
2220          "type": "Identifier",
2221          "name": "G",
2222          "decorators": [],
2223          "loc": {
2224            "start": {
2225              "line": 54,
2226              "column": 7
2227            },
2228            "end": {
2229              "line": 54,
2230              "column": 8
2231            }
2232          }
2233        },
2234        "superClass": {
2235          "type": "ETSTypeReference",
2236          "part": {
2237            "type": "ETSTypeReferencePart",
2238            "name": {
2239              "type": "Identifier",
2240              "name": "A",
2241              "decorators": [],
2242              "loc": {
2243                "start": {
2244                  "line": 54,
2245                  "column": 17
2246                },
2247                "end": {
2248                  "line": 54,
2249                  "column": 18
2250                }
2251              }
2252            },
2253            "loc": {
2254              "start": {
2255                "line": 54,
2256                "column": 17
2257              },
2258              "end": {
2259                "line": 54,
2260                "column": 29
2261              }
2262            }
2263          },
2264          "loc": {
2265            "start": {
2266              "line": 54,
2267              "column": 17
2268            },
2269            "end": {
2270              "line": 54,
2271              "column": 29
2272            }
2273          }
2274        },
2275        "implements": [
2276          {
2277            "type": "TSClassImplements",
2278            "expression": {
2279              "type": "ETSTypeReference",
2280              "part": {
2281                "type": "ETSTypeReferencePart",
2282                "name": {
2283                  "type": "Identifier",
2284                  "name": "D",
2285                  "decorators": [],
2286                  "loc": {
2287                    "start": {
2288                      "line": 54,
2289                      "column": 30
2290                    },
2291                    "end": {
2292                      "line": 54,
2293                      "column": 31
2294                    }
2295                  }
2296                },
2297                "loc": {
2298                  "start": {
2299                    "line": 54,
2300                    "column": 30
2301                  },
2302                  "end": {
2303                    "line": 54,
2304                    "column": 32
2305                  }
2306                }
2307              },
2308              "loc": {
2309                "start": {
2310                  "line": 54,
2311                  "column": 30
2312                },
2313                "end": {
2314                  "line": 54,
2315                  "column": 32
2316                }
2317              }
2318            },
2319            "loc": {
2320              "start": {
2321                "line": 54,
2322                "column": 30
2323              },
2324              "end": {
2325                "line": 54,
2326                "column": 32
2327              }
2328            }
2329          },
2330          {
2331            "type": "TSClassImplements",
2332            "expression": {
2333              "type": "ETSTypeReference",
2334              "part": {
2335                "type": "ETSTypeReferencePart",
2336                "name": {
2337                  "type": "Identifier",
2338                  "name": "F",
2339                  "decorators": [],
2340                  "loc": {
2341                    "start": {
2342                      "line": 54,
2343                      "column": 33
2344                    },
2345                    "end": {
2346                      "line": 54,
2347                      "column": 34
2348                    }
2349                  }
2350                },
2351                "loc": {
2352                  "start": {
2353                    "line": 54,
2354                    "column": 33
2355                  },
2356                  "end": {
2357                    "line": 54,
2358                    "column": 36
2359                  }
2360                }
2361              },
2362              "loc": {
2363                "start": {
2364                  "line": 54,
2365                  "column": 33
2366                },
2367                "end": {
2368                  "line": 54,
2369                  "column": 36
2370                }
2371              }
2372            },
2373            "loc": {
2374              "start": {
2375                "line": 54,
2376                "column": 33
2377              },
2378              "end": {
2379                "line": 54,
2380                "column": 36
2381              }
2382            }
2383          }
2384        ],
2385        "body": [
2386          {
2387            "type": "MethodDefinition",
2388            "key": {
2389              "type": "Identifier",
2390              "name": "bar",
2391              "decorators": [],
2392              "loc": {
2393                "start": {
2394                  "line": 55,
2395                  "column": 14
2396                },
2397                "end": {
2398                  "line": 55,
2399                  "column": 17
2400                }
2401              }
2402            },
2403            "kind": "method",
2404            "accessibility": "public",
2405            "static": false,
2406            "optional": false,
2407            "computed": false,
2408            "value": {
2409              "type": "FunctionExpression",
2410              "function": {
2411                "type": "ScriptFunction",
2412                "id": {
2413                  "type": "Identifier",
2414                  "name": "bar",
2415                  "decorators": [],
2416                  "loc": {
2417                    "start": {
2418                      "line": 55,
2419                      "column": 14
2420                    },
2421                    "end": {
2422                      "line": 55,
2423                      "column": 17
2424                    }
2425                  }
2426                },
2427                "generator": false,
2428                "async": false,
2429                "expression": false,
2430                "params": [
2431                  {
2432                    "type": "ETSParameterExpression",
2433                    "name": {
2434                      "type": "Identifier",
2435                      "name": "a",
2436                      "typeAnnotation": {
2437                        "type": "ETSPrimitiveType",
2438                        "loc": {
2439                          "start": {
2440                            "line": 55,
2441                            "column": 21
2442                          },
2443                          "end": {
2444                            "line": 55,
2445                            "column": 28
2446                          }
2447                        }
2448                      },
2449                      "decorators": [],
2450                      "loc": {
2451                        "start": {
2452                          "line": 55,
2453                          "column": 18
2454                        },
2455                        "end": {
2456                          "line": 55,
2457                          "column": 28
2458                        }
2459                      }
2460                    },
2461                    "loc": {
2462                      "start": {
2463                        "line": 55,
2464                        "column": 18
2465                      },
2466                      "end": {
2467                        "line": 55,
2468                        "column": 28
2469                      }
2470                    }
2471                  }
2472                ],
2473                "returnType": {
2474                  "type": "ETSPrimitiveType",
2475                  "loc": {
2476                    "start": {
2477                      "line": 55,
2478                      "column": 31
2479                    },
2480                    "end": {
2481                      "line": 55,
2482                      "column": 35
2483                    }
2484                  }
2485                },
2486                "body": {
2487                  "type": "BlockStatement",
2488                  "statements": [],
2489                  "loc": {
2490                    "start": {
2491                      "line": 55,
2492                      "column": 36
2493                    },
2494                    "end": {
2495                      "line": 57,
2496                      "column": 6
2497                    }
2498                  }
2499                },
2500                "loc": {
2501                  "start": {
2502                    "line": 55,
2503                    "column": 17
2504                  },
2505                  "end": {
2506                    "line": 57,
2507                    "column": 6
2508                  }
2509                }
2510              },
2511              "loc": {
2512                "start": {
2513                  "line": 55,
2514                  "column": 17
2515                },
2516                "end": {
2517                  "line": 57,
2518                  "column": 6
2519                }
2520              }
2521            },
2522            "overloads": [],
2523            "decorators": [],
2524            "loc": {
2525              "start": {
2526                "line": 55,
2527                "column": 5
2528              },
2529              "end": {
2530                "line": 57,
2531                "column": 6
2532              }
2533            }
2534          },
2535          {
2536            "type": "MethodDefinition",
2537            "key": {
2538              "type": "Identifier",
2539              "name": "constructor",
2540              "decorators": [],
2541              "loc": {
2542                "start": {
2543                  "line": 1,
2544                  "column": 1
2545                },
2546                "end": {
2547                  "line": 1,
2548                  "column": 1
2549                }
2550              }
2551            },
2552            "kind": "constructor",
2553            "static": false,
2554            "optional": false,
2555            "computed": false,
2556            "value": {
2557              "type": "FunctionExpression",
2558              "function": {
2559                "type": "ScriptFunction",
2560                "id": {
2561                  "type": "Identifier",
2562                  "name": "constructor",
2563                  "decorators": [],
2564                  "loc": {
2565                    "start": {
2566                      "line": 1,
2567                      "column": 1
2568                    },
2569                    "end": {
2570                      "line": 1,
2571                      "column": 1
2572                    }
2573                  }
2574                },
2575                "generator": false,
2576                "async": false,
2577                "expression": false,
2578                "params": [],
2579                "body": {
2580                  "type": "BlockStatement",
2581                  "statements": [],
2582                  "loc": {
2583                    "start": {
2584                      "line": 1,
2585                      "column": 1
2586                    },
2587                    "end": {
2588                      "line": 1,
2589                      "column": 1
2590                    }
2591                  }
2592                },
2593                "loc": {
2594                  "start": {
2595                    "line": 1,
2596                    "column": 1
2597                  },
2598                  "end": {
2599                    "line": 1,
2600                    "column": 1
2601                  }
2602                }
2603              },
2604              "loc": {
2605                "start": {
2606                  "line": 1,
2607                  "column": 1
2608                },
2609                "end": {
2610                  "line": 1,
2611                  "column": 1
2612                }
2613              }
2614            },
2615            "overloads": [],
2616            "decorators": [],
2617            "loc": {
2618              "start": {
2619                "line": 58,
2620                "column": 2
2621              },
2622              "end": {
2623                "line": 58,
2624                "column": 2
2625              }
2626            }
2627          }
2628        ],
2629        "loc": {
2630          "start": {
2631            "line": 54,
2632            "column": 35
2633          },
2634          "end": {
2635            "line": 58,
2636            "column": 2
2637          }
2638        }
2639      },
2640      "loc": {
2641        "start": {
2642          "line": 54,
2643          "column": 1
2644        },
2645        "end": {
2646          "line": 58,
2647          "column": 2
2648        }
2649      }
2650    },
2651    {
2652      "type": "ClassDeclaration",
2653      "definition": {
2654        "id": {
2655          "type": "Identifier",
2656          "name": "ETSGLOBAL",
2657          "decorators": [],
2658          "loc": {
2659            "start": {
2660              "line": 1,
2661              "column": 1
2662            },
2663            "end": {
2664              "line": 1,
2665              "column": 1
2666            }
2667          }
2668        },
2669        "superClass": null,
2670        "implements": [],
2671        "body": [
2672          {
2673            "type": "MethodDefinition",
2674            "key": {
2675              "type": "Identifier",
2676              "name": "_$init$_",
2677              "decorators": [],
2678              "loc": {
2679                "start": {
2680                  "line": 1,
2681                  "column": 1
2682                },
2683                "end": {
2684                  "line": 1,
2685                  "column": 1
2686                }
2687              }
2688            },
2689            "kind": "method",
2690            "accessibility": "public",
2691            "static": true,
2692            "optional": false,
2693            "computed": false,
2694            "value": {
2695              "type": "FunctionExpression",
2696              "function": {
2697                "type": "ScriptFunction",
2698                "id": {
2699                  "type": "Identifier",
2700                  "name": "_$init$_",
2701                  "decorators": [],
2702                  "loc": {
2703                    "start": {
2704                      "line": 1,
2705                      "column": 1
2706                    },
2707                    "end": {
2708                      "line": 1,
2709                      "column": 1
2710                    }
2711                  }
2712                },
2713                "generator": false,
2714                "async": false,
2715                "expression": false,
2716                "params": [],
2717                "body": {
2718                  "type": "BlockStatement",
2719                  "statements": [],
2720                  "loc": {
2721                    "start": {
2722                      "line": 1,
2723                      "column": 1
2724                    },
2725                    "end": {
2726                      "line": 1,
2727                      "column": 1
2728                    }
2729                  }
2730                },
2731                "loc": {
2732                  "start": {
2733                    "line": 1,
2734                    "column": 1
2735                  },
2736                  "end": {
2737                    "line": 1,
2738                    "column": 1
2739                  }
2740                }
2741              },
2742              "loc": {
2743                "start": {
2744                  "line": 1,
2745                  "column": 1
2746                },
2747                "end": {
2748                  "line": 1,
2749                  "column": 1
2750                }
2751              }
2752            },
2753            "overloads": [],
2754            "decorators": [],
2755            "loc": {
2756              "start": {
2757                "line": 1,
2758                "column": 1
2759              },
2760              "end": {
2761                "line": 1,
2762                "column": 1
2763              }
2764            }
2765          }
2766        ],
2767        "loc": {
2768          "start": {
2769            "line": 1,
2770            "column": 1
2771          },
2772          "end": {
2773            "line": 1,
2774            "column": 1
2775          }
2776        }
2777      },
2778      "loc": {
2779        "start": {
2780          "line": 1,
2781          "column": 1
2782        },
2783        "end": {
2784          "line": 1,
2785          "column": 1
2786        }
2787      }
2788    }
2789  ],
2790  "loc": {
2791    "start": {
2792      "line": 1,
2793      "column": 1
2794    },
2795    "end": {
2796      "line": 59,
2797      "column": 1
2798    }
2799  }
2800}
2801