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