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