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