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