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