1{
2  "type": "Program",
3  "statements": [
4    {
5      "type": "ClassDeclaration",
6      "definition": {
7        "id": {
8          "type": "Identifier",
9          "name": "cls",
10          "decorators": [],
11          "loc": {
12            "start": {
13              "line": 16,
14              "column": 7
15            },
16            "end": {
17              "line": 16,
18              "column": 10
19            }
20          }
21        },
22        "superClass": null,
23        "implements": [],
24        "body": [
25          {
26            "type": "MethodDefinition",
27            "key": {
28              "type": "Identifier",
29              "name": "constructor",
30              "decorators": [],
31              "loc": {
32                "start": {
33                  "line": 1,
34                  "column": 1
35                },
36                "end": {
37                  "line": 1,
38                  "column": 1
39                }
40              }
41            },
42            "kind": "constructor",
43            "static": false,
44            "optional": false,
45            "computed": false,
46            "value": {
47              "type": "FunctionExpression",
48              "function": {
49                "type": "ScriptFunction",
50                "id": {
51                  "type": "Identifier",
52                  "name": "constructor",
53                  "decorators": [],
54                  "loc": {
55                    "start": {
56                      "line": 1,
57                      "column": 1
58                    },
59                    "end": {
60                      "line": 1,
61                      "column": 1
62                    }
63                  }
64                },
65                "generator": false,
66                "async": false,
67                "expression": false,
68                "params": [],
69                "body": {
70                  "type": "BlockStatement",
71                  "statements": [],
72                  "loc": {
73                    "start": {
74                      "line": 1,
75                      "column": 1
76                    },
77                    "end": {
78                      "line": 1,
79                      "column": 1
80                    }
81                  }
82                },
83                "loc": {
84                  "start": {
85                    "line": 1,
86                    "column": 1
87                  },
88                  "end": {
89                    "line": 1,
90                    "column": 1
91                  }
92                }
93              },
94              "loc": {
95                "start": {
96                  "line": 1,
97                  "column": 1
98                },
99                "end": {
100                  "line": 1,
101                  "column": 1
102                }
103              }
104            },
105            "overloads": [],
106            "decorators": [],
107            "loc": {
108              "start": {
109                "line": 16,
110                "column": 13
111              },
112              "end": {
113                "line": 16,
114                "column": 13
115              }
116            }
117          }
118        ],
119        "loc": {
120          "start": {
121            "line": 16,
122            "column": 11
123          },
124          "end": {
125            "line": 16,
126            "column": 13
127          }
128        }
129      },
130      "loc": {
131        "start": {
132          "line": 16,
133          "column": 1
134        },
135        "end": {
136          "line": 16,
137          "column": 13
138        }
139      }
140    },
141    {
142      "type": "ClassDeclaration",
143      "definition": {
144        "id": {
145          "type": "Identifier",
146          "name": "ETSGLOBAL",
147          "decorators": [],
148          "loc": {
149            "start": {
150              "line": 1,
151              "column": 1
152            },
153            "end": {
154              "line": 1,
155              "column": 1
156            }
157          }
158        },
159        "superClass": null,
160        "implements": [],
161        "body": [
162          {
163            "type": "MethodDefinition",
164            "key": {
165              "type": "Identifier",
166              "name": "_$init$_",
167              "decorators": [],
168              "loc": {
169                "start": {
170                  "line": 1,
171                  "column": 1
172                },
173                "end": {
174                  "line": 1,
175                  "column": 1
176                }
177              }
178            },
179            "kind": "method",
180            "accessibility": "public",
181            "static": true,
182            "optional": false,
183            "computed": false,
184            "value": {
185              "type": "FunctionExpression",
186              "function": {
187                "type": "ScriptFunction",
188                "id": {
189                  "type": "Identifier",
190                  "name": "_$init$_",
191                  "decorators": [],
192                  "loc": {
193                    "start": {
194                      "line": 1,
195                      "column": 1
196                    },
197                    "end": {
198                      "line": 1,
199                      "column": 1
200                    }
201                  }
202                },
203                "generator": false,
204                "async": false,
205                "expression": false,
206                "params": [],
207                "body": {
208                  "type": "BlockStatement",
209                  "statements": [
210                    {
211                      "type": "ExpressionStatement",
212                      "expression": {
213                        "type": "AssignmentExpression",
214                        "operator": "=",
215                        "left": {
216                          "type": "Identifier",
217                          "name": "b",
218                          "decorators": [],
219                          "loc": {
220                            "start": {
221                              "line": 18,
222                              "column": 5
223                            },
224                            "end": {
225                              "line": 18,
226                              "column": 6
227                            }
228                          }
229                        },
230                        "right": {
231                          "type": "NullLiteral",
232                          "value": null,
233                          "loc": {
234                            "start": {
235                              "line": 18,
236                              "column": 22
237                            },
238                            "end": {
239                              "line": 18,
240                              "column": 26
241                            }
242                          }
243                        },
244                        "loc": {
245                          "start": {
246                            "line": 18,
247                            "column": 5
248                          },
249                          "end": {
250                            "line": 18,
251                            "column": 26
252                          }
253                        }
254                      },
255                      "loc": {
256                        "start": {
257                          "line": 18,
258                          "column": 5
259                        },
260                        "end": {
261                          "line": 18,
262                          "column": 26
263                        }
264                      }
265                    },
266                    {
267                      "type": "ExpressionStatement",
268                      "expression": {
269                        "type": "AssignmentExpression",
270                        "operator": "=",
271                        "left": {
272                          "type": "Identifier",
273                          "name": "c",
274                          "decorators": [],
275                          "loc": {
276                            "start": {
277                              "line": 19,
278                              "column": 5
279                            },
280                            "end": {
281                              "line": 19,
282                              "column": 6
283                            }
284                          }
285                        },
286                        "right": {
287                          "type": "ETSNewClassInstanceExpression",
288                          "typeReference": {
289                            "type": "ETSTypeReference",
290                            "part": {
291                              "type": "ETSTypeReferencePart",
292                              "name": {
293                                "type": "Identifier",
294                                "name": "cls",
295                                "decorators": [],
296                                "loc": {
297                                  "start": {
298                                    "line": 19,
299                                    "column": 19
300                                  },
301                                  "end": {
302                                    "line": 19,
303                                    "column": 22
304                                  }
305                                }
306                              },
307                              "loc": {
308                                "start": {
309                                  "line": 19,
310                                  "column": 19
311                                },
312                                "end": {
313                                  "line": 19,
314                                  "column": 23
315                                }
316                              }
317                            },
318                            "loc": {
319                              "start": {
320                                "line": 19,
321                                "column": 19
322                              },
323                              "end": {
324                                "line": 19,
325                                "column": 23
326                              }
327                            }
328                          },
329                          "arguments": [],
330                          "loc": {
331                            "start": {
332                              "line": 19,
333                              "column": 15
334                            },
335                            "end": {
336                              "line": 19,
337                              "column": 25
338                            }
339                          }
340                        },
341                        "loc": {
342                          "start": {
343                            "line": 19,
344                            "column": 5
345                          },
346                          "end": {
347                            "line": 19,
348                            "column": 25
349                          }
350                        }
351                      },
352                      "loc": {
353                        "start": {
354                          "line": 19,
355                          "column": 5
356                        },
357                        "end": {
358                          "line": 19,
359                          "column": 25
360                        }
361                      }
362                    }
363                  ],
364                  "loc": {
365                    "start": {
366                      "line": 1,
367                      "column": 1
368                    },
369                    "end": {
370                      "line": 1,
371                      "column": 1
372                    }
373                  }
374                },
375                "loc": {
376                  "start": {
377                    "line": 1,
378                    "column": 1
379                  },
380                  "end": {
381                    "line": 1,
382                    "column": 1
383                  }
384                }
385              },
386              "loc": {
387                "start": {
388                  "line": 1,
389                  "column": 1
390                },
391                "end": {
392                  "line": 1,
393                  "column": 1
394                }
395              }
396            },
397            "overloads": [],
398            "decorators": [],
399            "loc": {
400              "start": {
401                "line": 1,
402                "column": 1
403              },
404              "end": {
405                "line": 1,
406                "column": 1
407              }
408            }
409          },
410          {
411            "type": "ClassProperty",
412            "key": {
413              "type": "Identifier",
414              "name": "b",
415              "decorators": [],
416              "loc": {
417                "start": {
418                  "line": 18,
419                  "column": 5
420                },
421                "end": {
422                  "line": 18,
423                  "column": 6
424                }
425              }
426            },
427            "accessibility": "public",
428            "static": true,
429            "readonly": false,
430            "declare": false,
431            "optional": false,
432            "computed": false,
433            "typeAnnotation": {
434              "type": "ETSUnionType",
435              "types": [
436                {
437                  "type": "ETSTypeReference",
438                  "part": {
439                    "type": "ETSTypeReferencePart",
440                    "name": {
441                      "type": "Identifier",
442                      "name": "cls",
443                      "decorators": [],
444                      "loc": {
445                        "start": {
446                          "line": 18,
447                          "column": 9
448                        },
449                        "end": {
450                          "line": 18,
451                          "column": 12
452                        }
453                      }
454                    },
455                    "loc": {
456                      "start": {
457                        "line": 18,
458                        "column": 9
459                      },
460                      "end": {
461                        "line": 18,
462                        "column": 14
463                      }
464                    }
465                  },
466                  "loc": {
467                    "start": {
468                      "line": 18,
469                      "column": 9
470                    },
471                    "end": {
472                      "line": 18,
473                      "column": 14
474                    }
475                  }
476                },
477                {
478                  "type": "ETSNullType",
479                  "loc": {
480                    "start": {
481                      "line": 18,
482                      "column": 15
483                    },
484                    "end": {
485                      "line": 18,
486                      "column": 19
487                    }
488                  }
489                }
490              ],
491              "loc": {
492                "start": {
493                  "line": 18,
494                  "column": 9
495                },
496                "end": {
497                  "line": 18,
498                  "column": 19
499                }
500              }
501            },
502            "definite": false,
503            "decorators": [],
504            "loc": {
505              "start": {
506                "line": 18,
507                "column": 5
508              },
509              "end": {
510                "line": 18,
511                "column": 26
512              }
513            }
514          },
515          {
516            "type": "ClassProperty",
517            "key": {
518              "type": "Identifier",
519              "name": "c",
520              "decorators": [],
521              "loc": {
522                "start": {
523                  "line": 19,
524                  "column": 5
525                },
526                "end": {
527                  "line": 19,
528                  "column": 6
529                }
530              }
531            },
532            "accessibility": "public",
533            "static": true,
534            "readonly": false,
535            "declare": false,
536            "optional": false,
537            "computed": false,
538            "typeAnnotation": {
539              "type": "ETSTypeReference",
540              "part": {
541                "type": "ETSTypeReferencePart",
542                "name": {
543                  "type": "Identifier",
544                  "name": "cls",
545                  "decorators": [],
546                  "loc": {
547                    "start": {
548                      "line": 19,
549                      "column": 9
550                    },
551                    "end": {
552                      "line": 19,
553                      "column": 12
554                    }
555                  }
556                },
557                "loc": {
558                  "start": {
559                    "line": 19,
560                    "column": 9
561                  },
562                  "end": {
563                    "line": 19,
564                    "column": 14
565                  }
566                }
567              },
568              "loc": {
569                "start": {
570                  "line": 19,
571                  "column": 9
572                },
573                "end": {
574                  "line": 19,
575                  "column": 14
576                }
577              }
578            },
579            "definite": false,
580            "decorators": [],
581            "loc": {
582              "start": {
583                "line": 19,
584                "column": 5
585              },
586              "end": {
587                "line": 19,
588                "column": 25
589              }
590            }
591          },
592          {
593            "type": "MethodDefinition",
594            "key": {
595              "type": "Identifier",
596              "name": "foo",
597              "decorators": [],
598              "loc": {
599                "start": {
600                  "line": 21,
601                  "column": 10
602                },
603                "end": {
604                  "line": 21,
605                  "column": 13
606                }
607              }
608            },
609            "kind": "method",
610            "accessibility": "public",
611            "static": true,
612            "optional": false,
613            "computed": false,
614            "value": {
615              "type": "FunctionExpression",
616              "function": {
617                "type": "ScriptFunction",
618                "id": {
619                  "type": "Identifier",
620                  "name": "foo",
621                  "decorators": [],
622                  "loc": {
623                    "start": {
624                      "line": 21,
625                      "column": 10
626                    },
627                    "end": {
628                      "line": 21,
629                      "column": 13
630                    }
631                  }
632                },
633                "generator": false,
634                "async": false,
635                "expression": false,
636                "params": [
637                  {
638                    "type": "ETSParameterExpression",
639                    "name": {
640                      "type": "Identifier",
641                      "name": "arg",
642                      "typeAnnotation": {
643                        "type": "ETSUnionType",
644                        "types": [
645                          {
646                            "type": "ETSTypeReference",
647                            "part": {
648                              "type": "ETSTypeReferencePart",
649                              "name": {
650                                "type": "Identifier",
651                                "name": "cls",
652                                "decorators": [],
653                                "loc": {
654                                  "start": {
655                                    "line": 21,
656                                    "column": 19
657                                  },
658                                  "end": {
659                                    "line": 21,
660                                    "column": 22
661                                  }
662                                }
663                              },
664                              "loc": {
665                                "start": {
666                                  "line": 21,
667                                  "column": 19
668                                },
669                                "end": {
670                                  "line": 21,
671                                  "column": 24
672                                }
673                              }
674                            },
675                            "loc": {
676                              "start": {
677                                "line": 21,
678                                "column": 19
679                              },
680                              "end": {
681                                "line": 21,
682                                "column": 24
683                              }
684                            }
685                          },
686                          {
687                            "type": "ETSNullType",
688                            "loc": {
689                              "start": {
690                                "line": 21,
691                                "column": 25
692                              },
693                              "end": {
694                                "line": 21,
695                                "column": 29
696                              }
697                            }
698                          }
699                        ],
700                        "loc": {
701                          "start": {
702                            "line": 21,
703                            "column": 19
704                          },
705                          "end": {
706                            "line": 21,
707                            "column": 29
708                          }
709                        }
710                      },
711                      "decorators": [],
712                      "loc": {
713                        "start": {
714                          "line": 21,
715                          "column": 14
716                        },
717                        "end": {
718                          "line": 21,
719                          "column": 29
720                        }
721                      }
722                    },
723                    "loc": {
724                      "start": {
725                        "line": 21,
726                        "column": 14
727                      },
728                      "end": {
729                        "line": 21,
730                        "column": 29
731                      }
732                    }
733                  }
734                ],
735                "returnType": {
736                  "type": "ETSPrimitiveType",
737                  "loc": {
738                    "start": {
739                      "line": 21,
740                      "column": 33
741                    },
742                    "end": {
743                      "line": 21,
744                      "column": 37
745                    }
746                  }
747                },
748                "body": {
749                  "type": "BlockStatement",
750                  "statements": [],
751                  "loc": {
752                    "start": {
753                      "line": 21,
754                      "column": 38
755                    },
756                    "end": {
757                      "line": 22,
758                      "column": 2
759                    }
760                  }
761                },
762                "loc": {
763                  "start": {
764                    "line": 21,
765                    "column": 13
766                  },
767                  "end": {
768                    "line": 22,
769                    "column": 2
770                  }
771                }
772              },
773              "loc": {
774                "start": {
775                  "line": 21,
776                  "column": 13
777                },
778                "end": {
779                  "line": 22,
780                  "column": 2
781                }
782              }
783            },
784            "overloads": [],
785            "decorators": [],
786            "loc": {
787              "start": {
788                "line": 21,
789                "column": 1
790              },
791              "end": {
792                "line": 22,
793                "column": 2
794              }
795            }
796          },
797          {
798            "type": "MethodDefinition",
799            "key": {
800              "type": "Identifier",
801              "name": "main",
802              "decorators": [],
803              "loc": {
804                "start": {
805                  "line": 24,
806                  "column": 10
807                },
808                "end": {
809                  "line": 24,
810                  "column": 14
811                }
812              }
813            },
814            "kind": "method",
815            "accessibility": "public",
816            "static": true,
817            "optional": false,
818            "computed": false,
819            "value": {
820              "type": "FunctionExpression",
821              "function": {
822                "type": "ScriptFunction",
823                "id": {
824                  "type": "Identifier",
825                  "name": "main",
826                  "decorators": [],
827                  "loc": {
828                    "start": {
829                      "line": 24,
830                      "column": 10
831                    },
832                    "end": {
833                      "line": 24,
834                      "column": 14
835                    }
836                  }
837                },
838                "generator": false,
839                "async": false,
840                "expression": false,
841                "params": [],
842                "returnType": {
843                  "type": "ETSPrimitiveType",
844                  "loc": {
845                    "start": {
846                      "line": 24,
847                      "column": 18
848                    },
849                    "end": {
850                      "line": 24,
851                      "column": 22
852                    }
853                  }
854                },
855                "body": {
856                  "type": "BlockStatement",
857                  "statements": [
858                    {
859                      "type": "ExpressionStatement",
860                      "expression": {
861                        "type": "CallExpression",
862                        "callee": {
863                          "type": "Identifier",
864                          "name": "foo",
865                          "decorators": [],
866                          "loc": {
867                            "start": {
868                              "line": 25,
869                              "column": 5
870                            },
871                            "end": {
872                              "line": 25,
873                              "column": 8
874                            }
875                          }
876                        },
877                        "arguments": [
878                          {
879                            "type": "Identifier",
880                            "name": "b",
881                            "decorators": [],
882                            "loc": {
883                              "start": {
884                                "line": 25,
885                                "column": 9
886                              },
887                              "end": {
888                                "line": 25,
889                                "column": 10
890                              }
891                            }
892                          }
893                        ],
894                        "optional": false,
895                        "loc": {
896                          "start": {
897                            "line": 25,
898                            "column": 5
899                          },
900                          "end": {
901                            "line": 25,
902                            "column": 11
903                          }
904                        }
905                      },
906                      "loc": {
907                        "start": {
908                          "line": 25,
909                          "column": 5
910                        },
911                        "end": {
912                          "line": 25,
913                          "column": 12
914                        }
915                      }
916                    },
917                    {
918                      "type": "ExpressionStatement",
919                      "expression": {
920                        "type": "CallExpression",
921                        "callee": {
922                          "type": "Identifier",
923                          "name": "foo",
924                          "decorators": [],
925                          "loc": {
926                            "start": {
927                              "line": 26,
928                              "column": 5
929                            },
930                            "end": {
931                              "line": 26,
932                              "column": 8
933                            }
934                          }
935                        },
936                        "arguments": [
937                          {
938                            "type": "Identifier",
939                            "name": "c",
940                            "decorators": [],
941                            "loc": {
942                              "start": {
943                                "line": 26,
944                                "column": 9
945                              },
946                              "end": {
947                                "line": 26,
948                                "column": 10
949                              }
950                            }
951                          }
952                        ],
953                        "optional": false,
954                        "loc": {
955                          "start": {
956                            "line": 26,
957                            "column": 5
958                          },
959                          "end": {
960                            "line": 26,
961                            "column": 11
962                          }
963                        }
964                      },
965                      "loc": {
966                        "start": {
967                          "line": 26,
968                          "column": 5
969                        },
970                        "end": {
971                          "line": 26,
972                          "column": 12
973                        }
974                      }
975                    },
976                    {
977                      "type": "VariableDeclaration",
978                      "declarations": [
979                        {
980                          "type": "VariableDeclarator",
981                          "id": {
982                            "type": "Identifier",
983                            "name": "e",
984                            "typeAnnotation": {
985                              "type": "ETSUnionType",
986                              "types": [
987                                {
988                                  "type": "ETSTypeReference",
989                                  "part": {
990                                    "type": "ETSTypeReferencePart",
991                                    "name": {
992                                      "type": "Identifier",
993                                      "name": "cls",
994                                      "decorators": [],
995                                      "loc": {
996                                        "start": {
997                                          "line": 28,
998                                          "column": 13
999                                        },
1000                                        "end": {
1001                                          "line": 28,
1002                                          "column": 16
1003                                        }
1004                                      }
1005                                    },
1006                                    "loc": {
1007                                      "start": {
1008                                        "line": 28,
1009                                        "column": 13
1010                                      },
1011                                      "end": {
1012                                        "line": 28,
1013                                        "column": 18
1014                                      }
1015                                    }
1016                                  },
1017                                  "loc": {
1018                                    "start": {
1019                                      "line": 28,
1020                                      "column": 13
1021                                    },
1022                                    "end": {
1023                                      "line": 28,
1024                                      "column": 18
1025                                    }
1026                                  }
1027                                },
1028                                {
1029                                  "type": "ETSNullType",
1030                                  "loc": {
1031                                    "start": {
1032                                      "line": 28,
1033                                      "column": 19
1034                                    },
1035                                    "end": {
1036                                      "line": 28,
1037                                      "column": 23
1038                                    }
1039                                  }
1040                                }
1041                              ],
1042                              "loc": {
1043                                "start": {
1044                                  "line": 28,
1045                                  "column": 13
1046                                },
1047                                "end": {
1048                                  "line": 28,
1049                                  "column": 23
1050                                }
1051                              }
1052                            },
1053                            "decorators": [],
1054                            "loc": {
1055                              "start": {
1056                                "line": 28,
1057                                "column": 9
1058                              },
1059                              "end": {
1060                                "line": 28,
1061                                "column": 10
1062                              }
1063                            }
1064                          },
1065                          "init": {
1066                            "type": "NullLiteral",
1067                            "value": null,
1068                            "loc": {
1069                              "start": {
1070                                "line": 28,
1071                                "column": 26
1072                              },
1073                              "end": {
1074                                "line": 28,
1075                                "column": 30
1076                              }
1077                            }
1078                          },
1079                          "loc": {
1080                            "start": {
1081                              "line": 28,
1082                              "column": 9
1083                            },
1084                            "end": {
1085                              "line": 28,
1086                              "column": 30
1087                            }
1088                          }
1089                        }
1090                      ],
1091                      "kind": "let",
1092                      "loc": {
1093                        "start": {
1094                          "line": 28,
1095                          "column": 5
1096                        },
1097                        "end": {
1098                          "line": 28,
1099                          "column": 31
1100                        }
1101                      }
1102                    },
1103                    {
1104                      "type": "VariableDeclaration",
1105                      "declarations": [
1106                        {
1107                          "type": "VariableDeclarator",
1108                          "id": {
1109                            "type": "Identifier",
1110                            "name": "f",
1111                            "typeAnnotation": {
1112                              "type": "ETSTypeReference",
1113                              "part": {
1114                                "type": "ETSTypeReferencePart",
1115                                "name": {
1116                                  "type": "Identifier",
1117                                  "name": "cls",
1118                                  "decorators": [],
1119                                  "loc": {
1120                                    "start": {
1121                                      "line": 29,
1122                                      "column": 13
1123                                    },
1124                                    "end": {
1125                                      "line": 29,
1126                                      "column": 16
1127                                    }
1128                                  }
1129                                },
1130                                "loc": {
1131                                  "start": {
1132                                    "line": 29,
1133                                    "column": 13
1134                                  },
1135                                  "end": {
1136                                    "line": 29,
1137                                    "column": 18
1138                                  }
1139                                }
1140                              },
1141                              "loc": {
1142                                "start": {
1143                                  "line": 29,
1144                                  "column": 13
1145                                },
1146                                "end": {
1147                                  "line": 29,
1148                                  "column": 18
1149                                }
1150                              }
1151                            },
1152                            "decorators": [],
1153                            "loc": {
1154                              "start": {
1155                                "line": 29,
1156                                "column": 9
1157                              },
1158                              "end": {
1159                                "line": 29,
1160                                "column": 10
1161                              }
1162                            }
1163                          },
1164                          "init": {
1165                            "type": "ETSNewClassInstanceExpression",
1166                            "typeReference": {
1167                              "type": "ETSTypeReference",
1168                              "part": {
1169                                "type": "ETSTypeReferencePart",
1170                                "name": {
1171                                  "type": "Identifier",
1172                                  "name": "cls",
1173                                  "decorators": [],
1174                                  "loc": {
1175                                    "start": {
1176                                      "line": 29,
1177                                      "column": 23
1178                                    },
1179                                    "end": {
1180                                      "line": 29,
1181                                      "column": 26
1182                                    }
1183                                  }
1184                                },
1185                                "loc": {
1186                                  "start": {
1187                                    "line": 29,
1188                                    "column": 23
1189                                  },
1190                                  "end": {
1191                                    "line": 29,
1192                                    "column": 27
1193                                  }
1194                                }
1195                              },
1196                              "loc": {
1197                                "start": {
1198                                  "line": 29,
1199                                  "column": 23
1200                                },
1201                                "end": {
1202                                  "line": 29,
1203                                  "column": 27
1204                                }
1205                              }
1206                            },
1207                            "arguments": [],
1208                            "loc": {
1209                              "start": {
1210                                "line": 29,
1211                                "column": 19
1212                              },
1213                              "end": {
1214                                "line": 29,
1215                                "column": 29
1216                              }
1217                            }
1218                          },
1219                          "loc": {
1220                            "start": {
1221                              "line": 29,
1222                              "column": 9
1223                            },
1224                            "end": {
1225                              "line": 29,
1226                              "column": 29
1227                            }
1228                          }
1229                        }
1230                      ],
1231                      "kind": "let",
1232                      "loc": {
1233                        "start": {
1234                          "line": 29,
1235                          "column": 5
1236                        },
1237                        "end": {
1238                          "line": 29,
1239                          "column": 29
1240                        }
1241                      }
1242                    },
1243                    {
1244                      "type": "ExpressionStatement",
1245                      "expression": {
1246                        "type": "CallExpression",
1247                        "callee": {
1248                          "type": "Identifier",
1249                          "name": "foo",
1250                          "decorators": [],
1251                          "loc": {
1252                            "start": {
1253                              "line": 31,
1254                              "column": 5
1255                            },
1256                            "end": {
1257                              "line": 31,
1258                              "column": 8
1259                            }
1260                          }
1261                        },
1262                        "arguments": [
1263                          {
1264                            "type": "Identifier",
1265                            "name": "e",
1266                            "decorators": [],
1267                            "loc": {
1268                              "start": {
1269                                "line": 31,
1270                                "column": 9
1271                              },
1272                              "end": {
1273                                "line": 31,
1274                                "column": 10
1275                              }
1276                            }
1277                          }
1278                        ],
1279                        "optional": false,
1280                        "loc": {
1281                          "start": {
1282                            "line": 31,
1283                            "column": 5
1284                          },
1285                          "end": {
1286                            "line": 31,
1287                            "column": 11
1288                          }
1289                        }
1290                      },
1291                      "loc": {
1292                        "start": {
1293                          "line": 31,
1294                          "column": 5
1295                        },
1296                        "end": {
1297                          "line": 31,
1298                          "column": 12
1299                        }
1300                      }
1301                    },
1302                    {
1303                      "type": "ExpressionStatement",
1304                      "expression": {
1305                        "type": "CallExpression",
1306                        "callee": {
1307                          "type": "Identifier",
1308                          "name": "foo",
1309                          "decorators": [],
1310                          "loc": {
1311                            "start": {
1312                              "line": 32,
1313                              "column": 5
1314                            },
1315                            "end": {
1316                              "line": 32,
1317                              "column": 8
1318                            }
1319                          }
1320                        },
1321                        "arguments": [
1322                          {
1323                            "type": "Identifier",
1324                            "name": "f",
1325                            "decorators": [],
1326                            "loc": {
1327                              "start": {
1328                                "line": 32,
1329                                "column": 9
1330                              },
1331                              "end": {
1332                                "line": 32,
1333                                "column": 10
1334                              }
1335                            }
1336                          }
1337                        ],
1338                        "optional": false,
1339                        "loc": {
1340                          "start": {
1341                            "line": 32,
1342                            "column": 5
1343                          },
1344                          "end": {
1345                            "line": 32,
1346                            "column": 11
1347                          }
1348                        }
1349                      },
1350                      "loc": {
1351                        "start": {
1352                          "line": 32,
1353                          "column": 5
1354                        },
1355                        "end": {
1356                          "line": 32,
1357                          "column": 12
1358                        }
1359                      }
1360                    },
1361                    {
1362                      "type": "ExpressionStatement",
1363                      "expression": {
1364                        "type": "CallExpression",
1365                        "callee": {
1366                          "type": "Identifier",
1367                          "name": "foo",
1368                          "decorators": [],
1369                          "loc": {
1370                            "start": {
1371                              "line": 34,
1372                              "column": 5
1373                            },
1374                            "end": {
1375                              "line": 34,
1376                              "column": 8
1377                            }
1378                          }
1379                        },
1380                        "arguments": [
1381                          {
1382                            "type": "NullLiteral",
1383                            "value": null,
1384                            "loc": {
1385                              "start": {
1386                                "line": 34,
1387                                "column": 9
1388                              },
1389                              "end": {
1390                                "line": 34,
1391                                "column": 13
1392                              }
1393                            }
1394                          }
1395                        ],
1396                        "optional": false,
1397                        "loc": {
1398                          "start": {
1399                            "line": 34,
1400                            "column": 5
1401                          },
1402                          "end": {
1403                            "line": 34,
1404                            "column": 14
1405                          }
1406                        }
1407                      },
1408                      "loc": {
1409                        "start": {
1410                          "line": 34,
1411                          "column": 5
1412                        },
1413                        "end": {
1414                          "line": 34,
1415                          "column": 15
1416                        }
1417                      }
1418                    },
1419                    {
1420                      "type": "ExpressionStatement",
1421                      "expression": {
1422                        "type": "CallExpression",
1423                        "callee": {
1424                          "type": "Identifier",
1425                          "name": "foo",
1426                          "decorators": [],
1427                          "loc": {
1428                            "start": {
1429                              "line": 35,
1430                              "column": 5
1431                            },
1432                            "end": {
1433                              "line": 35,
1434                              "column": 8
1435                            }
1436                          }
1437                        },
1438                        "arguments": [
1439                          {
1440                            "type": "ETSNewClassInstanceExpression",
1441                            "typeReference": {
1442                              "type": "ETSTypeReference",
1443                              "part": {
1444                                "type": "ETSTypeReferencePart",
1445                                "name": {
1446                                  "type": "Identifier",
1447                                  "name": "cls",
1448                                  "decorators": [],
1449                                  "loc": {
1450                                    "start": {
1451                                      "line": 35,
1452                                      "column": 13
1453                                    },
1454                                    "end": {
1455                                      "line": 35,
1456                                      "column": 16
1457                                    }
1458                                  }
1459                                },
1460                                "loc": {
1461                                  "start": {
1462                                    "line": 35,
1463                                    "column": 13
1464                                  },
1465                                  "end": {
1466                                    "line": 35,
1467                                    "column": 17
1468                                  }
1469                                }
1470                              },
1471                              "loc": {
1472                                "start": {
1473                                  "line": 35,
1474                                  "column": 13
1475                                },
1476                                "end": {
1477                                  "line": 35,
1478                                  "column": 17
1479                                }
1480                              }
1481                            },
1482                            "arguments": [],
1483                            "loc": {
1484                              "start": {
1485                                "line": 35,
1486                                "column": 9
1487                              },
1488                              "end": {
1489                                "line": 35,
1490                                "column": 19
1491                              }
1492                            }
1493                          }
1494                        ],
1495                        "optional": false,
1496                        "loc": {
1497                          "start": {
1498                            "line": 35,
1499                            "column": 5
1500                          },
1501                          "end": {
1502                            "line": 35,
1503                            "column": 19
1504                          }
1505                        }
1506                      },
1507                      "loc": {
1508                        "start": {
1509                          "line": 35,
1510                          "column": 5
1511                        },
1512                        "end": {
1513                          "line": 35,
1514                          "column": 20
1515                        }
1516                      }
1517                    },
1518                    {
1519                      "type": "AssertStatement",
1520                      "test": {
1521                        "type": "LogicalExpression",
1522                        "operator": "&&",
1523                        "left": {
1524                          "type": "BinaryExpression",
1525                          "operator": "==",
1526                          "left": {
1527                            "type": "Identifier",
1528                            "name": "b",
1529                            "decorators": [],
1530                            "loc": {
1531                              "start": {
1532                                "line": 37,
1533                                "column": 13
1534                              },
1535                              "end": {
1536                                "line": 37,
1537                                "column": 14
1538                              }
1539                            }
1540                          },
1541                          "right": {
1542                            "type": "NullLiteral",
1543                            "value": null,
1544                            "loc": {
1545                              "start": {
1546                                "line": 37,
1547                                "column": 18
1548                              },
1549                              "end": {
1550                                "line": 37,
1551                                "column": 22
1552                              }
1553                            }
1554                          },
1555                          "loc": {
1556                            "start": {
1557                              "line": 37,
1558                              "column": 13
1559                            },
1560                            "end": {
1561                              "line": 37,
1562                              "column": 22
1563                            }
1564                          }
1565                        },
1566                        "right": {
1567                          "type": "BinaryExpression",
1568                          "operator": "!=",
1569                          "left": {
1570                            "type": "Identifier",
1571                            "name": "c",
1572                            "decorators": [],
1573                            "loc": {
1574                              "start": {
1575                                "line": 37,
1576                                "column": 26
1577                              },
1578                              "end": {
1579                                "line": 37,
1580                                "column": 27
1581                              }
1582                            }
1583                          },
1584                          "right": {
1585                            "type": "NullLiteral",
1586                            "value": null,
1587                            "loc": {
1588                              "start": {
1589                                "line": 37,
1590                                "column": 31
1591                              },
1592                              "end": {
1593                                "line": 37,
1594                                "column": 35
1595                              }
1596                            }
1597                          },
1598                          "loc": {
1599                            "start": {
1600                              "line": 37,
1601                              "column": 26
1602                            },
1603                            "end": {
1604                              "line": 37,
1605                              "column": 35
1606                            }
1607                          }
1608                        },
1609                        "loc": {
1610                          "start": {
1611                            "line": 37,
1612                            "column": 12
1613                          },
1614                          "end": {
1615                            "line": 37,
1616                            "column": 36
1617                          }
1618                        }
1619                      },
1620                      "second": null,
1621                      "loc": {
1622                        "start": {
1623                          "line": 37,
1624                          "column": 5
1625                        },
1626                        "end": {
1627                          "line": 37,
1628                          "column": 36
1629                        }
1630                      }
1631                    },
1632                    {
1633                      "type": "AssertStatement",
1634                      "test": {
1635                        "type": "BinaryExpression",
1636                        "operator": "!=",
1637                        "left": {
1638                          "type": "NullLiteral",
1639                          "value": null,
1640                          "loc": {
1641                            "start": {
1642                              "line": 38,
1643                              "column": 13
1644                            },
1645                            "end": {
1646                              "line": 38,
1647                              "column": 17
1648                            }
1649                          }
1650                        },
1651                        "right": {
1652                          "type": "Identifier",
1653                          "name": "c",
1654                          "decorators": [],
1655                          "loc": {
1656                            "start": {
1657                              "line": 38,
1658                              "column": 21
1659                            },
1660                            "end": {
1661                              "line": 38,
1662                              "column": 22
1663                            }
1664                          }
1665                        },
1666                        "loc": {
1667                          "start": {
1668                            "line": 38,
1669                            "column": 12
1670                          },
1671                          "end": {
1672                            "line": 38,
1673                            "column": 23
1674                          }
1675                        }
1676                      },
1677                      "second": null,
1678                      "loc": {
1679                        "start": {
1680                          "line": 38,
1681                          "column": 5
1682                        },
1683                        "end": {
1684                          "line": 38,
1685                          "column": 23
1686                        }
1687                      }
1688                    },
1689                    {
1690                      "type": "AssertStatement",
1691                      "test": {
1692                        "type": "LogicalExpression",
1693                        "operator": "&&",
1694                        "left": {
1695                          "type": "BinaryExpression",
1696                          "operator": "==",
1697                          "left": {
1698                            "type": "Identifier",
1699                            "name": "e",
1700                            "decorators": [],
1701                            "loc": {
1702                              "start": {
1703                                "line": 39,
1704                                "column": 13
1705                              },
1706                              "end": {
1707                                "line": 39,
1708                                "column": 14
1709                              }
1710                            }
1711                          },
1712                          "right": {
1713                            "type": "NullLiteral",
1714                            "value": null,
1715                            "loc": {
1716                              "start": {
1717                                "line": 39,
1718                                "column": 18
1719                              },
1720                              "end": {
1721                                "line": 39,
1722                                "column": 22
1723                              }
1724                            }
1725                          },
1726                          "loc": {
1727                            "start": {
1728                              "line": 39,
1729                              "column": 13
1730                            },
1731                            "end": {
1732                              "line": 39,
1733                              "column": 22
1734                            }
1735                          }
1736                        },
1737                        "right": {
1738                          "type": "BinaryExpression",
1739                          "operator": "!=",
1740                          "left": {
1741                            "type": "Identifier",
1742                            "name": "f",
1743                            "decorators": [],
1744                            "loc": {
1745                              "start": {
1746                                "line": 39,
1747                                "column": 26
1748                              },
1749                              "end": {
1750                                "line": 39,
1751                                "column": 27
1752                              }
1753                            }
1754                          },
1755                          "right": {
1756                            "type": "NullLiteral",
1757                            "value": null,
1758                            "loc": {
1759                              "start": {
1760                                "line": 39,
1761                                "column": 31
1762                              },
1763                              "end": {
1764                                "line": 39,
1765                                "column": 35
1766                              }
1767                            }
1768                          },
1769                          "loc": {
1770                            "start": {
1771                              "line": 39,
1772                              "column": 26
1773                            },
1774                            "end": {
1775                              "line": 39,
1776                              "column": 35
1777                            }
1778                          }
1779                        },
1780                        "loc": {
1781                          "start": {
1782                            "line": 39,
1783                            "column": 12
1784                          },
1785                          "end": {
1786                            "line": 39,
1787                            "column": 36
1788                          }
1789                        }
1790                      },
1791                      "second": null,
1792                      "loc": {
1793                        "start": {
1794                          "line": 39,
1795                          "column": 5
1796                        },
1797                        "end": {
1798                          "line": 39,
1799                          "column": 36
1800                        }
1801                      }
1802                    },
1803                    {
1804                      "type": "AssertStatement",
1805                      "test": {
1806                        "type": "BinaryExpression",
1807                        "operator": "==",
1808                        "left": {
1809                          "type": "Identifier",
1810                          "name": "b",
1811                          "decorators": [],
1812                          "loc": {
1813                            "start": {
1814                              "line": 40,
1815                              "column": 13
1816                            },
1817                            "end": {
1818                              "line": 40,
1819                              "column": 14
1820                            }
1821                          }
1822                        },
1823                        "right": {
1824                          "type": "Identifier",
1825                          "name": "e",
1826                          "decorators": [],
1827                          "loc": {
1828                            "start": {
1829                              "line": 40,
1830                              "column": 18
1831                            },
1832                            "end": {
1833                              "line": 40,
1834                              "column": 19
1835                            }
1836                          }
1837                        },
1838                        "loc": {
1839                          "start": {
1840                            "line": 40,
1841                            "column": 12
1842                          },
1843                          "end": {
1844                            "line": 40,
1845                            "column": 20
1846                          }
1847                        }
1848                      },
1849                      "second": null,
1850                      "loc": {
1851                        "start": {
1852                          "line": 40,
1853                          "column": 5
1854                        },
1855                        "end": {
1856                          "line": 40,
1857                          "column": 20
1858                        }
1859                      }
1860                    },
1861                    {
1862                      "type": "AssertStatement",
1863                      "test": {
1864                        "type": "BinaryExpression",
1865                        "operator": "==",
1866                        "left": {
1867                          "type": "NullLiteral",
1868                          "value": null,
1869                          "loc": {
1870                            "start": {
1871                              "line": 41,
1872                              "column": 13
1873                            },
1874                            "end": {
1875                              "line": 41,
1876                              "column": 17
1877                            }
1878                          }
1879                        },
1880                        "right": {
1881                          "type": "NullLiteral",
1882                          "value": null,
1883                          "loc": {
1884                            "start": {
1885                              "line": 41,
1886                              "column": 21
1887                            },
1888                            "end": {
1889                              "line": 41,
1890                              "column": 25
1891                            }
1892                          }
1893                        },
1894                        "loc": {
1895                          "start": {
1896                            "line": 41,
1897                            "column": 12
1898                          },
1899                          "end": {
1900                            "line": 41,
1901                            "column": 26
1902                          }
1903                        }
1904                      },
1905                      "second": null,
1906                      "loc": {
1907                        "start": {
1908                          "line": 41,
1909                          "column": 5
1910                        },
1911                        "end": {
1912                          "line": 41,
1913                          "column": 26
1914                        }
1915                      }
1916                    },
1917                    {
1918                      "type": "ReturnStatement",
1919                      "argument": null,
1920                      "loc": {
1921                        "start": {
1922                          "line": 43,
1923                          "column": 5
1924                        },
1925                        "end": {
1926                          "line": 43,
1927                          "column": 12
1928                        }
1929                      }
1930                    }
1931                  ],
1932                  "loc": {
1933                    "start": {
1934                      "line": 24,
1935                      "column": 23
1936                    },
1937                    "end": {
1938                      "line": 44,
1939                      "column": 2
1940                    }
1941                  }
1942                },
1943                "loc": {
1944                  "start": {
1945                    "line": 24,
1946                    "column": 14
1947                  },
1948                  "end": {
1949                    "line": 44,
1950                    "column": 2
1951                  }
1952                }
1953              },
1954              "loc": {
1955                "start": {
1956                  "line": 24,
1957                  "column": 14
1958                },
1959                "end": {
1960                  "line": 44,
1961                  "column": 2
1962                }
1963              }
1964            },
1965            "overloads": [],
1966            "decorators": [],
1967            "loc": {
1968              "start": {
1969                "line": 24,
1970                "column": 1
1971              },
1972              "end": {
1973                "line": 44,
1974                "column": 2
1975              }
1976            }
1977          }
1978        ],
1979        "loc": {
1980          "start": {
1981            "line": 1,
1982            "column": 1
1983          },
1984          "end": {
1985            "line": 1,
1986            "column": 1
1987          }
1988        }
1989      },
1990      "loc": {
1991        "start": {
1992          "line": 1,
1993          "column": 1
1994        },
1995        "end": {
1996          "line": 1,
1997          "column": 1
1998        }
1999      }
2000    }
2001  ],
2002  "loc": {
2003    "start": {
2004      "line": 1,
2005      "column": 1
2006    },
2007    "end": {
2008      "line": 45,
2009      "column": 1
2010    }
2011  }
2012}
2013