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