1{
2  "type": "Program",
3  "statements": [
4    {
5      "type": "ClassDeclaration",
6      "definition": {
7        "id": {
8          "type": "Identifier",
9          "name": "foo",
10          "decorators": [],
11          "loc": {
12            "start": {
13              "line": 16,
14              "column": 7
15            },
16            "end": {
17              "line": 16,
18              "column": 10
19            }
20          }
21        },
22        "superClass": null,
23        "implements": [],
24        "body": [
25          {
26            "type": "MethodDefinition",
27            "key": {
28              "type": "Identifier",
29              "name": "method",
30              "decorators": [],
31              "loc": {
32                "start": {
33                  "line": 17,
34                  "column": 12
35                },
36                "end": {
37                  "line": 17,
38                  "column": 18
39                }
40              }
41            },
42            "kind": "method",
43            "accessibility": "public",
44            "static": true,
45            "optional": false,
46            "computed": false,
47            "value": {
48              "type": "FunctionExpression",
49              "function": {
50                "type": "ScriptFunction",
51                "id": {
52                  "type": "Identifier",
53                  "name": "method",
54                  "decorators": [],
55                  "loc": {
56                    "start": {
57                      "line": 17,
58                      "column": 12
59                    },
60                    "end": {
61                      "line": 17,
62                      "column": 18
63                    }
64                  }
65                },
66                "generator": false,
67                "async": false,
68                "expression": false,
69                "params": [],
70                "returnType": {
71                  "type": "ETSPrimitiveType",
72                  "loc": {
73                    "start": {
74                      "line": 17,
75                      "column": 22
76                    },
77                    "end": {
78                      "line": 17,
79                      "column": 26
80                    }
81                  }
82                },
83                "body": {
84                  "type": "BlockStatement",
85                  "statements": [],
86                  "loc": {
87                    "start": {
88                      "line": 17,
89                      "column": 27
90                    },
91                    "end": {
92                      "line": 17,
93                      "column": 29
94                    }
95                  }
96                },
97                "loc": {
98                  "start": {
99                    "line": 17,
100                    "column": 18
101                  },
102                  "end": {
103                    "line": 17,
104                    "column": 29
105                  }
106                }
107              },
108              "loc": {
109                "start": {
110                  "line": 17,
111                  "column": 18
112                },
113                "end": {
114                  "line": 17,
115                  "column": 29
116                }
117              }
118            },
119            "overloads": [],
120            "decorators": [],
121            "loc": {
122              "start": {
123                "line": 17,
124                "column": 5
125              },
126              "end": {
127                "line": 17,
128                "column": 29
129              }
130            }
131          },
132          {
133            "type": "MethodDefinition",
134            "key": {
135              "type": "Identifier",
136              "name": "constructor",
137              "decorators": [],
138              "loc": {
139                "start": {
140                  "line": 1,
141                  "column": 1
142                },
143                "end": {
144                  "line": 1,
145                  "column": 1
146                }
147              }
148            },
149            "kind": "constructor",
150            "static": false,
151            "optional": false,
152            "computed": false,
153            "value": {
154              "type": "FunctionExpression",
155              "function": {
156                "type": "ScriptFunction",
157                "id": {
158                  "type": "Identifier",
159                  "name": "constructor",
160                  "decorators": [],
161                  "loc": {
162                    "start": {
163                      "line": 1,
164                      "column": 1
165                    },
166                    "end": {
167                      "line": 1,
168                      "column": 1
169                    }
170                  }
171                },
172                "generator": false,
173                "async": false,
174                "expression": false,
175                "params": [],
176                "body": {
177                  "type": "BlockStatement",
178                  "statements": [],
179                  "loc": {
180                    "start": {
181                      "line": 1,
182                      "column": 1
183                    },
184                    "end": {
185                      "line": 1,
186                      "column": 1
187                    }
188                  }
189                },
190                "loc": {
191                  "start": {
192                    "line": 1,
193                    "column": 1
194                  },
195                  "end": {
196                    "line": 1,
197                    "column": 1
198                  }
199                }
200              },
201              "loc": {
202                "start": {
203                  "line": 1,
204                  "column": 1
205                },
206                "end": {
207                  "line": 1,
208                  "column": 1
209                }
210              }
211            },
212            "overloads": [],
213            "decorators": [],
214            "loc": {
215              "start": {
216                "line": 18,
217                "column": 2
218              },
219              "end": {
220                "line": 18,
221                "column": 2
222              }
223            }
224          }
225        ],
226        "loc": {
227          "start": {
228            "line": 16,
229            "column": 11
230          },
231          "end": {
232            "line": 18,
233            "column": 2
234          }
235        }
236      },
237      "loc": {
238        "start": {
239          "line": 16,
240          "column": 1
241        },
242        "end": {
243          "line": 18,
244          "column": 2
245        }
246      }
247    },
248    {
249      "type": "ClassDeclaration",
250      "definition": {
251        "id": {
252          "type": "Identifier",
253          "name": "bar",
254          "decorators": [],
255          "loc": {
256            "start": {
257              "line": 20,
258              "column": 7
259            },
260            "end": {
261              "line": 20,
262              "column": 10
263            }
264          }
265        },
266        "superClass": {
267          "type": "ETSTypeReference",
268          "part": {
269            "type": "ETSTypeReferencePart",
270            "name": {
271              "type": "Identifier",
272              "name": "foo",
273              "decorators": [],
274              "loc": {
275                "start": {
276                  "line": 20,
277                  "column": 19
278                },
279                "end": {
280                  "line": 20,
281                  "column": 22
282                }
283              }
284            },
285            "loc": {
286              "start": {
287                "line": 20,
288                "column": 19
289              },
290              "end": {
291                "line": 20,
292                "column": 24
293              }
294            }
295          },
296          "loc": {
297            "start": {
298              "line": 20,
299              "column": 19
300            },
301            "end": {
302              "line": 20,
303              "column": 24
304            }
305          }
306        },
307        "implements": [],
308        "body": [
309          {
310            "type": "MethodDefinition",
311            "key": {
312              "type": "Identifier",
313              "name": "method",
314              "decorators": [],
315              "loc": {
316                "start": {
317                  "line": 21,
318                  "column": 5
319                },
320                "end": {
321                  "line": 21,
322                  "column": 11
323                }
324              }
325            },
326            "kind": "method",
327            "accessibility": "public",
328            "static": false,
329            "optional": false,
330            "computed": false,
331            "value": {
332              "type": "FunctionExpression",
333              "function": {
334                "type": "ScriptFunction",
335                "id": {
336                  "type": "Identifier",
337                  "name": "method",
338                  "decorators": [],
339                  "loc": {
340                    "start": {
341                      "line": 21,
342                      "column": 5
343                    },
344                    "end": {
345                      "line": 21,
346                      "column": 11
347                    }
348                  }
349                },
350                "generator": false,
351                "async": false,
352                "expression": false,
353                "params": [],
354                "returnType": {
355                  "type": "ETSPrimitiveType",
356                  "loc": {
357                    "start": {
358                      "line": 21,
359                      "column": 15
360                    },
361                    "end": {
362                      "line": 21,
363                      "column": 19
364                    }
365                  }
366                },
367                "body": {
368                  "type": "BlockStatement",
369                  "statements": [],
370                  "loc": {
371                    "start": {
372                      "line": 21,
373                      "column": 20
374                    },
375                    "end": {
376                      "line": 21,
377                      "column": 22
378                    }
379                  }
380                },
381                "loc": {
382                  "start": {
383                    "line": 21,
384                    "column": 11
385                  },
386                  "end": {
387                    "line": 21,
388                    "column": 22
389                  }
390                }
391              },
392              "loc": {
393                "start": {
394                  "line": 21,
395                  "column": 11
396                },
397                "end": {
398                  "line": 21,
399                  "column": 22
400                }
401              }
402            },
403            "overloads": [],
404            "decorators": [],
405            "loc": {
406              "start": {
407                "line": 21,
408                "column": 5
409              },
410              "end": {
411                "line": 21,
412                "column": 22
413              }
414            }
415          },
416          {
417            "type": "MethodDefinition",
418            "key": {
419              "type": "Identifier",
420              "name": "constructor",
421              "decorators": [],
422              "loc": {
423                "start": {
424                  "line": 1,
425                  "column": 1
426                },
427                "end": {
428                  "line": 1,
429                  "column": 1
430                }
431              }
432            },
433            "kind": "constructor",
434            "static": false,
435            "optional": false,
436            "computed": false,
437            "value": {
438              "type": "FunctionExpression",
439              "function": {
440                "type": "ScriptFunction",
441                "id": {
442                  "type": "Identifier",
443                  "name": "constructor",
444                  "decorators": [],
445                  "loc": {
446                    "start": {
447                      "line": 1,
448                      "column": 1
449                    },
450                    "end": {
451                      "line": 1,
452                      "column": 1
453                    }
454                  }
455                },
456                "generator": false,
457                "async": false,
458                "expression": false,
459                "params": [],
460                "body": {
461                  "type": "BlockStatement",
462                  "statements": [],
463                  "loc": {
464                    "start": {
465                      "line": 1,
466                      "column": 1
467                    },
468                    "end": {
469                      "line": 1,
470                      "column": 1
471                    }
472                  }
473                },
474                "loc": {
475                  "start": {
476                    "line": 1,
477                    "column": 1
478                  },
479                  "end": {
480                    "line": 1,
481                    "column": 1
482                  }
483                }
484              },
485              "loc": {
486                "start": {
487                  "line": 1,
488                  "column": 1
489                },
490                "end": {
491                  "line": 1,
492                  "column": 1
493                }
494              }
495            },
496            "overloads": [],
497            "decorators": [],
498            "loc": {
499              "start": {
500                "line": 22,
501                "column": 2
502              },
503              "end": {
504                "line": 22,
505                "column": 2
506              }
507            }
508          }
509        ],
510        "loc": {
511          "start": {
512            "line": 20,
513            "column": 23
514          },
515          "end": {
516            "line": 22,
517            "column": 2
518          }
519        }
520      },
521      "loc": {
522        "start": {
523          "line": 20,
524          "column": 1
525        },
526        "end": {
527          "line": 22,
528          "column": 2
529        }
530      }
531    },
532    {
533      "type": "TSInterfaceDeclaration",
534      "body": {
535        "type": "TSInterfaceBody",
536        "body": [
537          {
538            "type": "MethodDefinition",
539            "key": {
540              "type": "Identifier",
541              "name": "keys",
542              "decorators": [],
543              "loc": {
544                "start": {
545                  "line": 25,
546                  "column": 5
547                },
548                "end": {
549                  "line": 25,
550                  "column": 9
551                }
552              }
553            },
554            "kind": "method",
555            "accessibility": "public",
556            "static": false,
557            "optional": false,
558            "computed": false,
559            "value": {
560              "type": "FunctionExpression",
561              "function": {
562                "type": "ScriptFunction",
563                "id": {
564                  "type": "Identifier",
565                  "name": "keys",
566                  "decorators": [],
567                  "loc": {
568                    "start": {
569                      "line": 25,
570                      "column": 5
571                    },
572                    "end": {
573                      "line": 25,
574                      "column": 9
575                    }
576                  }
577                },
578                "generator": false,
579                "async": false,
580                "expression": false,
581                "params": [],
582                "returnType": {
583                  "type": "ETSPrimitiveType",
584                  "loc": {
585                    "start": {
586                      "line": 25,
587                      "column": 13
588                    },
589                    "end": {
590                      "line": 25,
591                      "column": 17
592                    }
593                  }
594                },
595                "declare": true,
596                "body": {
597                  "type": "BlockStatement",
598                  "statements": [],
599                  "loc": {
600                    "start": {
601                      "line": 25,
602                      "column": 18
603                    },
604                    "end": {
605                      "line": 25,
606                      "column": 20
607                    }
608                  }
609                },
610                "loc": {
611                  "start": {
612                    "line": 25,
613                    "column": 9
614                  },
615                  "end": {
616                    "line": 25,
617                    "column": 20
618                  }
619                }
620              },
621              "loc": {
622                "start": {
623                  "line": 25,
624                  "column": 9
625                },
626                "end": {
627                  "line": 25,
628                  "column": 20
629                }
630              }
631            },
632            "overloads": [],
633            "decorators": [],
634            "loc": {
635              "start": {
636                "line": 25,
637                "column": 5
638              },
639              "end": {
640                "line": 25,
641                "column": 20
642              }
643            }
644          }
645        ],
646        "loc": {
647          "start": {
648            "line": 24,
649            "column": 17
650          },
651          "end": {
652            "line": 26,
653            "column": 2
654          }
655        }
656      },
657      "id": {
658        "type": "Identifier",
659        "name": "inter",
660        "decorators": [],
661        "loc": {
662          "start": {
663            "line": 24,
664            "column": 11
665          },
666          "end": {
667            "line": 24,
668            "column": 16
669          }
670        }
671      },
672      "extends": [],
673      "loc": {
674        "start": {
675          "line": 24,
676          "column": 1
677        },
678        "end": {
679          "line": 27,
680          "column": 1
681        }
682      }
683    },
684    {
685      "type": "ClassDeclaration",
686      "definition": {
687        "id": {
688          "type": "Identifier",
689          "name": "ETSGLOBAL",
690          "decorators": [],
691          "loc": {
692            "start": {
693              "line": 1,
694              "column": 1
695            },
696            "end": {
697              "line": 1,
698              "column": 1
699            }
700          }
701        },
702        "superClass": null,
703        "implements": [],
704        "body": [
705          {
706            "type": "MethodDefinition",
707            "key": {
708              "type": "Identifier",
709              "name": "_$init$_",
710              "decorators": [],
711              "loc": {
712                "start": {
713                  "line": 1,
714                  "column": 1
715                },
716                "end": {
717                  "line": 1,
718                  "column": 1
719                }
720              }
721            },
722            "kind": "method",
723            "accessibility": "public",
724            "static": true,
725            "optional": false,
726            "computed": false,
727            "value": {
728              "type": "FunctionExpression",
729              "function": {
730                "type": "ScriptFunction",
731                "id": {
732                  "type": "Identifier",
733                  "name": "_$init$_",
734                  "decorators": [],
735                  "loc": {
736                    "start": {
737                      "line": 1,
738                      "column": 1
739                    },
740                    "end": {
741                      "line": 1,
742                      "column": 1
743                    }
744                  }
745                },
746                "generator": false,
747                "async": false,
748                "expression": false,
749                "params": [],
750                "body": {
751                  "type": "BlockStatement",
752                  "statements": [],
753                  "loc": {
754                    "start": {
755                      "line": 1,
756                      "column": 1
757                    },
758                    "end": {
759                      "line": 1,
760                      "column": 1
761                    }
762                  }
763                },
764                "loc": {
765                  "start": {
766                    "line": 1,
767                    "column": 1
768                  },
769                  "end": {
770                    "line": 1,
771                    "column": 1
772                  }
773                }
774              },
775              "loc": {
776                "start": {
777                  "line": 1,
778                  "column": 1
779                },
780                "end": {
781                  "line": 1,
782                  "column": 1
783                }
784              }
785            },
786            "overloads": [],
787            "decorators": [],
788            "loc": {
789              "start": {
790                "line": 1,
791                "column": 1
792              },
793              "end": {
794                "line": 1,
795                "column": 1
796              }
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      "loc": {
812        "start": {
813          "line": 1,
814          "column": 1
815        },
816        "end": {
817          "line": 1,
818          "column": 1
819        }
820      }
821    }
822  ],
823  "loc": {
824    "start": {
825      "line": 1,
826      "column": 1
827    },
828    "end": {
829      "line": 27,
830      "column": 1
831    }
832  }
833}
834