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": "foo",
14              "decorators": [],
15              "loc": {
16                "start": {
17                  "line": 17,
18                  "column": 3
19                },
20                "end": {
21                  "line": 17,
22                  "column": 6
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": "foo",
38                  "decorators": [],
39                  "loc": {
40                    "start": {
41                      "line": 17,
42                      "column": 3
43                    },
44                    "end": {
45                      "line": 17,
46                      "column": 6
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": 10
60                    },
61                    "end": {
62                      "line": 17,
63                      "column": 14
64                    }
65                  }
66                },
67                "declare": true,
68                "loc": {
69                  "start": {
70                    "line": 17,
71                    "column": 6
72                  },
73                  "end": {
74                    "line": 17,
75                    "column": 14
76                  }
77                }
78              },
79              "loc": {
80                "start": {
81                  "line": 17,
82                  "column": 6
83                },
84                "end": {
85                  "line": 17,
86                  "column": 14
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": 15
100              }
101            }
102          }
103        ],
104        "loc": {
105          "start": {
106            "line": 16,
107            "column": 14
108          },
109          "end": {
110            "line": 18,
111            "column": 2
112          }
113        }
114      },
115      "id": {
116        "type": "Identifier",
117        "name": "I1",
118        "decorators": [],
119        "loc": {
120          "start": {
121            "line": 16,
122            "column": 11
123          },
124          "end": {
125            "line": 16,
126            "column": 13
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          {
148            "type": "MethodDefinition",
149            "key": {
150              "type": "Identifier",
151              "name": "foo",
152              "decorators": [],
153              "loc": {
154                "start": {
155                  "line": 21,
156                  "column": 3
157                },
158                "end": {
159                  "line": 21,
160                  "column": 6
161                }
162              }
163            },
164            "kind": "method",
165            "accessibility": "public",
166            "static": false,
167            "optional": false,
168            "computed": false,
169            "value": {
170              "type": "FunctionExpression",
171              "function": {
172                "type": "ScriptFunction",
173                "id": {
174                  "type": "Identifier",
175                  "name": "foo",
176                  "decorators": [],
177                  "loc": {
178                    "start": {
179                      "line": 21,
180                      "column": 3
181                    },
182                    "end": {
183                      "line": 21,
184                      "column": 6
185                    }
186                  }
187                },
188                "generator": false,
189                "async": false,
190                "expression": false,
191                "params": [],
192                "returnType": {
193                  "type": "ETSPrimitiveType",
194                  "loc": {
195                    "start": {
196                      "line": 21,
197                      "column": 10
198                    },
199                    "end": {
200                      "line": 21,
201                      "column": 14
202                    }
203                  }
204                },
205                "declare": true,
206                "body": {
207                  "type": "BlockStatement",
208                  "statements": [],
209                  "loc": {
210                    "start": {
211                      "line": 21,
212                      "column": 15
213                    },
214                    "end": {
215                      "line": 21,
216                      "column": 17
217                    }
218                  }
219                },
220                "loc": {
221                  "start": {
222                    "line": 21,
223                    "column": 6
224                  },
225                  "end": {
226                    "line": 21,
227                    "column": 17
228                  }
229                }
230              },
231              "loc": {
232                "start": {
233                  "line": 21,
234                  "column": 6
235                },
236                "end": {
237                  "line": 21,
238                  "column": 17
239                }
240              }
241            },
242            "overloads": [],
243            "decorators": [],
244            "loc": {
245              "start": {
246                "line": 21,
247                "column": 3
248              },
249              "end": {
250                "line": 21,
251                "column": 17
252              }
253            }
254          },
255          {
256            "type": "MethodDefinition",
257            "key": {
258              "type": "Identifier",
259              "name": "bar",
260              "decorators": [],
261              "loc": {
262                "start": {
263                  "line": 22,
264                  "column": 3
265                },
266                "end": {
267                  "line": 22,
268                  "column": 6
269                }
270              }
271            },
272            "kind": "method",
273            "accessibility": "public",
274            "static": false,
275            "optional": false,
276            "computed": false,
277            "value": {
278              "type": "FunctionExpression",
279              "function": {
280                "type": "ScriptFunction",
281                "id": {
282                  "type": "Identifier",
283                  "name": "bar",
284                  "decorators": [],
285                  "loc": {
286                    "start": {
287                      "line": 22,
288                      "column": 3
289                    },
290                    "end": {
291                      "line": 22,
292                      "column": 6
293                    }
294                  }
295                },
296                "generator": false,
297                "async": false,
298                "expression": false,
299                "params": [],
300                "returnType": {
301                  "type": "ETSPrimitiveType",
302                  "loc": {
303                    "start": {
304                      "line": 22,
305                      "column": 10
306                    },
307                    "end": {
308                      "line": 22,
309                      "column": 14
310                    }
311                  }
312                },
313                "declare": true,
314                "loc": {
315                  "start": {
316                    "line": 22,
317                    "column": 6
318                  },
319                  "end": {
320                    "line": 22,
321                    "column": 14
322                  }
323                }
324              },
325              "loc": {
326                "start": {
327                  "line": 22,
328                  "column": 6
329                },
330                "end": {
331                  "line": 22,
332                  "column": 14
333                }
334              }
335            },
336            "overloads": [],
337            "decorators": [],
338            "loc": {
339              "start": {
340                "line": 22,
341                "column": 3
342              },
343              "end": {
344                "line": 22,
345                "column": 14
346              }
347            }
348          }
349        ],
350        "loc": {
351          "start": {
352            "line": 20,
353            "column": 25
354          },
355          "end": {
356            "line": 23,
357            "column": 2
358          }
359        }
360      },
361      "id": {
362        "type": "Identifier",
363        "name": "I2",
364        "decorators": [],
365        "loc": {
366          "start": {
367            "line": 20,
368            "column": 11
369          },
370          "end": {
371            "line": 20,
372            "column": 13
373          }
374        }
375      },
376      "extends": [
377        {
378          "type": "TSInterfaceHeritage",
379          "expression": {
380            "type": "ETSTypeReference",
381            "part": {
382              "type": "ETSTypeReferencePart",
383              "name": {
384                "type": "Identifier",
385                "name": "I1",
386                "decorators": [],
387                "loc": {
388                  "start": {
389                    "line": 20,
390                    "column": 22
391                  },
392                  "end": {
393                    "line": 20,
394                    "column": 24
395                  }
396                }
397              },
398              "loc": {
399                "start": {
400                  "line": 20,
401                  "column": 22
402                },
403                "end": {
404                  "line": 20,
405                  "column": 26
406                }
407              }
408            },
409            "loc": {
410              "start": {
411                "line": 20,
412                "column": 22
413              },
414              "end": {
415                "line": 20,
416                "column": 26
417              }
418            }
419          },
420          "loc": {
421            "start": {
422              "line": 20,
423              "column": 22
424            },
425            "end": {
426              "line": 20,
427              "column": 26
428            }
429          }
430        }
431      ],
432      "loc": {
433        "start": {
434          "line": 20,
435          "column": 1
436        },
437        "end": {
438          "line": 25,
439          "column": 6
440        }
441      }
442    },
443    {
444      "type": "ClassDeclaration",
445      "definition": {
446        "id": {
447          "type": "Identifier",
448          "name": "C",
449          "decorators": [],
450          "loc": {
451            "start": {
452              "line": 25,
453              "column": 7
454            },
455            "end": {
456              "line": 25,
457              "column": 8
458            }
459          }
460        },
461        "superClass": null,
462        "implements": [
463          {
464            "type": "TSClassImplements",
465            "expression": {
466              "type": "ETSTypeReference",
467              "part": {
468                "type": "ETSTypeReferencePart",
469                "name": {
470                  "type": "Identifier",
471                  "name": "I2",
472                  "decorators": [],
473                  "loc": {
474                    "start": {
475                      "line": 25,
476                      "column": 20
477                    },
478                    "end": {
479                      "line": 25,
480                      "column": 22
481                    }
482                  }
483                },
484                "loc": {
485                  "start": {
486                    "line": 25,
487                    "column": 20
488                  },
489                  "end": {
490                    "line": 25,
491                    "column": 24
492                  }
493                }
494              },
495              "loc": {
496                "start": {
497                  "line": 25,
498                  "column": 20
499                },
500                "end": {
501                  "line": 25,
502                  "column": 24
503                }
504              }
505            },
506            "loc": {
507              "start": {
508                "line": 25,
509                "column": 20
510              },
511              "end": {
512                "line": 25,
513                "column": 24
514              }
515            }
516          }
517        ],
518        "body": [
519          {
520            "type": "MethodDefinition",
521            "key": {
522              "type": "Identifier",
523              "name": "bar",
524              "decorators": [],
525              "loc": {
526                "start": {
527                  "line": 26,
528                  "column": 3
529                },
530                "end": {
531                  "line": 26,
532                  "column": 6
533                }
534              }
535            },
536            "kind": "method",
537            "accessibility": "public",
538            "static": false,
539            "optional": false,
540            "computed": false,
541            "value": {
542              "type": "FunctionExpression",
543              "function": {
544                "type": "ScriptFunction",
545                "id": {
546                  "type": "Identifier",
547                  "name": "bar",
548                  "decorators": [],
549                  "loc": {
550                    "start": {
551                      "line": 26,
552                      "column": 3
553                    },
554                    "end": {
555                      "line": 26,
556                      "column": 6
557                    }
558                  }
559                },
560                "generator": false,
561                "async": false,
562                "expression": false,
563                "params": [],
564                "returnType": {
565                  "type": "ETSPrimitiveType",
566                  "loc": {
567                    "start": {
568                      "line": 26,
569                      "column": 10
570                    },
571                    "end": {
572                      "line": 26,
573                      "column": 14
574                    }
575                  }
576                },
577                "body": {
578                  "type": "BlockStatement",
579                  "statements": [],
580                  "loc": {
581                    "start": {
582                      "line": 26,
583                      "column": 15
584                    },
585                    "end": {
586                      "line": 26,
587                      "column": 17
588                    }
589                  }
590                },
591                "loc": {
592                  "start": {
593                    "line": 26,
594                    "column": 6
595                  },
596                  "end": {
597                    "line": 26,
598                    "column": 17
599                  }
600                }
601              },
602              "loc": {
603                "start": {
604                  "line": 26,
605                  "column": 6
606                },
607                "end": {
608                  "line": 26,
609                  "column": 17
610                }
611              }
612            },
613            "overloads": [],
614            "decorators": [],
615            "loc": {
616              "start": {
617                "line": 26,
618                "column": 3
619              },
620              "end": {
621                "line": 26,
622                "column": 17
623              }
624            }
625          },
626          {
627            "type": "MethodDefinition",
628            "key": {
629              "type": "Identifier",
630              "name": "constructor",
631              "decorators": [],
632              "loc": {
633                "start": {
634                  "line": 1,
635                  "column": 1
636                },
637                "end": {
638                  "line": 1,
639                  "column": 1
640                }
641              }
642            },
643            "kind": "constructor",
644            "static": false,
645            "optional": false,
646            "computed": false,
647            "value": {
648              "type": "FunctionExpression",
649              "function": {
650                "type": "ScriptFunction",
651                "id": {
652                  "type": "Identifier",
653                  "name": "constructor",
654                  "decorators": [],
655                  "loc": {
656                    "start": {
657                      "line": 1,
658                      "column": 1
659                    },
660                    "end": {
661                      "line": 1,
662                      "column": 1
663                    }
664                  }
665                },
666                "generator": false,
667                "async": false,
668                "expression": false,
669                "params": [],
670                "body": {
671                  "type": "BlockStatement",
672                  "statements": [],
673                  "loc": {
674                    "start": {
675                      "line": 1,
676                      "column": 1
677                    },
678                    "end": {
679                      "line": 1,
680                      "column": 1
681                    }
682                  }
683                },
684                "loc": {
685                  "start": {
686                    "line": 1,
687                    "column": 1
688                  },
689                  "end": {
690                    "line": 1,
691                    "column": 1
692                  }
693                }
694              },
695              "loc": {
696                "start": {
697                  "line": 1,
698                  "column": 1
699                },
700                "end": {
701                  "line": 1,
702                  "column": 1
703                }
704              }
705            },
706            "overloads": [],
707            "decorators": [],
708            "loc": {
709              "start": {
710                "line": 27,
711                "column": 2
712              },
713              "end": {
714                "line": 27,
715                "column": 2
716              }
717            }
718          }
719        ],
720        "loc": {
721          "start": {
722            "line": 25,
723            "column": 23
724          },
725          "end": {
726            "line": 27,
727            "column": 2
728          }
729        }
730      },
731      "loc": {
732        "start": {
733          "line": 25,
734          "column": 1
735        },
736        "end": {
737          "line": 27,
738          "column": 2
739        }
740      }
741    },
742    {
743      "type": "ClassDeclaration",
744      "definition": {
745        "id": {
746          "type": "Identifier",
747          "name": "ETSGLOBAL",
748          "decorators": [],
749          "loc": {
750            "start": {
751              "line": 1,
752              "column": 1
753            },
754            "end": {
755              "line": 1,
756              "column": 1
757            }
758          }
759        },
760        "superClass": null,
761        "implements": [],
762        "body": [
763          {
764            "type": "MethodDefinition",
765            "key": {
766              "type": "Identifier",
767              "name": "_$init$_",
768              "decorators": [],
769              "loc": {
770                "start": {
771                  "line": 1,
772                  "column": 1
773                },
774                "end": {
775                  "line": 1,
776                  "column": 1
777                }
778              }
779            },
780            "kind": "method",
781            "accessibility": "public",
782            "static": true,
783            "optional": false,
784            "computed": false,
785            "value": {
786              "type": "FunctionExpression",
787              "function": {
788                "type": "ScriptFunction",
789                "id": {
790                  "type": "Identifier",
791                  "name": "_$init$_",
792                  "decorators": [],
793                  "loc": {
794                    "start": {
795                      "line": 1,
796                      "column": 1
797                    },
798                    "end": {
799                      "line": 1,
800                      "column": 1
801                    }
802                  }
803                },
804                "generator": false,
805                "async": false,
806                "expression": false,
807                "params": [],
808                "body": {
809                  "type": "BlockStatement",
810                  "statements": [],
811                  "loc": {
812                    "start": {
813                      "line": 1,
814                      "column": 1
815                    },
816                    "end": {
817                      "line": 1,
818                      "column": 1
819                    }
820                  }
821                },
822                "loc": {
823                  "start": {
824                    "line": 1,
825                    "column": 1
826                  },
827                  "end": {
828                    "line": 1,
829                    "column": 1
830                  }
831                }
832              },
833              "loc": {
834                "start": {
835                  "line": 1,
836                  "column": 1
837                },
838                "end": {
839                  "line": 1,
840                  "column": 1
841                }
842              }
843            },
844            "overloads": [],
845            "decorators": [],
846            "loc": {
847              "start": {
848                "line": 1,
849                "column": 1
850              },
851              "end": {
852                "line": 1,
853                "column": 1
854              }
855            }
856          },
857          {
858            "type": "MethodDefinition",
859            "key": {
860              "type": "Identifier",
861              "name": "main",
862              "decorators": [],
863              "loc": {
864                "start": {
865                  "line": 29,
866                  "column": 10
867                },
868                "end": {
869                  "line": 29,
870                  "column": 14
871                }
872              }
873            },
874            "kind": "method",
875            "accessibility": "public",
876            "static": true,
877            "optional": false,
878            "computed": false,
879            "value": {
880              "type": "FunctionExpression",
881              "function": {
882                "type": "ScriptFunction",
883                "id": {
884                  "type": "Identifier",
885                  "name": "main",
886                  "decorators": [],
887                  "loc": {
888                    "start": {
889                      "line": 29,
890                      "column": 10
891                    },
892                    "end": {
893                      "line": 29,
894                      "column": 14
895                    }
896                  }
897                },
898                "generator": false,
899                "async": false,
900                "expression": false,
901                "params": [],
902                "returnType": {
903                  "type": "ETSPrimitiveType",
904                  "loc": {
905                    "start": {
906                      "line": 29,
907                      "column": 18
908                    },
909                    "end": {
910                      "line": 29,
911                      "column": 22
912                    }
913                  }
914                },
915                "body": {
916                  "type": "BlockStatement",
917                  "statements": [],
918                  "loc": {
919                    "start": {
920                      "line": 29,
921                      "column": 23
922                    },
923                    "end": {
924                      "line": 30,
925                      "column": 2
926                    }
927                  }
928                },
929                "loc": {
930                  "start": {
931                    "line": 29,
932                    "column": 14
933                  },
934                  "end": {
935                    "line": 30,
936                    "column": 2
937                  }
938                }
939              },
940              "loc": {
941                "start": {
942                  "line": 29,
943                  "column": 14
944                },
945                "end": {
946                  "line": 30,
947                  "column": 2
948                }
949              }
950            },
951            "overloads": [],
952            "decorators": [],
953            "loc": {
954              "start": {
955                "line": 29,
956                "column": 1
957              },
958              "end": {
959                "line": 30,
960                "column": 2
961              }
962            }
963          }
964        ],
965        "loc": {
966          "start": {
967            "line": 1,
968            "column": 1
969          },
970          "end": {
971            "line": 1,
972            "column": 1
973          }
974        }
975      },
976      "loc": {
977        "start": {
978          "line": 1,
979          "column": 1
980        },
981        "end": {
982          "line": 1,
983          "column": 1
984        }
985      }
986    }
987  ],
988  "loc": {
989    "start": {
990      "line": 1,
991      "column": 1
992    },
993    "end": {
994      "line": 31,
995      "column": 1
996    }
997  }
998}
999