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": "J",
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": 10
139        }
140      }
141    },
142    {
143      "type": "TSInterfaceDeclaration",
144      "body": {
145        "type": "TSInterfaceBody",
146        "body": [],
147        "loc": {
148          "start": {
149            "line": 20,
150            "column": 23
151          },
152          "end": {
153            "line": 20,
154            "column": 25
155          }
156        }
157      },
158      "id": {
159        "type": "Identifier",
160        "name": "I",
161        "decorators": [],
162        "loc": {
163          "start": {
164            "line": 20,
165            "column": 11
166          },
167          "end": {
168            "line": 20,
169            "column": 12
170          }
171        }
172      },
173      "extends": [
174        {
175          "type": "TSInterfaceHeritage",
176          "expression": {
177            "type": "ETSTypeReference",
178            "part": {
179              "type": "ETSTypeReferencePart",
180              "name": {
181                "type": "Identifier",
182                "name": "J",
183                "decorators": [],
184                "loc": {
185                  "start": {
186                    "line": 20,
187                    "column": 21
188                  },
189                  "end": {
190                    "line": 20,
191                    "column": 22
192                  }
193                }
194              },
195              "loc": {
196                "start": {
197                  "line": 20,
198                  "column": 21
199                },
200                "end": {
201                  "line": 20,
202                  "column": 24
203                }
204              }
205            },
206            "loc": {
207              "start": {
208                "line": 20,
209                "column": 21
210              },
211              "end": {
212                "line": 20,
213                "column": 24
214              }
215            }
216          },
217          "loc": {
218            "start": {
219              "line": 20,
220              "column": 21
221            },
222            "end": {
223              "line": 20,
224              "column": 24
225            }
226          }
227        }
228      ],
229      "loc": {
230        "start": {
231          "line": 20,
232          "column": 1
233        },
234        "end": {
235          "line": 22,
236          "column": 6
237        }
238      }
239    },
240    {
241      "type": "ClassDeclaration",
242      "definition": {
243        "id": {
244          "type": "Identifier",
245          "name": "A",
246          "decorators": [],
247          "loc": {
248            "start": {
249              "line": 22,
250              "column": 7
251            },
252            "end": {
253              "line": 22,
254              "column": 8
255            }
256          }
257        },
258        "superClass": null,
259        "implements": [
260          {
261            "type": "TSClassImplements",
262            "expression": {
263              "type": "ETSTypeReference",
264              "part": {
265                "type": "ETSTypeReferencePart",
266                "name": {
267                  "type": "Identifier",
268                  "name": "I",
269                  "decorators": [],
270                  "loc": {
271                    "start": {
272                      "line": 22,
273                      "column": 20
274                    },
275                    "end": {
276                      "line": 22,
277                      "column": 21
278                    }
279                  }
280                },
281                "loc": {
282                  "start": {
283                    "line": 22,
284                    "column": 20
285                  },
286                  "end": {
287                    "line": 22,
288                    "column": 23
289                  }
290                }
291              },
292              "loc": {
293                "start": {
294                  "line": 22,
295                  "column": 20
296                },
297                "end": {
298                  "line": 22,
299                  "column": 23
300                }
301              }
302            },
303            "loc": {
304              "start": {
305                "line": 22,
306                "column": 20
307              },
308              "end": {
309                "line": 22,
310                "column": 23
311              }
312            }
313          }
314        ],
315        "body": [
316          {
317            "type": "MethodDefinition",
318            "key": {
319              "type": "Identifier",
320              "name": "fn",
321              "decorators": [],
322              "loc": {
323                "start": {
324                  "line": 23,
325                  "column": 19
326                },
327                "end": {
328                  "line": 23,
329                  "column": 21
330                }
331              }
332            },
333            "kind": "method",
334            "accessibility": "public",
335            "static": false,
336            "optional": false,
337            "computed": false,
338            "value": {
339              "type": "FunctionExpression",
340              "function": {
341                "type": "ScriptFunction",
342                "id": {
343                  "type": "Identifier",
344                  "name": "fn",
345                  "decorators": [],
346                  "loc": {
347                    "start": {
348                      "line": 23,
349                      "column": 19
350                    },
351                    "end": {
352                      "line": 23,
353                      "column": 21
354                    }
355                  }
356                },
357                "generator": false,
358                "async": false,
359                "expression": false,
360                "params": [],
361                "returnType": {
362                  "type": "ETSPrimitiveType",
363                  "loc": {
364                    "start": {
365                      "line": 23,
366                      "column": 25
367                    },
368                    "end": {
369                      "line": 23,
370                      "column": 28
371                    }
372                  }
373                },
374                "body": {
375                  "type": "BlockStatement",
376                  "statements": [
377                    {
378                      "type": "ReturnStatement",
379                      "argument": {
380                        "type": "NumberLiteral",
381                        "value": 1,
382                        "loc": {
383                          "start": {
384                            "line": 23,
385                            "column": 38
386                          },
387                          "end": {
388                            "line": 23,
389                            "column": 39
390                          }
391                        }
392                      },
393                      "loc": {
394                        "start": {
395                          "line": 23,
396                          "column": 31
397                        },
398                        "end": {
399                          "line": 23,
400                          "column": 40
401                        }
402                      }
403                    }
404                  ],
405                  "loc": {
406                    "start": {
407                      "line": 23,
408                      "column": 29
409                    },
410                    "end": {
411                      "line": 23,
412                      "column": 42
413                    }
414                  }
415                },
416                "loc": {
417                  "start": {
418                    "line": 23,
419                    "column": 21
420                  },
421                  "end": {
422                    "line": 23,
423                    "column": 42
424                  }
425                }
426              },
427              "loc": {
428                "start": {
429                  "line": 23,
430                  "column": 21
431                },
432                "end": {
433                  "line": 23,
434                  "column": 42
435                }
436              }
437            },
438            "overloads": [],
439            "decorators": [],
440            "loc": {
441              "start": {
442                "line": 23,
443                "column": 3
444              },
445              "end": {
446                "line": 23,
447                "column": 42
448              }
449            }
450          },
451          {
452            "type": "MethodDefinition",
453            "key": {
454              "type": "Identifier",
455              "name": "constructor",
456              "decorators": [],
457              "loc": {
458                "start": {
459                  "line": 1,
460                  "column": 1
461                },
462                "end": {
463                  "line": 1,
464                  "column": 1
465                }
466              }
467            },
468            "kind": "constructor",
469            "static": false,
470            "optional": false,
471            "computed": false,
472            "value": {
473              "type": "FunctionExpression",
474              "function": {
475                "type": "ScriptFunction",
476                "id": {
477                  "type": "Identifier",
478                  "name": "constructor",
479                  "decorators": [],
480                  "loc": {
481                    "start": {
482                      "line": 1,
483                      "column": 1
484                    },
485                    "end": {
486                      "line": 1,
487                      "column": 1
488                    }
489                  }
490                },
491                "generator": false,
492                "async": false,
493                "expression": false,
494                "params": [],
495                "body": {
496                  "type": "BlockStatement",
497                  "statements": [],
498                  "loc": {
499                    "start": {
500                      "line": 1,
501                      "column": 1
502                    },
503                    "end": {
504                      "line": 1,
505                      "column": 1
506                    }
507                  }
508                },
509                "loc": {
510                  "start": {
511                    "line": 1,
512                    "column": 1
513                  },
514                  "end": {
515                    "line": 1,
516                    "column": 1
517                  }
518                }
519              },
520              "loc": {
521                "start": {
522                  "line": 1,
523                  "column": 1
524                },
525                "end": {
526                  "line": 1,
527                  "column": 1
528                }
529              }
530            },
531            "overloads": [],
532            "decorators": [],
533            "loc": {
534              "start": {
535                "line": 24,
536                "column": 2
537              },
538              "end": {
539                "line": 24,
540                "column": 2
541              }
542            }
543          }
544        ],
545        "loc": {
546          "start": {
547            "line": 22,
548            "column": 22
549          },
550          "end": {
551            "line": 24,
552            "column": 2
553          }
554        }
555      },
556      "loc": {
557        "start": {
558          "line": 22,
559          "column": 1
560        },
561        "end": {
562          "line": 24,
563          "column": 2
564        }
565      }
566    },
567    {
568      "type": "ClassDeclaration",
569      "definition": {
570        "id": {
571          "type": "Identifier",
572          "name": "ETSGLOBAL",
573          "decorators": [],
574          "loc": {
575            "start": {
576              "line": 1,
577              "column": 1
578            },
579            "end": {
580              "line": 1,
581              "column": 1
582            }
583          }
584        },
585        "superClass": null,
586        "implements": [],
587        "body": [
588          {
589            "type": "MethodDefinition",
590            "key": {
591              "type": "Identifier",
592              "name": "_$init$_",
593              "decorators": [],
594              "loc": {
595                "start": {
596                  "line": 1,
597                  "column": 1
598                },
599                "end": {
600                  "line": 1,
601                  "column": 1
602                }
603              }
604            },
605            "kind": "method",
606            "accessibility": "public",
607            "static": true,
608            "optional": false,
609            "computed": false,
610            "value": {
611              "type": "FunctionExpression",
612              "function": {
613                "type": "ScriptFunction",
614                "id": {
615                  "type": "Identifier",
616                  "name": "_$init$_",
617                  "decorators": [],
618                  "loc": {
619                    "start": {
620                      "line": 1,
621                      "column": 1
622                    },
623                    "end": {
624                      "line": 1,
625                      "column": 1
626                    }
627                  }
628                },
629                "generator": false,
630                "async": false,
631                "expression": false,
632                "params": [],
633                "body": {
634                  "type": "BlockStatement",
635                  "statements": [],
636                  "loc": {
637                    "start": {
638                      "line": 1,
639                      "column": 1
640                    },
641                    "end": {
642                      "line": 1,
643                      "column": 1
644                    }
645                  }
646                },
647                "loc": {
648                  "start": {
649                    "line": 1,
650                    "column": 1
651                  },
652                  "end": {
653                    "line": 1,
654                    "column": 1
655                  }
656                }
657              },
658              "loc": {
659                "start": {
660                  "line": 1,
661                  "column": 1
662                },
663                "end": {
664                  "line": 1,
665                  "column": 1
666                }
667              }
668            },
669            "overloads": [],
670            "decorators": [],
671            "loc": {
672              "start": {
673                "line": 1,
674                "column": 1
675              },
676              "end": {
677                "line": 1,
678                "column": 1
679              }
680            }
681          }
682        ],
683        "loc": {
684          "start": {
685            "line": 1,
686            "column": 1
687          },
688          "end": {
689            "line": 1,
690            "column": 1
691          }
692        }
693      },
694      "loc": {
695        "start": {
696          "line": 1,
697          "column": 1
698        },
699        "end": {
700          "line": 1,
701          "column": 1
702        }
703      }
704    }
705  ],
706  "loc": {
707    "start": {
708      "line": 1,
709      "column": 1
710    },
711    "end": {
712      "line": 25,
713      "column": 1
714    }
715  }
716}
717