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