1{
2  "type": "Program",
3  "statements": [
4    {
5      "type": "TSInterfaceDeclaration",
6      "body": {
7        "type": "TSInterfaceBody",
8        "body": [
9          {
10            "type": "MethodDefinition",
11            "key": {
12              "type": "Identifier",
13              "name": "then",
14              "decorators": [],
15              "loc": {
16                "start": {
17                  "line": 17,
18                  "column": 5
19                },
20                "end": {
21                  "line": 17,
22                  "column": 9
23                }
24              }
25            },
26            "kind": "method",
27            "accessibility": "public",
28            "static": false,
29            "optional": false,
30            "computed": false,
31            "value": {
32              "type": "FunctionExpression",
33              "function": {
34                "type": "ScriptFunction",
35                "id": {
36                  "type": "Identifier",
37                  "name": "then",
38                  "decorators": [],
39                  "loc": {
40                    "start": {
41                      "line": 17,
42                      "column": 5
43                    },
44                    "end": {
45                      "line": 17,
46                      "column": 9
47                    }
48                  }
49                },
50                "generator": false,
51                "async": false,
52                "expression": false,
53                "params": [
54                  {
55                    "type": "ETSParameterExpression",
56                    "name": {
57                      "type": "Identifier",
58                      "name": "onFulfilled",
59                      "typeAnnotation": {
60                        "type": "ETSUnionType",
61                        "types": [
62                          {
63                            "type": "ETSFunctionType",
64                            "params": [
65                              {
66                                "type": "ETSParameterExpression",
67                                "name": {
68                                  "type": "Identifier",
69                                  "name": "value",
70                                  "typeAnnotation": {
71                                    "type": "ETSTypeReference",
72                                    "part": {
73                                      "type": "ETSTypeReferencePart",
74                                      "name": {
75                                        "type": "Identifier",
76                                        "name": "T",
77                                        "decorators": [],
78                                        "loc": {
79                                          "start": {
80                                            "line": 17,
81                                            "column": 46
82                                          },
83                                          "end": {
84                                            "line": 17,
85                                            "column": 47
86                                          }
87                                        }
88                                      },
89                                      "loc": {
90                                        "start": {
91                                          "line": 17,
92                                          "column": 46
93                                        },
94                                        "end": {
95                                          "line": 17,
96                                          "column": 48
97                                        }
98                                      }
99                                    },
100                                    "loc": {
101                                      "start": {
102                                        "line": 17,
103                                        "column": 46
104                                      },
105                                      "end": {
106                                        "line": 17,
107                                        "column": 48
108                                      }
109                                    }
110                                  },
111                                  "decorators": [],
112                                  "loc": {
113                                    "start": {
114                                      "line": 17,
115                                      "column": 39
116                                    },
117                                    "end": {
118                                      "line": 17,
119                                      "column": 48
120                                    }
121                                  }
122                                },
123                                "loc": {
124                                  "start": {
125                                    "line": 17,
126                                    "column": 39
127                                  },
128                                  "end": {
129                                    "line": 17,
130                                    "column": 48
131                                  }
132                                }
133                              }
134                            ],
135                            "returnType": {
136                              "type": "ETSUnionType",
137                              "types": [
138                                {
139                                  "type": "ETSTypeReference",
140                                  "part": {
141                                    "type": "ETSTypeReferencePart",
142                                    "name": {
143                                      "type": "Identifier",
144                                      "name": "U",
145                                      "decorators": [],
146                                      "loc": {
147                                        "start": {
148                                          "line": 17,
149                                          "column": 52
150                                        },
151                                        "end": {
152                                          "line": 17,
153                                          "column": 53
154                                        }
155                                      }
156                                    },
157                                    "loc": {
158                                      "start": {
159                                        "line": 17,
160                                        "column": 52
161                                      },
162                                      "end": {
163                                        "line": 17,
164                                        "column": 54
165                                      }
166                                    }
167                                  },
168                                  "loc": {
169                                    "start": {
170                                      "line": 17,
171                                      "column": 52
172                                    },
173                                    "end": {
174                                      "line": 17,
175                                      "column": 54
176                                    }
177                                  }
178                                },
179                                {
180                                  "type": "ETSTypeReference",
181                                  "part": {
182                                    "type": "ETSTypeReferencePart",
183                                    "name": {
184                                      "type": "Identifier",
185                                      "name": "PL",
186                                      "decorators": [],
187                                      "loc": {
188                                        "start": {
189                                          "line": 17,
190                                          "column": 54
191                                        },
192                                        "end": {
193                                          "line": 17,
194                                          "column": 56
195                                        }
196                                      }
197                                    },
198                                    "typeParams": {
199                                      "type": "TSTypeParameterInstantiation",
200                                      "params": [
201                                        {
202                                          "type": "ETSTypeReference",
203                                          "part": {
204                                            "type": "ETSTypeReferencePart",
205                                            "name": {
206                                              "type": "Identifier",
207                                              "name": "U",
208                                              "decorators": [],
209                                              "loc": {
210                                                "start": {
211                                                  "line": 17,
212                                                  "column": 57
213                                                },
214                                                "end": {
215                                                  "line": 17,
216                                                  "column": 58
217                                                }
218                                              }
219                                            },
220                                            "loc": {
221                                              "start": {
222                                                "line": 17,
223                                                "column": 57
224                                              },
225                                              "end": {
226                                                "line": 17,
227                                                "column": 59
228                                              }
229                                            }
230                                          },
231                                          "loc": {
232                                            "start": {
233                                              "line": 17,
234                                              "column": 57
235                                            },
236                                            "end": {
237                                              "line": 17,
238                                              "column": 59
239                                            }
240                                          }
241                                        }
242                                      ],
243                                      "loc": {
244                                        "start": {
245                                          "line": 17,
246                                          "column": 56
247                                        },
248                                        "end": {
249                                          "line": 17,
250                                          "column": 59
251                                        }
252                                      }
253                                    },
254                                    "loc": {
255                                      "start": {
256                                        "line": 17,
257                                        "column": 54
258                                      },
259                                      "end": {
260                                        "line": 17,
261                                        "column": 66
262                                      }
263                                    }
264                                  },
265                                  "loc": {
266                                    "start": {
267                                      "line": 17,
268                                      "column": 54
269                                    },
270                                    "end": {
271                                      "line": 17,
272                                      "column": 66
273                                    }
274                                  }
275                                }
276                              ],
277                              "loc": {
278                                "start": {
279                                  "line": 17,
280                                  "column": 52
281                                },
282                                "end": {
283                                  "line": 17,
284                                  "column": 66
285                                }
286                              }
287                            }
288                            "throwMarker": "throws",
289                            "loc": {
290                              "start": {
291                                "line": 17,
292                                "column": 38
293                              },
294                              "end": {
295                                "line": 17,
296                                "column": 66
297                              }
298                            }
299                          },
300                          {
301                            "type": "ETSUndefinedType",
302                            "loc": {
303                              "start": {
304                                "line": 17,
305                                "column": 35
306                              },
307                              "end": {
308                                "line": 17,
309                                "column": 36
310                              }
311                            }
312                          }
313                        ],
314                        "loc": {
315                          "start": {
316                            "line": 17,
317                            "column": 38
318                          },
319                          "end": {
320                            "line": 17,
321                            "column": 66
322                          }
323                        }
324                      },
325                      "decorators": [],
326                      "loc": {
327                        "start": {
328                          "line": 17,
329                          "column": 24
330                        },
331                        "end": {
332                          "line": 17,
333                          "column": 66
334                        }
335                      }
336                    },
337                    "loc": {
338                      "start": {
339                        "line": 17,
340                        "column": 24
341                      },
342                      "end": {
343                        "line": 17,
344                        "column": 66
345                      }
346                    }
347                  },
348                  {
349                    "type": "ETSParameterExpression",
350                    "name": {
351                      "type": "Identifier",
352                      "name": "onRejected",
353                      "typeAnnotation": {
354                        "type": "ETSUnionType",
355                        "types": [
356                          {
357                            "type": "ETSFunctionType",
358                            "params": [
359                              {
360                                "type": "ETSParameterExpression",
361                                "name": {
362                                  "type": "Identifier",
363                                  "name": "error",
364                                  "typeAnnotation": {
365                                    "type": "ETSTypeReference",
366                                    "part": {
367                                      "type": "ETSTypeReferencePart",
368                                      "name": {
369                                        "type": "Identifier",
370                                        "name": "NullishType",
371                                        "decorators": [],
372                                        "loc": {
373                                          "start": {
374                                            "line": 18,
375                                            "column": 34
376                                          },
377                                          "end": {
378                                            "line": 18,
379                                            "column": 45
380                                          }
381                                        }
382                                      },
383                                      "loc": {
384                                        "start": {
385                                          "line": 18,
386                                          "column": 34
387                                        },
388                                        "end": {
389                                          "line": 18,
390                                          "column": 46
391                                        }
392                                      }
393                                    },
394                                    "loc": {
395                                      "start": {
396                                        "line": 18,
397                                        "column": 34
398                                      },
399                                      "end": {
400                                        "line": 18,
401                                        "column": 46
402                                      }
403                                    }
404                                  },
405                                  "decorators": [],
406                                  "loc": {
407                                    "start": {
408                                      "line": 18,
409                                      "column": 27
410                                    },
411                                    "end": {
412                                      "line": 18,
413                                      "column": 46
414                                    }
415                                  }
416                                },
417                                "loc": {
418                                  "start": {
419                                    "line": 18,
420                                    "column": 27
421                                  },
422                                  "end": {
423                                    "line": 18,
424                                    "column": 46
425                                  }
426                                }
427                              }
428                            ],
429                            "returnType": {
430                              "type": "ETSUnionType",
431                              "types": [
432                                {
433                                  "type": "ETSTypeReference",
434                                  "part": {
435                                    "type": "ETSTypeReferencePart",
436                                    "name": {
437                                      "type": "Identifier",
438                                      "name": "E",
439                                      "decorators": [],
440                                      "loc": {
441                                        "start": {
442                                          "line": 18,
443                                          "column": 50
444                                        },
445                                        "end": {
446                                          "line": 18,
447                                          "column": 51
448                                        }
449                                      }
450                                    },
451                                    "loc": {
452                                      "start": {
453                                        "line": 18,
454                                        "column": 50
455                                      },
456                                      "end": {
457                                        "line": 18,
458                                        "column": 52
459                                      }
460                                    }
461                                  },
462                                  "loc": {
463                                    "start": {
464                                      "line": 18,
465                                      "column": 50
466                                    },
467                                    "end": {
468                                      "line": 18,
469                                      "column": 52
470                                    }
471                                  }
472                                },
473                                {
474                                  "type": "ETSTypeReference",
475                                  "part": {
476                                    "type": "ETSTypeReferencePart",
477                                    "name": {
478                                      "type": "Identifier",
479                                      "name": "PL",
480                                      "decorators": [],
481                                      "loc": {
482                                        "start": {
483                                          "line": 18,
484                                          "column": 52
485                                        },
486                                        "end": {
487                                          "line": 18,
488                                          "column": 54
489                                        }
490                                      }
491                                    },
492                                    "typeParams": {
493                                      "type": "TSTypeParameterInstantiation",
494                                      "params": [
495                                        {
496                                          "type": "ETSTypeReference",
497                                          "part": {
498                                            "type": "ETSTypeReferencePart",
499                                            "name": {
500                                              "type": "Identifier",
501                                              "name": "E",
502                                              "decorators": [],
503                                              "loc": {
504                                                "start": {
505                                                  "line": 18,
506                                                  "column": 55
507                                                },
508                                                "end": {
509                                                  "line": 18,
510                                                  "column": 56
511                                                }
512                                              }
513                                            },
514                                            "loc": {
515                                              "start": {
516                                                "line": 18,
517                                                "column": 55
518                                              },
519                                              "end": {
520                                                "line": 18,
521                                                "column": 57
522                                              }
523                                            }
524                                          },
525                                          "loc": {
526                                            "start": {
527                                              "line": 18,
528                                              "column": 55
529                                            },
530                                            "end": {
531                                              "line": 18,
532                                              "column": 57
533                                            }
534                                          }
535                                        }
536                                      ],
537                                      "loc": {
538                                        "start": {
539                                          "line": 18,
540                                          "column": 54
541                                        },
542                                        "end": {
543                                          "line": 18,
544                                          "column": 57
545                                        }
546                                      }
547                                    },
548                                    "loc": {
549                                      "start": {
550                                        "line": 18,
551                                        "column": 52
552                                      },
553                                      "end": {
554                                        "line": 18,
555                                        "column": 64
556                                      }
557                                    }
558                                  },
559                                  "loc": {
560                                    "start": {
561                                      "line": 18,
562                                      "column": 52
563                                    },
564                                    "end": {
565                                      "line": 18,
566                                      "column": 64
567                                    }
568                                  }
569                                }
570                              ],
571                              "loc": {
572                                "start": {
573                                  "line": 18,
574                                  "column": 50
575                                },
576                                "end": {
577                                  "line": 18,
578                                  "column": 64
579                                }
580                              }
581                            }
582                            "throwMarker": "throws",
583                            "loc": {
584                              "start": {
585                                "line": 18,
586                                "column": 26
587                              },
588                              "end": {
589                                "line": 18,
590                                "column": 64
591                              }
592                            }
593                          },
594                          {
595                            "type": "ETSUndefinedType",
596                            "loc": {
597                              "start": {
598                                "line": 18,
599                                "column": 23
600                              },
601                              "end": {
602                                "line": 18,
603                                "column": 24
604                              }
605                            }
606                          }
607                        ],
608                        "loc": {
609                          "start": {
610                            "line": 18,
611                            "column": 26
612                          },
613                          "end": {
614                            "line": 18,
615                            "column": 64
616                          }
617                        }
618                      },
619                      "decorators": [],
620                      "loc": {
621                        "start": {
622                          "line": 18,
623                          "column": 13
624                        },
625                        "end": {
626                          "line": 18,
627                          "column": 64
628                        }
629                      }
630                    },
631                    "loc": {
632                      "start": {
633                        "line": 18,
634                        "column": 13
635                      },
636                      "end": {
637                        "line": 18,
638                        "column": 64
639                      }
640                    }
641                  }
642                ],
643                "returnType": {
644                  "type": "ETSTypeReference",
645                  "part": {
646                    "type": "ETSTypeReferencePart",
647                    "name": {
648                      "type": "Identifier",
649                      "name": "PL",
650                      "decorators": [],
651                      "loc": {
652                        "start": {
653                          "line": 18,
654                          "column": 67
655                        },
656                        "end": {
657                          "line": 18,
658                          "column": 69
659                        }
660                      }
661                    },
662                    "typeParams": {
663                      "type": "TSTypeParameterInstantiation",
664                      "params": [
665                        {
666                          "type": "ETSUnionType",
667                          "types": [
668                            {
669                              "type": "ETSTypeReference",
670                              "part": {
671                                "type": "ETSTypeReferencePart",
672                                "name": {
673                                  "type": "Identifier",
674                                  "name": "U",
675                                  "decorators": [],
676                                  "loc": {
677                                    "start": {
678                                      "line": 18,
679                                      "column": 70
680                                    },
681                                    "end": {
682                                      "line": 18,
683                                      "column": 71
684                                    }
685                                  }
686                                },
687                                "loc": {
688                                  "start": {
689                                    "line": 18,
690                                    "column": 70
691                                  },
692                                  "end": {
693                                    "line": 18,
694                                    "column": 72
695                                  }
696                                }
697                              },
698                              "loc": {
699                                "start": {
700                                  "line": 18,
701                                  "column": 70
702                                },
703                                "end": {
704                                  "line": 18,
705                                  "column": 72
706                                }
707                              }
708                            },
709                            {
710                              "type": "ETSTypeReference",
711                              "part": {
712                                "type": "ETSTypeReferencePart",
713                                "name": {
714                                  "type": "Identifier",
715                                  "name": "E",
716                                  "decorators": [],
717                                  "loc": {
718                                    "start": {
719                                      "line": 18,
720                                      "column": 72
721                                    },
722                                    "end": {
723                                      "line": 18,
724                                      "column": 73
725                                    }
726                                  }
727                                },
728                                "loc": {
729                                  "start": {
730                                    "line": 18,
731                                    "column": 72
732                                  },
733                                  "end": {
734                                    "line": 18,
735                                    "column": 74
736                                  }
737                                }
738                              },
739                              "loc": {
740                                "start": {
741                                  "line": 18,
742                                  "column": 72
743                                },
744                                "end": {
745                                  "line": 18,
746                                  "column": 74
747                                }
748                              }
749                            }
750                          ],
751                          "loc": {
752                            "start": {
753                              "line": 18,
754                              "column": 70
755                            },
756                            "end": {
757                              "line": 18,
758                              "column": 74
759                            }
760                          }
761                        }
762                      ],
763                      "loc": {
764                        "start": {
765                          "line": 18,
766                          "column": 69
767                        },
768                        "end": {
769                          "line": 18,
770                          "column": 74
771                        }
772                      }
773                    },
774                    "loc": {
775                      "start": {
776                        "line": 18,
777                        "column": 67
778                      },
779                      "end": {
780                        "line": 18,
781                        "column": 75
782                      }
783                    }
784                  },
785                  "loc": {
786                    "start": {
787                      "line": 18,
788                      "column": 67
789                    },
790                    "end": {
791                      "line": 18,
792                      "column": 75
793                    }
794                  }
795                },
796                "typeParameters": {
797                  "type": "TSTypeParameterDeclaration",
798                  "params": [
799                    {
800                      "type": "TSTypeParameter",
801                      "name": {
802                        "type": "Identifier",
803                        "name": "U",
804                        "decorators": [],
805                        "loc": {
806                          "start": {
807                            "line": 17,
808                            "column": 10
809                          },
810                          "end": {
811                            "line": 17,
812                            "column": 11
813                          }
814                        }
815                      },
816                      "loc": {
817                        "start": {
818                          "line": 17,
819                          "column": 10
820                        },
821                        "end": {
822                          "line": 17,
823                          "column": 12
824                        }
825                      }
826                    },
827                    {
828                      "type": "TSTypeParameter",
829                      "name": {
830                        "type": "Identifier",
831                        "name": "E",
832                        "decorators": [],
833                        "loc": {
834                          "start": {
835                            "line": 17,
836                            "column": 13
837                          },
838                          "end": {
839                            "line": 17,
840                            "column": 14
841                          }
842                        }
843                      },
844                      "default": {
845                        "type": "ETSTypeReference",
846                        "part": {
847                          "type": "ETSTypeReferencePart",
848                          "name": {
849                            "type": "Identifier",
850                            "name": "never",
851                            "decorators": [],
852                            "loc": {
853                              "start": {
854                                "line": 17,
855                                "column": 17
856                              },
857                              "end": {
858                                "line": 17,
859                                "column": 22
860                              }
861                            }
862                          },
863                          "loc": {
864                            "start": {
865                              "line": 17,
866                              "column": 17
867                            },
868                            "end": {
869                              "line": 17,
870                              "column": 23
871                            }
872                          }
873                        },
874                        "loc": {
875                          "start": {
876                            "line": 17,
877                            "column": 17
878                          },
879                          "end": {
880                            "line": 17,
881                            "column": 23
882                          }
883                        }
884                      },
885                      "loc": {
886                        "start": {
887                          "line": 17,
888                          "column": 13
889                        },
890                        "end": {
891                          "line": 17,
892                          "column": 23
893                        }
894                      }
895                    }
896                  ],
897                  "loc": {
898                    "start": {
899                      "line": 17,
900                      "column": 9
901                    },
902                    "end": {
903                      "line": 17,
904                      "column": 23
905                    }
906                  }
907                },
908                "declare": true,
909                "loc": {
910                  "start": {
911                    "line": 17,
912                    "column": 9
913                  },
914                  "end": {
915                    "line": 18,
916                    "column": 75
917                  }
918                }
919              },
920              "loc": {
921                "start": {
922                  "line": 17,
923                  "column": 9
924                },
925                "end": {
926                  "line": 18,
927                  "column": 75
928                }
929              }
930            },
931            "overloads": [
932              {
933                "type": "MethodDefinition",
934                "key": {
935                  "type": "Identifier",
936                  "name": "then",
937                  "decorators": [],
938                  "loc": {
939                    "start": {
940                      "line": 17,
941                      "column": 5
942                    },
943                    "end": {
944                      "line": 17,
945                      "column": 9
946                    }
947                  }
948                },
949                "kind": "method",
950                "accessibility": "public",
951                "static": false,
952                "optional": false,
953                "computed": false,
954                "value": {
955                  "type": "FunctionExpression",
956                  "function": {
957                    "type": "ScriptFunction",
958                    "id": {
959                      "type": "Identifier",
960                      "name": "then",
961                      "decorators": [],
962                      "loc": {
963                        "start": {
964                          "line": 17,
965                          "column": 5
966                        },
967                        "end": {
968                          "line": 17,
969                          "column": 9
970                        }
971                      }
972                    },
973                    "generator": false,
974                    "async": false,
975                    "expression": false,
976                    "params": [
977                      {
978                        "type": "ETSParameterExpression",
979                        "name": {
980                          "type": "Identifier",
981                          "name": "onFulfilled",
982                          "typeAnnotation": {
983                            "type": "ETSUnionType",
984                            "types": [
985                              {
986                                "type": "ETSFunctionType",
987                                "params": [
988                                  {
989                                    "type": "ETSParameterExpression",
990                                    "name": {
991                                      "type": "Identifier",
992                                      "name": "value",
993                                      "typeAnnotation": {
994                                        "type": "ETSTypeReference",
995                                        "part": {
996                                          "type": "ETSTypeReferencePart",
997                                          "name": {
998                                            "type": "Identifier",
999                                            "name": "T",
1000                                            "decorators": [],
1001                                            "loc": {
1002                                              "start": {
1003                                                "line": 17,
1004                                                "column": 46
1005                                              },
1006                                              "end": {
1007                                                "line": 17,
1008                                                "column": 47
1009                                              }
1010                                            }
1011                                          },
1012                                          "loc": {
1013                                            "start": {
1014                                              "line": 17,
1015                                              "column": 46
1016                                            },
1017                                            "end": {
1018                                              "line": 17,
1019                                              "column": 48
1020                                            }
1021                                          }
1022                                        },
1023                                        "loc": {
1024                                          "start": {
1025                                            "line": 17,
1026                                            "column": 46
1027                                          },
1028                                          "end": {
1029                                            "line": 17,
1030                                            "column": 48
1031                                          }
1032                                        }
1033                                      },
1034                                      "decorators": [],
1035                                      "loc": {
1036                                        "start": {
1037                                          "line": 17,
1038                                          "column": 39
1039                                        },
1040                                        "end": {
1041                                          "line": 17,
1042                                          "column": 48
1043                                        }
1044                                      }
1045                                    },
1046                                    "loc": {
1047                                      "start": {
1048                                        "line": 1,
1049                                        "column": 1
1050                                      },
1051                                      "end": {
1052                                        "line": 1,
1053                                        "column": 1
1054                                      }
1055                                    }
1056                                  }
1057                                ],
1058                                "returnType": {
1059                                  "type": "ETSUnionType",
1060                                  "types": [
1061                                    {
1062                                      "type": "ETSTypeReference",
1063                                      "part": {
1064                                        "type": "ETSTypeReferencePart",
1065                                        "name": {
1066                                          "type": "Identifier",
1067                                          "name": "U",
1068                                          "decorators": [],
1069                                          "loc": {
1070                                            "start": {
1071                                              "line": 17,
1072                                              "column": 52
1073                                            },
1074                                            "end": {
1075                                              "line": 17,
1076                                              "column": 53
1077                                            }
1078                                          }
1079                                        },
1080                                        "loc": {
1081                                          "start": {
1082                                            "line": 17,
1083                                            "column": 52
1084                                          },
1085                                          "end": {
1086                                            "line": 17,
1087                                            "column": 54
1088                                          }
1089                                        }
1090                                      },
1091                                      "loc": {
1092                                        "start": {
1093                                          "line": 17,
1094                                          "column": 52
1095                                        },
1096                                        "end": {
1097                                          "line": 17,
1098                                          "column": 54
1099                                        }
1100                                      }
1101                                    },
1102                                    {
1103                                      "type": "ETSTypeReference",
1104                                      "part": {
1105                                        "type": "ETSTypeReferencePart",
1106                                        "name": {
1107                                          "type": "Identifier",
1108                                          "name": "PL",
1109                                          "decorators": [],
1110                                          "loc": {
1111                                            "start": {
1112                                              "line": 17,
1113                                              "column": 54
1114                                            },
1115                                            "end": {
1116                                              "line": 17,
1117                                              "column": 56
1118                                            }
1119                                          }
1120                                        },
1121                                        "typeParams": {
1122                                          "type": "TSTypeParameterInstantiation",
1123                                          "params": [
1124                                            {
1125                                              "type": "ETSTypeReference",
1126                                              "part": {
1127                                                "type": "ETSTypeReferencePart",
1128                                                "name": {
1129                                                  "type": "Identifier",
1130                                                  "name": "U",
1131                                                  "decorators": [],
1132                                                  "loc": {
1133                                                    "start": {
1134                                                      "line": 17,
1135                                                      "column": 57
1136                                                    },
1137                                                    "end": {
1138                                                      "line": 17,
1139                                                      "column": 58
1140                                                    }
1141                                                  }
1142                                                },
1143                                                "loc": {
1144                                                  "start": {
1145                                                    "line": 17,
1146                                                    "column": 57
1147                                                  },
1148                                                  "end": {
1149                                                    "line": 17,
1150                                                    "column": 59
1151                                                  }
1152                                                }
1153                                              },
1154                                              "loc": {
1155                                                "start": {
1156                                                  "line": 17,
1157                                                  "column": 57
1158                                                },
1159                                                "end": {
1160                                                  "line": 17,
1161                                                  "column": 59
1162                                                }
1163                                              }
1164                                            }
1165                                          ],
1166                                          "loc": {
1167                                            "start": {
1168                                              "line": 17,
1169                                              "column": 56
1170                                            },
1171                                            "end": {
1172                                              "line": 17,
1173                                              "column": 59
1174                                            }
1175                                          }
1176                                        },
1177                                        "loc": {
1178                                          "start": {
1179                                            "line": 17,
1180                                            "column": 54
1181                                          },
1182                                          "end": {
1183                                            "line": 17,
1184                                            "column": 66
1185                                          }
1186                                        }
1187                                      },
1188                                      "loc": {
1189                                        "start": {
1190                                          "line": 17,
1191                                          "column": 54
1192                                        },
1193                                        "end": {
1194                                          "line": 17,
1195                                          "column": 66
1196                                        }
1197                                      }
1198                                    }
1199                                  ],
1200                                  "loc": {
1201                                    "start": {
1202                                      "line": 1,
1203                                      "column": 1
1204                                    },
1205                                    "end": {
1206                                      "line": 1,
1207                                      "column": 1
1208                                    }
1209                                  }
1210                                }
1211                                "throwMarker": "throws",
1212                                "loc": {
1213                                  "start": {
1214                                    "line": 1,
1215                                    "column": 1
1216                                  },
1217                                  "end": {
1218                                    "line": 1,
1219                                    "column": 1
1220                                  }
1221                                }
1222                              },
1223                              {
1224                                "type": "ETSUndefinedType",
1225                                "loc": {
1226                                  "start": {
1227                                    "line": 1,
1228                                    "column": 1
1229                                  },
1230                                  "end": {
1231                                    "line": 1,
1232                                    "column": 1
1233                                  }
1234                                }
1235                              }
1236                            ],
1237                            "loc": {
1238                              "start": {
1239                                "line": 1,
1240                                "column": 1
1241                              },
1242                              "end": {
1243                                "line": 1,
1244                                "column": 1
1245                              }
1246                            }
1247                          },
1248                          "decorators": [],
1249                          "loc": {
1250                            "start": {
1251                              "line": 17,
1252                              "column": 24
1253                            },
1254                            "end": {
1255                              "line": 17,
1256                              "column": 66
1257                            }
1258                          }
1259                        },
1260                        "loc": {
1261                          "start": {
1262                            "line": 1,
1263                            "column": 1
1264                          },
1265                          "end": {
1266                            "line": 1,
1267                            "column": 1
1268                          }
1269                        }
1270                      }
1271                    ],
1272                    "returnType": {
1273                      "type": "ETSTypeReference",
1274                      "part": {
1275                        "type": "ETSTypeReferencePart",
1276                        "name": {
1277                          "type": "Identifier",
1278                          "name": "PL",
1279                          "decorators": [],
1280                          "loc": {
1281                            "start": {
1282                              "line": 18,
1283                              "column": 67
1284                            },
1285                            "end": {
1286                              "line": 18,
1287                              "column": 69
1288                            }
1289                          }
1290                        },
1291                        "typeParams": {
1292                          "type": "TSTypeParameterInstantiation",
1293                          "params": [
1294                            {
1295                              "type": "ETSUnionType",
1296                              "types": [
1297                                {
1298                                  "type": "ETSTypeReference",
1299                                  "part": {
1300                                    "type": "ETSTypeReferencePart",
1301                                    "name": {
1302                                      "type": "Identifier",
1303                                      "name": "U",
1304                                      "decorators": [],
1305                                      "loc": {
1306                                        "start": {
1307                                          "line": 18,
1308                                          "column": 70
1309                                        },
1310                                        "end": {
1311                                          "line": 18,
1312                                          "column": 71
1313                                        }
1314                                      }
1315                                    },
1316                                    "loc": {
1317                                      "start": {
1318                                        "line": 18,
1319                                        "column": 70
1320                                      },
1321                                      "end": {
1322                                        "line": 18,
1323                                        "column": 72
1324                                      }
1325                                    }
1326                                  },
1327                                  "loc": {
1328                                    "start": {
1329                                      "line": 18,
1330                                      "column": 70
1331                                    },
1332                                    "end": {
1333                                      "line": 18,
1334                                      "column": 72
1335                                    }
1336                                  }
1337                                },
1338                                {
1339                                  "type": "ETSTypeReference",
1340                                  "part": {
1341                                    "type": "ETSTypeReferencePart",
1342                                    "name": {
1343                                      "type": "Identifier",
1344                                      "name": "E",
1345                                      "decorators": [],
1346                                      "loc": {
1347                                        "start": {
1348                                          "line": 18,
1349                                          "column": 72
1350                                        },
1351                                        "end": {
1352                                          "line": 18,
1353                                          "column": 73
1354                                        }
1355                                      }
1356                                    },
1357                                    "loc": {
1358                                      "start": {
1359                                        "line": 18,
1360                                        "column": 72
1361                                      },
1362                                      "end": {
1363                                        "line": 18,
1364                                        "column": 74
1365                                      }
1366                                    }
1367                                  },
1368                                  "loc": {
1369                                    "start": {
1370                                      "line": 18,
1371                                      "column": 72
1372                                    },
1373                                    "end": {
1374                                      "line": 18,
1375                                      "column": 74
1376                                    }
1377                                  }
1378                                }
1379                              ],
1380                              "loc": {
1381                                "start": {
1382                                  "line": 1,
1383                                  "column": 1
1384                                },
1385                                "end": {
1386                                  "line": 1,
1387                                  "column": 1
1388                                }
1389                              }
1390                            }
1391                          ],
1392                          "loc": {
1393                            "start": {
1394                              "line": 18,
1395                              "column": 69
1396                            },
1397                            "end": {
1398                              "line": 18,
1399                              "column": 74
1400                            }
1401                          }
1402                        },
1403                        "loc": {
1404                          "start": {
1405                            "line": 18,
1406                            "column": 67
1407                          },
1408                          "end": {
1409                            "line": 18,
1410                            "column": 75
1411                          }
1412                        }
1413                      },
1414                      "loc": {
1415                        "start": {
1416                          "line": 18,
1417                          "column": 67
1418                        },
1419                        "end": {
1420                          "line": 18,
1421                          "column": 75
1422                        }
1423                      }
1424                    },
1425                    "typeParameters": {
1426                      "type": "TSTypeParameterDeclaration",
1427                      "params": [
1428                        {
1429                          "type": "TSTypeParameter",
1430                          "name": {
1431                            "type": "Identifier",
1432                            "name": "U",
1433                            "decorators": [],
1434                            "loc": {
1435                              "start": {
1436                                "line": 17,
1437                                "column": 10
1438                              },
1439                              "end": {
1440                                "line": 17,
1441                                "column": 11
1442                              }
1443                            }
1444                          },
1445                          "loc": {
1446                            "start": {
1447                              "line": 1,
1448                              "column": 1
1449                            },
1450                            "end": {
1451                              "line": 1,
1452                              "column": 1
1453                            }
1454                          }
1455                        },
1456                        {
1457                          "type": "TSTypeParameter",
1458                          "name": {
1459                            "type": "Identifier",
1460                            "name": "E",
1461                            "decorators": [],
1462                            "loc": {
1463                              "start": {
1464                                "line": 17,
1465                                "column": 13
1466                              },
1467                              "end": {
1468                                "line": 17,
1469                                "column": 14
1470                              }
1471                            }
1472                          },
1473                          "default": {
1474                            "type": "ETSTypeReference",
1475                            "part": {
1476                              "type": "ETSTypeReferencePart",
1477                              "name": {
1478                                "type": "Identifier",
1479                                "name": "never",
1480                                "decorators": [],
1481                                "loc": {
1482                                  "start": {
1483                                    "line": 17,
1484                                    "column": 17
1485                                  },
1486                                  "end": {
1487                                    "line": 17,
1488                                    "column": 22
1489                                  }
1490                                }
1491                              },
1492                              "loc": {
1493                                "start": {
1494                                  "line": 17,
1495                                  "column": 17
1496                                },
1497                                "end": {
1498                                  "line": 17,
1499                                  "column": 23
1500                                }
1501                              }
1502                            },
1503                            "loc": {
1504                              "start": {
1505                                "line": 17,
1506                                "column": 17
1507                              },
1508                              "end": {
1509                                "line": 17,
1510                                "column": 23
1511                              }
1512                            }
1513                          },
1514                          "loc": {
1515                            "start": {
1516                              "line": 1,
1517                              "column": 1
1518                            },
1519                            "end": {
1520                              "line": 1,
1521                              "column": 1
1522                            }
1523                          }
1524                        }
1525                      ],
1526                      "loc": {
1527                        "start": {
1528                          "line": 1,
1529                          "column": 1
1530                        },
1531                        "end": {
1532                          "line": 1,
1533                          "column": 1
1534                        }
1535                      }
1536                    },
1537                    "body": {
1538                      "type": "BlockStatement",
1539                      "statements": [],
1540                      "loc": {
1541                        "start": {
1542                          "line": 1,
1543                          "column": 1
1544                        },
1545                        "end": {
1546                          "line": 1,
1547                          "column": 1
1548                        }
1549                      }
1550                    },
1551                    "loc": {
1552                      "start": {
1553                        "line": 628,
1554                        "column": 1
1555                      },
1556                      "end": {
1557                        "line": 628,
1558                        "column": 1
1559                      }
1560                    }
1561                  },
1562                  "loc": {
1563                    "start": {
1564                      "line": 1,
1565                      "column": 1
1566                    },
1567                    "end": {
1568                      "line": 1,
1569                      "column": 1
1570                    }
1571                  }
1572                },
1573                "overloads": [],
1574                "decorators": [],
1575                "loc": {
1576                  "start": {
1577                    "line": 17,
1578                    "column": 5
1579                  },
1580                  "end": {
1581                    "line": 1,
1582                    "column": 1
1583                  }
1584                }
1585              },
1586              {
1587                "type": "MethodDefinition",
1588                "key": {
1589                  "type": "Identifier",
1590                  "name": "then",
1591                  "decorators": [],
1592                  "loc": {
1593                    "start": {
1594                      "line": 17,
1595                      "column": 5
1596                    },
1597                    "end": {
1598                      "line": 17,
1599                      "column": 9
1600                    }
1601                  }
1602                },
1603                "kind": "method",
1604                "accessibility": "public",
1605                "static": false,
1606                "optional": false,
1607                "computed": false,
1608                "value": {
1609                  "type": "FunctionExpression",
1610                  "function": {
1611                    "type": "ScriptFunction",
1612                    "id": {
1613                      "type": "Identifier",
1614                      "name": "then",
1615                      "decorators": [],
1616                      "loc": {
1617                        "start": {
1618                          "line": 17,
1619                          "column": 5
1620                        },
1621                        "end": {
1622                          "line": 17,
1623                          "column": 9
1624                        }
1625                      }
1626                    },
1627                    "generator": false,
1628                    "async": false,
1629                    "expression": false,
1630                    "params": [],
1631                    "returnType": {
1632                      "type": "ETSTypeReference",
1633                      "part": {
1634                        "type": "ETSTypeReferencePart",
1635                        "name": {
1636                          "type": "Identifier",
1637                          "name": "PL",
1638                          "decorators": [],
1639                          "loc": {
1640                            "start": {
1641                              "line": 18,
1642                              "column": 67
1643                            },
1644                            "end": {
1645                              "line": 18,
1646                              "column": 69
1647                            }
1648                          }
1649                        },
1650                        "typeParams": {
1651                          "type": "TSTypeParameterInstantiation",
1652                          "params": [
1653                            {
1654                              "type": "ETSUnionType",
1655                              "types": [
1656                                {
1657                                  "type": "ETSTypeReference",
1658                                  "part": {
1659                                    "type": "ETSTypeReferencePart",
1660                                    "name": {
1661                                      "type": "Identifier",
1662                                      "name": "U",
1663                                      "decorators": [],
1664                                      "loc": {
1665                                        "start": {
1666                                          "line": 18,
1667                                          "column": 70
1668                                        },
1669                                        "end": {
1670                                          "line": 18,
1671                                          "column": 71
1672                                        }
1673                                      }
1674                                    },
1675                                    "loc": {
1676                                      "start": {
1677                                        "line": 18,
1678                                        "column": 70
1679                                      },
1680                                      "end": {
1681                                        "line": 18,
1682                                        "column": 72
1683                                      }
1684                                    }
1685                                  },
1686                                  "loc": {
1687                                    "start": {
1688                                      "line": 18,
1689                                      "column": 70
1690                                    },
1691                                    "end": {
1692                                      "line": 18,
1693                                      "column": 72
1694                                    }
1695                                  }
1696                                },
1697                                {
1698                                  "type": "ETSTypeReference",
1699                                  "part": {
1700                                    "type": "ETSTypeReferencePart",
1701                                    "name": {
1702                                      "type": "Identifier",
1703                                      "name": "E",
1704                                      "decorators": [],
1705                                      "loc": {
1706                                        "start": {
1707                                          "line": 18,
1708                                          "column": 72
1709                                        },
1710                                        "end": {
1711                                          "line": 18,
1712                                          "column": 73
1713                                        }
1714                                      }
1715                                    },
1716                                    "loc": {
1717                                      "start": {
1718                                        "line": 18,
1719                                        "column": 72
1720                                      },
1721                                      "end": {
1722                                        "line": 18,
1723                                        "column": 74
1724                                      }
1725                                    }
1726                                  },
1727                                  "loc": {
1728                                    "start": {
1729                                      "line": 18,
1730                                      "column": 72
1731                                    },
1732                                    "end": {
1733                                      "line": 18,
1734                                      "column": 74
1735                                    }
1736                                  }
1737                                }
1738                              ],
1739                              "loc": {
1740                                "start": {
1741                                  "line": 1,
1742                                  "column": 1
1743                                },
1744                                "end": {
1745                                  "line": 1,
1746                                  "column": 1
1747                                }
1748                              }
1749                            }
1750                          ],
1751                          "loc": {
1752                            "start": {
1753                              "line": 18,
1754                              "column": 69
1755                            },
1756                            "end": {
1757                              "line": 18,
1758                              "column": 74
1759                            }
1760                          }
1761                        },
1762                        "loc": {
1763                          "start": {
1764                            "line": 18,
1765                            "column": 67
1766                          },
1767                          "end": {
1768                            "line": 18,
1769                            "column": 75
1770                          }
1771                        }
1772                      },
1773                      "loc": {
1774                        "start": {
1775                          "line": 18,
1776                          "column": 67
1777                        },
1778                        "end": {
1779                          "line": 18,
1780                          "column": 75
1781                        }
1782                      }
1783                    },
1784                    "typeParameters": {
1785                      "type": "TSTypeParameterDeclaration",
1786                      "params": [
1787                        {
1788                          "type": "TSTypeParameter",
1789                          "name": {
1790                            "type": "Identifier",
1791                            "name": "U",
1792                            "decorators": [],
1793                            "loc": {
1794                              "start": {
1795                                "line": 17,
1796                                "column": 10
1797                              },
1798                              "end": {
1799                                "line": 17,
1800                                "column": 11
1801                              }
1802                            }
1803                          },
1804                          "loc": {
1805                            "start": {
1806                              "line": 1,
1807                              "column": 1
1808                            },
1809                            "end": {
1810                              "line": 1,
1811                              "column": 1
1812                            }
1813                          }
1814                        },
1815                        {
1816                          "type": "TSTypeParameter",
1817                          "name": {
1818                            "type": "Identifier",
1819                            "name": "E",
1820                            "decorators": [],
1821                            "loc": {
1822                              "start": {
1823                                "line": 17,
1824                                "column": 13
1825                              },
1826                              "end": {
1827                                "line": 17,
1828                                "column": 14
1829                              }
1830                            }
1831                          },
1832                          "default": {
1833                            "type": "ETSTypeReference",
1834                            "part": {
1835                              "type": "ETSTypeReferencePart",
1836                              "name": {
1837                                "type": "Identifier",
1838                                "name": "never",
1839                                "decorators": [],
1840                                "loc": {
1841                                  "start": {
1842                                    "line": 17,
1843                                    "column": 17
1844                                  },
1845                                  "end": {
1846                                    "line": 17,
1847                                    "column": 22
1848                                  }
1849                                }
1850                              },
1851                              "loc": {
1852                                "start": {
1853                                  "line": 17,
1854                                  "column": 17
1855                                },
1856                                "end": {
1857                                  "line": 17,
1858                                  "column": 23
1859                                }
1860                              }
1861                            },
1862                            "loc": {
1863                              "start": {
1864                                "line": 17,
1865                                "column": 17
1866                              },
1867                              "end": {
1868                                "line": 17,
1869                                "column": 23
1870                              }
1871                            }
1872                          },
1873                          "loc": {
1874                            "start": {
1875                              "line": 1,
1876                              "column": 1
1877                            },
1878                            "end": {
1879                              "line": 1,
1880                              "column": 1
1881                            }
1882                          }
1883                        }
1884                      ],
1885                      "loc": {
1886                        "start": {
1887                          "line": 1,
1888                          "column": 1
1889                        },
1890                        "end": {
1891                          "line": 1,
1892                          "column": 1
1893                        }
1894                      }
1895                    },
1896                    "body": {
1897                      "type": "BlockStatement",
1898                      "statements": [],
1899                      "loc": {
1900                        "start": {
1901                          "line": 1,
1902                          "column": 1
1903                        },
1904                        "end": {
1905                          "line": 1,
1906                          "column": 1
1907                        }
1908                      }
1909                    },
1910                    "loc": {
1911                      "start": {
1912                        "line": 628,
1913                        "column": 1
1914                      },
1915                      "end": {
1916                        "line": 628,
1917                        "column": 1
1918                      }
1919                    }
1920                  },
1921                  "loc": {
1922                    "start": {
1923                      "line": 1,
1924                      "column": 1
1925                    },
1926                    "end": {
1927                      "line": 1,
1928                      "column": 1
1929                    }
1930                  }
1931                },
1932                "overloads": [],
1933                "decorators": [],
1934                "loc": {
1935                  "start": {
1936                    "line": 17,
1937                    "column": 5
1938                  },
1939                  "end": {
1940                    "line": 1,
1941                    "column": 1
1942                  }
1943                }
1944              }
1945            ],
1946            "decorators": [],
1947            "loc": {
1948              "start": {
1949                "line": 17,
1950                "column": 5
1951              },
1952              "end": {
1953                "line": 18,
1954                "column": 75
1955              }
1956            }
1957          }
1958        ],
1959        "loc": {
1960          "start": {
1961            "line": 16,
1962            "column": 17
1963          },
1964          "end": {
1965            "line": 19,
1966            "column": 2
1967          }
1968        }
1969      },
1970      "id": {
1971        "type": "Identifier",
1972        "name": "PL",
1973        "decorators": [],
1974        "loc": {
1975          "start": {
1976            "line": 16,
1977            "column": 11
1978          },
1979          "end": {
1980            "line": 16,
1981            "column": 13
1982          }
1983        }
1984      },
1985      "extends": [],
1986      "typeParameters": {
1987        "type": "TSTypeParameterDeclaration",
1988        "params": [
1989          {
1990            "type": "TSTypeParameter",
1991            "name": {
1992              "type": "Identifier",
1993              "name": "T",
1994              "decorators": [],
1995              "loc": {
1996                "start": {
1997                  "line": 16,
1998                  "column": 14
1999                },
2000                "end": {
2001                  "line": 16,
2002                  "column": 15
2003                }
2004              }
2005            },
2006            "loc": {
2007              "start": {
2008                "line": 16,
2009                "column": 14
2010              },
2011              "end": {
2012                "line": 16,
2013                "column": 16
2014              }
2015            }
2016          }
2017        ],
2018        "loc": {
2019          "start": {
2020            "line": 16,
2021            "column": 13
2022          },
2023          "end": {
2024            "line": 16,
2025            "column": 16
2026          }
2027        }
2028      },
2029      "loc": {
2030        "start": {
2031          "line": 16,
2032          "column": 1
2033        },
2034        "end": {
2035          "line": 21,
2036          "column": 6
2037        }
2038      }
2039    },
2040    {
2041      "type": "ClassDeclaration",
2042      "definition": {
2043        "id": {
2044          "type": "Identifier",
2045          "name": "P",
2046          "decorators": [],
2047          "loc": {
2048            "start": {
2049              "line": 21,
2050              "column": 7
2051            },
2052            "end": {
2053              "line": 21,
2054              "column": 8
2055            }
2056          }
2057        },
2058        "typeParameters": {
2059          "type": "TSTypeParameterDeclaration",
2060          "params": [
2061            {
2062              "type": "TSTypeParameter",
2063              "name": {
2064                "type": "Identifier",
2065                "name": "T",
2066                "decorators": [],
2067                "loc": {
2068                  "start": {
2069                    "line": 21,
2070                    "column": 9
2071                  },
2072                  "end": {
2073                    "line": 21,
2074                    "column": 10
2075                  }
2076                }
2077              },
2078              "loc": {
2079                "start": {
2080                  "line": 21,
2081                  "column": 9
2082                },
2083                "end": {
2084                  "line": 21,
2085                  "column": 11
2086                }
2087              }
2088            }
2089          ],
2090          "loc": {
2091            "start": {
2092              "line": 21,
2093              "column": 8
2094            },
2095            "end": {
2096              "line": 21,
2097              "column": 11
2098            }
2099          }
2100        },
2101        "superClass": null,
2102        "implements": [
2103          {
2104            "type": "TSClassImplements",
2105            "expression": {
2106              "type": "ETSTypeReference",
2107              "part": {
2108                "type": "ETSTypeReferencePart",
2109                "name": {
2110                  "type": "Identifier",
2111                  "name": "PL",
2112                  "decorators": [],
2113                  "loc": {
2114                    "start": {
2115                      "line": 21,
2116                      "column": 23
2117                    },
2118                    "end": {
2119                      "line": 21,
2120                      "column": 25
2121                    }
2122                  }
2123                },
2124                "typeParams": {
2125                  "type": "TSTypeParameterInstantiation",
2126                  "params": [
2127                    {
2128                      "type": "ETSTypeReference",
2129                      "part": {
2130                        "type": "ETSTypeReferencePart",
2131                        "name": {
2132                          "type": "Identifier",
2133                          "name": "T",
2134                          "decorators": [],
2135                          "loc": {
2136                            "start": {
2137                              "line": 21,
2138                              "column": 26
2139                            },
2140                            "end": {
2141                              "line": 21,
2142                              "column": 27
2143                            }
2144                          }
2145                        },
2146                        "loc": {
2147                          "start": {
2148                            "line": 21,
2149                            "column": 26
2150                          },
2151                          "end": {
2152                            "line": 21,
2153                            "column": 28
2154                          }
2155                        }
2156                      },
2157                      "loc": {
2158                        "start": {
2159                          "line": 21,
2160                          "column": 26
2161                        },
2162                        "end": {
2163                          "line": 21,
2164                          "column": 28
2165                        }
2166                      }
2167                    }
2168                  ],
2169                  "loc": {
2170                    "start": {
2171                      "line": 21,
2172                      "column": 25
2173                    },
2174                    "end": {
2175                      "line": 21,
2176                      "column": 28
2177                    }
2178                  }
2179                },
2180                "loc": {
2181                  "start": {
2182                    "line": 21,
2183                    "column": 23
2184                  },
2185                  "end": {
2186                    "line": 21,
2187                    "column": 30
2188                  }
2189                }
2190              },
2191              "loc": {
2192                "start": {
2193                  "line": 21,
2194                  "column": 23
2195                },
2196                "end": {
2197                  "line": 21,
2198                  "column": 30
2199                }
2200              }
2201            },
2202            "loc": {
2203              "start": {
2204                "line": 21,
2205                "column": 23
2206              },
2207              "end": {
2208                "line": 21,
2209                "column": 30
2210              }
2211            }
2212          }
2213        ],
2214        "body": [
2215          {
2216            "type": "MethodDefinition",
2217            "key": {
2218              "type": "Identifier",
2219              "name": "then",
2220              "decorators": [],
2221              "loc": {
2222                "start": {
2223                  "line": 22,
2224                  "column": 5
2225                },
2226                "end": {
2227                  "line": 22,
2228                  "column": 9
2229                }
2230              }
2231            },
2232            "kind": "method",
2233            "accessibility": "public",
2234            "static": false,
2235            "optional": false,
2236            "computed": false,
2237            "value": {
2238              "type": "FunctionExpression",
2239              "function": {
2240                "type": "ScriptFunction",
2241                "id": {
2242                  "type": "Identifier",
2243                  "name": "then",
2244                  "decorators": [],
2245                  "loc": {
2246                    "start": {
2247                      "line": 22,
2248                      "column": 5
2249                    },
2250                    "end": {
2251                      "line": 22,
2252                      "column": 9
2253                    }
2254                  }
2255                },
2256                "generator": false,
2257                "async": false,
2258                "expression": false,
2259                "params": [
2260                  {
2261                    "type": "ETSParameterExpression",
2262                    "name": {
2263                      "type": "Identifier",
2264                      "name": "onFulfilled",
2265                      "typeAnnotation": {
2266                        "type": "ETSUnionType",
2267                        "types": [
2268                          {
2269                            "type": "ETSFunctionType",
2270                            "params": [
2271                              {
2272                                "type": "ETSParameterExpression",
2273                                "name": {
2274                                  "type": "Identifier",
2275                                  "name": "value",
2276                                  "typeAnnotation": {
2277                                    "type": "ETSTypeReference",
2278                                    "part": {
2279                                      "type": "ETSTypeReferencePart",
2280                                      "name": {
2281                                        "type": "Identifier",
2282                                        "name": "T",
2283                                        "decorators": [],
2284                                        "loc": {
2285                                          "start": {
2286                                            "line": 22,
2287                                            "column": 46
2288                                          },
2289                                          "end": {
2290                                            "line": 22,
2291                                            "column": 47
2292                                          }
2293                                        }
2294                                      },
2295                                      "loc": {
2296                                        "start": {
2297                                          "line": 22,
2298                                          "column": 46
2299                                        },
2300                                        "end": {
2301                                          "line": 22,
2302                                          "column": 48
2303                                        }
2304                                      }
2305                                    },
2306                                    "loc": {
2307                                      "start": {
2308                                        "line": 22,
2309                                        "column": 46
2310                                      },
2311                                      "end": {
2312                                        "line": 22,
2313                                        "column": 48
2314                                      }
2315                                    }
2316                                  },
2317                                  "decorators": [],
2318                                  "loc": {
2319                                    "start": {
2320                                      "line": 22,
2321                                      "column": 39
2322                                    },
2323                                    "end": {
2324                                      "line": 22,
2325                                      "column": 48
2326                                    }
2327                                  }
2328                                },
2329                                "loc": {
2330                                  "start": {
2331                                    "line": 22,
2332                                    "column": 39
2333                                  },
2334                                  "end": {
2335                                    "line": 22,
2336                                    "column": 48
2337                                  }
2338                                }
2339                              }
2340                            ],
2341                            "returnType": {
2342                              "type": "ETSUnionType",
2343                              "types": [
2344                                {
2345                                  "type": "ETSTypeReference",
2346                                  "part": {
2347                                    "type": "ETSTypeReferencePart",
2348                                    "name": {
2349                                      "type": "Identifier",
2350                                      "name": "U",
2351                                      "decorators": [],
2352                                      "loc": {
2353                                        "start": {
2354                                          "line": 22,
2355                                          "column": 52
2356                                        },
2357                                        "end": {
2358                                          "line": 22,
2359                                          "column": 53
2360                                        }
2361                                      }
2362                                    },
2363                                    "loc": {
2364                                      "start": {
2365                                        "line": 22,
2366                                        "column": 52
2367                                      },
2368                                      "end": {
2369                                        "line": 22,
2370                                        "column": 54
2371                                      }
2372                                    }
2373                                  },
2374                                  "loc": {
2375                                    "start": {
2376                                      "line": 22,
2377                                      "column": 52
2378                                    },
2379                                    "end": {
2380                                      "line": 22,
2381                                      "column": 54
2382                                    }
2383                                  }
2384                                },
2385                                {
2386                                  "type": "ETSTypeReference",
2387                                  "part": {
2388                                    "type": "ETSTypeReferencePart",
2389                                    "name": {
2390                                      "type": "Identifier",
2391                                      "name": "PL",
2392                                      "decorators": [],
2393                                      "loc": {
2394                                        "start": {
2395                                          "line": 22,
2396                                          "column": 54
2397                                        },
2398                                        "end": {
2399                                          "line": 22,
2400                                          "column": 56
2401                                        }
2402                                      }
2403                                    },
2404                                    "typeParams": {
2405                                      "type": "TSTypeParameterInstantiation",
2406                                      "params": [
2407                                        {
2408                                          "type": "ETSTypeReference",
2409                                          "part": {
2410                                            "type": "ETSTypeReferencePart",
2411                                            "name": {
2412                                              "type": "Identifier",
2413                                              "name": "U",
2414                                              "decorators": [],
2415                                              "loc": {
2416                                                "start": {
2417                                                  "line": 22,
2418                                                  "column": 57
2419                                                },
2420                                                "end": {
2421                                                  "line": 22,
2422                                                  "column": 58
2423                                                }
2424                                              }
2425                                            },
2426                                            "loc": {
2427                                              "start": {
2428                                                "line": 22,
2429                                                "column": 57
2430                                              },
2431                                              "end": {
2432                                                "line": 22,
2433                                                "column": 59
2434                                              }
2435                                            }
2436                                          },
2437                                          "loc": {
2438                                            "start": {
2439                                              "line": 22,
2440                                              "column": 57
2441                                            },
2442                                            "end": {
2443                                              "line": 22,
2444                                              "column": 59
2445                                            }
2446                                          }
2447                                        }
2448                                      ],
2449                                      "loc": {
2450                                        "start": {
2451                                          "line": 22,
2452                                          "column": 56
2453                                        },
2454                                        "end": {
2455                                          "line": 22,
2456                                          "column": 59
2457                                        }
2458                                      }
2459                                    },
2460                                    "loc": {
2461                                      "start": {
2462                                        "line": 22,
2463                                        "column": 54
2464                                      },
2465                                      "end": {
2466                                        "line": 22,
2467                                        "column": 66
2468                                      }
2469                                    }
2470                                  },
2471                                  "loc": {
2472                                    "start": {
2473                                      "line": 22,
2474                                      "column": 54
2475                                    },
2476                                    "end": {
2477                                      "line": 22,
2478                                      "column": 66
2479                                    }
2480                                  }
2481                                }
2482                              ],
2483                              "loc": {
2484                                "start": {
2485                                  "line": 22,
2486                                  "column": 52
2487                                },
2488                                "end": {
2489                                  "line": 22,
2490                                  "column": 66
2491                                }
2492                              }
2493                            }
2494                            "throwMarker": "throws",
2495                            "loc": {
2496                              "start": {
2497                                "line": 22,
2498                                "column": 38
2499                              },
2500                              "end": {
2501                                "line": 22,
2502                                "column": 66
2503                              }
2504                            }
2505                          },
2506                          {
2507                            "type": "ETSUndefinedType",
2508                            "loc": {
2509                              "start": {
2510                                "line": 22,
2511                                "column": 35
2512                              },
2513                              "end": {
2514                                "line": 22,
2515                                "column": 36
2516                              }
2517                            }
2518                          }
2519                        ],
2520                        "loc": {
2521                          "start": {
2522                            "line": 22,
2523                            "column": 38
2524                          },
2525                          "end": {
2526                            "line": 22,
2527                            "column": 66
2528                          }
2529                        }
2530                      },
2531                      "decorators": [],
2532                      "loc": {
2533                        "start": {
2534                          "line": 22,
2535                          "column": 24
2536                        },
2537                        "end": {
2538                          "line": 22,
2539                          "column": 66
2540                        }
2541                      }
2542                    },
2543                    "loc": {
2544                      "start": {
2545                        "line": 22,
2546                        "column": 24
2547                      },
2548                      "end": {
2549                        "line": 22,
2550                        "column": 66
2551                      }
2552                    }
2553                  },
2554                  {
2555                    "type": "ETSParameterExpression",
2556                    "name": {
2557                      "type": "Identifier",
2558                      "name": "onRejected",
2559                      "typeAnnotation": {
2560                        "type": "ETSUnionType",
2561                        "types": [
2562                          {
2563                            "type": "ETSFunctionType",
2564                            "params": [
2565                              {
2566                                "type": "ETSParameterExpression",
2567                                "name": {
2568                                  "type": "Identifier",
2569                                  "name": "error",
2570                                  "typeAnnotation": {
2571                                    "type": "ETSTypeReference",
2572                                    "part": {
2573                                      "type": "ETSTypeReferencePart",
2574                                      "name": {
2575                                        "type": "Identifier",
2576                                        "name": "NullishType",
2577                                        "decorators": [],
2578                                        "loc": {
2579                                          "start": {
2580                                            "line": 23,
2581                                            "column": 34
2582                                          },
2583                                          "end": {
2584                                            "line": 23,
2585                                            "column": 45
2586                                          }
2587                                        }
2588                                      },
2589                                      "loc": {
2590                                        "start": {
2591                                          "line": 23,
2592                                          "column": 34
2593                                        },
2594                                        "end": {
2595                                          "line": 23,
2596                                          "column": 46
2597                                        }
2598                                      }
2599                                    },
2600                                    "loc": {
2601                                      "start": {
2602                                        "line": 23,
2603                                        "column": 34
2604                                      },
2605                                      "end": {
2606                                        "line": 23,
2607                                        "column": 46
2608                                      }
2609                                    }
2610                                  },
2611                                  "decorators": [],
2612                                  "loc": {
2613                                    "start": {
2614                                      "line": 23,
2615                                      "column": 27
2616                                    },
2617                                    "end": {
2618                                      "line": 23,
2619                                      "column": 46
2620                                    }
2621                                  }
2622                                },
2623                                "loc": {
2624                                  "start": {
2625                                    "line": 23,
2626                                    "column": 27
2627                                  },
2628                                  "end": {
2629                                    "line": 23,
2630                                    "column": 46
2631                                  }
2632                                }
2633                              }
2634                            ],
2635                            "returnType": {
2636                              "type": "ETSUnionType",
2637                              "types": [
2638                                {
2639                                  "type": "ETSTypeReference",
2640                                  "part": {
2641                                    "type": "ETSTypeReferencePart",
2642                                    "name": {
2643                                      "type": "Identifier",
2644                                      "name": "E",
2645                                      "decorators": [],
2646                                      "loc": {
2647                                        "start": {
2648                                          "line": 23,
2649                                          "column": 50
2650                                        },
2651                                        "end": {
2652                                          "line": 23,
2653                                          "column": 51
2654                                        }
2655                                      }
2656                                    },
2657                                    "loc": {
2658                                      "start": {
2659                                        "line": 23,
2660                                        "column": 50
2661                                      },
2662                                      "end": {
2663                                        "line": 23,
2664                                        "column": 52
2665                                      }
2666                                    }
2667                                  },
2668                                  "loc": {
2669                                    "start": {
2670                                      "line": 23,
2671                                      "column": 50
2672                                    },
2673                                    "end": {
2674                                      "line": 23,
2675                                      "column": 52
2676                                    }
2677                                  }
2678                                },
2679                                {
2680                                  "type": "ETSTypeReference",
2681                                  "part": {
2682                                    "type": "ETSTypeReferencePart",
2683                                    "name": {
2684                                      "type": "Identifier",
2685                                      "name": "PL",
2686                                      "decorators": [],
2687                                      "loc": {
2688                                        "start": {
2689                                          "line": 23,
2690                                          "column": 52
2691                                        },
2692                                        "end": {
2693                                          "line": 23,
2694                                          "column": 54
2695                                        }
2696                                      }
2697                                    },
2698                                    "typeParams": {
2699                                      "type": "TSTypeParameterInstantiation",
2700                                      "params": [
2701                                        {
2702                                          "type": "ETSTypeReference",
2703                                          "part": {
2704                                            "type": "ETSTypeReferencePart",
2705                                            "name": {
2706                                              "type": "Identifier",
2707                                              "name": "E",
2708                                              "decorators": [],
2709                                              "loc": {
2710                                                "start": {
2711                                                  "line": 23,
2712                                                  "column": 55
2713                                                },
2714                                                "end": {
2715                                                  "line": 23,
2716                                                  "column": 56
2717                                                }
2718                                              }
2719                                            },
2720                                            "loc": {
2721                                              "start": {
2722                                                "line": 23,
2723                                                "column": 55
2724                                              },
2725                                              "end": {
2726                                                "line": 23,
2727                                                "column": 57
2728                                              }
2729                                            }
2730                                          },
2731                                          "loc": {
2732                                            "start": {
2733                                              "line": 23,
2734                                              "column": 55
2735                                            },
2736                                            "end": {
2737                                              "line": 23,
2738                                              "column": 57
2739                                            }
2740                                          }
2741                                        }
2742                                      ],
2743                                      "loc": {
2744                                        "start": {
2745                                          "line": 23,
2746                                          "column": 54
2747                                        },
2748                                        "end": {
2749                                          "line": 23,
2750                                          "column": 57
2751                                        }
2752                                      }
2753                                    },
2754                                    "loc": {
2755                                      "start": {
2756                                        "line": 23,
2757                                        "column": 52
2758                                      },
2759                                      "end": {
2760                                        "line": 23,
2761                                        "column": 64
2762                                      }
2763                                    }
2764                                  },
2765                                  "loc": {
2766                                    "start": {
2767                                      "line": 23,
2768                                      "column": 52
2769                                    },
2770                                    "end": {
2771                                      "line": 23,
2772                                      "column": 64
2773                                    }
2774                                  }
2775                                }
2776                              ],
2777                              "loc": {
2778                                "start": {
2779                                  "line": 23,
2780                                  "column": 50
2781                                },
2782                                "end": {
2783                                  "line": 23,
2784                                  "column": 64
2785                                }
2786                              }
2787                            }
2788                            "throwMarker": "throws",
2789                            "loc": {
2790                              "start": {
2791                                "line": 23,
2792                                "column": 26
2793                              },
2794                              "end": {
2795                                "line": 23,
2796                                "column": 64
2797                              }
2798                            }
2799                          },
2800                          {
2801                            "type": "ETSUndefinedType",
2802                            "loc": {
2803                              "start": {
2804                                "line": 23,
2805                                "column": 23
2806                              },
2807                              "end": {
2808                                "line": 23,
2809                                "column": 24
2810                              }
2811                            }
2812                          }
2813                        ],
2814                        "loc": {
2815                          "start": {
2816                            "line": 23,
2817                            "column": 26
2818                          },
2819                          "end": {
2820                            "line": 23,
2821                            "column": 64
2822                          }
2823                        }
2824                      },
2825                      "decorators": [],
2826                      "loc": {
2827                        "start": {
2828                          "line": 23,
2829                          "column": 13
2830                        },
2831                        "end": {
2832                          "line": 23,
2833                          "column": 64
2834                        }
2835                      }
2836                    },
2837                    "loc": {
2838                      "start": {
2839                        "line": 23,
2840                        "column": 13
2841                      },
2842                      "end": {
2843                        "line": 23,
2844                        "column": 64
2845                      }
2846                    }
2847                  }
2848                ],
2849                "returnType": {
2850                  "type": "ETSTypeReference",
2851                  "part": {
2852                    "type": "ETSTypeReferencePart",
2853                    "name": {
2854                      "type": "Identifier",
2855                      "name": "PL",
2856                      "decorators": [],
2857                      "loc": {
2858                        "start": {
2859                          "line": 23,
2860                          "column": 67
2861                        },
2862                        "end": {
2863                          "line": 23,
2864                          "column": 69
2865                        }
2866                      }
2867                    },
2868                    "typeParams": {
2869                      "type": "TSTypeParameterInstantiation",
2870                      "params": [
2871                        {
2872                          "type": "ETSUnionType",
2873                          "types": [
2874                            {
2875                              "type": "ETSTypeReference",
2876                              "part": {
2877                                "type": "ETSTypeReferencePart",
2878                                "name": {
2879                                  "type": "Identifier",
2880                                  "name": "U",
2881                                  "decorators": [],
2882                                  "loc": {
2883                                    "start": {
2884                                      "line": 23,
2885                                      "column": 70
2886                                    },
2887                                    "end": {
2888                                      "line": 23,
2889                                      "column": 71
2890                                    }
2891                                  }
2892                                },
2893                                "loc": {
2894                                  "start": {
2895                                    "line": 23,
2896                                    "column": 70
2897                                  },
2898                                  "end": {
2899                                    "line": 23,
2900                                    "column": 72
2901                                  }
2902                                }
2903                              },
2904                              "loc": {
2905                                "start": {
2906                                  "line": 23,
2907                                  "column": 70
2908                                },
2909                                "end": {
2910                                  "line": 23,
2911                                  "column": 72
2912                                }
2913                              }
2914                            },
2915                            {
2916                              "type": "ETSTypeReference",
2917                              "part": {
2918                                "type": "ETSTypeReferencePart",
2919                                "name": {
2920                                  "type": "Identifier",
2921                                  "name": "E",
2922                                  "decorators": [],
2923                                  "loc": {
2924                                    "start": {
2925                                      "line": 23,
2926                                      "column": 72
2927                                    },
2928                                    "end": {
2929                                      "line": 23,
2930                                      "column": 73
2931                                    }
2932                                  }
2933                                },
2934                                "loc": {
2935                                  "start": {
2936                                    "line": 23,
2937                                    "column": 72
2938                                  },
2939                                  "end": {
2940                                    "line": 23,
2941                                    "column": 74
2942                                  }
2943                                }
2944                              },
2945                              "loc": {
2946                                "start": {
2947                                  "line": 23,
2948                                  "column": 72
2949                                },
2950                                "end": {
2951                                  "line": 23,
2952                                  "column": 74
2953                                }
2954                              }
2955                            }
2956                          ],
2957                          "loc": {
2958                            "start": {
2959                              "line": 23,
2960                              "column": 70
2961                            },
2962                            "end": {
2963                              "line": 23,
2964                              "column": 74
2965                            }
2966                          }
2967                        }
2968                      ],
2969                      "loc": {
2970                        "start": {
2971                          "line": 23,
2972                          "column": 69
2973                        },
2974                        "end": {
2975                          "line": 23,
2976                          "column": 74
2977                        }
2978                      }
2979                    },
2980                    "loc": {
2981                      "start": {
2982                        "line": 23,
2983                        "column": 67
2984                      },
2985                      "end": {
2986                        "line": 23,
2987                        "column": 76
2988                      }
2989                    }
2990                  },
2991                  "loc": {
2992                    "start": {
2993                      "line": 23,
2994                      "column": 67
2995                    },
2996                    "end": {
2997                      "line": 23,
2998                      "column": 76
2999                    }
3000                  }
3001                },
3002                "typeParameters": {
3003                  "type": "TSTypeParameterDeclaration",
3004                  "params": [
3005                    {
3006                      "type": "TSTypeParameter",
3007                      "name": {
3008                        "type": "Identifier",
3009                        "name": "U",
3010                        "decorators": [],
3011                        "loc": {
3012                          "start": {
3013                            "line": 22,
3014                            "column": 10
3015                          },
3016                          "end": {
3017                            "line": 22,
3018                            "column": 11
3019                          }
3020                        }
3021                      },
3022                      "loc": {
3023                        "start": {
3024                          "line": 22,
3025                          "column": 10
3026                        },
3027                        "end": {
3028                          "line": 22,
3029                          "column": 12
3030                        }
3031                      }
3032                    },
3033                    {
3034                      "type": "TSTypeParameter",
3035                      "name": {
3036                        "type": "Identifier",
3037                        "name": "E",
3038                        "decorators": [],
3039                        "loc": {
3040                          "start": {
3041                            "line": 22,
3042                            "column": 13
3043                          },
3044                          "end": {
3045                            "line": 22,
3046                            "column": 14
3047                          }
3048                        }
3049                      },
3050                      "default": {
3051                        "type": "ETSTypeReference",
3052                        "part": {
3053                          "type": "ETSTypeReferencePart",
3054                          "name": {
3055                            "type": "Identifier",
3056                            "name": "never",
3057                            "decorators": [],
3058                            "loc": {
3059                              "start": {
3060                                "line": 22,
3061                                "column": 17
3062                              },
3063                              "end": {
3064                                "line": 22,
3065                                "column": 22
3066                              }
3067                            }
3068                          },
3069                          "loc": {
3070                            "start": {
3071                              "line": 22,
3072                              "column": 17
3073                            },
3074                            "end": {
3075                              "line": 22,
3076                              "column": 23
3077                            }
3078                          }
3079                        },
3080                        "loc": {
3081                          "start": {
3082                            "line": 22,
3083                            "column": 17
3084                          },
3085                          "end": {
3086                            "line": 22,
3087                            "column": 23
3088                          }
3089                        }
3090                      },
3091                      "loc": {
3092                        "start": {
3093                          "line": 22,
3094                          "column": 13
3095                        },
3096                        "end": {
3097                          "line": 22,
3098                          "column": 23
3099                        }
3100                      }
3101                    }
3102                  ],
3103                  "loc": {
3104                    "start": {
3105                      "line": 22,
3106                      "column": 9
3107                    },
3108                    "end": {
3109                      "line": 22,
3110                      "column": 23
3111                    }
3112                  }
3113                },
3114                "body": {
3115                  "type": "BlockStatement",
3116                  "statements": [
3117                    {
3118                      "type": "ReturnStatement",
3119                      "argument": {
3120                        "type": "ETSNewClassInstanceExpression",
3121                        "typeReference": {
3122                          "type": "ETSTypeReference",
3123                          "part": {
3124                            "type": "ETSTypeReferencePart",
3125                            "name": {
3126                              "type": "Identifier",
3127                              "name": "P",
3128                              "decorators": [],
3129                              "loc": {
3130                                "start": {
3131                                  "line": 24,
3132                                  "column": 20
3133                                },
3134                                "end": {
3135                                  "line": 24,
3136                                  "column": 21
3137                                }
3138                              }
3139                            },
3140                            "typeParams": {
3141                              "type": "TSTypeParameterInstantiation",
3142                              "params": [
3143                                {
3144                                  "type": "ETSUnionType",
3145                                  "types": [
3146                                    {
3147                                      "type": "ETSTypeReference",
3148                                      "part": {
3149                                        "type": "ETSTypeReferencePart",
3150                                        "name": {
3151                                          "type": "Identifier",
3152                                          "name": "U",
3153                                          "decorators": [],
3154                                          "loc": {
3155                                            "start": {
3156                                              "line": 24,
3157                                              "column": 22
3158                                            },
3159                                            "end": {
3160                                              "line": 24,
3161                                              "column": 23
3162                                            }
3163                                          }
3164                                        },
3165                                        "loc": {
3166                                          "start": {
3167                                            "line": 24,
3168                                            "column": 22
3169                                          },
3170                                          "end": {
3171                                            "line": 24,
3172                                            "column": 24
3173                                          }
3174                                        }
3175                                      },
3176                                      "loc": {
3177                                        "start": {
3178                                          "line": 24,
3179                                          "column": 22
3180                                        },
3181                                        "end": {
3182                                          "line": 24,
3183                                          "column": 24
3184                                        }
3185                                      }
3186                                    },
3187                                    {
3188                                      "type": "ETSTypeReference",
3189                                      "part": {
3190                                        "type": "ETSTypeReferencePart",
3191                                        "name": {
3192                                          "type": "Identifier",
3193                                          "name": "E",
3194                                          "decorators": [],
3195                                          "loc": {
3196                                            "start": {
3197                                              "line": 24,
3198                                              "column": 24
3199                                            },
3200                                            "end": {
3201                                              "line": 24,
3202                                              "column": 25
3203                                            }
3204                                          }
3205                                        },
3206                                        "loc": {
3207                                          "start": {
3208                                            "line": 24,
3209                                            "column": 24
3210                                          },
3211                                          "end": {
3212                                            "line": 24,
3213                                            "column": 26
3214                                          }
3215                                        }
3216                                      },
3217                                      "loc": {
3218                                        "start": {
3219                                          "line": 24,
3220                                          "column": 24
3221                                        },
3222                                        "end": {
3223                                          "line": 24,
3224                                          "column": 26
3225                                        }
3226                                      }
3227                                    }
3228                                  ],
3229                                  "loc": {
3230                                    "start": {
3231                                      "line": 24,
3232                                      "column": 22
3233                                    },
3234                                    "end": {
3235                                      "line": 24,
3236                                      "column": 26
3237                                    }
3238                                  }
3239                                }
3240                              ],
3241                              "loc": {
3242                                "start": {
3243                                  "line": 24,
3244                                  "column": 21
3245                                },
3246                                "end": {
3247                                  "line": 24,
3248                                  "column": 26
3249                                }
3250                              }
3251                            },
3252                            "loc": {
3253                              "start": {
3254                                "line": 24,
3255                                "column": 20
3256                              },
3257                              "end": {
3258                                "line": 24,
3259                                "column": 27
3260                              }
3261                            }
3262                          },
3263                          "loc": {
3264                            "start": {
3265                              "line": 24,
3266                              "column": 20
3267                            },
3268                            "end": {
3269                              "line": 24,
3270                              "column": 27
3271                            }
3272                          }
3273                        },
3274                        "arguments": [],
3275                        "loc": {
3276                          "start": {
3277                            "line": 24,
3278                            "column": 16
3279                          },
3280                          "end": {
3281                            "line": 25,
3282                            "column": 6
3283                          }
3284                        }
3285                      },
3286                      "loc": {
3287                        "start": {
3288                          "line": 24,
3289                          "column": 9
3290                        },
3291                        "end": {
3292                          "line": 25,
3293                          "column": 6
3294                        }
3295                      }
3296                    }
3297                  ],
3298                  "loc": {
3299                    "start": {
3300                      "line": 23,
3301                      "column": 75
3302                    },
3303                    "end": {
3304                      "line": 25,
3305                      "column": 6
3306                    }
3307                  }
3308                },
3309                "loc": {
3310                  "start": {
3311                    "line": 22,
3312                    "column": 9
3313                  },
3314                  "end": {
3315                    "line": 25,
3316                    "column": 6
3317                  }
3318                }
3319              },
3320              "loc": {
3321                "start": {
3322                  "line": 22,
3323                  "column": 9
3324                },
3325                "end": {
3326                  "line": 25,
3327                  "column": 6
3328                }
3329              }
3330            },
3331            "overloads": [
3332              {
3333                "type": "MethodDefinition",
3334                "key": {
3335                  "type": "Identifier",
3336                  "name": "then",
3337                  "decorators": [],
3338                  "loc": {
3339                    "start": {
3340                      "line": 22,
3341                      "column": 5
3342                    },
3343                    "end": {
3344                      "line": 22,
3345                      "column": 9
3346                    }
3347                  }
3348                },
3349                "kind": "method",
3350                "accessibility": "public",
3351                "static": false,
3352                "optional": false,
3353                "computed": false,
3354                "value": {
3355                  "type": "FunctionExpression",
3356                  "function": {
3357                    "type": "ScriptFunction",
3358                    "id": {
3359                      "type": "Identifier",
3360                      "name": "then",
3361                      "decorators": [],
3362                      "loc": {
3363                        "start": {
3364                          "line": 22,
3365                          "column": 5
3366                        },
3367                        "end": {
3368                          "line": 22,
3369                          "column": 9
3370                        }
3371                      }
3372                    },
3373                    "generator": false,
3374                    "async": false,
3375                    "expression": false,
3376                    "params": [
3377                      {
3378                        "type": "ETSParameterExpression",
3379                        "name": {
3380                          "type": "Identifier",
3381                          "name": "onFulfilled",
3382                          "typeAnnotation": {
3383                            "type": "ETSUnionType",
3384                            "types": [
3385                              {
3386                                "type": "ETSFunctionType",
3387                                "params": [
3388                                  {
3389                                    "type": "ETSParameterExpression",
3390                                    "name": {
3391                                      "type": "Identifier",
3392                                      "name": "value",
3393                                      "typeAnnotation": {
3394                                        "type": "ETSTypeReference",
3395                                        "part": {
3396                                          "type": "ETSTypeReferencePart",
3397                                          "name": {
3398                                            "type": "Identifier",
3399                                            "name": "T",
3400                                            "decorators": [],
3401                                            "loc": {
3402                                              "start": {
3403                                                "line": 22,
3404                                                "column": 46
3405                                              },
3406                                              "end": {
3407                                                "line": 22,
3408                                                "column": 47
3409                                              }
3410                                            }
3411                                          },
3412                                          "loc": {
3413                                            "start": {
3414                                              "line": 22,
3415                                              "column": 46
3416                                            },
3417                                            "end": {
3418                                              "line": 22,
3419                                              "column": 48
3420                                            }
3421                                          }
3422                                        },
3423                                        "loc": {
3424                                          "start": {
3425                                            "line": 22,
3426                                            "column": 46
3427                                          },
3428                                          "end": {
3429                                            "line": 22,
3430                                            "column": 48
3431                                          }
3432                                        }
3433                                      },
3434                                      "decorators": [],
3435                                      "loc": {
3436                                        "start": {
3437                                          "line": 22,
3438                                          "column": 39
3439                                        },
3440                                        "end": {
3441                                          "line": 22,
3442                                          "column": 48
3443                                        }
3444                                      }
3445                                    },
3446                                    "loc": {
3447                                      "start": {
3448                                        "line": 1,
3449                                        "column": 1
3450                                      },
3451                                      "end": {
3452                                        "line": 1,
3453                                        "column": 1
3454                                      }
3455                                    }
3456                                  }
3457                                ],
3458                                "returnType": {
3459                                  "type": "ETSUnionType",
3460                                  "types": [
3461                                    {
3462                                      "type": "ETSTypeReference",
3463                                      "part": {
3464                                        "type": "ETSTypeReferencePart",
3465                                        "name": {
3466                                          "type": "Identifier",
3467                                          "name": "U",
3468                                          "decorators": [],
3469                                          "loc": {
3470                                            "start": {
3471                                              "line": 22,
3472                                              "column": 52
3473                                            },
3474                                            "end": {
3475                                              "line": 22,
3476                                              "column": 53
3477                                            }
3478                                          }
3479                                        },
3480                                        "loc": {
3481                                          "start": {
3482                                            "line": 22,
3483                                            "column": 52
3484                                          },
3485                                          "end": {
3486                                            "line": 22,
3487                                            "column": 54
3488                                          }
3489                                        }
3490                                      },
3491                                      "loc": {
3492                                        "start": {
3493                                          "line": 22,
3494                                          "column": 52
3495                                        },
3496                                        "end": {
3497                                          "line": 22,
3498                                          "column": 54
3499                                        }
3500                                      }
3501                                    },
3502                                    {
3503                                      "type": "ETSTypeReference",
3504                                      "part": {
3505                                        "type": "ETSTypeReferencePart",
3506                                        "name": {
3507                                          "type": "Identifier",
3508                                          "name": "PL",
3509                                          "decorators": [],
3510                                          "loc": {
3511                                            "start": {
3512                                              "line": 22,
3513                                              "column": 54
3514                                            },
3515                                            "end": {
3516                                              "line": 22,
3517                                              "column": 56
3518                                            }
3519                                          }
3520                                        },
3521                                        "typeParams": {
3522                                          "type": "TSTypeParameterInstantiation",
3523                                          "params": [
3524                                            {
3525                                              "type": "ETSTypeReference",
3526                                              "part": {
3527                                                "type": "ETSTypeReferencePart",
3528                                                "name": {
3529                                                  "type": "Identifier",
3530                                                  "name": "U",
3531                                                  "decorators": [],
3532                                                  "loc": {
3533                                                    "start": {
3534                                                      "line": 22,
3535                                                      "column": 57
3536                                                    },
3537                                                    "end": {
3538                                                      "line": 22,
3539                                                      "column": 58
3540                                                    }
3541                                                  }
3542                                                },
3543                                                "loc": {
3544                                                  "start": {
3545                                                    "line": 22,
3546                                                    "column": 57
3547                                                  },
3548                                                  "end": {
3549                                                    "line": 22,
3550                                                    "column": 59
3551                                                  }
3552                                                }
3553                                              },
3554                                              "loc": {
3555                                                "start": {
3556                                                  "line": 22,
3557                                                  "column": 57
3558                                                },
3559                                                "end": {
3560                                                  "line": 22,
3561                                                  "column": 59
3562                                                }
3563                                              }
3564                                            }
3565                                          ],
3566                                          "loc": {
3567                                            "start": {
3568                                              "line": 22,
3569                                              "column": 56
3570                                            },
3571                                            "end": {
3572                                              "line": 22,
3573                                              "column": 59
3574                                            }
3575                                          }
3576                                        },
3577                                        "loc": {
3578                                          "start": {
3579                                            "line": 22,
3580                                            "column": 54
3581                                          },
3582                                          "end": {
3583                                            "line": 22,
3584                                            "column": 66
3585                                          }
3586                                        }
3587                                      },
3588                                      "loc": {
3589                                        "start": {
3590                                          "line": 22,
3591                                          "column": 54
3592                                        },
3593                                        "end": {
3594                                          "line": 22,
3595                                          "column": 66
3596                                        }
3597                                      }
3598                                    }
3599                                  ],
3600                                  "loc": {
3601                                    "start": {
3602                                      "line": 1,
3603                                      "column": 1
3604                                    },
3605                                    "end": {
3606                                      "line": 1,
3607                                      "column": 1
3608                                    }
3609                                  }
3610                                }
3611                                "throwMarker": "throws",
3612                                "loc": {
3613                                  "start": {
3614                                    "line": 1,
3615                                    "column": 1
3616                                  },
3617                                  "end": {
3618                                    "line": 1,
3619                                    "column": 1
3620                                  }
3621                                }
3622                              },
3623                              {
3624                                "type": "ETSUndefinedType",
3625                                "loc": {
3626                                  "start": {
3627                                    "line": 1,
3628                                    "column": 1
3629                                  },
3630                                  "end": {
3631                                    "line": 1,
3632                                    "column": 1
3633                                  }
3634                                }
3635                              }
3636                            ],
3637                            "loc": {
3638                              "start": {
3639                                "line": 1,
3640                                "column": 1
3641                              },
3642                              "end": {
3643                                "line": 1,
3644                                "column": 1
3645                              }
3646                            }
3647                          },
3648                          "decorators": [],
3649                          "loc": {
3650                            "start": {
3651                              "line": 22,
3652                              "column": 24
3653                            },
3654                            "end": {
3655                              "line": 22,
3656                              "column": 66
3657                            }
3658                          }
3659                        },
3660                        "loc": {
3661                          "start": {
3662                            "line": 1,
3663                            "column": 1
3664                          },
3665                          "end": {
3666                            "line": 1,
3667                            "column": 1
3668                          }
3669                        }
3670                      }
3671                    ],
3672                    "returnType": {
3673                      "type": "ETSTypeReference",
3674                      "part": {
3675                        "type": "ETSTypeReferencePart",
3676                        "name": {
3677                          "type": "Identifier",
3678                          "name": "PL",
3679                          "decorators": [],
3680                          "loc": {
3681                            "start": {
3682                              "line": 23,
3683                              "column": 67
3684                            },
3685                            "end": {
3686                              "line": 23,
3687                              "column": 69
3688                            }
3689                          }
3690                        },
3691                        "typeParams": {
3692                          "type": "TSTypeParameterInstantiation",
3693                          "params": [
3694                            {
3695                              "type": "ETSUnionType",
3696                              "types": [
3697                                {
3698                                  "type": "ETSTypeReference",
3699                                  "part": {
3700                                    "type": "ETSTypeReferencePart",
3701                                    "name": {
3702                                      "type": "Identifier",
3703                                      "name": "U",
3704                                      "decorators": [],
3705                                      "loc": {
3706                                        "start": {
3707                                          "line": 23,
3708                                          "column": 70
3709                                        },
3710                                        "end": {
3711                                          "line": 23,
3712                                          "column": 71
3713                                        }
3714                                      }
3715                                    },
3716                                    "loc": {
3717                                      "start": {
3718                                        "line": 23,
3719                                        "column": 70
3720                                      },
3721                                      "end": {
3722                                        "line": 23,
3723                                        "column": 72
3724                                      }
3725                                    }
3726                                  },
3727                                  "loc": {
3728                                    "start": {
3729                                      "line": 23,
3730                                      "column": 70
3731                                    },
3732                                    "end": {
3733                                      "line": 23,
3734                                      "column": 72
3735                                    }
3736                                  }
3737                                },
3738                                {
3739                                  "type": "ETSTypeReference",
3740                                  "part": {
3741                                    "type": "ETSTypeReferencePart",
3742                                    "name": {
3743                                      "type": "Identifier",
3744                                      "name": "E",
3745                                      "decorators": [],
3746                                      "loc": {
3747                                        "start": {
3748                                          "line": 23,
3749                                          "column": 72
3750                                        },
3751                                        "end": {
3752                                          "line": 23,
3753                                          "column": 73
3754                                        }
3755                                      }
3756                                    },
3757                                    "loc": {
3758                                      "start": {
3759                                        "line": 23,
3760                                        "column": 72
3761                                      },
3762                                      "end": {
3763                                        "line": 23,
3764                                        "column": 74
3765                                      }
3766                                    }
3767                                  },
3768                                  "loc": {
3769                                    "start": {
3770                                      "line": 23,
3771                                      "column": 72
3772                                    },
3773                                    "end": {
3774                                      "line": 23,
3775                                      "column": 74
3776                                    }
3777                                  }
3778                                }
3779                              ],
3780                              "loc": {
3781                                "start": {
3782                                  "line": 1,
3783                                  "column": 1
3784                                },
3785                                "end": {
3786                                  "line": 1,
3787                                  "column": 1
3788                                }
3789                              }
3790                            }
3791                          ],
3792                          "loc": {
3793                            "start": {
3794                              "line": 23,
3795                              "column": 69
3796                            },
3797                            "end": {
3798                              "line": 23,
3799                              "column": 74
3800                            }
3801                          }
3802                        },
3803                        "loc": {
3804                          "start": {
3805                            "line": 23,
3806                            "column": 67
3807                          },
3808                          "end": {
3809                            "line": 23,
3810                            "column": 76
3811                          }
3812                        }
3813                      },
3814                      "loc": {
3815                        "start": {
3816                          "line": 23,
3817                          "column": 67
3818                        },
3819                        "end": {
3820                          "line": 23,
3821                          "column": 76
3822                        }
3823                      }
3824                    },
3825                    "typeParameters": {
3826                      "type": "TSTypeParameterDeclaration",
3827                      "params": [
3828                        {
3829                          "type": "TSTypeParameter",
3830                          "name": {
3831                            "type": "Identifier",
3832                            "name": "U",
3833                            "decorators": [],
3834                            "loc": {
3835                              "start": {
3836                                "line": 22,
3837                                "column": 10
3838                              },
3839                              "end": {
3840                                "line": 22,
3841                                "column": 11
3842                              }
3843                            }
3844                          },
3845                          "loc": {
3846                            "start": {
3847                              "line": 1,
3848                              "column": 1
3849                            },
3850                            "end": {
3851                              "line": 1,
3852                              "column": 1
3853                            }
3854                          }
3855                        },
3856                        {
3857                          "type": "TSTypeParameter",
3858                          "name": {
3859                            "type": "Identifier",
3860                            "name": "E",
3861                            "decorators": [],
3862                            "loc": {
3863                              "start": {
3864                                "line": 22,
3865                                "column": 13
3866                              },
3867                              "end": {
3868                                "line": 22,
3869                                "column": 14
3870                              }
3871                            }
3872                          },
3873                          "default": {
3874                            "type": "ETSTypeReference",
3875                            "part": {
3876                              "type": "ETSTypeReferencePart",
3877                              "name": {
3878                                "type": "Identifier",
3879                                "name": "never",
3880                                "decorators": [],
3881                                "loc": {
3882                                  "start": {
3883                                    "line": 22,
3884                                    "column": 17
3885                                  },
3886                                  "end": {
3887                                    "line": 22,
3888                                    "column": 22
3889                                  }
3890                                }
3891                              },
3892                              "loc": {
3893                                "start": {
3894                                  "line": 22,
3895                                  "column": 17
3896                                },
3897                                "end": {
3898                                  "line": 22,
3899                                  "column": 23
3900                                }
3901                              }
3902                            },
3903                            "loc": {
3904                              "start": {
3905                                "line": 22,
3906                                "column": 17
3907                              },
3908                              "end": {
3909                                "line": 22,
3910                                "column": 23
3911                              }
3912                            }
3913                          },
3914                          "loc": {
3915                            "start": {
3916                              "line": 1,
3917                              "column": 1
3918                            },
3919                            "end": {
3920                              "line": 1,
3921                              "column": 1
3922                            }
3923                          }
3924                        }
3925                      ],
3926                      "loc": {
3927                        "start": {
3928                          "line": 1,
3929                          "column": 1
3930                        },
3931                        "end": {
3932                          "line": 1,
3933                          "column": 1
3934                        }
3935                      }
3936                    },
3937                    "body": {
3938                      "type": "BlockStatement",
3939                      "statements": [
3940                        {
3941                          "type": "ReturnStatement",
3942                          "argument": {
3943                            "type": "CallExpression",
3944                            "callee": {
3945                              "type": "MemberExpression",
3946                              "object": {
3947                                "type": "ThisExpression",
3948                                "loc": {
3949                                  "start": {
3950                                    "line": 1,
3951                                    "column": 1
3952                                  },
3953                                  "end": {
3954                                    "line": 1,
3955                                    "column": 1
3956                                  }
3957                                }
3958                              },
3959                              "property": {
3960                                "type": "Identifier",
3961                                "name": "then",
3962                                "decorators": [],
3963                                "loc": {
3964                                  "start": {
3965                                    "line": 1,
3966                                    "column": 1
3967                                  },
3968                                  "end": {
3969                                    "line": 1,
3970                                    "column": 1
3971                                  }
3972                                }
3973                              },
3974                              "computed": false,
3975                              "optional": false,
3976                              "loc": {
3977                                "start": {
3978                                  "line": 1,
3979                                  "column": 1
3980                                },
3981                                "end": {
3982                                  "line": 1,
3983                                  "column": 1
3984                                }
3985                              }
3986                            },
3987                            "arguments": [
3988                              {
3989                                "type": "Identifier",
3990                                "name": "onFulfilled",
3991                                "typeAnnotation": {
3992                                  "type": "ETSUnionType",
3993                                  "types": [
3994                                    {
3995                                      "type": "ETSFunctionType",
3996                                      "params": [
3997                                        {
3998                                          "type": "ETSParameterExpression",
3999                                          "name": {
4000                                            "type": "Identifier",
4001                                            "name": "value",
4002                                            "typeAnnotation": {
4003                                              "type": "ETSTypeReference",
4004                                              "part": {
4005                                                "type": "ETSTypeReferencePart",
4006                                                "name": {
4007                                                  "type": "Identifier",
4008                                                  "name": "T",
4009                                                  "decorators": [],
4010                                                  "loc": {
4011                                                    "start": {
4012                                                      "line": 22,
4013                                                      "column": 46
4014                                                    },
4015                                                    "end": {
4016                                                      "line": 22,
4017                                                      "column": 47
4018                                                    }
4019                                                  }
4020                                                },
4021                                                "loc": {
4022                                                  "start": {
4023                                                    "line": 22,
4024                                                    "column": 46
4025                                                  },
4026                                                  "end": {
4027                                                    "line": 22,
4028                                                    "column": 48
4029                                                  }
4030                                                }
4031                                              },
4032                                              "loc": {
4033                                                "start": {
4034                                                  "line": 22,
4035                                                  "column": 46
4036                                                },
4037                                                "end": {
4038                                                  "line": 22,
4039                                                  "column": 48
4040                                                }
4041                                              }
4042                                            },
4043                                            "decorators": [],
4044                                            "loc": {
4045                                              "start": {
4046                                                "line": 22,
4047                                                "column": 39
4048                                              },
4049                                              "end": {
4050                                                "line": 22,
4051                                                "column": 48
4052                                              }
4053                                            }
4054                                          },
4055                                          "loc": {
4056                                            "start": {
4057                                              "line": 1,
4058                                              "column": 1
4059                                            },
4060                                            "end": {
4061                                              "line": 1,
4062                                              "column": 1
4063                                            }
4064                                          }
4065                                        }
4066                                      ],
4067                                      "returnType": {
4068                                        "type": "ETSUnionType",
4069                                        "types": [
4070                                          {
4071                                            "type": "ETSTypeReference",
4072                                            "part": {
4073                                              "type": "ETSTypeReferencePart",
4074                                              "name": {
4075                                                "type": "Identifier",
4076                                                "name": "U",
4077                                                "decorators": [],
4078                                                "loc": {
4079                                                  "start": {
4080                                                    "line": 22,
4081                                                    "column": 52
4082                                                  },
4083                                                  "end": {
4084                                                    "line": 22,
4085                                                    "column": 53
4086                                                  }
4087                                                }
4088                                              },
4089                                              "loc": {
4090                                                "start": {
4091                                                  "line": 22,
4092                                                  "column": 52
4093                                                },
4094                                                "end": {
4095                                                  "line": 22,
4096                                                  "column": 54
4097                                                }
4098                                              }
4099                                            },
4100                                            "loc": {
4101                                              "start": {
4102                                                "line": 22,
4103                                                "column": 52
4104                                              },
4105                                              "end": {
4106                                                "line": 22,
4107                                                "column": 54
4108                                              }
4109                                            }
4110                                          },
4111                                          {
4112                                            "type": "ETSTypeReference",
4113                                            "part": {
4114                                              "type": "ETSTypeReferencePart",
4115                                              "name": {
4116                                                "type": "Identifier",
4117                                                "name": "PL",
4118                                                "decorators": [],
4119                                                "loc": {
4120                                                  "start": {
4121                                                    "line": 22,
4122                                                    "column": 54
4123                                                  },
4124                                                  "end": {
4125                                                    "line": 22,
4126                                                    "column": 56
4127                                                  }
4128                                                }
4129                                              },
4130                                              "typeParams": {
4131                                                "type": "TSTypeParameterInstantiation",
4132                                                "params": [
4133                                                  {
4134                                                    "type": "ETSTypeReference",
4135                                                    "part": {
4136                                                      "type": "ETSTypeReferencePart",
4137                                                      "name": {
4138                                                        "type": "Identifier",
4139                                                        "name": "U",
4140                                                        "decorators": [],
4141                                                        "loc": {
4142                                                          "start": {
4143                                                            "line": 22,
4144                                                            "column": 57
4145                                                          },
4146                                                          "end": {
4147                                                            "line": 22,
4148                                                            "column": 58
4149                                                          }
4150                                                        }
4151                                                      },
4152                                                      "loc": {
4153                                                        "start": {
4154                                                          "line": 22,
4155                                                          "column": 57
4156                                                        },
4157                                                        "end": {
4158                                                          "line": 22,
4159                                                          "column": 59
4160                                                        }
4161                                                      }
4162                                                    },
4163                                                    "loc": {
4164                                                      "start": {
4165                                                        "line": 22,
4166                                                        "column": 57
4167                                                      },
4168                                                      "end": {
4169                                                        "line": 22,
4170                                                        "column": 59
4171                                                      }
4172                                                    }
4173                                                  }
4174                                                ],
4175                                                "loc": {
4176                                                  "start": {
4177                                                    "line": 22,
4178                                                    "column": 56
4179                                                  },
4180                                                  "end": {
4181                                                    "line": 22,
4182                                                    "column": 59
4183                                                  }
4184                                                }
4185                                              },
4186                                              "loc": {
4187                                                "start": {
4188                                                  "line": 22,
4189                                                  "column": 54
4190                                                },
4191                                                "end": {
4192                                                  "line": 22,
4193                                                  "column": 66
4194                                                }
4195                                              }
4196                                            },
4197                                            "loc": {
4198                                              "start": {
4199                                                "line": 22,
4200                                                "column": 54
4201                                              },
4202                                              "end": {
4203                                                "line": 22,
4204                                                "column": 66
4205                                              }
4206                                            }
4207                                          }
4208                                        ],
4209                                        "loc": {
4210                                          "start": {
4211                                            "line": 1,
4212                                            "column": 1
4213                                          },
4214                                          "end": {
4215                                            "line": 1,
4216                                            "column": 1
4217                                          }
4218                                        }
4219                                      }
4220                                      "throwMarker": "throws",
4221                                      "loc": {
4222                                        "start": {
4223                                          "line": 1,
4224                                          "column": 1
4225                                        },
4226                                        "end": {
4227                                          "line": 1,
4228                                          "column": 1
4229                                        }
4230                                      }
4231                                    },
4232                                    {
4233                                      "type": "ETSUndefinedType",
4234                                      "loc": {
4235                                        "start": {
4236                                          "line": 1,
4237                                          "column": 1
4238                                        },
4239                                        "end": {
4240                                          "line": 1,
4241                                          "column": 1
4242                                        }
4243                                      }
4244                                    }
4245                                  ],
4246                                  "loc": {
4247                                    "start": {
4248                                      "line": 1,
4249                                      "column": 1
4250                                    },
4251                                    "end": {
4252                                      "line": 1,
4253                                      "column": 1
4254                                    }
4255                                  }
4256                                },
4257                                "decorators": [],
4258                                "loc": {
4259                                  "start": {
4260                                    "line": 22,
4261                                    "column": 24
4262                                  },
4263                                  "end": {
4264                                    "line": 22,
4265                                    "column": 66
4266                                  }
4267                                }
4268                              },
4269                              {
4270                                "type": "UndefinedLiteral",
4271                                "value": undefined,
4272                                "loc": {
4273                                  "start": {
4274                                    "line": 1,
4275                                    "column": 1
4276                                  },
4277                                  "end": {
4278                                    "line": 1,
4279                                    "column": 1
4280                                  }
4281                                }
4282                              }
4283                            ],
4284                            "optional": false,
4285                            "typeParameters": {
4286                              "type": "TSTypeParameterInstantiation",
4287                              "params": [
4288                                {
4289                                  "type": "ETSTypeReference",
4290                                  "part": {
4291                                    "type": "ETSTypeReferencePart",
4292                                    "name": {
4293                                      "type": "Identifier",
4294                                      "name": "U",
4295                                      "decorators": [],
4296                                      "loc": {
4297                                        "start": {
4298                                          "line": 1,
4299                                          "column": 1
4300                                        },
4301                                        "end": {
4302                                          "line": 1,
4303                                          "column": 1
4304                                        }
4305                                      }
4306                                    },
4307                                    "loc": {
4308                                      "start": {
4309                                        "line": 1,
4310                                        "column": 1
4311                                      },
4312                                      "end": {
4313                                        "line": 1,
4314                                        "column": 1
4315                                      }
4316                                    }
4317                                  },
4318                                  "loc": {
4319                                    "start": {
4320                                      "line": 1,
4321                                      "column": 1
4322                                    },
4323                                    "end": {
4324                                      "line": 1,
4325                                      "column": 1
4326                                    }
4327                                  }
4328                                },
4329                                {
4330                                  "type": "ETSTypeReference",
4331                                  "part": {
4332                                    "type": "ETSTypeReferencePart",
4333                                    "name": {
4334                                      "type": "Identifier",
4335                                      "name": "E",
4336                                      "decorators": [],
4337                                      "loc": {
4338                                        "start": {
4339                                          "line": 1,
4340                                          "column": 1
4341                                        },
4342                                        "end": {
4343                                          "line": 1,
4344                                          "column": 1
4345                                        }
4346                                      }
4347                                    },
4348                                    "loc": {
4349                                      "start": {
4350                                        "line": 1,
4351                                        "column": 1
4352                                      },
4353                                      "end": {
4354                                        "line": 1,
4355                                        "column": 1
4356                                      }
4357                                    }
4358                                  },
4359                                  "loc": {
4360                                    "start": {
4361                                      "line": 1,
4362                                      "column": 1
4363                                    },
4364                                    "end": {
4365                                      "line": 1,
4366                                      "column": 1
4367                                    }
4368                                  }
4369                                }
4370                              ],
4371                              "loc": {
4372                                "start": {
4373                                  "line": 1,
4374                                  "column": 1
4375                                },
4376                                "end": {
4377                                  "line": 1,
4378                                  "column": 1
4379                                }
4380                              }
4381                            },
4382                            "loc": {
4383                              "start": {
4384                                "line": 22,
4385                                "column": 5
4386                              },
4387                              "end": {
4388                                "line": 25,
4389                                "column": 6
4390                              }
4391                            }
4392                          },
4393                          "loc": {
4394                            "start": {
4395                              "line": 1,
4396                              "column": 1
4397                            },
4398                            "end": {
4399                              "line": 1,
4400                              "column": 1
4401                            }
4402                          }
4403                        }
4404                      ],
4405                      "loc": {
4406                        "start": {
4407                          "line": 1,
4408                          "column": 1
4409                        },
4410                        "end": {
4411                          "line": 1,
4412                          "column": 1
4413                        }
4414                      }
4415                    },
4416                    "loc": {
4417                      "start": {
4418                        "line": 803,
4419                        "column": 1
4420                      },
4421                      "end": {
4422                        "line": 803,
4423                        "column": 1
4424                      }
4425                    }
4426                  },
4427                  "loc": {
4428                    "start": {
4429                      "line": 1,
4430                      "column": 1
4431                    },
4432                    "end": {
4433                      "line": 1,
4434                      "column": 1
4435                    }
4436                  }
4437                },
4438                "overloads": [],
4439                "decorators": [],
4440                "loc": {
4441                  "start": {
4442                    "line": 22,
4443                    "column": 5
4444                  },
4445                  "end": {
4446                    "line": 1,
4447                    "column": 1
4448                  }
4449                }
4450              },
4451              {
4452                "type": "MethodDefinition",
4453                "key": {
4454                  "type": "Identifier",
4455                  "name": "then",
4456                  "decorators": [],
4457                  "loc": {
4458                    "start": {
4459                      "line": 22,
4460                      "column": 5
4461                    },
4462                    "end": {
4463                      "line": 22,
4464                      "column": 9
4465                    }
4466                  }
4467                },
4468                "kind": "method",
4469                "accessibility": "public",
4470                "static": false,
4471                "optional": false,
4472                "computed": false,
4473                "value": {
4474                  "type": "FunctionExpression",
4475                  "function": {
4476                    "type": "ScriptFunction",
4477                    "id": {
4478                      "type": "Identifier",
4479                      "name": "then",
4480                      "decorators": [],
4481                      "loc": {
4482                        "start": {
4483                          "line": 22,
4484                          "column": 5
4485                        },
4486                        "end": {
4487                          "line": 22,
4488                          "column": 9
4489                        }
4490                      }
4491                    },
4492                    "generator": false,
4493                    "async": false,
4494                    "expression": false,
4495                    "params": [],
4496                    "returnType": {
4497                      "type": "ETSTypeReference",
4498                      "part": {
4499                        "type": "ETSTypeReferencePart",
4500                        "name": {
4501                          "type": "Identifier",
4502                          "name": "PL",
4503                          "decorators": [],
4504                          "loc": {
4505                            "start": {
4506                              "line": 23,
4507                              "column": 67
4508                            },
4509                            "end": {
4510                              "line": 23,
4511                              "column": 69
4512                            }
4513                          }
4514                        },
4515                        "typeParams": {
4516                          "type": "TSTypeParameterInstantiation",
4517                          "params": [
4518                            {
4519                              "type": "ETSUnionType",
4520                              "types": [
4521                                {
4522                                  "type": "ETSTypeReference",
4523                                  "part": {
4524                                    "type": "ETSTypeReferencePart",
4525                                    "name": {
4526                                      "type": "Identifier",
4527                                      "name": "U",
4528                                      "decorators": [],
4529                                      "loc": {
4530                                        "start": {
4531                                          "line": 23,
4532                                          "column": 70
4533                                        },
4534                                        "end": {
4535                                          "line": 23,
4536                                          "column": 71
4537                                        }
4538                                      }
4539                                    },
4540                                    "loc": {
4541                                      "start": {
4542                                        "line": 23,
4543                                        "column": 70
4544                                      },
4545                                      "end": {
4546                                        "line": 23,
4547                                        "column": 72
4548                                      }
4549                                    }
4550                                  },
4551                                  "loc": {
4552                                    "start": {
4553                                      "line": 23,
4554                                      "column": 70
4555                                    },
4556                                    "end": {
4557                                      "line": 23,
4558                                      "column": 72
4559                                    }
4560                                  }
4561                                },
4562                                {
4563                                  "type": "ETSTypeReference",
4564                                  "part": {
4565                                    "type": "ETSTypeReferencePart",
4566                                    "name": {
4567                                      "type": "Identifier",
4568                                      "name": "E",
4569                                      "decorators": [],
4570                                      "loc": {
4571                                        "start": {
4572                                          "line": 23,
4573                                          "column": 72
4574                                        },
4575                                        "end": {
4576                                          "line": 23,
4577                                          "column": 73
4578                                        }
4579                                      }
4580                                    },
4581                                    "loc": {
4582                                      "start": {
4583                                        "line": 23,
4584                                        "column": 72
4585                                      },
4586                                      "end": {
4587                                        "line": 23,
4588                                        "column": 74
4589                                      }
4590                                    }
4591                                  },
4592                                  "loc": {
4593                                    "start": {
4594                                      "line": 23,
4595                                      "column": 72
4596                                    },
4597                                    "end": {
4598                                      "line": 23,
4599                                      "column": 74
4600                                    }
4601                                  }
4602                                }
4603                              ],
4604                              "loc": {
4605                                "start": {
4606                                  "line": 1,
4607                                  "column": 1
4608                                },
4609                                "end": {
4610                                  "line": 1,
4611                                  "column": 1
4612                                }
4613                              }
4614                            }
4615                          ],
4616                          "loc": {
4617                            "start": {
4618                              "line": 23,
4619                              "column": 69
4620                            },
4621                            "end": {
4622                              "line": 23,
4623                              "column": 74
4624                            }
4625                          }
4626                        },
4627                        "loc": {
4628                          "start": {
4629                            "line": 23,
4630                            "column": 67
4631                          },
4632                          "end": {
4633                            "line": 23,
4634                            "column": 76
4635                          }
4636                        }
4637                      },
4638                      "loc": {
4639                        "start": {
4640                          "line": 23,
4641                          "column": 67
4642                        },
4643                        "end": {
4644                          "line": 23,
4645                          "column": 76
4646                        }
4647                      }
4648                    },
4649                    "typeParameters": {
4650                      "type": "TSTypeParameterDeclaration",
4651                      "params": [
4652                        {
4653                          "type": "TSTypeParameter",
4654                          "name": {
4655                            "type": "Identifier",
4656                            "name": "U",
4657                            "decorators": [],
4658                            "loc": {
4659                              "start": {
4660                                "line": 22,
4661                                "column": 10
4662                              },
4663                              "end": {
4664                                "line": 22,
4665                                "column": 11
4666                              }
4667                            }
4668                          },
4669                          "loc": {
4670                            "start": {
4671                              "line": 1,
4672                              "column": 1
4673                            },
4674                            "end": {
4675                              "line": 1,
4676                              "column": 1
4677                            }
4678                          }
4679                        },
4680                        {
4681                          "type": "TSTypeParameter",
4682                          "name": {
4683                            "type": "Identifier",
4684                            "name": "E",
4685                            "decorators": [],
4686                            "loc": {
4687                              "start": {
4688                                "line": 22,
4689                                "column": 13
4690                              },
4691                              "end": {
4692                                "line": 22,
4693                                "column": 14
4694                              }
4695                            }
4696                          },
4697                          "default": {
4698                            "type": "ETSTypeReference",
4699                            "part": {
4700                              "type": "ETSTypeReferencePart",
4701                              "name": {
4702                                "type": "Identifier",
4703                                "name": "never",
4704                                "decorators": [],
4705                                "loc": {
4706                                  "start": {
4707                                    "line": 22,
4708                                    "column": 17
4709                                  },
4710                                  "end": {
4711                                    "line": 22,
4712                                    "column": 22
4713                                  }
4714                                }
4715                              },
4716                              "loc": {
4717                                "start": {
4718                                  "line": 22,
4719                                  "column": 17
4720                                },
4721                                "end": {
4722                                  "line": 22,
4723                                  "column": 23
4724                                }
4725                              }
4726                            },
4727                            "loc": {
4728                              "start": {
4729                                "line": 22,
4730                                "column": 17
4731                              },
4732                              "end": {
4733                                "line": 22,
4734                                "column": 23
4735                              }
4736                            }
4737                          },
4738                          "loc": {
4739                            "start": {
4740                              "line": 1,
4741                              "column": 1
4742                            },
4743                            "end": {
4744                              "line": 1,
4745                              "column": 1
4746                            }
4747                          }
4748                        }
4749                      ],
4750                      "loc": {
4751                        "start": {
4752                          "line": 1,
4753                          "column": 1
4754                        },
4755                        "end": {
4756                          "line": 1,
4757                          "column": 1
4758                        }
4759                      }
4760                    },
4761                    "body": {
4762                      "type": "BlockStatement",
4763                      "statements": [
4764                        {
4765                          "type": "ReturnStatement",
4766                          "argument": {
4767                            "type": "CallExpression",
4768                            "callee": {
4769                              "type": "MemberExpression",
4770                              "object": {
4771                                "type": "ThisExpression",
4772                                "loc": {
4773                                  "start": {
4774                                    "line": 1,
4775                                    "column": 1
4776                                  },
4777                                  "end": {
4778                                    "line": 1,
4779                                    "column": 1
4780                                  }
4781                                }
4782                              },
4783                              "property": {
4784                                "type": "Identifier",
4785                                "name": "then",
4786                                "decorators": [],
4787                                "loc": {
4788                                  "start": {
4789                                    "line": 1,
4790                                    "column": 1
4791                                  },
4792                                  "end": {
4793                                    "line": 1,
4794                                    "column": 1
4795                                  }
4796                                }
4797                              },
4798                              "computed": false,
4799                              "optional": false,
4800                              "loc": {
4801                                "start": {
4802                                  "line": 1,
4803                                  "column": 1
4804                                },
4805                                "end": {
4806                                  "line": 1,
4807                                  "column": 1
4808                                }
4809                              }
4810                            },
4811                            "arguments": [
4812                              {
4813                                "type": "UndefinedLiteral",
4814                                "value": undefined,
4815                                "loc": {
4816                                  "start": {
4817                                    "line": 1,
4818                                    "column": 1
4819                                  },
4820                                  "end": {
4821                                    "line": 1,
4822                                    "column": 1
4823                                  }
4824                                }
4825                              },
4826                              {
4827                                "type": "UndefinedLiteral",
4828                                "value": undefined,
4829                                "loc": {
4830                                  "start": {
4831                                    "line": 1,
4832                                    "column": 1
4833                                  },
4834                                  "end": {
4835                                    "line": 1,
4836                                    "column": 1
4837                                  }
4838                                }
4839                              }
4840                            ],
4841                            "optional": false,
4842                            "typeParameters": {
4843                              "type": "TSTypeParameterInstantiation",
4844                              "params": [
4845                                {
4846                                  "type": "ETSTypeReference",
4847                                  "part": {
4848                                    "type": "ETSTypeReferencePart",
4849                                    "name": {
4850                                      "type": "Identifier",
4851                                      "name": "U",
4852                                      "decorators": [],
4853                                      "loc": {
4854                                        "start": {
4855                                          "line": 1,
4856                                          "column": 1
4857                                        },
4858                                        "end": {
4859                                          "line": 1,
4860                                          "column": 1
4861                                        }
4862                                      }
4863                                    },
4864                                    "loc": {
4865                                      "start": {
4866                                        "line": 1,
4867                                        "column": 1
4868                                      },
4869                                      "end": {
4870                                        "line": 1,
4871                                        "column": 1
4872                                      }
4873                                    }
4874                                  },
4875                                  "loc": {
4876                                    "start": {
4877                                      "line": 1,
4878                                      "column": 1
4879                                    },
4880                                    "end": {
4881                                      "line": 1,
4882                                      "column": 1
4883                                    }
4884                                  }
4885                                },
4886                                {
4887                                  "type": "ETSTypeReference",
4888                                  "part": {
4889                                    "type": "ETSTypeReferencePart",
4890                                    "name": {
4891                                      "type": "Identifier",
4892                                      "name": "E",
4893                                      "decorators": [],
4894                                      "loc": {
4895                                        "start": {
4896                                          "line": 1,
4897                                          "column": 1
4898                                        },
4899                                        "end": {
4900                                          "line": 1,
4901                                          "column": 1
4902                                        }
4903                                      }
4904                                    },
4905                                    "loc": {
4906                                      "start": {
4907                                        "line": 1,
4908                                        "column": 1
4909                                      },
4910                                      "end": {
4911                                        "line": 1,
4912                                        "column": 1
4913                                      }
4914                                    }
4915                                  },
4916                                  "loc": {
4917                                    "start": {
4918                                      "line": 1,
4919                                      "column": 1
4920                                    },
4921                                    "end": {
4922                                      "line": 1,
4923                                      "column": 1
4924                                    }
4925                                  }
4926                                }
4927                              ],
4928                              "loc": {
4929                                "start": {
4930                                  "line": 1,
4931                                  "column": 1
4932                                },
4933                                "end": {
4934                                  "line": 1,
4935                                  "column": 1
4936                                }
4937                              }
4938                            },
4939                            "loc": {
4940                              "start": {
4941                                "line": 22,
4942                                "column": 5
4943                              },
4944                              "end": {
4945                                "line": 25,
4946                                "column": 6
4947                              }
4948                            }
4949                          },
4950                          "loc": {
4951                            "start": {
4952                              "line": 1,
4953                              "column": 1
4954                            },
4955                            "end": {
4956                              "line": 1,
4957                              "column": 1
4958                            }
4959                          }
4960                        }
4961                      ],
4962                      "loc": {
4963                        "start": {
4964                          "line": 1,
4965                          "column": 1
4966                        },
4967                        "end": {
4968                          "line": 1,
4969                          "column": 1
4970                        }
4971                      }
4972                    },
4973                    "loc": {
4974                      "start": {
4975                        "line": 803,
4976                        "column": 1
4977                      },
4978                      "end": {
4979                        "line": 803,
4980                        "column": 1
4981                      }
4982                    }
4983                  },
4984                  "loc": {
4985                    "start": {
4986                      "line": 1,
4987                      "column": 1
4988                    },
4989                    "end": {
4990                      "line": 1,
4991                      "column": 1
4992                    }
4993                  }
4994                },
4995                "overloads": [],
4996                "decorators": [],
4997                "loc": {
4998                  "start": {
4999                    "line": 22,
5000                    "column": 5
5001                  },
5002                  "end": {
5003                    "line": 1,
5004                    "column": 1
5005                  }
5006                }
5007              }
5008            ],
5009            "decorators": [],
5010            "loc": {
5011              "start": {
5012                "line": 22,
5013                "column": 5
5014              },
5015              "end": {
5016                "line": 25,
5017                "column": 6
5018              }
5019            }
5020          },
5021          {
5022            "type": "MethodDefinition",
5023            "key": {
5024              "type": "Identifier",
5025              "name": "constructor",
5026              "decorators": [],
5027              "loc": {
5028                "start": {
5029                  "line": 1,
5030                  "column": 1
5031                },
5032                "end": {
5033                  "line": 1,
5034                  "column": 1
5035                }
5036              }
5037            },
5038            "kind": "constructor",
5039            "static": false,
5040            "optional": false,
5041            "computed": false,
5042            "value": {
5043              "type": "FunctionExpression",
5044              "function": {
5045                "type": "ScriptFunction",
5046                "id": {
5047                  "type": "Identifier",
5048                  "name": "constructor",
5049                  "decorators": [],
5050                  "loc": {
5051                    "start": {
5052                      "line": 1,
5053                      "column": 1
5054                    },
5055                    "end": {
5056                      "line": 1,
5057                      "column": 1
5058                    }
5059                  }
5060                },
5061                "generator": false,
5062                "async": false,
5063                "expression": false,
5064                "params": [],
5065                "body": {
5066                  "type": "BlockStatement",
5067                  "statements": [],
5068                  "loc": {
5069                    "start": {
5070                      "line": 1,
5071                      "column": 1
5072                    },
5073                    "end": {
5074                      "line": 1,
5075                      "column": 1
5076                    }
5077                  }
5078                },
5079                "loc": {
5080                  "start": {
5081                    "line": 1,
5082                    "column": 1
5083                  },
5084                  "end": {
5085                    "line": 1,
5086                    "column": 1
5087                  }
5088                }
5089              },
5090              "loc": {
5091                "start": {
5092                  "line": 1,
5093                  "column": 1
5094                },
5095                "end": {
5096                  "line": 1,
5097                  "column": 1
5098                }
5099              }
5100            },
5101            "overloads": [],
5102            "decorators": [],
5103            "loc": {
5104              "start": {
5105                "line": 26,
5106                "column": 2
5107              },
5108              "end": {
5109                "line": 26,
5110                "column": 2
5111              }
5112            }
5113          }
5114        ],
5115        "loc": {
5116          "start": {
5117            "line": 21,
5118            "column": 29
5119          },
5120          "end": {
5121            "line": 26,
5122            "column": 2
5123          }
5124        }
5125      },
5126      "loc": {
5127        "start": {
5128          "line": 21,
5129          "column": 1
5130        },
5131        "end": {
5132          "line": 26,
5133          "column": 2
5134        }
5135      }
5136    },
5137    {
5138      "type": "ClassDeclaration",
5139      "definition": {
5140        "id": {
5141          "type": "Identifier",
5142          "name": "ETSGLOBAL",
5143          "decorators": [],
5144          "loc": {
5145            "start": {
5146              "line": 1,
5147              "column": 1
5148            },
5149            "end": {
5150              "line": 1,
5151              "column": 1
5152            }
5153          }
5154        },
5155        "superClass": null,
5156        "implements": [],
5157        "body": [
5158          {
5159            "type": "MethodDefinition",
5160            "key": {
5161              "type": "Identifier",
5162              "name": "_$init$_",
5163              "decorators": [],
5164              "loc": {
5165                "start": {
5166                  "line": 1,
5167                  "column": 1
5168                },
5169                "end": {
5170                  "line": 1,
5171                  "column": 1
5172                }
5173              }
5174            },
5175            "kind": "method",
5176            "accessibility": "public",
5177            "static": true,
5178            "optional": false,
5179            "computed": false,
5180            "value": {
5181              "type": "FunctionExpression",
5182              "function": {
5183                "type": "ScriptFunction",
5184                "id": {
5185                  "type": "Identifier",
5186                  "name": "_$init$_",
5187                  "decorators": [],
5188                  "loc": {
5189                    "start": {
5190                      "line": 1,
5191                      "column": 1
5192                    },
5193                    "end": {
5194                      "line": 1,
5195                      "column": 1
5196                    }
5197                  }
5198                },
5199                "generator": false,
5200                "async": false,
5201                "expression": false,
5202                "params": [],
5203                "body": {
5204                  "type": "BlockStatement",
5205                  "statements": [],
5206                  "loc": {
5207                    "start": {
5208                      "line": 1,
5209                      "column": 1
5210                    },
5211                    "end": {
5212                      "line": 1,
5213                      "column": 1
5214                    }
5215                  }
5216                },
5217                "loc": {
5218                  "start": {
5219                    "line": 1,
5220                    "column": 1
5221                  },
5222                  "end": {
5223                    "line": 1,
5224                    "column": 1
5225                  }
5226                }
5227              },
5228              "loc": {
5229                "start": {
5230                  "line": 1,
5231                  "column": 1
5232                },
5233                "end": {
5234                  "line": 1,
5235                  "column": 1
5236                }
5237              }
5238            },
5239            "overloads": [],
5240            "decorators": [],
5241            "loc": {
5242              "start": {
5243                "line": 1,
5244                "column": 1
5245              },
5246              "end": {
5247                "line": 1,
5248                "column": 1
5249              }
5250            }
5251          }
5252        ],
5253        "loc": {
5254          "start": {
5255            "line": 1,
5256            "column": 1
5257          },
5258          "end": {
5259            "line": 1,
5260            "column": 1
5261          }
5262        }
5263      },
5264      "loc": {
5265        "start": {
5266          "line": 1,
5267          "column": 1
5268        },
5269        "end": {
5270          "line": 1,
5271          "column": 1
5272        }
5273      }
5274    }
5275  ],
5276  "loc": {
5277    "start": {
5278      "line": 1,
5279      "column": 1
5280    },
5281    "end": {
5282      "line": 27,
5283      "column": 1
5284    }
5285  }
5286}
5287