• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1{
2  "type": "Program",
3  "statements": [
4    {
5      "type": "TSTypeAliasDeclaration",
6      "id": {
7        "type": "Identifier",
8        "name": "Alias",
9        "decorators": [],
10        "loc": {
11          "start": {
12            "line": 32,
13            "column": 6,
14            "program": "await_complex_promise.ets"
15          },
16          "end": {
17            "line": 32,
18            "column": 11,
19            "program": "await_complex_promise.ets"
20          }
21        }
22      },
23      "typeAnnotation": {
24        "type": "ETSUnionType",
25        "types": [
26          {
27            "type": "ETSTypeReference",
28            "part": {
29              "type": "ETSTypeReferencePart",
30              "name": {
31                "type": "Identifier",
32                "name": "Promise",
33                "decorators": [],
34                "loc": {
35                  "start": {
36                    "line": 32,
37                    "column": 14,
38                    "program": "await_complex_promise.ets"
39                  },
40                  "end": {
41                    "line": 32,
42                    "column": 21,
43                    "program": "await_complex_promise.ets"
44                  }
45                }
46              },
47              "typeParams": {
48                "type": "TSTypeParameterInstantiation",
49                "params": [
50                  {
51                    "type": "ETSTypeReference",
52                    "part": {
53                      "type": "ETSTypeReferencePart",
54                      "name": {
55                        "type": "Identifier",
56                        "name": "string",
57                        "decorators": [],
58                        "loc": {
59                          "start": {
60                            "line": 32,
61                            "column": 22,
62                            "program": "await_complex_promise.ets"
63                          },
64                          "end": {
65                            "line": 32,
66                            "column": 28,
67                            "program": "await_complex_promise.ets"
68                          }
69                        }
70                      },
71                      "loc": {
72                        "start": {
73                          "line": 32,
74                          "column": 22,
75                          "program": "await_complex_promise.ets"
76                        },
77                        "end": {
78                          "line": 32,
79                          "column": 29,
80                          "program": "await_complex_promise.ets"
81                        }
82                      }
83                    },
84                    "loc": {
85                      "start": {
86                        "line": 32,
87                        "column": 22,
88                        "program": "await_complex_promise.ets"
89                      },
90                      "end": {
91                        "line": 32,
92                        "column": 29,
93                        "program": "await_complex_promise.ets"
94                      }
95                    }
96                  }
97                ],
98                "loc": {
99                  "start": {
100                    "line": 32,
101                    "column": 21,
102                    "program": "await_complex_promise.ets"
103                  },
104                  "end": {
105                    "line": 32,
106                    "column": 29,
107                    "program": "await_complex_promise.ets"
108                  }
109                }
110              },
111              "loc": {
112                "start": {
113                  "line": 32,
114                  "column": 14,
115                  "program": "await_complex_promise.ets"
116                },
117                "end": {
118                  "line": 32,
119                  "column": 30,
120                  "program": "await_complex_promise.ets"
121                }
122              }
123            },
124            "loc": {
125              "start": {
126                "line": 32,
127                "column": 14,
128                "program": "await_complex_promise.ets"
129              },
130              "end": {
131                "line": 32,
132                "column": 30,
133                "program": "await_complex_promise.ets"
134              }
135            }
136          },
137          {
138            "type": "ETSTypeReference",
139            "part": {
140              "type": "ETSTypeReferencePart",
141              "name": {
142                "type": "Identifier",
143                "name": "number",
144                "decorators": [],
145                "loc": {
146                  "start": {
147                    "line": 32,
148                    "column": 30,
149                    "program": "await_complex_promise.ets"
150                  },
151                  "end": {
152                    "line": 32,
153                    "column": 36,
154                    "program": "await_complex_promise.ets"
155                  }
156                }
157              },
158              "loc": {
159                "start": {
160                  "line": 32,
161                  "column": 30,
162                  "program": "await_complex_promise.ets"
163                },
164                "end": {
165                  "line": 32,
166                  "column": 37,
167                  "program": "await_complex_promise.ets"
168                }
169              }
170            },
171            "loc": {
172              "start": {
173                "line": 32,
174                "column": 30,
175                "program": "await_complex_promise.ets"
176              },
177              "end": {
178                "line": 32,
179                "column": 37,
180                "program": "await_complex_promise.ets"
181              }
182            }
183          }
184        ],
185        "loc": {
186          "start": {
187            "line": 32,
188            "column": 14,
189            "program": "await_complex_promise.ets"
190          },
191          "end": {
192            "line": 32,
193            "column": 37,
194            "program": "await_complex_promise.ets"
195          }
196        }
197      },
198      "loc": {
199        "start": {
200          "line": 32,
201          "column": 1,
202          "program": "await_complex_promise.ets"
203        },
204        "end": {
205          "line": 32,
206          "column": 37,
207          "program": "await_complex_promise.ets"
208        }
209      }
210    },
211    {
212      "type": "ClassDeclaration",
213      "definition": {
214        "id": {
215          "type": "Identifier",
216          "name": "ETSGLOBAL",
217          "decorators": [],
218          "loc": {
219            "start": {
220              "line": 1,
221              "column": 1,
222              "program": "await_complex_promise.ets"
223            },
224            "end": {
225              "line": 1,
226              "column": 1,
227              "program": "await_complex_promise.ets"
228            }
229          }
230        },
231        "superClass": null,
232        "implements": [],
233        "body": [
234          {
235            "type": "MethodDefinition",
236            "key": {
237              "type": "Identifier",
238              "name": "main",
239              "decorators": [],
240              "loc": {
241                "start": {
242                  "line": 1,
243                  "column": 1,
244                  "program": null
245                },
246                "end": {
247                  "line": 1,
248                  "column": 1,
249                  "program": null
250                }
251              }
252            },
253            "kind": "method",
254            "accessibility": "public",
255            "static": true,
256            "optional": false,
257            "computed": false,
258            "value": {
259              "type": "FunctionExpression",
260              "function": {
261                "type": "ScriptFunction",
262                "id": {
263                  "type": "Identifier",
264                  "name": "main",
265                  "decorators": [],
266                  "loc": {
267                    "start": {
268                      "line": 1,
269                      "column": 1,
270                      "program": null
271                    },
272                    "end": {
273                      "line": 1,
274                      "column": 1,
275                      "program": null
276                    }
277                  }
278                },
279                "generator": false,
280                "async": false,
281                "expression": false,
282                "params": [],
283                "body": {
284                  "type": "BlockStatement",
285                  "statements": [],
286                  "loc": {
287                    "start": {
288                      "line": 1,
289                      "column": 1,
290                      "program": null
291                    },
292                    "end": {
293                      "line": 1,
294                      "column": 1,
295                      "program": null
296                    }
297                  }
298                },
299                "loc": {
300                  "start": {
301                    "line": 1,
302                    "column": 1,
303                    "program": null
304                  },
305                  "end": {
306                    "line": 1,
307                    "column": 1,
308                    "program": null
309                  }
310                }
311              },
312              "loc": {
313                "start": {
314                  "line": 1,
315                  "column": 1,
316                  "program": null
317                },
318                "end": {
319                  "line": 1,
320                  "column": 1,
321                  "program": null
322                }
323              }
324            },
325            "overloads": [],
326            "decorators": [],
327            "loc": {
328              "start": {
329                "line": 1,
330                "column": 1,
331                "program": "await_complex_promise.ets"
332              },
333              "end": {
334                "line": 1,
335                "column": 1,
336                "program": "await_complex_promise.ets"
337              }
338            }
339          },
340          {
341            "type": "MethodDefinition",
342            "key": {
343              "type": "Identifier",
344              "name": "_$init$_",
345              "decorators": [],
346              "loc": {
347                "start": {
348                  "line": 1,
349                  "column": 1,
350                  "program": null
351                },
352                "end": {
353                  "line": 1,
354                  "column": 1,
355                  "program": null
356                }
357              }
358            },
359            "kind": "method",
360            "accessibility": "public",
361            "static": true,
362            "optional": false,
363            "computed": false,
364            "value": {
365              "type": "FunctionExpression",
366              "function": {
367                "type": "ScriptFunction",
368                "id": {
369                  "type": "Identifier",
370                  "name": "_$init$_",
371                  "decorators": [],
372                  "loc": {
373                    "start": {
374                      "line": 1,
375                      "column": 1,
376                      "program": null
377                    },
378                    "end": {
379                      "line": 1,
380                      "column": 1,
381                      "program": null
382                    }
383                  }
384                },
385                "generator": false,
386                "async": false,
387                "expression": false,
388                "params": [],
389                "body": {
390                  "type": "BlockStatement",
391                  "statements": [],
392                  "loc": {
393                    "start": {
394                      "line": 1,
395                      "column": 1,
396                      "program": null
397                    },
398                    "end": {
399                      "line": 1,
400                      "column": 1,
401                      "program": null
402                    }
403                  }
404                },
405                "loc": {
406                  "start": {
407                    "line": 1,
408                    "column": 1,
409                    "program": null
410                  },
411                  "end": {
412                    "line": 1,
413                    "column": 1,
414                    "program": null
415                  }
416                }
417              },
418              "loc": {
419                "start": {
420                  "line": 1,
421                  "column": 1,
422                  "program": null
423                },
424                "end": {
425                  "line": 1,
426                  "column": 1,
427                  "program": null
428                }
429              }
430            },
431            "overloads": [],
432            "decorators": [],
433            "loc": {
434              "start": {
435                "line": 1,
436                "column": 1,
437                "program": "await_complex_promise.ets"
438              },
439              "end": {
440                "line": 1,
441                "column": 1,
442                "program": "await_complex_promise.ets"
443              }
444            }
445          },
446          {
447            "type": "MethodDefinition",
448            "key": {
449              "type": "Identifier",
450              "name": "foo1",
451              "decorators": [],
452              "loc": {
453                "start": {
454                  "line": 16,
455                  "column": 10,
456                  "program": "await_complex_promise.ets"
457                },
458                "end": {
459                  "line": 16,
460                  "column": 14,
461                  "program": "await_complex_promise.ets"
462                }
463              }
464            },
465            "kind": "method",
466            "accessibility": "public",
467            "static": true,
468            "optional": false,
469            "computed": false,
470            "value": {
471              "type": "FunctionExpression",
472              "function": {
473                "type": "ScriptFunction",
474                "id": {
475                  "type": "Identifier",
476                  "name": "foo1",
477                  "decorators": [],
478                  "loc": {
479                    "start": {
480                      "line": 16,
481                      "column": 10,
482                      "program": "await_complex_promise.ets"
483                    },
484                    "end": {
485                      "line": 16,
486                      "column": 14,
487                      "program": "await_complex_promise.ets"
488                    }
489                  }
490                },
491                "generator": false,
492                "async": false,
493                "expression": false,
494                "params": [
495                  {
496                    "type": "ETSParameterExpression",
497                    "name": {
498                      "type": "Identifier",
499                      "name": "p",
500                      "typeAnnotation": {
501                        "type": "ETSTypeReference",
502                        "part": {
503                          "type": "ETSTypeReferencePart",
504                          "name": {
505                            "type": "Identifier",
506                            "name": "Promise",
507                            "decorators": [],
508                            "loc": {
509                              "start": {
510                                "line": 16,
511                                "column": 18,
512                                "program": "await_complex_promise.ets"
513                              },
514                              "end": {
515                                "line": 16,
516                                "column": 25,
517                                "program": "await_complex_promise.ets"
518                              }
519                            }
520                          },
521                          "typeParams": {
522                            "type": "TSTypeParameterInstantiation",
523                            "params": [
524                              {
525                                "type": "ETSTypeReference",
526                                "part": {
527                                  "type": "ETSTypeReferencePart",
528                                  "name": {
529                                    "type": "Identifier",
530                                    "name": "Promise",
531                                    "decorators": [],
532                                    "loc": {
533                                      "start": {
534                                        "line": 16,
535                                        "column": 26,
536                                        "program": "await_complex_promise.ets"
537                                      },
538                                      "end": {
539                                        "line": 16,
540                                        "column": 33,
541                                        "program": "await_complex_promise.ets"
542                                      }
543                                    }
544                                  },
545                                  "typeParams": {
546                                    "type": "TSTypeParameterInstantiation",
547                                    "params": [
548                                      {
549                                        "type": "ETSTypeReference",
550                                        "part": {
551                                          "type": "ETSTypeReferencePart",
552                                          "name": {
553                                            "type": "Identifier",
554                                            "name": "string",
555                                            "decorators": [],
556                                            "loc": {
557                                              "start": {
558                                                "line": 16,
559                                                "column": 34,
560                                                "program": "await_complex_promise.ets"
561                                              },
562                                              "end": {
563                                                "line": 16,
564                                                "column": 40,
565                                                "program": "await_complex_promise.ets"
566                                              }
567                                            }
568                                          },
569                                          "loc": {
570                                            "start": {
571                                              "line": 16,
572                                              "column": 34,
573                                              "program": "await_complex_promise.ets"
574                                            },
575                                            "end": {
576                                              "line": 16,
577                                              "column": 42,
578                                              "program": "await_complex_promise.ets"
579                                            }
580                                          }
581                                        },
582                                        "loc": {
583                                          "start": {
584                                            "line": 16,
585                                            "column": 34,
586                                            "program": "await_complex_promise.ets"
587                                          },
588                                          "end": {
589                                            "line": 16,
590                                            "column": 42,
591                                            "program": "await_complex_promise.ets"
592                                          }
593                                        }
594                                      }
595                                    ],
596                                    "loc": {
597                                      "start": {
598                                        "line": 16,
599                                        "column": 33,
600                                        "program": "await_complex_promise.ets"
601                                      },
602                                      "end": {
603                                        "line": 16,
604                                        "column": 42,
605                                        "program": "await_complex_promise.ets"
606                                      }
607                                    }
608                                  },
609                                  "loc": {
610                                    "start": {
611                                      "line": 16,
612                                      "column": 26,
613                                      "program": "await_complex_promise.ets"
614                                    },
615                                    "end": {
616                                      "line": 16,
617                                      "column": 42,
618                                      "program": "await_complex_promise.ets"
619                                    }
620                                  }
621                                },
622                                "loc": {
623                                  "start": {
624                                    "line": 16,
625                                    "column": 26,
626                                    "program": "await_complex_promise.ets"
627                                  },
628                                  "end": {
629                                    "line": 16,
630                                    "column": 42,
631                                    "program": "await_complex_promise.ets"
632                                  }
633                                }
634                              }
635                            ],
636                            "loc": {
637                              "start": {
638                                "line": 16,
639                                "column": 25,
640                                "program": "await_complex_promise.ets"
641                              },
642                              "end": {
643                                "line": 16,
644                                "column": 42,
645                                "program": "await_complex_promise.ets"
646                              }
647                            }
648                          },
649                          "loc": {
650                            "start": {
651                              "line": 16,
652                              "column": 18,
653                              "program": "await_complex_promise.ets"
654                            },
655                            "end": {
656                              "line": 16,
657                              "column": 43,
658                              "program": "await_complex_promise.ets"
659                            }
660                          }
661                        },
662                        "loc": {
663                          "start": {
664                            "line": 16,
665                            "column": 18,
666                            "program": "await_complex_promise.ets"
667                          },
668                          "end": {
669                            "line": 16,
670                            "column": 43,
671                            "program": "await_complex_promise.ets"
672                          }
673                        }
674                      },
675                      "decorators": [],
676                      "loc": {
677                        "start": {
678                          "line": 16,
679                          "column": 15,
680                          "program": "await_complex_promise.ets"
681                        },
682                        "end": {
683                          "line": 16,
684                          "column": 43,
685                          "program": "await_complex_promise.ets"
686                        }
687                      }
688                    },
689                    "loc": {
690                      "start": {
691                        "line": 16,
692                        "column": 15,
693                        "program": "await_complex_promise.ets"
694                      },
695                      "end": {
696                        "line": 16,
697                        "column": 43,
698                        "program": "await_complex_promise.ets"
699                      }
700                    }
701                  }
702                ],
703                "returnType": {
704                  "type": "ETSPrimitiveType",
705                  "loc": {
706                    "start": {
707                      "line": 16,
708                      "column": 45,
709                      "program": "await_complex_promise.ets"
710                    },
711                    "end": {
712                      "line": 16,
713                      "column": 49,
714                      "program": "await_complex_promise.ets"
715                    }
716                  }
717                },
718                "body": {
719                  "type": "BlockStatement",
720                  "statements": [
721                    {
722                      "type": "VariableDeclaration",
723                      "declarations": [
724                        {
725                          "type": "VariableDeclarator",
726                          "id": {
727                            "type": "Identifier",
728                            "name": "result",
729                            "typeAnnotation": {
730                              "type": "ETSTypeReference",
731                              "part": {
732                                "type": "ETSTypeReferencePart",
733                                "name": {
734                                  "type": "Identifier",
735                                  "name": "string",
736                                  "decorators": [],
737                                  "loc": {
738                                    "start": {
739                                      "line": 17,
740                                      "column": 17,
741                                      "program": "await_complex_promise.ets"
742                                    },
743                                    "end": {
744                                      "line": 17,
745                                      "column": 23,
746                                      "program": "await_complex_promise.ets"
747                                    }
748                                  }
749                                },
750                                "loc": {
751                                  "start": {
752                                    "line": 17,
753                                    "column": 17,
754                                    "program": "await_complex_promise.ets"
755                                  },
756                                  "end": {
757                                    "line": 17,
758                                    "column": 25,
759                                    "program": "await_complex_promise.ets"
760                                  }
761                                }
762                              },
763                              "loc": {
764                                "start": {
765                                  "line": 17,
766                                  "column": 17,
767                                  "program": "await_complex_promise.ets"
768                                },
769                                "end": {
770                                  "line": 17,
771                                  "column": 25,
772                                  "program": "await_complex_promise.ets"
773                                }
774                              }
775                            },
776                            "decorators": [],
777                            "loc": {
778                              "start": {
779                                "line": 17,
780                                "column": 9,
781                                "program": "await_complex_promise.ets"
782                              },
783                              "end": {
784                                "line": 17,
785                                "column": 15,
786                                "program": "await_complex_promise.ets"
787                              }
788                            }
789                          },
790                          "init": {
791                            "type": "AwaitExpression",
792                            "argument": {
793                              "type": "Identifier",
794                              "name": "p",
795                              "decorators": [],
796                              "loc": {
797                                "start": {
798                                  "line": 17,
799                                  "column": 32,
800                                  "program": "await_complex_promise.ets"
801                                },
802                                "end": {
803                                  "line": 17,
804                                  "column": 33,
805                                  "program": "await_complex_promise.ets"
806                                }
807                              }
808                            },
809                            "loc": {
810                              "start": {
811                                "line": 17,
812                                "column": 26,
813                                "program": "await_complex_promise.ets"
814                              },
815                              "end": {
816                                "line": 17,
817                                "column": 33,
818                                "program": "await_complex_promise.ets"
819                              }
820                            }
821                          },
822                          "loc": {
823                            "start": {
824                              "line": 17,
825                              "column": 9,
826                              "program": "await_complex_promise.ets"
827                            },
828                            "end": {
829                              "line": 17,
830                              "column": 33,
831                              "program": "await_complex_promise.ets"
832                            }
833                          }
834                        }
835                      ],
836                      "kind": "let",
837                      "loc": {
838                        "start": {
839                          "line": 17,
840                          "column": 5,
841                          "program": "await_complex_promise.ets"
842                        },
843                        "end": {
844                          "line": 17,
845                          "column": 34,
846                          "program": "await_complex_promise.ets"
847                        }
848                      }
849                    }
850                  ],
851                  "loc": {
852                    "start": {
853                      "line": 16,
854                      "column": 50,
855                      "program": "await_complex_promise.ets"
856                    },
857                    "end": {
858                      "line": 18,
859                      "column": 2,
860                      "program": "await_complex_promise.ets"
861                    }
862                  }
863                },
864                "loc": {
865                  "start": {
866                    "line": 16,
867                    "column": 10,
868                    "program": "await_complex_promise.ets"
869                  },
870                  "end": {
871                    "line": 18,
872                    "column": 2,
873                    "program": "await_complex_promise.ets"
874                  }
875                }
876              },
877              "loc": {
878                "start": {
879                  "line": 16,
880                  "column": 10,
881                  "program": "await_complex_promise.ets"
882                },
883                "end": {
884                  "line": 18,
885                  "column": 2,
886                  "program": "await_complex_promise.ets"
887                }
888              }
889            },
890            "overloads": [],
891            "decorators": [],
892            "loc": {
893              "start": {
894                "line": 16,
895                "column": 1,
896                "program": "await_complex_promise.ets"
897              },
898              "end": {
899                "line": 18,
900                "column": 2,
901                "program": "await_complex_promise.ets"
902              }
903            }
904          },
905          {
906            "type": "MethodDefinition",
907            "key": {
908              "type": "Identifier",
909              "name": "foo2",
910              "decorators": [],
911              "loc": {
912                "start": {
913                  "line": 20,
914                  "column": 10,
915                  "program": "await_complex_promise.ets"
916                },
917                "end": {
918                  "line": 20,
919                  "column": 14,
920                  "program": "await_complex_promise.ets"
921                }
922              }
923            },
924            "kind": "method",
925            "accessibility": "public",
926            "static": true,
927            "optional": false,
928            "computed": false,
929            "value": {
930              "type": "FunctionExpression",
931              "function": {
932                "type": "ScriptFunction",
933                "id": {
934                  "type": "Identifier",
935                  "name": "foo2",
936                  "decorators": [],
937                  "loc": {
938                    "start": {
939                      "line": 20,
940                      "column": 10,
941                      "program": "await_complex_promise.ets"
942                    },
943                    "end": {
944                      "line": 20,
945                      "column": 14,
946                      "program": "await_complex_promise.ets"
947                    }
948                  }
949                },
950                "generator": false,
951                "async": false,
952                "expression": false,
953                "params": [
954                  {
955                    "type": "ETSParameterExpression",
956                    "name": {
957                      "type": "Identifier",
958                      "name": "p",
959                      "typeAnnotation": {
960                        "type": "ETSTypeReference",
961                        "part": {
962                          "type": "ETSTypeReferencePart",
963                          "name": {
964                            "type": "Identifier",
965                            "name": "Promise",
966                            "decorators": [],
967                            "loc": {
968                              "start": {
969                                "line": 20,
970                                "column": 18,
971                                "program": "await_complex_promise.ets"
972                              },
973                              "end": {
974                                "line": 20,
975                                "column": 25,
976                                "program": "await_complex_promise.ets"
977                              }
978                            }
979                          },
980                          "typeParams": {
981                            "type": "TSTypeParameterInstantiation",
982                            "params": [
983                              {
984                                "type": "ETSUnionType",
985                                "types": [
986                                  {
987                                    "type": "ETSTypeReference",
988                                    "part": {
989                                      "type": "ETSTypeReferencePart",
990                                      "name": {
991                                        "type": "Identifier",
992                                        "name": "Promise",
993                                        "decorators": [],
994                                        "loc": {
995                                          "start": {
996                                            "line": 20,
997                                            "column": 26,
998                                            "program": "await_complex_promise.ets"
999                                          },
1000                                          "end": {
1001                                            "line": 20,
1002                                            "column": 33,
1003                                            "program": "await_complex_promise.ets"
1004                                          }
1005                                        }
1006                                      },
1007                                      "typeParams": {
1008                                        "type": "TSTypeParameterInstantiation",
1009                                        "params": [
1010                                          {
1011                                            "type": "ETSTypeReference",
1012                                            "part": {
1013                                              "type": "ETSTypeReferencePart",
1014                                              "name": {
1015                                                "type": "Identifier",
1016                                                "name": "string",
1017                                                "decorators": [],
1018                                                "loc": {
1019                                                  "start": {
1020                                                    "line": 20,
1021                                                    "column": 34,
1022                                                    "program": "await_complex_promise.ets"
1023                                                  },
1024                                                  "end": {
1025                                                    "line": 20,
1026                                                    "column": 40,
1027                                                    "program": "await_complex_promise.ets"
1028                                                  }
1029                                                }
1030                                              },
1031                                              "loc": {
1032                                                "start": {
1033                                                  "line": 20,
1034                                                  "column": 34,
1035                                                  "program": "await_complex_promise.ets"
1036                                                },
1037                                                "end": {
1038                                                  "line": 20,
1039                                                  "column": 41,
1040                                                  "program": "await_complex_promise.ets"
1041                                                }
1042                                              }
1043                                            },
1044                                            "loc": {
1045                                              "start": {
1046                                                "line": 20,
1047                                                "column": 34,
1048                                                "program": "await_complex_promise.ets"
1049                                              },
1050                                              "end": {
1051                                                "line": 20,
1052                                                "column": 41,
1053                                                "program": "await_complex_promise.ets"
1054                                              }
1055                                            }
1056                                          }
1057                                        ],
1058                                        "loc": {
1059                                          "start": {
1060                                            "line": 20,
1061                                            "column": 33,
1062                                            "program": "await_complex_promise.ets"
1063                                          },
1064                                          "end": {
1065                                            "line": 20,
1066                                            "column": 41,
1067                                            "program": "await_complex_promise.ets"
1068                                          }
1069                                        }
1070                                      },
1071                                      "loc": {
1072                                        "start": {
1073                                          "line": 20,
1074                                          "column": 26,
1075                                          "program": "await_complex_promise.ets"
1076                                        },
1077                                        "end": {
1078                                          "line": 20,
1079                                          "column": 42,
1080                                          "program": "await_complex_promise.ets"
1081                                        }
1082                                      }
1083                                    },
1084                                    "loc": {
1085                                      "start": {
1086                                        "line": 20,
1087                                        "column": 26,
1088                                        "program": "await_complex_promise.ets"
1089                                      },
1090                                      "end": {
1091                                        "line": 20,
1092                                        "column": 42,
1093                                        "program": "await_complex_promise.ets"
1094                                      }
1095                                    }
1096                                  },
1097                                  {
1098                                    "type": "ETSTypeReference",
1099                                    "part": {
1100                                      "type": "ETSTypeReferencePart",
1101                                      "name": {
1102                                        "type": "Identifier",
1103                                        "name": "number",
1104                                        "decorators": [],
1105                                        "loc": {
1106                                          "start": {
1107                                            "line": 20,
1108                                            "column": 42,
1109                                            "program": "await_complex_promise.ets"
1110                                          },
1111                                          "end": {
1112                                            "line": 20,
1113                                            "column": 48,
1114                                            "program": "await_complex_promise.ets"
1115                                          }
1116                                        }
1117                                      },
1118                                      "loc": {
1119                                        "start": {
1120                                          "line": 20,
1121                                          "column": 42,
1122                                          "program": "await_complex_promise.ets"
1123                                        },
1124                                        "end": {
1125                                          "line": 20,
1126                                          "column": 49,
1127                                          "program": "await_complex_promise.ets"
1128                                        }
1129                                      }
1130                                    },
1131                                    "loc": {
1132                                      "start": {
1133                                        "line": 20,
1134                                        "column": 42,
1135                                        "program": "await_complex_promise.ets"
1136                                      },
1137                                      "end": {
1138                                        "line": 20,
1139                                        "column": 49,
1140                                        "program": "await_complex_promise.ets"
1141                                      }
1142                                    }
1143                                  }
1144                                ],
1145                                "loc": {
1146                                  "start": {
1147                                    "line": 20,
1148                                    "column": 26,
1149                                    "program": "await_complex_promise.ets"
1150                                  },
1151                                  "end": {
1152                                    "line": 20,
1153                                    "column": 49,
1154                                    "program": "await_complex_promise.ets"
1155                                  }
1156                                }
1157                              }
1158                            ],
1159                            "loc": {
1160                              "start": {
1161                                "line": 20,
1162                                "column": 25,
1163                                "program": "await_complex_promise.ets"
1164                              },
1165                              "end": {
1166                                "line": 20,
1167                                "column": 49,
1168                                "program": "await_complex_promise.ets"
1169                              }
1170                            }
1171                          },
1172                          "loc": {
1173                            "start": {
1174                              "line": 20,
1175                              "column": 18,
1176                              "program": "await_complex_promise.ets"
1177                            },
1178                            "end": {
1179                              "line": 20,
1180                              "column": 50,
1181                              "program": "await_complex_promise.ets"
1182                            }
1183                          }
1184                        },
1185                        "loc": {
1186                          "start": {
1187                            "line": 20,
1188                            "column": 18,
1189                            "program": "await_complex_promise.ets"
1190                          },
1191                          "end": {
1192                            "line": 20,
1193                            "column": 50,
1194                            "program": "await_complex_promise.ets"
1195                          }
1196                        }
1197                      },
1198                      "decorators": [],
1199                      "loc": {
1200                        "start": {
1201                          "line": 20,
1202                          "column": 15,
1203                          "program": "await_complex_promise.ets"
1204                        },
1205                        "end": {
1206                          "line": 20,
1207                          "column": 50,
1208                          "program": "await_complex_promise.ets"
1209                        }
1210                      }
1211                    },
1212                    "loc": {
1213                      "start": {
1214                        "line": 20,
1215                        "column": 15,
1216                        "program": "await_complex_promise.ets"
1217                      },
1218                      "end": {
1219                        "line": 20,
1220                        "column": 50,
1221                        "program": "await_complex_promise.ets"
1222                      }
1223                    }
1224                  }
1225                ],
1226                "returnType": {
1227                  "type": "ETSPrimitiveType",
1228                  "loc": {
1229                    "start": {
1230                      "line": 20,
1231                      "column": 52,
1232                      "program": "await_complex_promise.ets"
1233                    },
1234                    "end": {
1235                      "line": 20,
1236                      "column": 56,
1237                      "program": "await_complex_promise.ets"
1238                    }
1239                  }
1240                },
1241                "body": {
1242                  "type": "BlockStatement",
1243                  "statements": [
1244                    {
1245                      "type": "VariableDeclaration",
1246                      "declarations": [
1247                        {
1248                          "type": "VariableDeclarator",
1249                          "id": {
1250                            "type": "Identifier",
1251                            "name": "result",
1252                            "typeAnnotation": {
1253                              "type": "ETSUnionType",
1254                              "types": [
1255                                {
1256                                  "type": "ETSTypeReference",
1257                                  "part": {
1258                                    "type": "ETSTypeReferencePart",
1259                                    "name": {
1260                                      "type": "Identifier",
1261                                      "name": "string",
1262                                      "decorators": [],
1263                                      "loc": {
1264                                        "start": {
1265                                          "line": 21,
1266                                          "column": 17,
1267                                          "program": "await_complex_promise.ets"
1268                                        },
1269                                        "end": {
1270                                          "line": 21,
1271                                          "column": 23,
1272                                          "program": "await_complex_promise.ets"
1273                                        }
1274                                      }
1275                                    },
1276                                    "loc": {
1277                                      "start": {
1278                                        "line": 21,
1279                                        "column": 17,
1280                                        "program": "await_complex_promise.ets"
1281                                      },
1282                                      "end": {
1283                                        "line": 21,
1284                                        "column": 24,
1285                                        "program": "await_complex_promise.ets"
1286                                      }
1287                                    }
1288                                  },
1289                                  "loc": {
1290                                    "start": {
1291                                      "line": 21,
1292                                      "column": 17,
1293                                      "program": "await_complex_promise.ets"
1294                                    },
1295                                    "end": {
1296                                      "line": 21,
1297                                      "column": 24,
1298                                      "program": "await_complex_promise.ets"
1299                                    }
1300                                  }
1301                                },
1302                                {
1303                                  "type": "ETSTypeReference",
1304                                  "part": {
1305                                    "type": "ETSTypeReferencePart",
1306                                    "name": {
1307                                      "type": "Identifier",
1308                                      "name": "number",
1309                                      "decorators": [],
1310                                      "loc": {
1311                                        "start": {
1312                                          "line": 21,
1313                                          "column": 24,
1314                                          "program": "await_complex_promise.ets"
1315                                        },
1316                                        "end": {
1317                                          "line": 21,
1318                                          "column": 30,
1319                                          "program": "await_complex_promise.ets"
1320                                        }
1321                                      }
1322                                    },
1323                                    "loc": {
1324                                      "start": {
1325                                        "line": 21,
1326                                        "column": 24,
1327                                        "program": "await_complex_promise.ets"
1328                                      },
1329                                      "end": {
1330                                        "line": 21,
1331                                        "column": 32,
1332                                        "program": "await_complex_promise.ets"
1333                                      }
1334                                    }
1335                                  },
1336                                  "loc": {
1337                                    "start": {
1338                                      "line": 21,
1339                                      "column": 24,
1340                                      "program": "await_complex_promise.ets"
1341                                    },
1342                                    "end": {
1343                                      "line": 21,
1344                                      "column": 32,
1345                                      "program": "await_complex_promise.ets"
1346                                    }
1347                                  }
1348                                }
1349                              ],
1350                              "loc": {
1351                                "start": {
1352                                  "line": 21,
1353                                  "column": 17,
1354                                  "program": "await_complex_promise.ets"
1355                                },
1356                                "end": {
1357                                  "line": 21,
1358                                  "column": 32,
1359                                  "program": "await_complex_promise.ets"
1360                                }
1361                              }
1362                            },
1363                            "decorators": [],
1364                            "loc": {
1365                              "start": {
1366                                "line": 21,
1367                                "column": 9,
1368                                "program": "await_complex_promise.ets"
1369                              },
1370                              "end": {
1371                                "line": 21,
1372                                "column": 15,
1373                                "program": "await_complex_promise.ets"
1374                              }
1375                            }
1376                          },
1377                          "init": {
1378                            "type": "AwaitExpression",
1379                            "argument": {
1380                              "type": "Identifier",
1381                              "name": "p",
1382                              "decorators": [],
1383                              "loc": {
1384                                "start": {
1385                                  "line": 21,
1386                                  "column": 39,
1387                                  "program": "await_complex_promise.ets"
1388                                },
1389                                "end": {
1390                                  "line": 21,
1391                                  "column": 40,
1392                                  "program": "await_complex_promise.ets"
1393                                }
1394                              }
1395                            },
1396                            "loc": {
1397                              "start": {
1398                                "line": 21,
1399                                "column": 33,
1400                                "program": "await_complex_promise.ets"
1401                              },
1402                              "end": {
1403                                "line": 21,
1404                                "column": 40,
1405                                "program": "await_complex_promise.ets"
1406                              }
1407                            }
1408                          },
1409                          "loc": {
1410                            "start": {
1411                              "line": 21,
1412                              "column": 9,
1413                              "program": "await_complex_promise.ets"
1414                            },
1415                            "end": {
1416                              "line": 21,
1417                              "column": 40,
1418                              "program": "await_complex_promise.ets"
1419                            }
1420                          }
1421                        }
1422                      ],
1423                      "kind": "let",
1424                      "loc": {
1425                        "start": {
1426                          "line": 21,
1427                          "column": 5,
1428                          "program": "await_complex_promise.ets"
1429                        },
1430                        "end": {
1431                          "line": 21,
1432                          "column": 41,
1433                          "program": "await_complex_promise.ets"
1434                        }
1435                      }
1436                    }
1437                  ],
1438                  "loc": {
1439                    "start": {
1440                      "line": 20,
1441                      "column": 57,
1442                      "program": "await_complex_promise.ets"
1443                    },
1444                    "end": {
1445                      "line": 22,
1446                      "column": 2,
1447                      "program": "await_complex_promise.ets"
1448                    }
1449                  }
1450                },
1451                "loc": {
1452                  "start": {
1453                    "line": 20,
1454                    "column": 10,
1455                    "program": "await_complex_promise.ets"
1456                  },
1457                  "end": {
1458                    "line": 22,
1459                    "column": 2,
1460                    "program": "await_complex_promise.ets"
1461                  }
1462                }
1463              },
1464              "loc": {
1465                "start": {
1466                  "line": 20,
1467                  "column": 10,
1468                  "program": "await_complex_promise.ets"
1469                },
1470                "end": {
1471                  "line": 22,
1472                  "column": 2,
1473                  "program": "await_complex_promise.ets"
1474                }
1475              }
1476            },
1477            "overloads": [],
1478            "decorators": [],
1479            "loc": {
1480              "start": {
1481                "line": 20,
1482                "column": 1,
1483                "program": "await_complex_promise.ets"
1484              },
1485              "end": {
1486                "line": 22,
1487                "column": 2,
1488                "program": "await_complex_promise.ets"
1489              }
1490            }
1491          },
1492          {
1493            "type": "MethodDefinition",
1494            "key": {
1495              "type": "Identifier",
1496              "name": "foo3",
1497              "decorators": [],
1498              "loc": {
1499                "start": {
1500                  "line": 24,
1501                  "column": 10,
1502                  "program": "await_complex_promise.ets"
1503                },
1504                "end": {
1505                  "line": 24,
1506                  "column": 14,
1507                  "program": "await_complex_promise.ets"
1508                }
1509              }
1510            },
1511            "kind": "method",
1512            "accessibility": "public",
1513            "static": true,
1514            "optional": false,
1515            "computed": false,
1516            "value": {
1517              "type": "FunctionExpression",
1518              "function": {
1519                "type": "ScriptFunction",
1520                "id": {
1521                  "type": "Identifier",
1522                  "name": "foo3",
1523                  "decorators": [],
1524                  "loc": {
1525                    "start": {
1526                      "line": 24,
1527                      "column": 10,
1528                      "program": "await_complex_promise.ets"
1529                    },
1530                    "end": {
1531                      "line": 24,
1532                      "column": 14,
1533                      "program": "await_complex_promise.ets"
1534                    }
1535                  }
1536                },
1537                "generator": false,
1538                "async": false,
1539                "expression": false,
1540                "params": [
1541                  {
1542                    "type": "ETSParameterExpression",
1543                    "name": {
1544                      "type": "Identifier",
1545                      "name": "p",
1546                      "typeAnnotation": {
1547                        "type": "ETSTypeReference",
1548                        "part": {
1549                          "type": "ETSTypeReferencePart",
1550                          "name": {
1551                            "type": "Identifier",
1552                            "name": "Promise",
1553                            "decorators": [],
1554                            "loc": {
1555                              "start": {
1556                                "line": 24,
1557                                "column": 18,
1558                                "program": "await_complex_promise.ets"
1559                              },
1560                              "end": {
1561                                "line": 24,
1562                                "column": 25,
1563                                "program": "await_complex_promise.ets"
1564                              }
1565                            }
1566                          },
1567                          "typeParams": {
1568                            "type": "TSTypeParameterInstantiation",
1569                            "params": [
1570                              {
1571                                "type": "ETSUnionType",
1572                                "types": [
1573                                  {
1574                                    "type": "ETSTypeReference",
1575                                    "part": {
1576                                      "type": "ETSTypeReferencePart",
1577                                      "name": {
1578                                        "type": "Identifier",
1579                                        "name": "Promise",
1580                                        "decorators": [],
1581                                        "loc": {
1582                                          "start": {
1583                                            "line": 24,
1584                                            "column": 26,
1585                                            "program": "await_complex_promise.ets"
1586                                          },
1587                                          "end": {
1588                                            "line": 24,
1589                                            "column": 33,
1590                                            "program": "await_complex_promise.ets"
1591                                          }
1592                                        }
1593                                      },
1594                                      "typeParams": {
1595                                        "type": "TSTypeParameterInstantiation",
1596                                        "params": [
1597                                          {
1598                                            "type": "ETSTypeReference",
1599                                            "part": {
1600                                              "type": "ETSTypeReferencePart",
1601                                              "name": {
1602                                                "type": "Identifier",
1603                                                "name": "string",
1604                                                "decorators": [],
1605                                                "loc": {
1606                                                  "start": {
1607                                                    "line": 24,
1608                                                    "column": 34,
1609                                                    "program": "await_complex_promise.ets"
1610                                                  },
1611                                                  "end": {
1612                                                    "line": 24,
1613                                                    "column": 40,
1614                                                    "program": "await_complex_promise.ets"
1615                                                  }
1616                                                }
1617                                              },
1618                                              "loc": {
1619                                                "start": {
1620                                                  "line": 24,
1621                                                  "column": 34,
1622                                                  "program": "await_complex_promise.ets"
1623                                                },
1624                                                "end": {
1625                                                  "line": 24,
1626                                                  "column": 41,
1627                                                  "program": "await_complex_promise.ets"
1628                                                }
1629                                              }
1630                                            },
1631                                            "loc": {
1632                                              "start": {
1633                                                "line": 24,
1634                                                "column": 34,
1635                                                "program": "await_complex_promise.ets"
1636                                              },
1637                                              "end": {
1638                                                "line": 24,
1639                                                "column": 41,
1640                                                "program": "await_complex_promise.ets"
1641                                              }
1642                                            }
1643                                          }
1644                                        ],
1645                                        "loc": {
1646                                          "start": {
1647                                            "line": 24,
1648                                            "column": 33,
1649                                            "program": "await_complex_promise.ets"
1650                                          },
1651                                          "end": {
1652                                            "line": 24,
1653                                            "column": 41,
1654                                            "program": "await_complex_promise.ets"
1655                                          }
1656                                        }
1657                                      },
1658                                      "loc": {
1659                                        "start": {
1660                                          "line": 24,
1661                                          "column": 26,
1662                                          "program": "await_complex_promise.ets"
1663                                        },
1664                                        "end": {
1665                                          "line": 24,
1666                                          "column": 42,
1667                                          "program": "await_complex_promise.ets"
1668                                        }
1669                                      }
1670                                    },
1671                                    "loc": {
1672                                      "start": {
1673                                        "line": 24,
1674                                        "column": 26,
1675                                        "program": "await_complex_promise.ets"
1676                                      },
1677                                      "end": {
1678                                        "line": 24,
1679                                        "column": 42,
1680                                        "program": "await_complex_promise.ets"
1681                                      }
1682                                    }
1683                                  },
1684                                  {
1685                                    "type": "ETSTypeReference",
1686                                    "part": {
1687                                      "type": "ETSTypeReferencePart",
1688                                      "name": {
1689                                        "type": "Identifier",
1690                                        "name": "Promise",
1691                                        "decorators": [],
1692                                        "loc": {
1693                                          "start": {
1694                                            "line": 24,
1695                                            "column": 42,
1696                                            "program": "await_complex_promise.ets"
1697                                          },
1698                                          "end": {
1699                                            "line": 24,
1700                                            "column": 49,
1701                                            "program": "await_complex_promise.ets"
1702                                          }
1703                                        }
1704                                      },
1705                                      "typeParams": {
1706                                        "type": "TSTypeParameterInstantiation",
1707                                        "params": [
1708                                          {
1709                                            "type": "ETSTypeReference",
1710                                            "part": {
1711                                              "type": "ETSTypeReferencePart",
1712                                              "name": {
1713                                                "type": "Identifier",
1714                                                "name": "number",
1715                                                "decorators": [],
1716                                                "loc": {
1717                                                  "start": {
1718                                                    "line": 24,
1719                                                    "column": 50,
1720                                                    "program": "await_complex_promise.ets"
1721                                                  },
1722                                                  "end": {
1723                                                    "line": 24,
1724                                                    "column": 56,
1725                                                    "program": "await_complex_promise.ets"
1726                                                  }
1727                                                }
1728                                              },
1729                                              "loc": {
1730                                                "start": {
1731                                                  "line": 24,
1732                                                  "column": 50,
1733                                                  "program": "await_complex_promise.ets"
1734                                                },
1735                                                "end": {
1736                                                  "line": 24,
1737                                                  "column": 58,
1738                                                  "program": "await_complex_promise.ets"
1739                                                }
1740                                              }
1741                                            },
1742                                            "loc": {
1743                                              "start": {
1744                                                "line": 24,
1745                                                "column": 50,
1746                                                "program": "await_complex_promise.ets"
1747                                              },
1748                                              "end": {
1749                                                "line": 24,
1750                                                "column": 58,
1751                                                "program": "await_complex_promise.ets"
1752                                              }
1753                                            }
1754                                          }
1755                                        ],
1756                                        "loc": {
1757                                          "start": {
1758                                            "line": 24,
1759                                            "column": 49,
1760                                            "program": "await_complex_promise.ets"
1761                                          },
1762                                          "end": {
1763                                            "line": 24,
1764                                            "column": 58,
1765                                            "program": "await_complex_promise.ets"
1766                                          }
1767                                        }
1768                                      },
1769                                      "loc": {
1770                                        "start": {
1771                                          "line": 24,
1772                                          "column": 42,
1773                                          "program": "await_complex_promise.ets"
1774                                        },
1775                                        "end": {
1776                                          "line": 24,
1777                                          "column": 58,
1778                                          "program": "await_complex_promise.ets"
1779                                        }
1780                                      }
1781                                    },
1782                                    "loc": {
1783                                      "start": {
1784                                        "line": 24,
1785                                        "column": 42,
1786                                        "program": "await_complex_promise.ets"
1787                                      },
1788                                      "end": {
1789                                        "line": 24,
1790                                        "column": 58,
1791                                        "program": "await_complex_promise.ets"
1792                                      }
1793                                    }
1794                                  }
1795                                ],
1796                                "loc": {
1797                                  "start": {
1798                                    "line": 24,
1799                                    "column": 26,
1800                                    "program": "await_complex_promise.ets"
1801                                  },
1802                                  "end": {
1803                                    "line": 24,
1804                                    "column": 58,
1805                                    "program": "await_complex_promise.ets"
1806                                  }
1807                                }
1808                              }
1809                            ],
1810                            "loc": {
1811                              "start": {
1812                                "line": 24,
1813                                "column": 25,
1814                                "program": "await_complex_promise.ets"
1815                              },
1816                              "end": {
1817                                "line": 24,
1818                                "column": 58,
1819                                "program": "await_complex_promise.ets"
1820                              }
1821                            }
1822                          },
1823                          "loc": {
1824                            "start": {
1825                              "line": 24,
1826                              "column": 18,
1827                              "program": "await_complex_promise.ets"
1828                            },
1829                            "end": {
1830                              "line": 24,
1831                              "column": 59,
1832                              "program": "await_complex_promise.ets"
1833                            }
1834                          }
1835                        },
1836                        "loc": {
1837                          "start": {
1838                            "line": 24,
1839                            "column": 18,
1840                            "program": "await_complex_promise.ets"
1841                          },
1842                          "end": {
1843                            "line": 24,
1844                            "column": 59,
1845                            "program": "await_complex_promise.ets"
1846                          }
1847                        }
1848                      },
1849                      "decorators": [],
1850                      "loc": {
1851                        "start": {
1852                          "line": 24,
1853                          "column": 15,
1854                          "program": "await_complex_promise.ets"
1855                        },
1856                        "end": {
1857                          "line": 24,
1858                          "column": 59,
1859                          "program": "await_complex_promise.ets"
1860                        }
1861                      }
1862                    },
1863                    "loc": {
1864                      "start": {
1865                        "line": 24,
1866                        "column": 15,
1867                        "program": "await_complex_promise.ets"
1868                      },
1869                      "end": {
1870                        "line": 24,
1871                        "column": 59,
1872                        "program": "await_complex_promise.ets"
1873                      }
1874                    }
1875                  }
1876                ],
1877                "returnType": {
1878                  "type": "ETSPrimitiveType",
1879                  "loc": {
1880                    "start": {
1881                      "line": 24,
1882                      "column": 61,
1883                      "program": "await_complex_promise.ets"
1884                    },
1885                    "end": {
1886                      "line": 24,
1887                      "column": 65,
1888                      "program": "await_complex_promise.ets"
1889                    }
1890                  }
1891                },
1892                "body": {
1893                  "type": "BlockStatement",
1894                  "statements": [
1895                    {
1896                      "type": "VariableDeclaration",
1897                      "declarations": [
1898                        {
1899                          "type": "VariableDeclarator",
1900                          "id": {
1901                            "type": "Identifier",
1902                            "name": "result",
1903                            "typeAnnotation": {
1904                              "type": "ETSUnionType",
1905                              "types": [
1906                                {
1907                                  "type": "ETSTypeReference",
1908                                  "part": {
1909                                    "type": "ETSTypeReferencePart",
1910                                    "name": {
1911                                      "type": "Identifier",
1912                                      "name": "string",
1913                                      "decorators": [],
1914                                      "loc": {
1915                                        "start": {
1916                                          "line": 25,
1917                                          "column": 17,
1918                                          "program": "await_complex_promise.ets"
1919                                        },
1920                                        "end": {
1921                                          "line": 25,
1922                                          "column": 23,
1923                                          "program": "await_complex_promise.ets"
1924                                        }
1925                                      }
1926                                    },
1927                                    "loc": {
1928                                      "start": {
1929                                        "line": 25,
1930                                        "column": 17,
1931                                        "program": "await_complex_promise.ets"
1932                                      },
1933                                      "end": {
1934                                        "line": 25,
1935                                        "column": 24,
1936                                        "program": "await_complex_promise.ets"
1937                                      }
1938                                    }
1939                                  },
1940                                  "loc": {
1941                                    "start": {
1942                                      "line": 25,
1943                                      "column": 17,
1944                                      "program": "await_complex_promise.ets"
1945                                    },
1946                                    "end": {
1947                                      "line": 25,
1948                                      "column": 24,
1949                                      "program": "await_complex_promise.ets"
1950                                    }
1951                                  }
1952                                },
1953                                {
1954                                  "type": "ETSTypeReference",
1955                                  "part": {
1956                                    "type": "ETSTypeReferencePart",
1957                                    "name": {
1958                                      "type": "Identifier",
1959                                      "name": "number",
1960                                      "decorators": [],
1961                                      "loc": {
1962                                        "start": {
1963                                          "line": 25,
1964                                          "column": 24,
1965                                          "program": "await_complex_promise.ets"
1966                                        },
1967                                        "end": {
1968                                          "line": 25,
1969                                          "column": 30,
1970                                          "program": "await_complex_promise.ets"
1971                                        }
1972                                      }
1973                                    },
1974                                    "loc": {
1975                                      "start": {
1976                                        "line": 25,
1977                                        "column": 24,
1978                                        "program": "await_complex_promise.ets"
1979                                      },
1980                                      "end": {
1981                                        "line": 25,
1982                                        "column": 32,
1983                                        "program": "await_complex_promise.ets"
1984                                      }
1985                                    }
1986                                  },
1987                                  "loc": {
1988                                    "start": {
1989                                      "line": 25,
1990                                      "column": 24,
1991                                      "program": "await_complex_promise.ets"
1992                                    },
1993                                    "end": {
1994                                      "line": 25,
1995                                      "column": 32,
1996                                      "program": "await_complex_promise.ets"
1997                                    }
1998                                  }
1999                                }
2000                              ],
2001                              "loc": {
2002                                "start": {
2003                                  "line": 25,
2004                                  "column": 17,
2005                                  "program": "await_complex_promise.ets"
2006                                },
2007                                "end": {
2008                                  "line": 25,
2009                                  "column": 32,
2010                                  "program": "await_complex_promise.ets"
2011                                }
2012                              }
2013                            },
2014                            "decorators": [],
2015                            "loc": {
2016                              "start": {
2017                                "line": 25,
2018                                "column": 9,
2019                                "program": "await_complex_promise.ets"
2020                              },
2021                              "end": {
2022                                "line": 25,
2023                                "column": 15,
2024                                "program": "await_complex_promise.ets"
2025                              }
2026                            }
2027                          },
2028                          "init": {
2029                            "type": "AwaitExpression",
2030                            "argument": {
2031                              "type": "Identifier",
2032                              "name": "p",
2033                              "decorators": [],
2034                              "loc": {
2035                                "start": {
2036                                  "line": 25,
2037                                  "column": 39,
2038                                  "program": "await_complex_promise.ets"
2039                                },
2040                                "end": {
2041                                  "line": 25,
2042                                  "column": 40,
2043                                  "program": "await_complex_promise.ets"
2044                                }
2045                              }
2046                            },
2047                            "loc": {
2048                              "start": {
2049                                "line": 25,
2050                                "column": 33,
2051                                "program": "await_complex_promise.ets"
2052                              },
2053                              "end": {
2054                                "line": 25,
2055                                "column": 40,
2056                                "program": "await_complex_promise.ets"
2057                              }
2058                            }
2059                          },
2060                          "loc": {
2061                            "start": {
2062                              "line": 25,
2063                              "column": 9,
2064                              "program": "await_complex_promise.ets"
2065                            },
2066                            "end": {
2067                              "line": 25,
2068                              "column": 40,
2069                              "program": "await_complex_promise.ets"
2070                            }
2071                          }
2072                        }
2073                      ],
2074                      "kind": "let",
2075                      "loc": {
2076                        "start": {
2077                          "line": 25,
2078                          "column": 5,
2079                          "program": "await_complex_promise.ets"
2080                        },
2081                        "end": {
2082                          "line": 25,
2083                          "column": 41,
2084                          "program": "await_complex_promise.ets"
2085                        }
2086                      }
2087                    }
2088                  ],
2089                  "loc": {
2090                    "start": {
2091                      "line": 24,
2092                      "column": 66,
2093                      "program": "await_complex_promise.ets"
2094                    },
2095                    "end": {
2096                      "line": 26,
2097                      "column": 2,
2098                      "program": "await_complex_promise.ets"
2099                    }
2100                  }
2101                },
2102                "loc": {
2103                  "start": {
2104                    "line": 24,
2105                    "column": 10,
2106                    "program": "await_complex_promise.ets"
2107                  },
2108                  "end": {
2109                    "line": 26,
2110                    "column": 2,
2111                    "program": "await_complex_promise.ets"
2112                  }
2113                }
2114              },
2115              "loc": {
2116                "start": {
2117                  "line": 24,
2118                  "column": 10,
2119                  "program": "await_complex_promise.ets"
2120                },
2121                "end": {
2122                  "line": 26,
2123                  "column": 2,
2124                  "program": "await_complex_promise.ets"
2125                }
2126              }
2127            },
2128            "overloads": [],
2129            "decorators": [],
2130            "loc": {
2131              "start": {
2132                "line": 24,
2133                "column": 1,
2134                "program": "await_complex_promise.ets"
2135              },
2136              "end": {
2137                "line": 26,
2138                "column": 2,
2139                "program": "await_complex_promise.ets"
2140              }
2141            }
2142          },
2143          {
2144            "type": "MethodDefinition",
2145            "key": {
2146              "type": "Identifier",
2147              "name": "foo4",
2148              "decorators": [],
2149              "loc": {
2150                "start": {
2151                  "line": 28,
2152                  "column": 10,
2153                  "program": "await_complex_promise.ets"
2154                },
2155                "end": {
2156                  "line": 28,
2157                  "column": 14,
2158                  "program": "await_complex_promise.ets"
2159                }
2160              }
2161            },
2162            "kind": "method",
2163            "accessibility": "public",
2164            "static": true,
2165            "optional": false,
2166            "computed": false,
2167            "value": {
2168              "type": "FunctionExpression",
2169              "function": {
2170                "type": "ScriptFunction",
2171                "id": {
2172                  "type": "Identifier",
2173                  "name": "foo4",
2174                  "decorators": [],
2175                  "loc": {
2176                    "start": {
2177                      "line": 28,
2178                      "column": 10,
2179                      "program": "await_complex_promise.ets"
2180                    },
2181                    "end": {
2182                      "line": 28,
2183                      "column": 14,
2184                      "program": "await_complex_promise.ets"
2185                    }
2186                  }
2187                },
2188                "generator": false,
2189                "async": false,
2190                "expression": false,
2191                "params": [
2192                  {
2193                    "type": "ETSParameterExpression",
2194                    "name": {
2195                      "type": "Identifier",
2196                      "name": "p",
2197                      "typeAnnotation": {
2198                        "type": "ETSTypeReference",
2199                        "part": {
2200                          "type": "ETSTypeReferencePart",
2201                          "name": {
2202                            "type": "Identifier",
2203                            "name": "Promise",
2204                            "decorators": [],
2205                            "loc": {
2206                              "start": {
2207                                "line": 28,
2208                                "column": 18,
2209                                "program": "await_complex_promise.ets"
2210                              },
2211                              "end": {
2212                                "line": 28,
2213                                "column": 25,
2214                                "program": "await_complex_promise.ets"
2215                              }
2216                            }
2217                          },
2218                          "typeParams": {
2219                            "type": "TSTypeParameterInstantiation",
2220                            "params": [
2221                              {
2222                                "type": "ETSUnionType",
2223                                "types": [
2224                                  {
2225                                    "type": "ETSNullType",
2226                                    "loc": {
2227                                      "start": {
2228                                        "line": 28,
2229                                        "column": 26,
2230                                        "program": "await_complex_promise.ets"
2231                                      },
2232                                      "end": {
2233                                        "line": 28,
2234                                        "column": 30,
2235                                        "program": "await_complex_promise.ets"
2236                                      }
2237                                    }
2238                                  },
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": 28,
2250                                            "column": 31,
2251                                            "program": "await_complex_promise.ets"
2252                                          },
2253                                          "end": {
2254                                            "line": 28,
2255                                            "column": 38,
2256                                            "program": "await_complex_promise.ets"
2257                                          }
2258                                        }
2259                                      },
2260                                      "typeParams": {
2261                                        "type": "TSTypeParameterInstantiation",
2262                                        "params": [
2263                                          {
2264                                            "type": "ETSTypeReference",
2265                                            "part": {
2266                                              "type": "ETSTypeReferencePart",
2267                                              "name": {
2268                                                "type": "Identifier",
2269                                                "name": "string",
2270                                                "decorators": [],
2271                                                "loc": {
2272                                                  "start": {
2273                                                    "line": 28,
2274                                                    "column": 39,
2275                                                    "program": "await_complex_promise.ets"
2276                                                  },
2277                                                  "end": {
2278                                                    "line": 28,
2279                                                    "column": 45,
2280                                                    "program": "await_complex_promise.ets"
2281                                                  }
2282                                                }
2283                                              },
2284                                              "loc": {
2285                                                "start": {
2286                                                  "line": 28,
2287                                                  "column": 39,
2288                                                  "program": "await_complex_promise.ets"
2289                                                },
2290                                                "end": {
2291                                                  "line": 28,
2292                                                  "column": 47,
2293                                                  "program": "await_complex_promise.ets"
2294                                                }
2295                                              }
2296                                            },
2297                                            "loc": {
2298                                              "start": {
2299                                                "line": 28,
2300                                                "column": 39,
2301                                                "program": "await_complex_promise.ets"
2302                                              },
2303                                              "end": {
2304                                                "line": 28,
2305                                                "column": 47,
2306                                                "program": "await_complex_promise.ets"
2307                                              }
2308                                            }
2309                                          }
2310                                        ],
2311                                        "loc": {
2312                                          "start": {
2313                                            "line": 28,
2314                                            "column": 38,
2315                                            "program": "await_complex_promise.ets"
2316                                          },
2317                                          "end": {
2318                                            "line": 28,
2319                                            "column": 47,
2320                                            "program": "await_complex_promise.ets"
2321                                          }
2322                                        }
2323                                      },
2324                                      "loc": {
2325                                        "start": {
2326                                          "line": 28,
2327                                          "column": 31,
2328                                          "program": "await_complex_promise.ets"
2329                                        },
2330                                        "end": {
2331                                          "line": 28,
2332                                          "column": 47,
2333                                          "program": "await_complex_promise.ets"
2334                                        }
2335                                      }
2336                                    },
2337                                    "loc": {
2338                                      "start": {
2339                                        "line": 28,
2340                                        "column": 31,
2341                                        "program": "await_complex_promise.ets"
2342                                      },
2343                                      "end": {
2344                                        "line": 28,
2345                                        "column": 47,
2346                                        "program": "await_complex_promise.ets"
2347                                      }
2348                                    }
2349                                  }
2350                                ],
2351                                "loc": {
2352                                  "start": {
2353                                    "line": 28,
2354                                    "column": 26,
2355                                    "program": "await_complex_promise.ets"
2356                                  },
2357                                  "end": {
2358                                    "line": 28,
2359                                    "column": 47,
2360                                    "program": "await_complex_promise.ets"
2361                                  }
2362                                }
2363                              }
2364                            ],
2365                            "loc": {
2366                              "start": {
2367                                "line": 28,
2368                                "column": 25,
2369                                "program": "await_complex_promise.ets"
2370                              },
2371                              "end": {
2372                                "line": 28,
2373                                "column": 47,
2374                                "program": "await_complex_promise.ets"
2375                              }
2376                            }
2377                          },
2378                          "loc": {
2379                            "start": {
2380                              "line": 28,
2381                              "column": 18,
2382                              "program": "await_complex_promise.ets"
2383                            },
2384                            "end": {
2385                              "line": 28,
2386                              "column": 48,
2387                              "program": "await_complex_promise.ets"
2388                            }
2389                          }
2390                        },
2391                        "loc": {
2392                          "start": {
2393                            "line": 28,
2394                            "column": 18,
2395                            "program": "await_complex_promise.ets"
2396                          },
2397                          "end": {
2398                            "line": 28,
2399                            "column": 48,
2400                            "program": "await_complex_promise.ets"
2401                          }
2402                        }
2403                      },
2404                      "decorators": [],
2405                      "loc": {
2406                        "start": {
2407                          "line": 28,
2408                          "column": 15,
2409                          "program": "await_complex_promise.ets"
2410                        },
2411                        "end": {
2412                          "line": 28,
2413                          "column": 48,
2414                          "program": "await_complex_promise.ets"
2415                        }
2416                      }
2417                    },
2418                    "loc": {
2419                      "start": {
2420                        "line": 28,
2421                        "column": 15,
2422                        "program": "await_complex_promise.ets"
2423                      },
2424                      "end": {
2425                        "line": 28,
2426                        "column": 48,
2427                        "program": "await_complex_promise.ets"
2428                      }
2429                    }
2430                  }
2431                ],
2432                "returnType": {
2433                  "type": "ETSPrimitiveType",
2434                  "loc": {
2435                    "start": {
2436                      "line": 28,
2437                      "column": 50,
2438                      "program": "await_complex_promise.ets"
2439                    },
2440                    "end": {
2441                      "line": 28,
2442                      "column": 54,
2443                      "program": "await_complex_promise.ets"
2444                    }
2445                  }
2446                },
2447                "body": {
2448                  "type": "BlockStatement",
2449                  "statements": [
2450                    {
2451                      "type": "VariableDeclaration",
2452                      "declarations": [
2453                        {
2454                          "type": "VariableDeclarator",
2455                          "id": {
2456                            "type": "Identifier",
2457                            "name": "result",
2458                            "typeAnnotation": {
2459                              "type": "ETSUnionType",
2460                              "types": [
2461                                {
2462                                  "type": "ETSNullType",
2463                                  "loc": {
2464                                    "start": {
2465                                      "line": 29,
2466                                      "column": 17,
2467                                      "program": "await_complex_promise.ets"
2468                                    },
2469                                    "end": {
2470                                      "line": 29,
2471                                      "column": 21,
2472                                      "program": "await_complex_promise.ets"
2473                                    }
2474                                  }
2475                                },
2476                                {
2477                                  "type": "ETSTypeReference",
2478                                  "part": {
2479                                    "type": "ETSTypeReferencePart",
2480                                    "name": {
2481                                      "type": "Identifier",
2482                                      "name": "string",
2483                                      "decorators": [],
2484                                      "loc": {
2485                                        "start": {
2486                                          "line": 29,
2487                                          "column": 22,
2488                                          "program": "await_complex_promise.ets"
2489                                        },
2490                                        "end": {
2491                                          "line": 29,
2492                                          "column": 28,
2493                                          "program": "await_complex_promise.ets"
2494                                        }
2495                                      }
2496                                    },
2497                                    "loc": {
2498                                      "start": {
2499                                        "line": 29,
2500                                        "column": 22,
2501                                        "program": "await_complex_promise.ets"
2502                                      },
2503                                      "end": {
2504                                        "line": 29,
2505                                        "column": 30,
2506                                        "program": "await_complex_promise.ets"
2507                                      }
2508                                    }
2509                                  },
2510                                  "loc": {
2511                                    "start": {
2512                                      "line": 29,
2513                                      "column": 22,
2514                                      "program": "await_complex_promise.ets"
2515                                    },
2516                                    "end": {
2517                                      "line": 29,
2518                                      "column": 30,
2519                                      "program": "await_complex_promise.ets"
2520                                    }
2521                                  }
2522                                }
2523                              ],
2524                              "loc": {
2525                                "start": {
2526                                  "line": 29,
2527                                  "column": 17,
2528                                  "program": "await_complex_promise.ets"
2529                                },
2530                                "end": {
2531                                  "line": 29,
2532                                  "column": 30,
2533                                  "program": "await_complex_promise.ets"
2534                                }
2535                              }
2536                            },
2537                            "decorators": [],
2538                            "loc": {
2539                              "start": {
2540                                "line": 29,
2541                                "column": 9,
2542                                "program": "await_complex_promise.ets"
2543                              },
2544                              "end": {
2545                                "line": 29,
2546                                "column": 15,
2547                                "program": "await_complex_promise.ets"
2548                              }
2549                            }
2550                          },
2551                          "init": {
2552                            "type": "AwaitExpression",
2553                            "argument": {
2554                              "type": "Identifier",
2555                              "name": "p",
2556                              "decorators": [],
2557                              "loc": {
2558                                "start": {
2559                                  "line": 29,
2560                                  "column": 37,
2561                                  "program": "await_complex_promise.ets"
2562                                },
2563                                "end": {
2564                                  "line": 29,
2565                                  "column": 38,
2566                                  "program": "await_complex_promise.ets"
2567                                }
2568                              }
2569                            },
2570                            "loc": {
2571                              "start": {
2572                                "line": 29,
2573                                "column": 31,
2574                                "program": "await_complex_promise.ets"
2575                              },
2576                              "end": {
2577                                "line": 29,
2578                                "column": 38,
2579                                "program": "await_complex_promise.ets"
2580                              }
2581                            }
2582                          },
2583                          "loc": {
2584                            "start": {
2585                              "line": 29,
2586                              "column": 9,
2587                              "program": "await_complex_promise.ets"
2588                            },
2589                            "end": {
2590                              "line": 29,
2591                              "column": 38,
2592                              "program": "await_complex_promise.ets"
2593                            }
2594                          }
2595                        }
2596                      ],
2597                      "kind": "let",
2598                      "loc": {
2599                        "start": {
2600                          "line": 29,
2601                          "column": 5,
2602                          "program": "await_complex_promise.ets"
2603                        },
2604                        "end": {
2605                          "line": 29,
2606                          "column": 39,
2607                          "program": "await_complex_promise.ets"
2608                        }
2609                      }
2610                    }
2611                  ],
2612                  "loc": {
2613                    "start": {
2614                      "line": 28,
2615                      "column": 55,
2616                      "program": "await_complex_promise.ets"
2617                    },
2618                    "end": {
2619                      "line": 30,
2620                      "column": 2,
2621                      "program": "await_complex_promise.ets"
2622                    }
2623                  }
2624                },
2625                "loc": {
2626                  "start": {
2627                    "line": 28,
2628                    "column": 10,
2629                    "program": "await_complex_promise.ets"
2630                  },
2631                  "end": {
2632                    "line": 30,
2633                    "column": 2,
2634                    "program": "await_complex_promise.ets"
2635                  }
2636                }
2637              },
2638              "loc": {
2639                "start": {
2640                  "line": 28,
2641                  "column": 10,
2642                  "program": "await_complex_promise.ets"
2643                },
2644                "end": {
2645                  "line": 30,
2646                  "column": 2,
2647                  "program": "await_complex_promise.ets"
2648                }
2649              }
2650            },
2651            "overloads": [],
2652            "decorators": [],
2653            "loc": {
2654              "start": {
2655                "line": 28,
2656                "column": 1,
2657                "program": "await_complex_promise.ets"
2658              },
2659              "end": {
2660                "line": 30,
2661                "column": 2,
2662                "program": "await_complex_promise.ets"
2663              }
2664            }
2665          },
2666          {
2667            "type": "MethodDefinition",
2668            "key": {
2669              "type": "Identifier",
2670              "name": "foo5",
2671              "decorators": [],
2672              "loc": {
2673                "start": {
2674                  "line": 33,
2675                  "column": 10,
2676                  "program": "await_complex_promise.ets"
2677                },
2678                "end": {
2679                  "line": 33,
2680                  "column": 14,
2681                  "program": "await_complex_promise.ets"
2682                }
2683              }
2684            },
2685            "kind": "method",
2686            "accessibility": "public",
2687            "static": true,
2688            "optional": false,
2689            "computed": false,
2690            "value": {
2691              "type": "FunctionExpression",
2692              "function": {
2693                "type": "ScriptFunction",
2694                "id": {
2695                  "type": "Identifier",
2696                  "name": "foo5",
2697                  "decorators": [],
2698                  "loc": {
2699                    "start": {
2700                      "line": 33,
2701                      "column": 10,
2702                      "program": "await_complex_promise.ets"
2703                    },
2704                    "end": {
2705                      "line": 33,
2706                      "column": 14,
2707                      "program": "await_complex_promise.ets"
2708                    }
2709                  }
2710                },
2711                "generator": false,
2712                "async": false,
2713                "expression": false,
2714                "params": [
2715                  {
2716                    "type": "ETSParameterExpression",
2717                    "name": {
2718                      "type": "Identifier",
2719                      "name": "p",
2720                      "typeAnnotation": {
2721                        "type": "ETSTypeReference",
2722                        "part": {
2723                          "type": "ETSTypeReferencePart",
2724                          "name": {
2725                            "type": "Identifier",
2726                            "name": "Promise",
2727                            "decorators": [],
2728                            "loc": {
2729                              "start": {
2730                                "line": 33,
2731                                "column": 18,
2732                                "program": "await_complex_promise.ets"
2733                              },
2734                              "end": {
2735                                "line": 33,
2736                                "column": 25,
2737                                "program": "await_complex_promise.ets"
2738                              }
2739                            }
2740                          },
2741                          "typeParams": {
2742                            "type": "TSTypeParameterInstantiation",
2743                            "params": [
2744                              {
2745                                "type": "ETSTypeReference",
2746                                "part": {
2747                                  "type": "ETSTypeReferencePart",
2748                                  "name": {
2749                                    "type": "Identifier",
2750                                    "name": "Alias",
2751                                    "decorators": [],
2752                                    "loc": {
2753                                      "start": {
2754                                        "line": 33,
2755                                        "column": 26,
2756                                        "program": "await_complex_promise.ets"
2757                                      },
2758                                      "end": {
2759                                        "line": 33,
2760                                        "column": 31,
2761                                        "program": "await_complex_promise.ets"
2762                                      }
2763                                    }
2764                                  },
2765                                  "loc": {
2766                                    "start": {
2767                                      "line": 33,
2768                                      "column": 26,
2769                                      "program": "await_complex_promise.ets"
2770                                    },
2771                                    "end": {
2772                                      "line": 33,
2773                                      "column": 32,
2774                                      "program": "await_complex_promise.ets"
2775                                    }
2776                                  }
2777                                },
2778                                "loc": {
2779                                  "start": {
2780                                    "line": 33,
2781                                    "column": 26,
2782                                    "program": "await_complex_promise.ets"
2783                                  },
2784                                  "end": {
2785                                    "line": 33,
2786                                    "column": 32,
2787                                    "program": "await_complex_promise.ets"
2788                                  }
2789                                }
2790                              }
2791                            ],
2792                            "loc": {
2793                              "start": {
2794                                "line": 33,
2795                                "column": 25,
2796                                "program": "await_complex_promise.ets"
2797                              },
2798                              "end": {
2799                                "line": 33,
2800                                "column": 32,
2801                                "program": "await_complex_promise.ets"
2802                              }
2803                            }
2804                          },
2805                          "loc": {
2806                            "start": {
2807                              "line": 33,
2808                              "column": 18,
2809                              "program": "await_complex_promise.ets"
2810                            },
2811                            "end": {
2812                              "line": 33,
2813                              "column": 33,
2814                              "program": "await_complex_promise.ets"
2815                            }
2816                          }
2817                        },
2818                        "loc": {
2819                          "start": {
2820                            "line": 33,
2821                            "column": 18,
2822                            "program": "await_complex_promise.ets"
2823                          },
2824                          "end": {
2825                            "line": 33,
2826                            "column": 33,
2827                            "program": "await_complex_promise.ets"
2828                          }
2829                        }
2830                      },
2831                      "decorators": [],
2832                      "loc": {
2833                        "start": {
2834                          "line": 33,
2835                          "column": 15,
2836                          "program": "await_complex_promise.ets"
2837                        },
2838                        "end": {
2839                          "line": 33,
2840                          "column": 33,
2841                          "program": "await_complex_promise.ets"
2842                        }
2843                      }
2844                    },
2845                    "loc": {
2846                      "start": {
2847                        "line": 33,
2848                        "column": 15,
2849                        "program": "await_complex_promise.ets"
2850                      },
2851                      "end": {
2852                        "line": 33,
2853                        "column": 33,
2854                        "program": "await_complex_promise.ets"
2855                      }
2856                    }
2857                  }
2858                ],
2859                "returnType": {
2860                  "type": "ETSPrimitiveType",
2861                  "loc": {
2862                    "start": {
2863                      "line": 33,
2864                      "column": 35,
2865                      "program": "await_complex_promise.ets"
2866                    },
2867                    "end": {
2868                      "line": 33,
2869                      "column": 39,
2870                      "program": "await_complex_promise.ets"
2871                    }
2872                  }
2873                },
2874                "body": {
2875                  "type": "BlockStatement",
2876                  "statements": [
2877                    {
2878                      "type": "VariableDeclaration",
2879                      "declarations": [
2880                        {
2881                          "type": "VariableDeclarator",
2882                          "id": {
2883                            "type": "Identifier",
2884                            "name": "result",
2885                            "typeAnnotation": {
2886                              "type": "ETSUnionType",
2887                              "types": [
2888                                {
2889                                  "type": "ETSTypeReference",
2890                                  "part": {
2891                                    "type": "ETSTypeReferencePart",
2892                                    "name": {
2893                                      "type": "Identifier",
2894                                      "name": "string",
2895                                      "decorators": [],
2896                                      "loc": {
2897                                        "start": {
2898                                          "line": 34,
2899                                          "column": 17,
2900                                          "program": "await_complex_promise.ets"
2901                                        },
2902                                        "end": {
2903                                          "line": 34,
2904                                          "column": 23,
2905                                          "program": "await_complex_promise.ets"
2906                                        }
2907                                      }
2908                                    },
2909                                    "loc": {
2910                                      "start": {
2911                                        "line": 34,
2912                                        "column": 17,
2913                                        "program": "await_complex_promise.ets"
2914                                      },
2915                                      "end": {
2916                                        "line": 34,
2917                                        "column": 24,
2918                                        "program": "await_complex_promise.ets"
2919                                      }
2920                                    }
2921                                  },
2922                                  "loc": {
2923                                    "start": {
2924                                      "line": 34,
2925                                      "column": 17,
2926                                      "program": "await_complex_promise.ets"
2927                                    },
2928                                    "end": {
2929                                      "line": 34,
2930                                      "column": 24,
2931                                      "program": "await_complex_promise.ets"
2932                                    }
2933                                  }
2934                                },
2935                                {
2936                                  "type": "ETSTypeReference",
2937                                  "part": {
2938                                    "type": "ETSTypeReferencePart",
2939                                    "name": {
2940                                      "type": "Identifier",
2941                                      "name": "number",
2942                                      "decorators": [],
2943                                      "loc": {
2944                                        "start": {
2945                                          "line": 34,
2946                                          "column": 24,
2947                                          "program": "await_complex_promise.ets"
2948                                        },
2949                                        "end": {
2950                                          "line": 34,
2951                                          "column": 30,
2952                                          "program": "await_complex_promise.ets"
2953                                        }
2954                                      }
2955                                    },
2956                                    "loc": {
2957                                      "start": {
2958                                        "line": 34,
2959                                        "column": 24,
2960                                        "program": "await_complex_promise.ets"
2961                                      },
2962                                      "end": {
2963                                        "line": 34,
2964                                        "column": 32,
2965                                        "program": "await_complex_promise.ets"
2966                                      }
2967                                    }
2968                                  },
2969                                  "loc": {
2970                                    "start": {
2971                                      "line": 34,
2972                                      "column": 24,
2973                                      "program": "await_complex_promise.ets"
2974                                    },
2975                                    "end": {
2976                                      "line": 34,
2977                                      "column": 32,
2978                                      "program": "await_complex_promise.ets"
2979                                    }
2980                                  }
2981                                }
2982                              ],
2983                              "loc": {
2984                                "start": {
2985                                  "line": 34,
2986                                  "column": 17,
2987                                  "program": "await_complex_promise.ets"
2988                                },
2989                                "end": {
2990                                  "line": 34,
2991                                  "column": 32,
2992                                  "program": "await_complex_promise.ets"
2993                                }
2994                              }
2995                            },
2996                            "decorators": [],
2997                            "loc": {
2998                              "start": {
2999                                "line": 34,
3000                                "column": 9,
3001                                "program": "await_complex_promise.ets"
3002                              },
3003                              "end": {
3004                                "line": 34,
3005                                "column": 15,
3006                                "program": "await_complex_promise.ets"
3007                              }
3008                            }
3009                          },
3010                          "init": {
3011                            "type": "AwaitExpression",
3012                            "argument": {
3013                              "type": "Identifier",
3014                              "name": "p",
3015                              "decorators": [],
3016                              "loc": {
3017                                "start": {
3018                                  "line": 34,
3019                                  "column": 39,
3020                                  "program": "await_complex_promise.ets"
3021                                },
3022                                "end": {
3023                                  "line": 34,
3024                                  "column": 40,
3025                                  "program": "await_complex_promise.ets"
3026                                }
3027                              }
3028                            },
3029                            "loc": {
3030                              "start": {
3031                                "line": 34,
3032                                "column": 33,
3033                                "program": "await_complex_promise.ets"
3034                              },
3035                              "end": {
3036                                "line": 34,
3037                                "column": 40,
3038                                "program": "await_complex_promise.ets"
3039                              }
3040                            }
3041                          },
3042                          "loc": {
3043                            "start": {
3044                              "line": 34,
3045                              "column": 9,
3046                              "program": "await_complex_promise.ets"
3047                            },
3048                            "end": {
3049                              "line": 34,
3050                              "column": 40,
3051                              "program": "await_complex_promise.ets"
3052                            }
3053                          }
3054                        }
3055                      ],
3056                      "kind": "let",
3057                      "loc": {
3058                        "start": {
3059                          "line": 34,
3060                          "column": 5,
3061                          "program": "await_complex_promise.ets"
3062                        },
3063                        "end": {
3064                          "line": 34,
3065                          "column": 41,
3066                          "program": "await_complex_promise.ets"
3067                        }
3068                      }
3069                    }
3070                  ],
3071                  "loc": {
3072                    "start": {
3073                      "line": 33,
3074                      "column": 40,
3075                      "program": "await_complex_promise.ets"
3076                    },
3077                    "end": {
3078                      "line": 35,
3079                      "column": 2,
3080                      "program": "await_complex_promise.ets"
3081                    }
3082                  }
3083                },
3084                "loc": {
3085                  "start": {
3086                    "line": 33,
3087                    "column": 10,
3088                    "program": "await_complex_promise.ets"
3089                  },
3090                  "end": {
3091                    "line": 35,
3092                    "column": 2,
3093                    "program": "await_complex_promise.ets"
3094                  }
3095                }
3096              },
3097              "loc": {
3098                "start": {
3099                  "line": 33,
3100                  "column": 10,
3101                  "program": "await_complex_promise.ets"
3102                },
3103                "end": {
3104                  "line": 35,
3105                  "column": 2,
3106                  "program": "await_complex_promise.ets"
3107                }
3108              }
3109            },
3110            "overloads": [],
3111            "decorators": [],
3112            "loc": {
3113              "start": {
3114                "line": 33,
3115                "column": 1,
3116                "program": "await_complex_promise.ets"
3117              },
3118              "end": {
3119                "line": 35,
3120                "column": 2,
3121                "program": "await_complex_promise.ets"
3122              }
3123            }
3124          }
3125        ],
3126        "loc": {
3127          "start": {
3128            "line": 1,
3129            "column": 1,
3130            "program": "await_complex_promise.ets"
3131          },
3132          "end": {
3133            "line": 1,
3134            "column": 1,
3135            "program": "await_complex_promise.ets"
3136          }
3137        }
3138      },
3139      "loc": {
3140        "start": {
3141          "line": 1,
3142          "column": 1,
3143          "program": "await_complex_promise.ets"
3144        },
3145        "end": {
3146          "line": 1,
3147          "column": 1,
3148          "program": "await_complex_promise.ets"
3149        }
3150      }
3151    }
3152  ],
3153  "loc": {
3154    "start": {
3155      "line": 1,
3156      "column": 1,
3157      "program": "await_complex_promise.ets"
3158    },
3159    "end": {
3160      "line": 36,
3161      "column": 1,
3162      "program": "await_complex_promise.ets"
3163    }
3164  }
3165}
3166