1{
2  "type": "Program",
3  "statements": [
4    {
5      "type": "ClassDeclaration",
6      "definition": {
7        "id": {
8          "type": "Identifier",
9          "name": "ETSGLOBAL",
10          "decorators": [],
11          "loc": {
12            "start": {
13              "line": 1,
14              "column": 1
15            },
16            "end": {
17              "line": 1,
18              "column": 1
19            }
20          }
21        },
22        "superClass": null,
23        "implements": [],
24        "body": [
25          {
26            "type": "MethodDefinition",
27            "key": {
28              "type": "Identifier",
29              "name": "main",
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": "method",
43            "accessibility": "public",
44            "static": true,
45            "optional": false,
46            "computed": false,
47            "value": {
48              "type": "FunctionExpression",
49              "function": {
50                "type": "ScriptFunction",
51                "id": {
52                  "type": "Identifier",
53                  "name": "main",
54                  "decorators": [],
55                  "loc": {
56                    "start": {
57                      "line": 1,
58                      "column": 1
59                    },
60                    "end": {
61                      "line": 1,
62                      "column": 1
63                    }
64                  }
65                },
66                "generator": false,
67                "async": false,
68                "expression": false,
69                "params": [],
70                "body": {
71                  "type": "BlockStatement",
72                  "statements": [],
73                  "loc": {
74                    "start": {
75                      "line": 1,
76                      "column": 1
77                    },
78                    "end": {
79                      "line": 1,
80                      "column": 1
81                    }
82                  }
83                },
84                "loc": {
85                  "start": {
86                    "line": 1,
87                    "column": 1
88                  },
89                  "end": {
90                    "line": 1,
91                    "column": 1
92                  }
93                }
94              },
95              "loc": {
96                "start": {
97                  "line": 1,
98                  "column": 1
99                },
100                "end": {
101                  "line": 1,
102                  "column": 1
103                }
104              }
105            },
106            "overloads": [],
107            "decorators": [],
108            "loc": {
109              "start": {
110                "line": 1,
111                "column": 1
112              },
113              "end": {
114                "line": 1,
115                "column": 1
116              }
117            }
118          },
119          {
120            "type": "MethodDefinition",
121            "key": {
122              "type": "Identifier",
123              "name": "_$init$_",
124              "decorators": [],
125              "loc": {
126                "start": {
127                  "line": 1,
128                  "column": 1
129                },
130                "end": {
131                  "line": 1,
132                  "column": 1
133                }
134              }
135            },
136            "kind": "method",
137            "accessibility": "public",
138            "static": true,
139            "optional": false,
140            "computed": false,
141            "value": {
142              "type": "FunctionExpression",
143              "function": {
144                "type": "ScriptFunction",
145                "id": {
146                  "type": "Identifier",
147                  "name": "_$init$_",
148                  "decorators": [],
149                  "loc": {
150                    "start": {
151                      "line": 1,
152                      "column": 1
153                    },
154                    "end": {
155                      "line": 1,
156                      "column": 1
157                    }
158                  }
159                },
160                "generator": false,
161                "async": false,
162                "expression": false,
163                "params": [],
164                "body": {
165                  "type": "BlockStatement",
166                  "statements": [
167                    {
168                      "type": "ExpressionStatement",
169                      "expression": {
170                        "type": "AssignmentExpression",
171                        "operator": "=",
172                        "left": {
173                          "type": "Identifier",
174                          "name": "asyncLambda",
175                          "decorators": [],
176                          "loc": {
177                            "start": {
178                              "line": 22,
179                              "column": 5
180                            },
181                            "end": {
182                              "line": 22,
183                              "column": 16
184                            }
185                          }
186                        },
187                        "right": {
188                          "type": "ArrowFunctionExpression",
189                          "function": {
190                            "type": "ScriptFunction",
191                            "id": null,
192                            "generator": false,
193                            "async": true,
194                            "expression": false,
195                            "params": [],
196                            "returnType": {
197                              "type": "ETSTypeReference",
198                              "part": {
199                                "type": "ETSTypeReferencePart",
200                                "name": {
201                                  "type": "Identifier",
202                                  "name": "Promise",
203                                  "decorators": [],
204                                  "loc": {
205                                    "start": {
206                                      "line": 22,
207                                      "column": 59
208                                    },
209                                    "end": {
210                                      "line": 22,
211                                      "column": 66
212                                    }
213                                  }
214                                },
215                                "typeParams": {
216                                  "type": "TSTypeParameterInstantiation",
217                                  "params": [
218                                    {
219                                      "type": "ETSUnionType",
220                                      "types": [
221                                        {
222                                          "type": "ETSTypeReference",
223                                          "part": {
224                                            "type": "ETSTypeReferencePart",
225                                            "name": {
226                                              "type": "Identifier",
227                                              "name": "Object",
228                                              "decorators": [],
229                                              "loc": {
230                                                "start": {
231                                                  "line": 22,
232                                                  "column": 67
233                                                },
234                                                "end": {
235                                                  "line": 22,
236                                                  "column": 73
237                                                }
238                                              }
239                                            },
240                                            "loc": {
241                                              "start": {
242                                                "line": 22,
243                                                "column": 67
244                                              },
245                                              "end": {
246                                                "line": 22,
247                                                "column": 75
248                                              }
249                                            }
250                                          },
251                                          "loc": {
252                                            "start": {
253                                              "line": 22,
254                                              "column": 67
255                                            },
256                                            "end": {
257                                              "line": 22,
258                                              "column": 75
259                                            }
260                                          }
261                                        },
262                                        {
263                                          "type": "ETSNullType",
264                                          "loc": {
265                                            "start": {
266                                              "line": 22,
267                                              "column": 76
268                                            },
269                                            "end": {
270                                              "line": 22,
271                                              "column": 80
272                                            }
273                                          }
274                                        }
275                                      ],
276                                      "loc": {
277                                        "start": {
278                                          "line": 22,
279                                          "column": 67
280                                        },
281                                        "end": {
282                                          "line": 22,
283                                          "column": 80
284                                        }
285                                      }
286                                    }
287                                  ],
288                                  "loc": {
289                                    "start": {
290                                      "line": 22,
291                                      "column": 66
292                                    },
293                                    "end": {
294                                      "line": 22,
295                                      "column": 81
296                                    }
297                                  }
298                                },
299                                "loc": {
300                                  "start": {
301                                    "line": 22,
302                                    "column": 59
303                                  },
304                                  "end": {
305                                    "line": 22,
306                                    "column": 84
307                                  }
308                                }
309                              },
310                              "loc": {
311                                "start": {
312                                  "line": 22,
313                                  "column": 59
314                                },
315                                "end": {
316                                  "line": 22,
317                                  "column": 84
318                                }
319                              }
320                            },
321                            "body": {
322                              "type": "BlockStatement",
323                              "statements": [
324                                {
325                                  "type": "VariableDeclaration",
326                                  "declarations": [
327                                    {
328                                      "type": "VariableDeclarator",
329                                      "id": {
330                                        "type": "Identifier",
331                                        "name": "promise",
332                                        "typeAnnotation": {
333                                          "type": "ETSUnionType",
334                                          "types": [
335                                            {
336                                              "type": "ETSTypeReference",
337                                              "part": {
338                                                "type": "ETSTypeReferencePart",
339                                                "name": {
340                                                  "type": "Identifier",
341                                                  "name": "Promise",
342                                                  "decorators": [],
343                                                  "loc": {
344                                                    "start": {
345                                                      "line": 23,
346                                                      "column": 18
347                                                    },
348                                                    "end": {
349                                                      "line": 23,
350                                                      "column": 25
351                                                    }
352                                                  }
353                                                },
354                                                "typeParams": {
355                                                  "type": "TSTypeParameterInstantiation",
356                                                  "params": [
357                                                    {
358                                                      "type": "ETSUnionType",
359                                                      "types": [
360                                                        {
361                                                          "type": "ETSTypeReference",
362                                                          "part": {
363                                                            "type": "ETSTypeReferencePart",
364                                                            "name": {
365                                                              "type": "Identifier",
366                                                              "name": "Object",
367                                                              "decorators": [],
368                                                              "loc": {
369                                                                "start": {
370                                                                  "line": 23,
371                                                                  "column": 26
372                                                                },
373                                                                "end": {
374                                                                  "line": 23,
375                                                                  "column": 32
376                                                                }
377                                                              }
378                                                            },
379                                                            "loc": {
380                                                              "start": {
381                                                                "line": 23,
382                                                                "column": 26
383                                                              },
384                                                              "end": {
385                                                                "line": 23,
386                                                                "column": 34
387                                                              }
388                                                            }
389                                                          },
390                                                          "loc": {
391                                                            "start": {
392                                                              "line": 23,
393                                                              "column": 26
394                                                            },
395                                                            "end": {
396                                                              "line": 23,
397                                                              "column": 34
398                                                            }
399                                                          }
400                                                        },
401                                                        {
402                                                          "type": "ETSNullType",
403                                                          "loc": {
404                                                            "start": {
405                                                              "line": 23,
406                                                              "column": 35
407                                                            },
408                                                            "end": {
409                                                              "line": 23,
410                                                              "column": 39
411                                                            }
412                                                          }
413                                                        }
414                                                      ],
415                                                      "loc": {
416                                                        "start": {
417                                                          "line": 23,
418                                                          "column": 26
419                                                        },
420                                                        "end": {
421                                                          "line": 23,
422                                                          "column": 39
423                                                        }
424                                                      }
425                                                    }
426                                                  ],
427                                                  "loc": {
428                                                    "start": {
429                                                      "line": 23,
430                                                      "column": 25
431                                                    },
432                                                    "end": {
433                                                      "line": 23,
434                                                      "column": 40
435                                                    }
436                                                  }
437                                                },
438                                                "loc": {
439                                                  "start": {
440                                                    "line": 23,
441                                                    "column": 18
442                                                  },
443                                                  "end": {
444                                                    "line": 23,
445                                                    "column": 42
446                                                  }
447                                                }
448                                              },
449                                              "loc": {
450                                                "start": {
451                                                  "line": 23,
452                                                  "column": 18
453                                                },
454                                                "end": {
455                                                  "line": 23,
456                                                  "column": 42
457                                                }
458                                              }
459                                            },
460                                            {
461                                              "type": "ETSNullType",
462                                              "loc": {
463                                                "start": {
464                                                  "line": 23,
465                                                  "column": 43
466                                                },
467                                                "end": {
468                                                  "line": 23,
469                                                  "column": 47
470                                                }
471                                              }
472                                            }
473                                          ],
474                                          "loc": {
475                                            "start": {
476                                              "line": 23,
477                                              "column": 18
478                                            },
479                                            "end": {
480                                              "line": 23,
481                                              "column": 47
482                                            }
483                                          }
484                                        },
485                                        "decorators": [],
486                                        "loc": {
487                                          "start": {
488                                            "line": 23,
489                                            "column": 9
490                                          },
491                                          "end": {
492                                            "line": 23,
493                                            "column": 16
494                                          }
495                                        }
496                                      },
497                                      "init": {
498                                        "type": "CallExpression",
499                                        "callee": {
500                                          "type": "ArrowFunctionExpression",
501                                          "function": {
502                                            "type": "ScriptFunction",
503                                            "id": null,
504                                            "generator": false,
505                                            "async": false,
506                                            "expression": false,
507                                            "params": [],
508                                            "returnType": {
509                                              "type": "ETSUnionType",
510                                              "types": [
511                                                {
512                                                  "type": "ETSTypeReference",
513                                                  "part": {
514                                                    "type": "ETSTypeReferencePart",
515                                                    "name": {
516                                                      "type": "Identifier",
517                                                      "name": "Promise",
518                                                      "decorators": [],
519                                                      "loc": {
520                                                        "start": {
521                                                          "line": 23,
522                                                          "column": 54
523                                                        },
524                                                        "end": {
525                                                          "line": 23,
526                                                          "column": 61
527                                                        }
528                                                      }
529                                                    },
530                                                    "typeParams": {
531                                                      "type": "TSTypeParameterInstantiation",
532                                                      "params": [
533                                                        {
534                                                          "type": "ETSUnionType",
535                                                          "types": [
536                                                            {
537                                                              "type": "ETSTypeReference",
538                                                              "part": {
539                                                                "type": "ETSTypeReferencePart",
540                                                                "name": {
541                                                                  "type": "Identifier",
542                                                                  "name": "Object",
543                                                                  "decorators": [],
544                                                                  "loc": {
545                                                                    "start": {
546                                                                      "line": 23,
547                                                                      "column": 62
548                                                                    },
549                                                                    "end": {
550                                                                      "line": 23,
551                                                                      "column": 68
552                                                                    }
553                                                                  }
554                                                                },
555                                                                "loc": {
556                                                                  "start": {
557                                                                    "line": 23,
558                                                                    "column": 62
559                                                                  },
560                                                                  "end": {
561                                                                    "line": 23,
562                                                                    "column": 70
563                                                                  }
564                                                                }
565                                                              },
566                                                              "loc": {
567                                                                "start": {
568                                                                  "line": 23,
569                                                                  "column": 62
570                                                                },
571                                                                "end": {
572                                                                  "line": 23,
573                                                                  "column": 70
574                                                                }
575                                                              }
576                                                            },
577                                                            {
578                                                              "type": "ETSNullType",
579                                                              "loc": {
580                                                                "start": {
581                                                                  "line": 23,
582                                                                  "column": 71
583                                                                },
584                                                                "end": {
585                                                                  "line": 23,
586                                                                  "column": 75
587                                                                }
588                                                              }
589                                                            }
590                                                          ],
591                                                          "loc": {
592                                                            "start": {
593                                                              "line": 23,
594                                                              "column": 62
595                                                            },
596                                                            "end": {
597                                                              "line": 23,
598                                                              "column": 75
599                                                            }
600                                                          }
601                                                        }
602                                                      ],
603                                                      "loc": {
604                                                        "start": {
605                                                          "line": 23,
606                                                          "column": 61
607                                                        },
608                                                        "end": {
609                                                          "line": 23,
610                                                          "column": 76
611                                                        }
612                                                      }
613                                                    },
614                                                    "loc": {
615                                                      "start": {
616                                                        "line": 23,
617                                                        "column": 54
618                                                      },
619                                                      "end": {
620                                                        "line": 23,
621                                                        "column": 78
622                                                      }
623                                                    }
624                                                  },
625                                                  "loc": {
626                                                    "start": {
627                                                      "line": 23,
628                                                      "column": 54
629                                                    },
630                                                    "end": {
631                                                      "line": 23,
632                                                      "column": 78
633                                                    }
634                                                  }
635                                                },
636                                                {
637                                                  "type": "ETSNullType",
638                                                  "loc": {
639                                                    "start": {
640                                                      "line": 23,
641                                                      "column": 79
642                                                    },
643                                                    "end": {
644                                                      "line": 23,
645                                                      "column": 83
646                                                    }
647                                                  }
648                                                }
649                                              ],
650                                              "loc": {
651                                                "start": {
652                                                  "line": 23,
653                                                  "column": 54
654                                                },
655                                                "end": {
656                                                  "line": 23,
657                                                  "column": 83
658                                                }
659                                              }
660                                            },
661                                            "body": {
662                                              "type": "BlockStatement",
663                                              "statements": [
664                                                {
665                                                  "type": "ReturnStatement",
666                                                  "argument": {
667                                                    "type": "NullLiteral",
668                                                    "value": null,
669                                                    "loc": {
670                                                      "start": {
671                                                        "line": 23,
672                                                        "column": 96
673                                                      },
674                                                      "end": {
675                                                        "line": 23,
676                                                        "column": 100
677                                                      }
678                                                    }
679                                                  },
680                                                  "loc": {
681                                                    "start": {
682                                                      "line": 23,
683                                                      "column": 89
684                                                    },
685                                                    "end": {
686                                                      "line": 23,
687                                                      "column": 101
688                                                    }
689                                                  }
690                                                }
691                                              ],
692                                              "loc": {
693                                                "start": {
694                                                  "line": 23,
695                                                  "column": 87
696                                                },
697                                                "end": {
698                                                  "line": 23,
699                                                  "column": 103
700                                                }
701                                              }
702                                            },
703                                            "loc": {
704                                              "start": {
705                                                "line": 23,
706                                                "column": 50
707                                              },
708                                              "end": {
709                                                "line": 23,
710                                                "column": 103
711                                              }
712                                            }
713                                          },
714                                          "loc": {
715                                            "start": {
716                                              "line": 23,
717                                              "column": 50
718                                            },
719                                            "end": {
720                                              "line": 23,
721                                              "column": 103
722                                            }
723                                          }
724                                        },
725                                        "arguments": [],
726                                        "optional": false,
727                                        "loc": {
728                                          "start": {
729                                            "line": 23,
730                                            "column": 50
731                                          },
732                                          "end": {
733                                            "line": 23,
734                                            "column": 105
735                                          }
736                                        }
737                                      },
738                                      "loc": {
739                                        "start": {
740                                          "line": 23,
741                                          "column": 9
742                                        },
743                                        "end": {
744                                          "line": 23,
745                                          "column": 105
746                                        }
747                                      }
748                                    }
749                                  ],
750                                  "kind": "let",
751                                  "loc": {
752                                    "start": {
753                                      "line": 23,
754                                      "column": 5
755                                    },
756                                    "end": {
757                                      "line": 23,
758                                      "column": 106
759                                    }
760                                  }
761                                },
762                                {
763                                  "type": "VariableDeclaration",
764                                  "declarations": [
765                                    {
766                                      "type": "VariableDeclarator",
767                                      "id": {
768                                        "type": "Identifier",
769                                        "name": "obj",
770                                        "typeAnnotation": {
771                                          "type": "ETSUnionType",
772                                          "types": [
773                                            {
774                                              "type": "ETSTypeReference",
775                                              "part": {
776                                                "type": "ETSTypeReferencePart",
777                                                "name": {
778                                                  "type": "Identifier",
779                                                  "name": "Object",
780                                                  "decorators": [],
781                                                  "loc": {
782                                                    "start": {
783                                                      "line": 24,
784                                                      "column": 14
785                                                    },
786                                                    "end": {
787                                                      "line": 24,
788                                                      "column": 20
789                                                    }
790                                                  }
791                                                },
792                                                "loc": {
793                                                  "start": {
794                                                    "line": 24,
795                                                    "column": 14
796                                                  },
797                                                  "end": {
798                                                    "line": 24,
799                                                    "column": 22
800                                                  }
801                                                }
802                                              },
803                                              "loc": {
804                                                "start": {
805                                                  "line": 24,
806                                                  "column": 14
807                                                },
808                                                "end": {
809                                                  "line": 24,
810                                                  "column": 22
811                                                }
812                                              }
813                                            },
814                                            {
815                                              "type": "ETSNullType",
816                                              "loc": {
817                                                "start": {
818                                                  "line": 24,
819                                                  "column": 23
820                                                },
821                                                "end": {
822                                                  "line": 24,
823                                                  "column": 27
824                                                }
825                                              }
826                                            }
827                                          ],
828                                          "loc": {
829                                            "start": {
830                                              "line": 24,
831                                              "column": 14
832                                            },
833                                            "end": {
834                                              "line": 24,
835                                              "column": 27
836                                            }
837                                          }
838                                        },
839                                        "decorators": [],
840                                        "loc": {
841                                          "start": {
842                                            "line": 24,
843                                            "column": 9
844                                          },
845                                          "end": {
846                                            "line": 24,
847                                            "column": 12
848                                          }
849                                        }
850                                      },
851                                      "init": {
852                                        "type": "AwaitExpression",
853                                        "argument": {
854                                          "type": "TSNonNullExpression",
855                                          "expression": {
856                                            "type": "Identifier",
857                                            "name": "promise",
858                                            "decorators": [],
859                                            "loc": {
860                                              "start": {
861                                                "line": 24,
862                                                "column": 36
863                                              },
864                                              "end": {
865                                                "line": 24,
866                                                "column": 43
867                                              }
868                                            }
869                                          },
870                                          "loc": {
871                                            "start": {
872                                              "line": 24,
873                                              "column": 36
874                                            },
875                                            "end": {
876                                              "line": 24,
877                                              "column": 44
878                                            }
879                                          }
880                                        },
881                                        "loc": {
882                                          "start": {
883                                            "line": 24,
884                                            "column": 30
885                                          },
886                                          "end": {
887                                            "line": 24,
888                                            "column": 45
889                                          }
890                                        }
891                                      },
892                                      "loc": {
893                                        "start": {
894                                          "line": 24,
895                                          "column": 9
896                                        },
897                                        "end": {
898                                          "line": 24,
899                                          "column": 45
900                                        }
901                                      }
902                                    }
903                                  ],
904                                  "kind": "let",
905                                  "loc": {
906                                    "start": {
907                                      "line": 24,
908                                      "column": 5
909                                    },
910                                    "end": {
911                                      "line": 24,
912                                      "column": 45
913                                    }
914                                  }
915                                },
916                                {
917                                  "type": "ReturnStatement",
918                                  "argument": {
919                                    "type": "Identifier",
920                                    "name": "promise",
921                                    "decorators": [],
922                                    "loc": {
923                                      "start": {
924                                        "line": 25,
925                                        "column": 12
926                                      },
927                                      "end": {
928                                        "line": 25,
929                                        "column": 19
930                                      }
931                                    }
932                                  },
933                                  "loc": {
934                                    "start": {
935                                      "line": 25,
936                                      "column": 5
937                                    },
938                                    "end": {
939                                      "line": 25,
940                                      "column": 20
941                                    }
942                                  }
943                                }
944                              ],
945                              "loc": {
946                                "start": {
947                                  "line": 22,
948                                  "column": 85
949                                },
950                                "end": {
951                                  "line": 26,
952                                  "column": 2
953                                }
954                              }
955                            },
956                            "loc": {
957                              "start": {
958                                "line": 22,
959                                "column": 55
960                              },
961                              "end": {
962                                "line": 26,
963                                "column": 2
964                              }
965                            }
966                          },
967                          "loc": {
968                            "start": {
969                              "line": 22,
970                              "column": 55
971                            },
972                            "end": {
973                              "line": 26,
974                              "column": 2
975                            }
976                          }
977                        },
978                        "loc": {
979                          "start": {
980                            "line": 22,
981                            "column": 5
982                          },
983                          "end": {
984                            "line": 26,
985                            "column": 2
986                          }
987                        }
988                      },
989                      "loc": {
990                        "start": {
991                          "line": 22,
992                          "column": 5
993                        },
994                        "end": {
995                          "line": 26,
996                          "column": 2
997                        }
998                      }
999                    },
1000                    {
1001                      "type": "ExpressionStatement",
1002                      "expression": {
1003                        "type": "AssignmentExpression",
1004                        "operator": "=",
1005                        "left": {
1006                          "type": "Identifier",
1007                          "name": "lambda",
1008                          "decorators": [],
1009                          "loc": {
1010                            "start": {
1011                              "line": 33,
1012                              "column": 5
1013                            },
1014                            "end": {
1015                              "line": 33,
1016                              "column": 11
1017                            }
1018                          }
1019                        },
1020                        "right": {
1021                          "type": "ArrowFunctionExpression",
1022                          "function": {
1023                            "type": "ScriptFunction",
1024                            "id": null,
1025                            "generator": false,
1026                            "async": false,
1027                            "expression": false,
1028                            "params": [],
1029                            "returnType": {
1030                              "type": "ETSPrimitiveType",
1031                              "loc": {
1032                                "start": {
1033                                  "line": 33,
1034                                  "column": 30
1035                                },
1036                                "end": {
1037                                  "line": 33,
1038                                  "column": 34
1039                                }
1040                              }
1041                            },
1042                            "body": {
1043                              "type": "BlockStatement",
1044                              "statements": [
1045                                {
1046                                  "type": "VariableDeclaration",
1047                                  "declarations": [
1048                                    {
1049                                      "type": "VariableDeclarator",
1050                                      "id": {
1051                                        "type": "Identifier",
1052                                        "name": "promise",
1053                                        "typeAnnotation": {
1054                                          "type": "ETSUnionType",
1055                                          "types": [
1056                                            {
1057                                              "type": "ETSTypeReference",
1058                                              "part": {
1059                                                "type": "ETSTypeReferencePart",
1060                                                "name": {
1061                                                  "type": "Identifier",
1062                                                  "name": "Promise",
1063                                                  "decorators": [],
1064                                                  "loc": {
1065                                                    "start": {
1066                                                      "line": 34,
1067                                                      "column": 18
1068                                                    },
1069                                                    "end": {
1070                                                      "line": 34,
1071                                                      "column": 25
1072                                                    }
1073                                                  }
1074                                                },
1075                                                "typeParams": {
1076                                                  "type": "TSTypeParameterInstantiation",
1077                                                  "params": [
1078                                                    {
1079                                                      "type": "ETSUnionType",
1080                                                      "types": [
1081                                                        {
1082                                                          "type": "ETSTypeReference",
1083                                                          "part": {
1084                                                            "type": "ETSTypeReferencePart",
1085                                                            "name": {
1086                                                              "type": "Identifier",
1087                                                              "name": "Object",
1088                                                              "decorators": [],
1089                                                              "loc": {
1090                                                                "start": {
1091                                                                  "line": 34,
1092                                                                  "column": 26
1093                                                                },
1094                                                                "end": {
1095                                                                  "line": 34,
1096                                                                  "column": 32
1097                                                                }
1098                                                              }
1099                                                            },
1100                                                            "loc": {
1101                                                              "start": {
1102                                                                "line": 34,
1103                                                                "column": 26
1104                                                              },
1105                                                              "end": {
1106                                                                "line": 34,
1107                                                                "column": 34
1108                                                              }
1109                                                            }
1110                                                          },
1111                                                          "loc": {
1112                                                            "start": {
1113                                                              "line": 34,
1114                                                              "column": 26
1115                                                            },
1116                                                            "end": {
1117                                                              "line": 34,
1118                                                              "column": 34
1119                                                            }
1120                                                          }
1121                                                        },
1122                                                        {
1123                                                          "type": "ETSNullType",
1124                                                          "loc": {
1125                                                            "start": {
1126                                                              "line": 34,
1127                                                              "column": 35
1128                                                            },
1129                                                            "end": {
1130                                                              "line": 34,
1131                                                              "column": 39
1132                                                            }
1133                                                          }
1134                                                        }
1135                                                      ],
1136                                                      "loc": {
1137                                                        "start": {
1138                                                          "line": 34,
1139                                                          "column": 26
1140                                                        },
1141                                                        "end": {
1142                                                          "line": 34,
1143                                                          "column": 39
1144                                                        }
1145                                                      }
1146                                                    }
1147                                                  ],
1148                                                  "loc": {
1149                                                    "start": {
1150                                                      "line": 34,
1151                                                      "column": 25
1152                                                    },
1153                                                    "end": {
1154                                                      "line": 34,
1155                                                      "column": 40
1156                                                    }
1157                                                  }
1158                                                },
1159                                                "loc": {
1160                                                  "start": {
1161                                                    "line": 34,
1162                                                    "column": 18
1163                                                  },
1164                                                  "end": {
1165                                                    "line": 34,
1166                                                    "column": 42
1167                                                  }
1168                                                }
1169                                              },
1170                                              "loc": {
1171                                                "start": {
1172                                                  "line": 34,
1173                                                  "column": 18
1174                                                },
1175                                                "end": {
1176                                                  "line": 34,
1177                                                  "column": 42
1178                                                }
1179                                              }
1180                                            },
1181                                            {
1182                                              "type": "ETSNullType",
1183                                              "loc": {
1184                                                "start": {
1185                                                  "line": 34,
1186                                                  "column": 43
1187                                                },
1188                                                "end": {
1189                                                  "line": 34,
1190                                                  "column": 47
1191                                                }
1192                                              }
1193                                            }
1194                                          ],
1195                                          "loc": {
1196                                            "start": {
1197                                              "line": 34,
1198                                              "column": 18
1199                                            },
1200                                            "end": {
1201                                              "line": 34,
1202                                              "column": 47
1203                                            }
1204                                          }
1205                                        },
1206                                        "decorators": [],
1207                                        "loc": {
1208                                          "start": {
1209                                            "line": 34,
1210                                            "column": 9
1211                                          },
1212                                          "end": {
1213                                            "line": 34,
1214                                            "column": 16
1215                                          }
1216                                        }
1217                                      },
1218                                      "init": {
1219                                        "type": "CallExpression",
1220                                        "callee": {
1221                                          "type": "ArrowFunctionExpression",
1222                                          "function": {
1223                                            "type": "ScriptFunction",
1224                                            "id": null,
1225                                            "generator": false,
1226                                            "async": false,
1227                                            "expression": false,
1228                                            "params": [],
1229                                            "returnType": {
1230                                              "type": "ETSUnionType",
1231                                              "types": [
1232                                                {
1233                                                  "type": "ETSTypeReference",
1234                                                  "part": {
1235                                                    "type": "ETSTypeReferencePart",
1236                                                    "name": {
1237                                                      "type": "Identifier",
1238                                                      "name": "Promise",
1239                                                      "decorators": [],
1240                                                      "loc": {
1241                                                        "start": {
1242                                                          "line": 34,
1243                                                          "column": 54
1244                                                        },
1245                                                        "end": {
1246                                                          "line": 34,
1247                                                          "column": 61
1248                                                        }
1249                                                      }
1250                                                    },
1251                                                    "typeParams": {
1252                                                      "type": "TSTypeParameterInstantiation",
1253                                                      "params": [
1254                                                        {
1255                                                          "type": "ETSUnionType",
1256                                                          "types": [
1257                                                            {
1258                                                              "type": "ETSTypeReference",
1259                                                              "part": {
1260                                                                "type": "ETSTypeReferencePart",
1261                                                                "name": {
1262                                                                  "type": "Identifier",
1263                                                                  "name": "Object",
1264                                                                  "decorators": [],
1265                                                                  "loc": {
1266                                                                    "start": {
1267                                                                      "line": 34,
1268                                                                      "column": 62
1269                                                                    },
1270                                                                    "end": {
1271                                                                      "line": 34,
1272                                                                      "column": 68
1273                                                                    }
1274                                                                  }
1275                                                                },
1276                                                                "loc": {
1277                                                                  "start": {
1278                                                                    "line": 34,
1279                                                                    "column": 62
1280                                                                  },
1281                                                                  "end": {
1282                                                                    "line": 34,
1283                                                                    "column": 70
1284                                                                  }
1285                                                                }
1286                                                              },
1287                                                              "loc": {
1288                                                                "start": {
1289                                                                  "line": 34,
1290                                                                  "column": 62
1291                                                                },
1292                                                                "end": {
1293                                                                  "line": 34,
1294                                                                  "column": 70
1295                                                                }
1296                                                              }
1297                                                            },
1298                                                            {
1299                                                              "type": "ETSNullType",
1300                                                              "loc": {
1301                                                                "start": {
1302                                                                  "line": 34,
1303                                                                  "column": 71
1304                                                                },
1305                                                                "end": {
1306                                                                  "line": 34,
1307                                                                  "column": 75
1308                                                                }
1309                                                              }
1310                                                            }
1311                                                          ],
1312                                                          "loc": {
1313                                                            "start": {
1314                                                              "line": 34,
1315                                                              "column": 62
1316                                                            },
1317                                                            "end": {
1318                                                              "line": 34,
1319                                                              "column": 75
1320                                                            }
1321                                                          }
1322                                                        }
1323                                                      ],
1324                                                      "loc": {
1325                                                        "start": {
1326                                                          "line": 34,
1327                                                          "column": 61
1328                                                        },
1329                                                        "end": {
1330                                                          "line": 34,
1331                                                          "column": 76
1332                                                        }
1333                                                      }
1334                                                    },
1335                                                    "loc": {
1336                                                      "start": {
1337                                                        "line": 34,
1338                                                        "column": 54
1339                                                      },
1340                                                      "end": {
1341                                                        "line": 34,
1342                                                        "column": 78
1343                                                      }
1344                                                    }
1345                                                  },
1346                                                  "loc": {
1347                                                    "start": {
1348                                                      "line": 34,
1349                                                      "column": 54
1350                                                    },
1351                                                    "end": {
1352                                                      "line": 34,
1353                                                      "column": 78
1354                                                    }
1355                                                  }
1356                                                },
1357                                                {
1358                                                  "type": "ETSNullType",
1359                                                  "loc": {
1360                                                    "start": {
1361                                                      "line": 34,
1362                                                      "column": 79
1363                                                    },
1364                                                    "end": {
1365                                                      "line": 34,
1366                                                      "column": 83
1367                                                    }
1368                                                  }
1369                                                }
1370                                              ],
1371                                              "loc": {
1372                                                "start": {
1373                                                  "line": 34,
1374                                                  "column": 54
1375                                                },
1376                                                "end": {
1377                                                  "line": 34,
1378                                                  "column": 83
1379                                                }
1380                                              }
1381                                            },
1382                                            "body": {
1383                                              "type": "BlockStatement",
1384                                              "statements": [
1385                                                {
1386                                                  "type": "ReturnStatement",
1387                                                  "argument": {
1388                                                    "type": "NullLiteral",
1389                                                    "value": null,
1390                                                    "loc": {
1391                                                      "start": {
1392                                                        "line": 34,
1393                                                        "column": 96
1394                                                      },
1395                                                      "end": {
1396                                                        "line": 34,
1397                                                        "column": 100
1398                                                      }
1399                                                    }
1400                                                  },
1401                                                  "loc": {
1402                                                    "start": {
1403                                                      "line": 34,
1404                                                      "column": 89
1405                                                    },
1406                                                    "end": {
1407                                                      "line": 34,
1408                                                      "column": 101
1409                                                    }
1410                                                  }
1411                                                }
1412                                              ],
1413                                              "loc": {
1414                                                "start": {
1415                                                  "line": 34,
1416                                                  "column": 87
1417                                                },
1418                                                "end": {
1419                                                  "line": 34,
1420                                                  "column": 103
1421                                                }
1422                                              }
1423                                            },
1424                                            "loc": {
1425                                              "start": {
1426                                                "line": 34,
1427                                                "column": 50
1428                                              },
1429                                              "end": {
1430                                                "line": 34,
1431                                                "column": 103
1432                                              }
1433                                            }
1434                                          },
1435                                          "loc": {
1436                                            "start": {
1437                                              "line": 34,
1438                                              "column": 50
1439                                            },
1440                                            "end": {
1441                                              "line": 34,
1442                                              "column": 103
1443                                            }
1444                                          }
1445                                        },
1446                                        "arguments": [],
1447                                        "optional": false,
1448                                        "loc": {
1449                                          "start": {
1450                                            "line": 34,
1451                                            "column": 50
1452                                          },
1453                                          "end": {
1454                                            "line": 34,
1455                                            "column": 105
1456                                          }
1457                                        }
1458                                      },
1459                                      "loc": {
1460                                        "start": {
1461                                          "line": 34,
1462                                          "column": 9
1463                                        },
1464                                        "end": {
1465                                          "line": 34,
1466                                          "column": 105
1467                                        }
1468                                      }
1469                                    }
1470                                  ],
1471                                  "kind": "let",
1472                                  "loc": {
1473                                    "start": {
1474                                      "line": 34,
1475                                      "column": 5
1476                                    },
1477                                    "end": {
1478                                      "line": 34,
1479                                      "column": 106
1480                                    }
1481                                  }
1482                                },
1483                                {
1484                                  "type": "VariableDeclaration",
1485                                  "declarations": [
1486                                    {
1487                                      "type": "VariableDeclarator",
1488                                      "id": {
1489                                        "type": "Identifier",
1490                                        "name": "obj",
1491                                        "typeAnnotation": {
1492                                          "type": "ETSUnionType",
1493                                          "types": [
1494                                            {
1495                                              "type": "ETSTypeReference",
1496                                              "part": {
1497                                                "type": "ETSTypeReferencePart",
1498                                                "name": {
1499                                                  "type": "Identifier",
1500                                                  "name": "Object",
1501                                                  "decorators": [],
1502                                                  "loc": {
1503                                                    "start": {
1504                                                      "line": 35,
1505                                                      "column": 14
1506                                                    },
1507                                                    "end": {
1508                                                      "line": 35,
1509                                                      "column": 20
1510                                                    }
1511                                                  }
1512                                                },
1513                                                "loc": {
1514                                                  "start": {
1515                                                    "line": 35,
1516                                                    "column": 14
1517                                                  },
1518                                                  "end": {
1519                                                    "line": 35,
1520                                                    "column": 22
1521                                                  }
1522                                                }
1523                                              },
1524                                              "loc": {
1525                                                "start": {
1526                                                  "line": 35,
1527                                                  "column": 14
1528                                                },
1529                                                "end": {
1530                                                  "line": 35,
1531                                                  "column": 22
1532                                                }
1533                                              }
1534                                            },
1535                                            {
1536                                              "type": "ETSNullType",
1537                                              "loc": {
1538                                                "start": {
1539                                                  "line": 35,
1540                                                  "column": 23
1541                                                },
1542                                                "end": {
1543                                                  "line": 35,
1544                                                  "column": 27
1545                                                }
1546                                              }
1547                                            }
1548                                          ],
1549                                          "loc": {
1550                                            "start": {
1551                                              "line": 35,
1552                                              "column": 14
1553                                            },
1554                                            "end": {
1555                                              "line": 35,
1556                                              "column": 27
1557                                            }
1558                                          }
1559                                        },
1560                                        "decorators": [],
1561                                        "loc": {
1562                                          "start": {
1563                                            "line": 35,
1564                                            "column": 9
1565                                          },
1566                                          "end": {
1567                                            "line": 35,
1568                                            "column": 12
1569                                          }
1570                                        }
1571                                      },
1572                                      "init": {
1573                                        "type": "AwaitExpression",
1574                                        "argument": {
1575                                          "type": "TSNonNullExpression",
1576                                          "expression": {
1577                                            "type": "Identifier",
1578                                            "name": "promise",
1579                                            "decorators": [],
1580                                            "loc": {
1581                                              "start": {
1582                                                "line": 35,
1583                                                "column": 36
1584                                              },
1585                                              "end": {
1586                                                "line": 35,
1587                                                "column": 43
1588                                              }
1589                                            }
1590                                          },
1591                                          "loc": {
1592                                            "start": {
1593                                              "line": 35,
1594                                              "column": 36
1595                                            },
1596                                            "end": {
1597                                              "line": 35,
1598                                              "column": 44
1599                                            }
1600                                          }
1601                                        },
1602                                        "loc": {
1603                                          "start": {
1604                                            "line": 35,
1605                                            "column": 30
1606                                          },
1607                                          "end": {
1608                                            "line": 35,
1609                                            "column": 45
1610                                          }
1611                                        }
1612                                      },
1613                                      "loc": {
1614                                        "start": {
1615                                          "line": 35,
1616                                          "column": 9
1617                                        },
1618                                        "end": {
1619                                          "line": 35,
1620                                          "column": 45
1621                                        }
1622                                      }
1623                                    }
1624                                  ],
1625                                  "kind": "let",
1626                                  "loc": {
1627                                    "start": {
1628                                      "line": 35,
1629                                      "column": 5
1630                                    },
1631                                    "end": {
1632                                      "line": 35,
1633                                      "column": 45
1634                                    }
1635                                  }
1636                                }
1637                              ],
1638                              "loc": {
1639                                "start": {
1640                                  "line": 33,
1641                                  "column": 38
1642                                },
1643                                "end": {
1644                                  "line": 36,
1645                                  "column": 2
1646                                }
1647                              }
1648                            },
1649                            "loc": {
1650                              "start": {
1651                                "line": 33,
1652                                "column": 26
1653                              },
1654                              "end": {
1655                                "line": 36,
1656                                "column": 2
1657                              }
1658                            }
1659                          },
1660                          "loc": {
1661                            "start": {
1662                              "line": 33,
1663                              "column": 26
1664                            },
1665                            "end": {
1666                              "line": 36,
1667                              "column": 2
1668                            }
1669                          }
1670                        },
1671                        "loc": {
1672                          "start": {
1673                            "line": 33,
1674                            "column": 5
1675                          },
1676                          "end": {
1677                            "line": 36,
1678                            "column": 2
1679                          }
1680                        }
1681                      },
1682                      "loc": {
1683                        "start": {
1684                          "line": 33,
1685                          "column": 5
1686                        },
1687                        "end": {
1688                          "line": 36,
1689                          "column": 2
1690                        }
1691                      }
1692                    },
1693                    {
1694                      "type": "ExpressionStatement",
1695                      "expression": {
1696                        "type": "AssignmentExpression",
1697                        "operator": "=",
1698                        "left": {
1699                          "type": "Identifier",
1700                          "name": "promise",
1701                          "decorators": [],
1702                          "loc": {
1703                            "start": {
1704                              "line": 38,
1705                              "column": 5
1706                            },
1707                            "end": {
1708                              "line": 38,
1709                              "column": 12
1710                            }
1711                          }
1712                        },
1713                        "right": {
1714                          "type": "NullLiteral",
1715                          "value": null,
1716                          "loc": {
1717                            "start": {
1718                              "line": 38,
1719                              "column": 46
1720                            },
1721                            "end": {
1722                              "line": 38,
1723                              "column": 50
1724                            }
1725                          }
1726                        },
1727                        "loc": {
1728                          "start": {
1729                            "line": 38,
1730                            "column": 5
1731                          },
1732                          "end": {
1733                            "line": 38,
1734                            "column": 50
1735                          }
1736                        }
1737                      },
1738                      "loc": {
1739                        "start": {
1740                          "line": 38,
1741                          "column": 5
1742                        },
1743                        "end": {
1744                          "line": 38,
1745                          "column": 50
1746                        }
1747                      }
1748                    },
1749                    {
1750                      "type": "ExpressionStatement",
1751                      "expression": {
1752                        "type": "AssignmentExpression",
1753                        "operator": "=",
1754                        "left": {
1755                          "type": "Identifier",
1756                          "name": "obj",
1757                          "decorators": [],
1758                          "loc": {
1759                            "start": {
1760                              "line": 39,
1761                              "column": 5
1762                            },
1763                            "end": {
1764                              "line": 39,
1765                              "column": 8
1766                            }
1767                          }
1768                        },
1769                        "right": {
1770                          "type": "AwaitExpression",
1771                          "argument": {
1772                            "type": "TSNonNullExpression",
1773                            "expression": {
1774                              "type": "Identifier",
1775                              "name": "promise",
1776                              "decorators": [],
1777                              "loc": {
1778                                "start": {
1779                                  "line": 39,
1780                                  "column": 32
1781                                },
1782                                "end": {
1783                                  "line": 39,
1784                                  "column": 39
1785                                }
1786                              }
1787                            },
1788                            "loc": {
1789                              "start": {
1790                                "line": 39,
1791                                "column": 32
1792                              },
1793                              "end": {
1794                                "line": 39,
1795                                "column": 40
1796                              }
1797                            }
1798                          },
1799                          "loc": {
1800                            "start": {
1801                              "line": 39,
1802                              "column": 26
1803                            },
1804                            "end": {
1805                              "line": 39,
1806                              "column": 41
1807                            }
1808                          }
1809                        },
1810                        "loc": {
1811                          "start": {
1812                            "line": 39,
1813                            "column": 5
1814                          },
1815                          "end": {
1816                            "line": 39,
1817                            "column": 41
1818                          }
1819                        }
1820                      },
1821                      "loc": {
1822                        "start": {
1823                          "line": 39,
1824                          "column": 5
1825                        },
1826                        "end": {
1827                          "line": 39,
1828                          "column": 41
1829                        }
1830                      }
1831                    }
1832                  ],
1833                  "loc": {
1834                    "start": {
1835                      "line": 1,
1836                      "column": 1
1837                    },
1838                    "end": {
1839                      "line": 1,
1840                      "column": 1
1841                    }
1842                  }
1843                },
1844                "loc": {
1845                  "start": {
1846                    "line": 1,
1847                    "column": 1
1848                  },
1849                  "end": {
1850                    "line": 1,
1851                    "column": 1
1852                  }
1853                }
1854              },
1855              "loc": {
1856                "start": {
1857                  "line": 1,
1858                  "column": 1
1859                },
1860                "end": {
1861                  "line": 1,
1862                  "column": 1
1863                }
1864              }
1865            },
1866            "overloads": [],
1867            "decorators": [],
1868            "loc": {
1869              "start": {
1870                "line": 1,
1871                "column": 1
1872              },
1873              "end": {
1874                "line": 1,
1875                "column": 1
1876              }
1877            }
1878          },
1879          {
1880            "type": "MethodDefinition",
1881            "key": {
1882              "type": "Identifier",
1883              "name": "asyncFoo",
1884              "decorators": [],
1885              "loc": {
1886                "start": {
1887                  "line": 16,
1888                  "column": 16
1889                },
1890                "end": {
1891                  "line": 16,
1892                  "column": 24
1893                }
1894              }
1895            },
1896            "kind": "method",
1897            "accessibility": "public",
1898            "static": true,
1899            "optional": false,
1900            "computed": false,
1901            "value": {
1902              "type": "FunctionExpression",
1903              "function": {
1904                "type": "ScriptFunction",
1905                "id": {
1906                  "type": "Identifier",
1907                  "name": "asyncFoo",
1908                  "decorators": [],
1909                  "loc": {
1910                    "start": {
1911                      "line": 16,
1912                      "column": 16
1913                    },
1914                    "end": {
1915                      "line": 16,
1916                      "column": 24
1917                    }
1918                  }
1919                },
1920                "generator": false,
1921                "async": true,
1922                "expression": false,
1923                "params": [],
1924                "returnType": {
1925                  "type": "ETSTypeReference",
1926                  "part": {
1927                    "type": "ETSTypeReferencePart",
1928                    "name": {
1929                      "type": "Identifier",
1930                      "name": "Promise",
1931                      "decorators": [],
1932                      "loc": {
1933                        "start": {
1934                          "line": 16,
1935                          "column": 28
1936                        },
1937                        "end": {
1938                          "line": 16,
1939                          "column": 35
1940                        }
1941                      }
1942                    },
1943                    "typeParams": {
1944                      "type": "TSTypeParameterInstantiation",
1945                      "params": [
1946                        {
1947                          "type": "ETSUnionType",
1948                          "types": [
1949                            {
1950                              "type": "ETSTypeReference",
1951                              "part": {
1952                                "type": "ETSTypeReferencePart",
1953                                "name": {
1954                                  "type": "Identifier",
1955                                  "name": "Object",
1956                                  "decorators": [],
1957                                  "loc": {
1958                                    "start": {
1959                                      "line": 16,
1960                                      "column": 36
1961                                    },
1962                                    "end": {
1963                                      "line": 16,
1964                                      "column": 42
1965                                    }
1966                                  }
1967                                },
1968                                "loc": {
1969                                  "start": {
1970                                    "line": 16,
1971                                    "column": 36
1972                                  },
1973                                  "end": {
1974                                    "line": 16,
1975                                    "column": 44
1976                                  }
1977                                }
1978                              },
1979                              "loc": {
1980                                "start": {
1981                                  "line": 16,
1982                                  "column": 36
1983                                },
1984                                "end": {
1985                                  "line": 16,
1986                                  "column": 44
1987                                }
1988                              }
1989                            },
1990                            {
1991                              "type": "ETSNullType",
1992                              "loc": {
1993                                "start": {
1994                                  "line": 16,
1995                                  "column": 45
1996                                },
1997                                "end": {
1998                                  "line": 16,
1999                                  "column": 49
2000                                }
2001                              }
2002                            }
2003                          ],
2004                          "loc": {
2005                            "start": {
2006                              "line": 16,
2007                              "column": 36
2008                            },
2009                            "end": {
2010                              "line": 16,
2011                              "column": 49
2012                            }
2013                          }
2014                        }
2015                      ],
2016                      "loc": {
2017                        "start": {
2018                          "line": 16,
2019                          "column": 35
2020                        },
2021                        "end": {
2022                          "line": 16,
2023                          "column": 50
2024                        }
2025                      }
2026                    },
2027                    "loc": {
2028                      "start": {
2029                        "line": 16,
2030                        "column": 28
2031                      },
2032                      "end": {
2033                        "line": 16,
2034                        "column": 52
2035                      }
2036                    }
2037                  },
2038                  "loc": {
2039                    "start": {
2040                      "line": 16,
2041                      "column": 28
2042                    },
2043                    "end": {
2044                      "line": 16,
2045                      "column": 52
2046                    }
2047                  }
2048                },
2049                "body": {
2050                  "type": "BlockStatement",
2051                  "statements": [
2052                    {
2053                      "type": "VariableDeclaration",
2054                      "declarations": [
2055                        {
2056                          "type": "VariableDeclarator",
2057                          "id": {
2058                            "type": "Identifier",
2059                            "name": "promise",
2060                            "typeAnnotation": {
2061                              "type": "ETSUnionType",
2062                              "types": [
2063                                {
2064                                  "type": "ETSTypeReference",
2065                                  "part": {
2066                                    "type": "ETSTypeReferencePart",
2067                                    "name": {
2068                                      "type": "Identifier",
2069                                      "name": "Promise",
2070                                      "decorators": [],
2071                                      "loc": {
2072                                        "start": {
2073                                          "line": 17,
2074                                          "column": 18
2075                                        },
2076                                        "end": {
2077                                          "line": 17,
2078                                          "column": 25
2079                                        }
2080                                      }
2081                                    },
2082                                    "typeParams": {
2083                                      "type": "TSTypeParameterInstantiation",
2084                                      "params": [
2085                                        {
2086                                          "type": "ETSUnionType",
2087                                          "types": [
2088                                            {
2089                                              "type": "ETSTypeReference",
2090                                              "part": {
2091                                                "type": "ETSTypeReferencePart",
2092                                                "name": {
2093                                                  "type": "Identifier",
2094                                                  "name": "Object",
2095                                                  "decorators": [],
2096                                                  "loc": {
2097                                                    "start": {
2098                                                      "line": 17,
2099                                                      "column": 26
2100                                                    },
2101                                                    "end": {
2102                                                      "line": 17,
2103                                                      "column": 32
2104                                                    }
2105                                                  }
2106                                                },
2107                                                "loc": {
2108                                                  "start": {
2109                                                    "line": 17,
2110                                                    "column": 26
2111                                                  },
2112                                                  "end": {
2113                                                    "line": 17,
2114                                                    "column": 34
2115                                                  }
2116                                                }
2117                                              },
2118                                              "loc": {
2119                                                "start": {
2120                                                  "line": 17,
2121                                                  "column": 26
2122                                                },
2123                                                "end": {
2124                                                  "line": 17,
2125                                                  "column": 34
2126                                                }
2127                                              }
2128                                            },
2129                                            {
2130                                              "type": "ETSNullType",
2131                                              "loc": {
2132                                                "start": {
2133                                                  "line": 17,
2134                                                  "column": 35
2135                                                },
2136                                                "end": {
2137                                                  "line": 17,
2138                                                  "column": 39
2139                                                }
2140                                              }
2141                                            }
2142                                          ],
2143                                          "loc": {
2144                                            "start": {
2145                                              "line": 17,
2146                                              "column": 26
2147                                            },
2148                                            "end": {
2149                                              "line": 17,
2150                                              "column": 39
2151                                            }
2152                                          }
2153                                        }
2154                                      ],
2155                                      "loc": {
2156                                        "start": {
2157                                          "line": 17,
2158                                          "column": 25
2159                                        },
2160                                        "end": {
2161                                          "line": 17,
2162                                          "column": 40
2163                                        }
2164                                      }
2165                                    },
2166                                    "loc": {
2167                                      "start": {
2168                                        "line": 17,
2169                                        "column": 18
2170                                      },
2171                                      "end": {
2172                                        "line": 17,
2173                                        "column": 42
2174                                      }
2175                                    }
2176                                  },
2177                                  "loc": {
2178                                    "start": {
2179                                      "line": 17,
2180                                      "column": 18
2181                                    },
2182                                    "end": {
2183                                      "line": 17,
2184                                      "column": 42
2185                                    }
2186                                  }
2187                                },
2188                                {
2189                                  "type": "ETSNullType",
2190                                  "loc": {
2191                                    "start": {
2192                                      "line": 17,
2193                                      "column": 43
2194                                    },
2195                                    "end": {
2196                                      "line": 17,
2197                                      "column": 47
2198                                    }
2199                                  }
2200                                }
2201                              ],
2202                              "loc": {
2203                                "start": {
2204                                  "line": 17,
2205                                  "column": 18
2206                                },
2207                                "end": {
2208                                  "line": 17,
2209                                  "column": 47
2210                                }
2211                              }
2212                            },
2213                            "decorators": [],
2214                            "loc": {
2215                              "start": {
2216                                "line": 17,
2217                                "column": 9
2218                              },
2219                              "end": {
2220                                "line": 17,
2221                                "column": 16
2222                              }
2223                            }
2224                          },
2225                          "init": {
2226                            "type": "CallExpression",
2227                            "callee": {
2228                              "type": "ArrowFunctionExpression",
2229                              "function": {
2230                                "type": "ScriptFunction",
2231                                "id": null,
2232                                "generator": false,
2233                                "async": false,
2234                                "expression": false,
2235                                "params": [],
2236                                "returnType": {
2237                                  "type": "ETSUnionType",
2238                                  "types": [
2239                                    {
2240                                      "type": "ETSTypeReference",
2241                                      "part": {
2242                                        "type": "ETSTypeReferencePart",
2243                                        "name": {
2244                                          "type": "Identifier",
2245                                          "name": "Promise",
2246                                          "decorators": [],
2247                                          "loc": {
2248                                            "start": {
2249                                              "line": 17,
2250                                              "column": 54
2251                                            },
2252                                            "end": {
2253                                              "line": 17,
2254                                              "column": 61
2255                                            }
2256                                          }
2257                                        },
2258                                        "typeParams": {
2259                                          "type": "TSTypeParameterInstantiation",
2260                                          "params": [
2261                                            {
2262                                              "type": "ETSUnionType",
2263                                              "types": [
2264                                                {
2265                                                  "type": "ETSTypeReference",
2266                                                  "part": {
2267                                                    "type": "ETSTypeReferencePart",
2268                                                    "name": {
2269                                                      "type": "Identifier",
2270                                                      "name": "Object",
2271                                                      "decorators": [],
2272                                                      "loc": {
2273                                                        "start": {
2274                                                          "line": 17,
2275                                                          "column": 62
2276                                                        },
2277                                                        "end": {
2278                                                          "line": 17,
2279                                                          "column": 68
2280                                                        }
2281                                                      }
2282                                                    },
2283                                                    "loc": {
2284                                                      "start": {
2285                                                        "line": 17,
2286                                                        "column": 62
2287                                                      },
2288                                                      "end": {
2289                                                        "line": 17,
2290                                                        "column": 70
2291                                                      }
2292                                                    }
2293                                                  },
2294                                                  "loc": {
2295                                                    "start": {
2296                                                      "line": 17,
2297                                                      "column": 62
2298                                                    },
2299                                                    "end": {
2300                                                      "line": 17,
2301                                                      "column": 70
2302                                                    }
2303                                                  }
2304                                                },
2305                                                {
2306                                                  "type": "ETSNullType",
2307                                                  "loc": {
2308                                                    "start": {
2309                                                      "line": 17,
2310                                                      "column": 71
2311                                                    },
2312                                                    "end": {
2313                                                      "line": 17,
2314                                                      "column": 75
2315                                                    }
2316                                                  }
2317                                                }
2318                                              ],
2319                                              "loc": {
2320                                                "start": {
2321                                                  "line": 17,
2322                                                  "column": 62
2323                                                },
2324                                                "end": {
2325                                                  "line": 17,
2326                                                  "column": 75
2327                                                }
2328                                              }
2329                                            }
2330                                          ],
2331                                          "loc": {
2332                                            "start": {
2333                                              "line": 17,
2334                                              "column": 61
2335                                            },
2336                                            "end": {
2337                                              "line": 17,
2338                                              "column": 76
2339                                            }
2340                                          }
2341                                        },
2342                                        "loc": {
2343                                          "start": {
2344                                            "line": 17,
2345                                            "column": 54
2346                                          },
2347                                          "end": {
2348                                            "line": 17,
2349                                            "column": 78
2350                                          }
2351                                        }
2352                                      },
2353                                      "loc": {
2354                                        "start": {
2355                                          "line": 17,
2356                                          "column": 54
2357                                        },
2358                                        "end": {
2359                                          "line": 17,
2360                                          "column": 78
2361                                        }
2362                                      }
2363                                    },
2364                                    {
2365                                      "type": "ETSNullType",
2366                                      "loc": {
2367                                        "start": {
2368                                          "line": 17,
2369                                          "column": 79
2370                                        },
2371                                        "end": {
2372                                          "line": 17,
2373                                          "column": 83
2374                                        }
2375                                      }
2376                                    }
2377                                  ],
2378                                  "loc": {
2379                                    "start": {
2380                                      "line": 17,
2381                                      "column": 54
2382                                    },
2383                                    "end": {
2384                                      "line": 17,
2385                                      "column": 83
2386                                    }
2387                                  }
2388                                },
2389                                "body": {
2390                                  "type": "BlockStatement",
2391                                  "statements": [
2392                                    {
2393                                      "type": "ReturnStatement",
2394                                      "argument": {
2395                                        "type": "NullLiteral",
2396                                        "value": null,
2397                                        "loc": {
2398                                          "start": {
2399                                            "line": 17,
2400                                            "column": 96
2401                                          },
2402                                          "end": {
2403                                            "line": 17,
2404                                            "column": 100
2405                                          }
2406                                        }
2407                                      },
2408                                      "loc": {
2409                                        "start": {
2410                                          "line": 17,
2411                                          "column": 89
2412                                        },
2413                                        "end": {
2414                                          "line": 17,
2415                                          "column": 101
2416                                        }
2417                                      }
2418                                    }
2419                                  ],
2420                                  "loc": {
2421                                    "start": {
2422                                      "line": 17,
2423                                      "column": 87
2424                                    },
2425                                    "end": {
2426                                      "line": 17,
2427                                      "column": 103
2428                                    }
2429                                  }
2430                                },
2431                                "loc": {
2432                                  "start": {
2433                                    "line": 17,
2434                                    "column": 50
2435                                  },
2436                                  "end": {
2437                                    "line": 17,
2438                                    "column": 103
2439                                  }
2440                                }
2441                              },
2442                              "loc": {
2443                                "start": {
2444                                  "line": 17,
2445                                  "column": 50
2446                                },
2447                                "end": {
2448                                  "line": 17,
2449                                  "column": 103
2450                                }
2451                              }
2452                            },
2453                            "arguments": [],
2454                            "optional": false,
2455                            "loc": {
2456                              "start": {
2457                                "line": 17,
2458                                "column": 50
2459                              },
2460                              "end": {
2461                                "line": 17,
2462                                "column": 105
2463                              }
2464                            }
2465                          },
2466                          "loc": {
2467                            "start": {
2468                              "line": 17,
2469                              "column": 9
2470                            },
2471                            "end": {
2472                              "line": 17,
2473                              "column": 105
2474                            }
2475                          }
2476                        }
2477                      ],
2478                      "kind": "let",
2479                      "loc": {
2480                        "start": {
2481                          "line": 17,
2482                          "column": 5
2483                        },
2484                        "end": {
2485                          "line": 17,
2486                          "column": 106
2487                        }
2488                      }
2489                    },
2490                    {
2491                      "type": "VariableDeclaration",
2492                      "declarations": [
2493                        {
2494                          "type": "VariableDeclarator",
2495                          "id": {
2496                            "type": "Identifier",
2497                            "name": "obj",
2498                            "typeAnnotation": {
2499                              "type": "ETSUnionType",
2500                              "types": [
2501                                {
2502                                  "type": "ETSTypeReference",
2503                                  "part": {
2504                                    "type": "ETSTypeReferencePart",
2505                                    "name": {
2506                                      "type": "Identifier",
2507                                      "name": "Object",
2508                                      "decorators": [],
2509                                      "loc": {
2510                                        "start": {
2511                                          "line": 18,
2512                                          "column": 14
2513                                        },
2514                                        "end": {
2515                                          "line": 18,
2516                                          "column": 20
2517                                        }
2518                                      }
2519                                    },
2520                                    "loc": {
2521                                      "start": {
2522                                        "line": 18,
2523                                        "column": 14
2524                                      },
2525                                      "end": {
2526                                        "line": 18,
2527                                        "column": 22
2528                                      }
2529                                    }
2530                                  },
2531                                  "loc": {
2532                                    "start": {
2533                                      "line": 18,
2534                                      "column": 14
2535                                    },
2536                                    "end": {
2537                                      "line": 18,
2538                                      "column": 22
2539                                    }
2540                                  }
2541                                },
2542                                {
2543                                  "type": "ETSNullType",
2544                                  "loc": {
2545                                    "start": {
2546                                      "line": 18,
2547                                      "column": 23
2548                                    },
2549                                    "end": {
2550                                      "line": 18,
2551                                      "column": 27
2552                                    }
2553                                  }
2554                                }
2555                              ],
2556                              "loc": {
2557                                "start": {
2558                                  "line": 18,
2559                                  "column": 14
2560                                },
2561                                "end": {
2562                                  "line": 18,
2563                                  "column": 27
2564                                }
2565                              }
2566                            },
2567                            "decorators": [],
2568                            "loc": {
2569                              "start": {
2570                                "line": 18,
2571                                "column": 9
2572                              },
2573                              "end": {
2574                                "line": 18,
2575                                "column": 12
2576                              }
2577                            }
2578                          },
2579                          "init": {
2580                            "type": "AwaitExpression",
2581                            "argument": {
2582                              "type": "TSNonNullExpression",
2583                              "expression": {
2584                                "type": "Identifier",
2585                                "name": "promise",
2586                                "decorators": [],
2587                                "loc": {
2588                                  "start": {
2589                                    "line": 18,
2590                                    "column": 36
2591                                  },
2592                                  "end": {
2593                                    "line": 18,
2594                                    "column": 43
2595                                  }
2596                                }
2597                              },
2598                              "loc": {
2599                                "start": {
2600                                  "line": 18,
2601                                  "column": 36
2602                                },
2603                                "end": {
2604                                  "line": 18,
2605                                  "column": 44
2606                                }
2607                              }
2608                            },
2609                            "loc": {
2610                              "start": {
2611                                "line": 18,
2612                                "column": 30
2613                              },
2614                              "end": {
2615                                "line": 18,
2616                                "column": 45
2617                              }
2618                            }
2619                          },
2620                          "loc": {
2621                            "start": {
2622                              "line": 18,
2623                              "column": 9
2624                            },
2625                            "end": {
2626                              "line": 18,
2627                              "column": 45
2628                            }
2629                          }
2630                        }
2631                      ],
2632                      "kind": "let",
2633                      "loc": {
2634                        "start": {
2635                          "line": 18,
2636                          "column": 5
2637                        },
2638                        "end": {
2639                          "line": 18,
2640                          "column": 45
2641                        }
2642                      }
2643                    },
2644                    {
2645                      "type": "ReturnStatement",
2646                      "argument": {
2647                        "type": "Identifier",
2648                        "name": "promise",
2649                        "decorators": [],
2650                        "loc": {
2651                          "start": {
2652                            "line": 19,
2653                            "column": 12
2654                          },
2655                          "end": {
2656                            "line": 19,
2657                            "column": 19
2658                          }
2659                        }
2660                      },
2661                      "loc": {
2662                        "start": {
2663                          "line": 19,
2664                          "column": 5
2665                        },
2666                        "end": {
2667                          "line": 19,
2668                          "column": 20
2669                        }
2670                      }
2671                    }
2672                  ],
2673                  "loc": {
2674                    "start": {
2675                      "line": 16,
2676                      "column": 51
2677                    },
2678                    "end": {
2679                      "line": 20,
2680                      "column": 2
2681                    }
2682                  }
2683                },
2684                "loc": {
2685                  "start": {
2686                    "line": 16,
2687                    "column": 24
2688                  },
2689                  "end": {
2690                    "line": 20,
2691                    "column": 2
2692                  }
2693                }
2694              },
2695              "loc": {
2696                "start": {
2697                  "line": 16,
2698                  "column": 24
2699                },
2700                "end": {
2701                  "line": 20,
2702                  "column": 2
2703                }
2704              }
2705            },
2706            "overloads": [],
2707            "decorators": [],
2708            "loc": {
2709              "start": {
2710                "line": 16,
2711                "column": 1
2712              },
2713              "end": {
2714                "line": 20,
2715                "column": 2
2716              }
2717            }
2718          },
2719          {
2720            "type": "ClassProperty",
2721            "key": {
2722              "type": "Identifier",
2723              "name": "asyncLambda",
2724              "decorators": [],
2725              "loc": {
2726                "start": {
2727                  "line": 22,
2728                  "column": 5
2729                },
2730                "end": {
2731                  "line": 22,
2732                  "column": 16
2733                }
2734              }
2735            },
2736            "accessibility": "public",
2737            "static": true,
2738            "readonly": false,
2739            "declare": false,
2740            "optional": false,
2741            "computed": false,
2742            "typeAnnotation": {
2743              "type": "ETSFunctionType",
2744              "params": [],
2745              "returnType": {
2746                "type": "ETSTypeReference",
2747                "part": {
2748                  "type": "ETSTypeReferencePart",
2749                  "name": {
2750                    "type": "Identifier",
2751                    "name": "Promise",
2752                    "decorators": [],
2753                    "loc": {
2754                      "start": {
2755                        "line": 22,
2756                        "column": 24
2757                      },
2758                      "end": {
2759                        "line": 22,
2760                        "column": 31
2761                      }
2762                    }
2763                  },
2764                  "typeParams": {
2765                    "type": "TSTypeParameterInstantiation",
2766                    "params": [
2767                      {
2768                        "type": "ETSUnionType",
2769                        "types": [
2770                          {
2771                            "type": "ETSTypeReference",
2772                            "part": {
2773                              "type": "ETSTypeReferencePart",
2774                              "name": {
2775                                "type": "Identifier",
2776                                "name": "Object",
2777                                "decorators": [],
2778                                "loc": {
2779                                  "start": {
2780                                    "line": 22,
2781                                    "column": 32
2782                                  },
2783                                  "end": {
2784                                    "line": 22,
2785                                    "column": 38
2786                                  }
2787                                }
2788                              },
2789                              "loc": {
2790                                "start": {
2791                                  "line": 22,
2792                                  "column": 32
2793                                },
2794                                "end": {
2795                                  "line": 22,
2796                                  "column": 40
2797                                }
2798                              }
2799                            },
2800                            "loc": {
2801                              "start": {
2802                                "line": 22,
2803                                "column": 32
2804                              },
2805                              "end": {
2806                                "line": 22,
2807                                "column": 40
2808                              }
2809                            }
2810                          },
2811                          {
2812                            "type": "ETSNullType",
2813                            "loc": {
2814                              "start": {
2815                                "line": 22,
2816                                "column": 41
2817                              },
2818                              "end": {
2819                                "line": 22,
2820                                "column": 45
2821                              }
2822                            }
2823                          }
2824                        ],
2825                        "loc": {
2826                          "start": {
2827                            "line": 22,
2828                            "column": 32
2829                          },
2830                          "end": {
2831                            "line": 22,
2832                            "column": 45
2833                          }
2834                        }
2835                      }
2836                    ],
2837                    "loc": {
2838                      "start": {
2839                        "line": 22,
2840                        "column": 31
2841                      },
2842                      "end": {
2843                        "line": 22,
2844                        "column": 46
2845                      }
2846                    }
2847                  },
2848                  "loc": {
2849                    "start": {
2850                      "line": 22,
2851                      "column": 24
2852                    },
2853                    "end": {
2854                      "line": 22,
2855                      "column": 48
2856                    }
2857                  }
2858                },
2859                "loc": {
2860                  "start": {
2861                    "line": 22,
2862                    "column": 24
2863                  },
2864                  "end": {
2865                    "line": 22,
2866                    "column": 48
2867                  }
2868                }
2869              },
2870              "loc": {
2871                "start": {
2872                  "line": 22,
2873                  "column": 18
2874                },
2875                "end": {
2876                  "line": 22,
2877                  "column": 48
2878                }
2879              }
2880            },
2881            "definite": false,
2882            "decorators": [],
2883            "loc": {
2884              "start": {
2885                "line": 22,
2886                "column": 5
2887              },
2888              "end": {
2889                "line": 26,
2890                "column": 2
2891              }
2892            }
2893          },
2894          {
2895            "type": "MethodDefinition",
2896            "key": {
2897              "type": "Identifier",
2898              "name": "foo",
2899              "decorators": [],
2900              "loc": {
2901                "start": {
2902                  "line": 28,
2903                  "column": 10
2904                },
2905                "end": {
2906                  "line": 28,
2907                  "column": 13
2908                }
2909              }
2910            },
2911            "kind": "method",
2912            "accessibility": "public",
2913            "static": true,
2914            "optional": false,
2915            "computed": false,
2916            "value": {
2917              "type": "FunctionExpression",
2918              "function": {
2919                "type": "ScriptFunction",
2920                "id": {
2921                  "type": "Identifier",
2922                  "name": "foo",
2923                  "decorators": [],
2924                  "loc": {
2925                    "start": {
2926                      "line": 28,
2927                      "column": 10
2928                    },
2929                    "end": {
2930                      "line": 28,
2931                      "column": 13
2932                    }
2933                  }
2934                },
2935                "generator": false,
2936                "async": false,
2937                "expression": false,
2938                "params": [],
2939                "returnType": {
2940                  "type": "ETSPrimitiveType",
2941                  "loc": {
2942                    "start": {
2943                      "line": 28,
2944                      "column": 17
2945                    },
2946                    "end": {
2947                      "line": 28,
2948                      "column": 21
2949                    }
2950                  }
2951                },
2952                "body": {
2953                  "type": "BlockStatement",
2954                  "statements": [
2955                    {
2956                      "type": "VariableDeclaration",
2957                      "declarations": [
2958                        {
2959                          "type": "VariableDeclarator",
2960                          "id": {
2961                            "type": "Identifier",
2962                            "name": "promise",
2963                            "typeAnnotation": {
2964                              "type": "ETSUnionType",
2965                              "types": [
2966                                {
2967                                  "type": "ETSTypeReference",
2968                                  "part": {
2969                                    "type": "ETSTypeReferencePart",
2970                                    "name": {
2971                                      "type": "Identifier",
2972                                      "name": "Promise",
2973                                      "decorators": [],
2974                                      "loc": {
2975                                        "start": {
2976                                          "line": 29,
2977                                          "column": 18
2978                                        },
2979                                        "end": {
2980                                          "line": 29,
2981                                          "column": 25
2982                                        }
2983                                      }
2984                                    },
2985                                    "typeParams": {
2986                                      "type": "TSTypeParameterInstantiation",
2987                                      "params": [
2988                                        {
2989                                          "type": "ETSUnionType",
2990                                          "types": [
2991                                            {
2992                                              "type": "ETSTypeReference",
2993                                              "part": {
2994                                                "type": "ETSTypeReferencePart",
2995                                                "name": {
2996                                                  "type": "Identifier",
2997                                                  "name": "Object",
2998                                                  "decorators": [],
2999                                                  "loc": {
3000                                                    "start": {
3001                                                      "line": 29,
3002                                                      "column": 26
3003                                                    },
3004                                                    "end": {
3005                                                      "line": 29,
3006                                                      "column": 32
3007                                                    }
3008                                                  }
3009                                                },
3010                                                "loc": {
3011                                                  "start": {
3012                                                    "line": 29,
3013                                                    "column": 26
3014                                                  },
3015                                                  "end": {
3016                                                    "line": 29,
3017                                                    "column": 34
3018                                                  }
3019                                                }
3020                                              },
3021                                              "loc": {
3022                                                "start": {
3023                                                  "line": 29,
3024                                                  "column": 26
3025                                                },
3026                                                "end": {
3027                                                  "line": 29,
3028                                                  "column": 34
3029                                                }
3030                                              }
3031                                            },
3032                                            {
3033                                              "type": "ETSNullType",
3034                                              "loc": {
3035                                                "start": {
3036                                                  "line": 29,
3037                                                  "column": 35
3038                                                },
3039                                                "end": {
3040                                                  "line": 29,
3041                                                  "column": 39
3042                                                }
3043                                              }
3044                                            }
3045                                          ],
3046                                          "loc": {
3047                                            "start": {
3048                                              "line": 29,
3049                                              "column": 26
3050                                            },
3051                                            "end": {
3052                                              "line": 29,
3053                                              "column": 39
3054                                            }
3055                                          }
3056                                        }
3057                                      ],
3058                                      "loc": {
3059                                        "start": {
3060                                          "line": 29,
3061                                          "column": 25
3062                                        },
3063                                        "end": {
3064                                          "line": 29,
3065                                          "column": 40
3066                                        }
3067                                      }
3068                                    },
3069                                    "loc": {
3070                                      "start": {
3071                                        "line": 29,
3072                                        "column": 18
3073                                      },
3074                                      "end": {
3075                                        "line": 29,
3076                                        "column": 42
3077                                      }
3078                                    }
3079                                  },
3080                                  "loc": {
3081                                    "start": {
3082                                      "line": 29,
3083                                      "column": 18
3084                                    },
3085                                    "end": {
3086                                      "line": 29,
3087                                      "column": 42
3088                                    }
3089                                  }
3090                                },
3091                                {
3092                                  "type": "ETSNullType",
3093                                  "loc": {
3094                                    "start": {
3095                                      "line": 29,
3096                                      "column": 43
3097                                    },
3098                                    "end": {
3099                                      "line": 29,
3100                                      "column": 47
3101                                    }
3102                                  }
3103                                }
3104                              ],
3105                              "loc": {
3106                                "start": {
3107                                  "line": 29,
3108                                  "column": 18
3109                                },
3110                                "end": {
3111                                  "line": 29,
3112                                  "column": 47
3113                                }
3114                              }
3115                            },
3116                            "decorators": [],
3117                            "loc": {
3118                              "start": {
3119                                "line": 29,
3120                                "column": 9
3121                              },
3122                              "end": {
3123                                "line": 29,
3124                                "column": 16
3125                              }
3126                            }
3127                          },
3128                          "init": {
3129                            "type": "CallExpression",
3130                            "callee": {
3131                              "type": "ArrowFunctionExpression",
3132                              "function": {
3133                                "type": "ScriptFunction",
3134                                "id": null,
3135                                "generator": false,
3136                                "async": false,
3137                                "expression": false,
3138                                "params": [],
3139                                "returnType": {
3140                                  "type": "ETSUnionType",
3141                                  "types": [
3142                                    {
3143                                      "type": "ETSTypeReference",
3144                                      "part": {
3145                                        "type": "ETSTypeReferencePart",
3146                                        "name": {
3147                                          "type": "Identifier",
3148                                          "name": "Promise",
3149                                          "decorators": [],
3150                                          "loc": {
3151                                            "start": {
3152                                              "line": 29,
3153                                              "column": 54
3154                                            },
3155                                            "end": {
3156                                              "line": 29,
3157                                              "column": 61
3158                                            }
3159                                          }
3160                                        },
3161                                        "typeParams": {
3162                                          "type": "TSTypeParameterInstantiation",
3163                                          "params": [
3164                                            {
3165                                              "type": "ETSUnionType",
3166                                              "types": [
3167                                                {
3168                                                  "type": "ETSTypeReference",
3169                                                  "part": {
3170                                                    "type": "ETSTypeReferencePart",
3171                                                    "name": {
3172                                                      "type": "Identifier",
3173                                                      "name": "Object",
3174                                                      "decorators": [],
3175                                                      "loc": {
3176                                                        "start": {
3177                                                          "line": 29,
3178                                                          "column": 62
3179                                                        },
3180                                                        "end": {
3181                                                          "line": 29,
3182                                                          "column": 68
3183                                                        }
3184                                                      }
3185                                                    },
3186                                                    "loc": {
3187                                                      "start": {
3188                                                        "line": 29,
3189                                                        "column": 62
3190                                                      },
3191                                                      "end": {
3192                                                        "line": 29,
3193                                                        "column": 70
3194                                                      }
3195                                                    }
3196                                                  },
3197                                                  "loc": {
3198                                                    "start": {
3199                                                      "line": 29,
3200                                                      "column": 62
3201                                                    },
3202                                                    "end": {
3203                                                      "line": 29,
3204                                                      "column": 70
3205                                                    }
3206                                                  }
3207                                                },
3208                                                {
3209                                                  "type": "ETSNullType",
3210                                                  "loc": {
3211                                                    "start": {
3212                                                      "line": 29,
3213                                                      "column": 71
3214                                                    },
3215                                                    "end": {
3216                                                      "line": 29,
3217                                                      "column": 75
3218                                                    }
3219                                                  }
3220                                                }
3221                                              ],
3222                                              "loc": {
3223                                                "start": {
3224                                                  "line": 29,
3225                                                  "column": 62
3226                                                },
3227                                                "end": {
3228                                                  "line": 29,
3229                                                  "column": 75
3230                                                }
3231                                              }
3232                                            }
3233                                          ],
3234                                          "loc": {
3235                                            "start": {
3236                                              "line": 29,
3237                                              "column": 61
3238                                            },
3239                                            "end": {
3240                                              "line": 29,
3241                                              "column": 76
3242                                            }
3243                                          }
3244                                        },
3245                                        "loc": {
3246                                          "start": {
3247                                            "line": 29,
3248                                            "column": 54
3249                                          },
3250                                          "end": {
3251                                            "line": 29,
3252                                            "column": 78
3253                                          }
3254                                        }
3255                                      },
3256                                      "loc": {
3257                                        "start": {
3258                                          "line": 29,
3259                                          "column": 54
3260                                        },
3261                                        "end": {
3262                                          "line": 29,
3263                                          "column": 78
3264                                        }
3265                                      }
3266                                    },
3267                                    {
3268                                      "type": "ETSNullType",
3269                                      "loc": {
3270                                        "start": {
3271                                          "line": 29,
3272                                          "column": 79
3273                                        },
3274                                        "end": {
3275                                          "line": 29,
3276                                          "column": 83
3277                                        }
3278                                      }
3279                                    }
3280                                  ],
3281                                  "loc": {
3282                                    "start": {
3283                                      "line": 29,
3284                                      "column": 54
3285                                    },
3286                                    "end": {
3287                                      "line": 29,
3288                                      "column": 83
3289                                    }
3290                                  }
3291                                },
3292                                "body": {
3293                                  "type": "BlockStatement",
3294                                  "statements": [
3295                                    {
3296                                      "type": "ReturnStatement",
3297                                      "argument": {
3298                                        "type": "NullLiteral",
3299                                        "value": null,
3300                                        "loc": {
3301                                          "start": {
3302                                            "line": 29,
3303                                            "column": 96
3304                                          },
3305                                          "end": {
3306                                            "line": 29,
3307                                            "column": 100
3308                                          }
3309                                        }
3310                                      },
3311                                      "loc": {
3312                                        "start": {
3313                                          "line": 29,
3314                                          "column": 89
3315                                        },
3316                                        "end": {
3317                                          "line": 29,
3318                                          "column": 101
3319                                        }
3320                                      }
3321                                    }
3322                                  ],
3323                                  "loc": {
3324                                    "start": {
3325                                      "line": 29,
3326                                      "column": 87
3327                                    },
3328                                    "end": {
3329                                      "line": 29,
3330                                      "column": 103
3331                                    }
3332                                  }
3333                                },
3334                                "loc": {
3335                                  "start": {
3336                                    "line": 29,
3337                                    "column": 50
3338                                  },
3339                                  "end": {
3340                                    "line": 29,
3341                                    "column": 103
3342                                  }
3343                                }
3344                              },
3345                              "loc": {
3346                                "start": {
3347                                  "line": 29,
3348                                  "column": 50
3349                                },
3350                                "end": {
3351                                  "line": 29,
3352                                  "column": 103
3353                                }
3354                              }
3355                            },
3356                            "arguments": [],
3357                            "optional": false,
3358                            "loc": {
3359                              "start": {
3360                                "line": 29,
3361                                "column": 50
3362                              },
3363                              "end": {
3364                                "line": 29,
3365                                "column": 105
3366                              }
3367                            }
3368                          },
3369                          "loc": {
3370                            "start": {
3371                              "line": 29,
3372                              "column": 9
3373                            },
3374                            "end": {
3375                              "line": 29,
3376                              "column": 105
3377                            }
3378                          }
3379                        }
3380                      ],
3381                      "kind": "let",
3382                      "loc": {
3383                        "start": {
3384                          "line": 29,
3385                          "column": 5
3386                        },
3387                        "end": {
3388                          "line": 29,
3389                          "column": 106
3390                        }
3391                      }
3392                    },
3393                    {
3394                      "type": "VariableDeclaration",
3395                      "declarations": [
3396                        {
3397                          "type": "VariableDeclarator",
3398                          "id": {
3399                            "type": "Identifier",
3400                            "name": "obj",
3401                            "typeAnnotation": {
3402                              "type": "ETSUnionType",
3403                              "types": [
3404                                {
3405                                  "type": "ETSTypeReference",
3406                                  "part": {
3407                                    "type": "ETSTypeReferencePart",
3408                                    "name": {
3409                                      "type": "Identifier",
3410                                      "name": "Object",
3411                                      "decorators": [],
3412                                      "loc": {
3413                                        "start": {
3414                                          "line": 30,
3415                                          "column": 14
3416                                        },
3417                                        "end": {
3418                                          "line": 30,
3419                                          "column": 20
3420                                        }
3421                                      }
3422                                    },
3423                                    "loc": {
3424                                      "start": {
3425                                        "line": 30,
3426                                        "column": 14
3427                                      },
3428                                      "end": {
3429                                        "line": 30,
3430                                        "column": 22
3431                                      }
3432                                    }
3433                                  },
3434                                  "loc": {
3435                                    "start": {
3436                                      "line": 30,
3437                                      "column": 14
3438                                    },
3439                                    "end": {
3440                                      "line": 30,
3441                                      "column": 22
3442                                    }
3443                                  }
3444                                },
3445                                {
3446                                  "type": "ETSNullType",
3447                                  "loc": {
3448                                    "start": {
3449                                      "line": 30,
3450                                      "column": 23
3451                                    },
3452                                    "end": {
3453                                      "line": 30,
3454                                      "column": 27
3455                                    }
3456                                  }
3457                                }
3458                              ],
3459                              "loc": {
3460                                "start": {
3461                                  "line": 30,
3462                                  "column": 14
3463                                },
3464                                "end": {
3465                                  "line": 30,
3466                                  "column": 27
3467                                }
3468                              }
3469                            },
3470                            "decorators": [],
3471                            "loc": {
3472                              "start": {
3473                                "line": 30,
3474                                "column": 9
3475                              },
3476                              "end": {
3477                                "line": 30,
3478                                "column": 12
3479                              }
3480                            }
3481                          },
3482                          "init": {
3483                            "type": "AwaitExpression",
3484                            "argument": {
3485                              "type": "TSNonNullExpression",
3486                              "expression": {
3487                                "type": "Identifier",
3488                                "name": "promise",
3489                                "decorators": [],
3490                                "loc": {
3491                                  "start": {
3492                                    "line": 30,
3493                                    "column": 36
3494                                  },
3495                                  "end": {
3496                                    "line": 30,
3497                                    "column": 43
3498                                  }
3499                                }
3500                              },
3501                              "loc": {
3502                                "start": {
3503                                  "line": 30,
3504                                  "column": 36
3505                                },
3506                                "end": {
3507                                  "line": 30,
3508                                  "column": 44
3509                                }
3510                              }
3511                            },
3512                            "loc": {
3513                              "start": {
3514                                "line": 30,
3515                                "column": 30
3516                              },
3517                              "end": {
3518                                "line": 30,
3519                                "column": 45
3520                              }
3521                            }
3522                          },
3523                          "loc": {
3524                            "start": {
3525                              "line": 30,
3526                              "column": 9
3527                            },
3528                            "end": {
3529                              "line": 30,
3530                              "column": 45
3531                            }
3532                          }
3533                        }
3534                      ],
3535                      "kind": "let",
3536                      "loc": {
3537                        "start": {
3538                          "line": 30,
3539                          "column": 5
3540                        },
3541                        "end": {
3542                          "line": 30,
3543                          "column": 45
3544                        }
3545                      }
3546                    }
3547                  ],
3548                  "loc": {
3549                    "start": {
3550                      "line": 28,
3551                      "column": 22
3552                    },
3553                    "end": {
3554                      "line": 31,
3555                      "column": 2
3556                    }
3557                  }
3558                },
3559                "loc": {
3560                  "start": {
3561                    "line": 28,
3562                    "column": 13
3563                  },
3564                  "end": {
3565                    "line": 31,
3566                    "column": 2
3567                  }
3568                }
3569              },
3570              "loc": {
3571                "start": {
3572                  "line": 28,
3573                  "column": 13
3574                },
3575                "end": {
3576                  "line": 31,
3577                  "column": 2
3578                }
3579              }
3580            },
3581            "overloads": [],
3582            "decorators": [],
3583            "loc": {
3584              "start": {
3585                "line": 28,
3586                "column": 1
3587              },
3588              "end": {
3589                "line": 31,
3590                "column": 2
3591              }
3592            }
3593          },
3594          {
3595            "type": "ClassProperty",
3596            "key": {
3597              "type": "Identifier",
3598              "name": "lambda",
3599              "decorators": [],
3600              "loc": {
3601                "start": {
3602                  "line": 33,
3603                  "column": 5
3604                },
3605                "end": {
3606                  "line": 33,
3607                  "column": 11
3608                }
3609              }
3610            },
3611            "accessibility": "public",
3612            "static": true,
3613            "readonly": false,
3614            "declare": false,
3615            "optional": false,
3616            "computed": false,
3617            "typeAnnotation": {
3618              "type": "ETSFunctionType",
3619              "params": [],
3620              "returnType": {
3621                "type": "ETSPrimitiveType",
3622                "loc": {
3623                  "start": {
3624                    "line": 33,
3625                    "column": 19
3626                  },
3627                  "end": {
3628                    "line": 33,
3629                    "column": 23
3630                  }
3631                }
3632              },
3633              "loc": {
3634                "start": {
3635                  "line": 33,
3636                  "column": 13
3637                },
3638                "end": {
3639                  "line": 33,
3640                  "column": 23
3641                }
3642              }
3643            },
3644            "definite": false,
3645            "decorators": [],
3646            "loc": {
3647              "start": {
3648                "line": 33,
3649                "column": 5
3650              },
3651              "end": {
3652                "line": 36,
3653                "column": 2
3654              }
3655            }
3656          },
3657          {
3658            "type": "ClassProperty",
3659            "key": {
3660              "type": "Identifier",
3661              "name": "promise",
3662              "decorators": [],
3663              "loc": {
3664                "start": {
3665                  "line": 38,
3666                  "column": 5
3667                },
3668                "end": {
3669                  "line": 38,
3670                  "column": 12
3671                }
3672              }
3673            },
3674            "accessibility": "public",
3675            "static": true,
3676            "readonly": false,
3677            "declare": false,
3678            "optional": false,
3679            "computed": false,
3680            "typeAnnotation": {
3681              "type": "ETSUnionType",
3682              "types": [
3683                {
3684                  "type": "ETSTypeReference",
3685                  "part": {
3686                    "type": "ETSTypeReferencePart",
3687                    "name": {
3688                      "type": "Identifier",
3689                      "name": "Promise",
3690                      "decorators": [],
3691                      "loc": {
3692                        "start": {
3693                          "line": 38,
3694                          "column": 14
3695                        },
3696                        "end": {
3697                          "line": 38,
3698                          "column": 21
3699                        }
3700                      }
3701                    },
3702                    "typeParams": {
3703                      "type": "TSTypeParameterInstantiation",
3704                      "params": [
3705                        {
3706                          "type": "ETSUnionType",
3707                          "types": [
3708                            {
3709                              "type": "ETSTypeReference",
3710                              "part": {
3711                                "type": "ETSTypeReferencePart",
3712                                "name": {
3713                                  "type": "Identifier",
3714                                  "name": "Object",
3715                                  "decorators": [],
3716                                  "loc": {
3717                                    "start": {
3718                                      "line": 38,
3719                                      "column": 22
3720                                    },
3721                                    "end": {
3722                                      "line": 38,
3723                                      "column": 28
3724                                    }
3725                                  }
3726                                },
3727                                "loc": {
3728                                  "start": {
3729                                    "line": 38,
3730                                    "column": 22
3731                                  },
3732                                  "end": {
3733                                    "line": 38,
3734                                    "column": 30
3735                                  }
3736                                }
3737                              },
3738                              "loc": {
3739                                "start": {
3740                                  "line": 38,
3741                                  "column": 22
3742                                },
3743                                "end": {
3744                                  "line": 38,
3745                                  "column": 30
3746                                }
3747                              }
3748                            },
3749                            {
3750                              "type": "ETSNullType",
3751                              "loc": {
3752                                "start": {
3753                                  "line": 38,
3754                                  "column": 31
3755                                },
3756                                "end": {
3757                                  "line": 38,
3758                                  "column": 35
3759                                }
3760                              }
3761                            }
3762                          ],
3763                          "loc": {
3764                            "start": {
3765                              "line": 38,
3766                              "column": 22
3767                            },
3768                            "end": {
3769                              "line": 38,
3770                              "column": 35
3771                            }
3772                          }
3773                        }
3774                      ],
3775                      "loc": {
3776                        "start": {
3777                          "line": 38,
3778                          "column": 21
3779                        },
3780                        "end": {
3781                          "line": 38,
3782                          "column": 36
3783                        }
3784                      }
3785                    },
3786                    "loc": {
3787                      "start": {
3788                        "line": 38,
3789                        "column": 14
3790                      },
3791                      "end": {
3792                        "line": 38,
3793                        "column": 38
3794                      }
3795                    }
3796                  },
3797                  "loc": {
3798                    "start": {
3799                      "line": 38,
3800                      "column": 14
3801                    },
3802                    "end": {
3803                      "line": 38,
3804                      "column": 38
3805                    }
3806                  }
3807                },
3808                {
3809                  "type": "ETSNullType",
3810                  "loc": {
3811                    "start": {
3812                      "line": 38,
3813                      "column": 39
3814                    },
3815                    "end": {
3816                      "line": 38,
3817                      "column": 43
3818                    }
3819                  }
3820                }
3821              ],
3822              "loc": {
3823                "start": {
3824                  "line": 38,
3825                  "column": 14
3826                },
3827                "end": {
3828                  "line": 38,
3829                  "column": 43
3830                }
3831              }
3832            },
3833            "definite": false,
3834            "decorators": [],
3835            "loc": {
3836              "start": {
3837                "line": 38,
3838                "column": 5
3839              },
3840              "end": {
3841                "line": 38,
3842                "column": 50
3843              }
3844            }
3845          },
3846          {
3847            "type": "ClassProperty",
3848            "key": {
3849              "type": "Identifier",
3850              "name": "obj",
3851              "decorators": [],
3852              "loc": {
3853                "start": {
3854                  "line": 39,
3855                  "column": 5
3856                },
3857                "end": {
3858                  "line": 39,
3859                  "column": 8
3860                }
3861              }
3862            },
3863            "accessibility": "public",
3864            "static": true,
3865            "readonly": false,
3866            "declare": false,
3867            "optional": false,
3868            "computed": false,
3869            "typeAnnotation": {
3870              "type": "ETSUnionType",
3871              "types": [
3872                {
3873                  "type": "ETSTypeReference",
3874                  "part": {
3875                    "type": "ETSTypeReferencePart",
3876                    "name": {
3877                      "type": "Identifier",
3878                      "name": "Object",
3879                      "decorators": [],
3880                      "loc": {
3881                        "start": {
3882                          "line": 39,
3883                          "column": 10
3884                        },
3885                        "end": {
3886                          "line": 39,
3887                          "column": 16
3888                        }
3889                      }
3890                    },
3891                    "loc": {
3892                      "start": {
3893                        "line": 39,
3894                        "column": 10
3895                      },
3896                      "end": {
3897                        "line": 39,
3898                        "column": 18
3899                      }
3900                    }
3901                  },
3902                  "loc": {
3903                    "start": {
3904                      "line": 39,
3905                      "column": 10
3906                    },
3907                    "end": {
3908                      "line": 39,
3909                      "column": 18
3910                    }
3911                  }
3912                },
3913                {
3914                  "type": "ETSNullType",
3915                  "loc": {
3916                    "start": {
3917                      "line": 39,
3918                      "column": 19
3919                    },
3920                    "end": {
3921                      "line": 39,
3922                      "column": 23
3923                    }
3924                  }
3925                }
3926              ],
3927              "loc": {
3928                "start": {
3929                  "line": 39,
3930                  "column": 10
3931                },
3932                "end": {
3933                  "line": 39,
3934                  "column": 23
3935                }
3936              }
3937            },
3938            "definite": false,
3939            "decorators": [],
3940            "loc": {
3941              "start": {
3942                "line": 39,
3943                "column": 5
3944              },
3945              "end": {
3946                "line": 39,
3947                "column": 41
3948              }
3949            }
3950          }
3951        ],
3952        "loc": {
3953          "start": {
3954            "line": 1,
3955            "column": 1
3956          },
3957          "end": {
3958            "line": 1,
3959            "column": 1
3960          }
3961        }
3962      },
3963      "loc": {
3964        "start": {
3965          "line": 1,
3966          "column": 1
3967        },
3968        "end": {
3969          "line": 1,
3970          "column": 1
3971        }
3972      }
3973    }
3974  ],
3975  "loc": {
3976    "start": {
3977      "line": 1,
3978      "column": 1
3979    },
3980    "end": {
3981      "line": 40,
3982      "column": 1
3983    }
3984  }
3985}
3986