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