1{
2  "type": "Program",
3  "statements": [
4    {
5      "type": "ClassDeclaration",
6      "definition": {
7        "id": {
8          "type": "Identifier",
9          "name": "A",
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        "superClass": null,
23        "implements": [],
24        "body": [
25          {
26            "type": "MethodDefinition",
27            "key": {
28              "type": "Identifier",
29              "name": "constructor",
30              "decorators": [],
31              "loc": {
32                "start": {
33                  "line": 1,
34                  "column": 1
35                },
36                "end": {
37                  "line": 1,
38                  "column": 1
39                }
40              }
41            },
42            "kind": "constructor",
43            "static": false,
44            "optional": false,
45            "computed": false,
46            "value": {
47              "type": "FunctionExpression",
48              "function": {
49                "type": "ScriptFunction",
50                "id": {
51                  "type": "Identifier",
52                  "name": "constructor",
53                  "decorators": [],
54                  "loc": {
55                    "start": {
56                      "line": 1,
57                      "column": 1
58                    },
59                    "end": {
60                      "line": 1,
61                      "column": 1
62                    }
63                  }
64                },
65                "generator": false,
66                "async": false,
67                "expression": false,
68                "params": [],
69                "body": {
70                  "type": "BlockStatement",
71                  "statements": [],
72                  "loc": {
73                    "start": {
74                      "line": 1,
75                      "column": 1
76                    },
77                    "end": {
78                      "line": 1,
79                      "column": 1
80                    }
81                  }
82                },
83                "loc": {
84                  "start": {
85                    "line": 1,
86                    "column": 1
87                  },
88                  "end": {
89                    "line": 1,
90                    "column": 1
91                  }
92                }
93              },
94              "loc": {
95                "start": {
96                  "line": 1,
97                  "column": 1
98                },
99                "end": {
100                  "line": 1,
101                  "column": 1
102                }
103              }
104            },
105            "overloads": [],
106            "decorators": [],
107            "loc": {
108              "start": {
109                "line": 16,
110                "column": 11
111              },
112              "end": {
113                "line": 16,
114                "column": 11
115              }
116            }
117          }
118        ],
119        "loc": {
120          "start": {
121            "line": 16,
122            "column": 9
123          },
124          "end": {
125            "line": 16,
126            "column": 11
127          }
128        }
129      },
130      "loc": {
131        "start": {
132          "line": 16,
133          "column": 1
134        },
135        "end": {
136          "line": 16,
137          "column": 11
138        }
139      }
140    },
141    {
142      "type": "ClassDeclaration",
143      "definition": {
144        "id": {
145          "type": "Identifier",
146          "name": "B",
147          "decorators": [],
148          "loc": {
149            "start": {
150              "line": 17,
151              "column": 7
152            },
153            "end": {
154              "line": 17,
155              "column": 8
156            }
157          }
158        },
159        "superClass": {
160          "type": "ETSTypeReference",
161          "part": {
162            "type": "ETSTypeReferencePart",
163            "name": {
164              "type": "Identifier",
165              "name": "A",
166              "decorators": [],
167              "loc": {
168                "start": {
169                  "line": 17,
170                  "column": 17
171                },
172                "end": {
173                  "line": 17,
174                  "column": 18
175                }
176              }
177            },
178            "loc": {
179              "start": {
180                "line": 17,
181                "column": 17
182              },
183              "end": {
184                "line": 17,
185                "column": 20
186              }
187            }
188          },
189          "loc": {
190            "start": {
191              "line": 17,
192              "column": 17
193            },
194            "end": {
195              "line": 17,
196              "column": 20
197            }
198          }
199        },
200        "implements": [],
201        "body": [
202          {
203            "type": "MethodDefinition",
204            "key": {
205              "type": "Identifier",
206              "name": "constructor",
207              "decorators": [],
208              "loc": {
209                "start": {
210                  "line": 1,
211                  "column": 1
212                },
213                "end": {
214                  "line": 1,
215                  "column": 1
216                }
217              }
218            },
219            "kind": "constructor",
220            "static": false,
221            "optional": false,
222            "computed": false,
223            "value": {
224              "type": "FunctionExpression",
225              "function": {
226                "type": "ScriptFunction",
227                "id": {
228                  "type": "Identifier",
229                  "name": "constructor",
230                  "decorators": [],
231                  "loc": {
232                    "start": {
233                      "line": 1,
234                      "column": 1
235                    },
236                    "end": {
237                      "line": 1,
238                      "column": 1
239                    }
240                  }
241                },
242                "generator": false,
243                "async": false,
244                "expression": false,
245                "params": [],
246                "body": {
247                  "type": "BlockStatement",
248                  "statements": [],
249                  "loc": {
250                    "start": {
251                      "line": 1,
252                      "column": 1
253                    },
254                    "end": {
255                      "line": 1,
256                      "column": 1
257                    }
258                  }
259                },
260                "loc": {
261                  "start": {
262                    "line": 1,
263                    "column": 1
264                  },
265                  "end": {
266                    "line": 1,
267                    "column": 1
268                  }
269                }
270              },
271              "loc": {
272                "start": {
273                  "line": 1,
274                  "column": 1
275                },
276                "end": {
277                  "line": 1,
278                  "column": 1
279                }
280              }
281            },
282            "overloads": [],
283            "decorators": [],
284            "loc": {
285              "start": {
286                "line": 17,
287                "column": 21
288              },
289              "end": {
290                "line": 17,
291                "column": 21
292              }
293            }
294          }
295        ],
296        "loc": {
297          "start": {
298            "line": 17,
299            "column": 19
300          },
301          "end": {
302            "line": 17,
303            "column": 21
304          }
305        }
306      },
307      "loc": {
308        "start": {
309          "line": 17,
310          "column": 1
311        },
312        "end": {
313          "line": 17,
314          "column": 21
315        }
316      }
317    },
318    {
319      "type": "ClassDeclaration",
320      "definition": {
321        "id": {
322          "type": "Identifier",
323          "name": "A1",
324          "decorators": [],
325          "loc": {
326            "start": {
327              "line": 19,
328              "column": 7
329            },
330            "end": {
331              "line": 19,
332              "column": 9
333            }
334          }
335        },
336        "typeParameters": {
337          "type": "TSTypeParameterDeclaration",
338          "params": [
339            {
340              "type": "TSTypeParameter",
341              "name": {
342                "type": "Identifier",
343                "name": "T",
344                "decorators": [],
345                "loc": {
346                  "start": {
347                    "line": 19,
348                    "column": 13
349                  },
350                  "end": {
351                    "line": 19,
352                    "column": 14
353                  }
354                }
355              },
356              "in": true,
357              "loc": {
358                "start": {
359                  "line": 19,
360                  "column": 10
361                },
362                "end": {
363                  "line": 19,
364                  "column": 15
365                }
366              }
367            }
368          ],
369          "loc": {
370            "start": {
371              "line": 19,
372              "column": 9
373            },
374            "end": {
375              "line": 19,
376              "column": 15
377            }
378          }
379        },
380        "superClass": null,
381        "implements": [],
382        "body": [
383          {
384            "type": "MethodDefinition",
385            "key": {
386              "type": "Identifier",
387              "name": "constructor",
388              "decorators": [],
389              "loc": {
390                "start": {
391                  "line": 1,
392                  "column": 1
393                },
394                "end": {
395                  "line": 1,
396                  "column": 1
397                }
398              }
399            },
400            "kind": "constructor",
401            "static": false,
402            "optional": false,
403            "computed": false,
404            "value": {
405              "type": "FunctionExpression",
406              "function": {
407                "type": "ScriptFunction",
408                "id": {
409                  "type": "Identifier",
410                  "name": "constructor",
411                  "decorators": [],
412                  "loc": {
413                    "start": {
414                      "line": 1,
415                      "column": 1
416                    },
417                    "end": {
418                      "line": 1,
419                      "column": 1
420                    }
421                  }
422                },
423                "generator": false,
424                "async": false,
425                "expression": false,
426                "params": [],
427                "body": {
428                  "type": "BlockStatement",
429                  "statements": [],
430                  "loc": {
431                    "start": {
432                      "line": 1,
433                      "column": 1
434                    },
435                    "end": {
436                      "line": 1,
437                      "column": 1
438                    }
439                  }
440                },
441                "loc": {
442                  "start": {
443                    "line": 1,
444                    "column": 1
445                  },
446                  "end": {
447                    "line": 1,
448                    "column": 1
449                  }
450                }
451              },
452              "loc": {
453                "start": {
454                  "line": 1,
455                  "column": 1
456                },
457                "end": {
458                  "line": 1,
459                  "column": 1
460                }
461              }
462            },
463            "overloads": [],
464            "decorators": [],
465            "loc": {
466              "start": {
467                "line": 19,
468                "column": 18
469              },
470              "end": {
471                "line": 19,
472                "column": 18
473              }
474            }
475          }
476        ],
477        "loc": {
478          "start": {
479            "line": 19,
480            "column": 16
481          },
482          "end": {
483            "line": 19,
484            "column": 18
485          }
486        }
487      },
488      "loc": {
489        "start": {
490          "line": 19,
491          "column": 1
492        },
493        "end": {
494          "line": 19,
495          "column": 18
496        }
497      }
498    },
499    {
500      "type": "ClassDeclaration",
501      "definition": {
502        "id": {
503          "type": "Identifier",
504          "name": "A2",
505          "decorators": [],
506          "loc": {
507            "start": {
508              "line": 20,
509              "column": 7
510            },
511            "end": {
512              "line": 20,
513              "column": 9
514            }
515          }
516        },
517        "typeParameters": {
518          "type": "TSTypeParameterDeclaration",
519          "params": [
520            {
521              "type": "TSTypeParameter",
522              "name": {
523                "type": "Identifier",
524                "name": "T",
525                "decorators": [],
526                "loc": {
527                  "start": {
528                    "line": 20,
529                    "column": 14
530                  },
531                  "end": {
532                    "line": 20,
533                    "column": 15
534                  }
535                }
536              },
537              "out": true,
538              "loc": {
539                "start": {
540                  "line": 20,
541                  "column": 10
542                },
543                "end": {
544                  "line": 20,
545                  "column": 16
546                }
547              }
548            }
549          ],
550          "loc": {
551            "start": {
552              "line": 20,
553              "column": 9
554            },
555            "end": {
556              "line": 20,
557              "column": 16
558            }
559          }
560        },
561        "superClass": null,
562        "implements": [],
563        "body": [
564          {
565            "type": "MethodDefinition",
566            "key": {
567              "type": "Identifier",
568              "name": "constructor",
569              "decorators": [],
570              "loc": {
571                "start": {
572                  "line": 1,
573                  "column": 1
574                },
575                "end": {
576                  "line": 1,
577                  "column": 1
578                }
579              }
580            },
581            "kind": "constructor",
582            "static": false,
583            "optional": false,
584            "computed": false,
585            "value": {
586              "type": "FunctionExpression",
587              "function": {
588                "type": "ScriptFunction",
589                "id": {
590                  "type": "Identifier",
591                  "name": "constructor",
592                  "decorators": [],
593                  "loc": {
594                    "start": {
595                      "line": 1,
596                      "column": 1
597                    },
598                    "end": {
599                      "line": 1,
600                      "column": 1
601                    }
602                  }
603                },
604                "generator": false,
605                "async": false,
606                "expression": false,
607                "params": [],
608                "body": {
609                  "type": "BlockStatement",
610                  "statements": [],
611                  "loc": {
612                    "start": {
613                      "line": 1,
614                      "column": 1
615                    },
616                    "end": {
617                      "line": 1,
618                      "column": 1
619                    }
620                  }
621                },
622                "loc": {
623                  "start": {
624                    "line": 1,
625                    "column": 1
626                  },
627                  "end": {
628                    "line": 1,
629                    "column": 1
630                  }
631                }
632              },
633              "loc": {
634                "start": {
635                  "line": 1,
636                  "column": 1
637                },
638                "end": {
639                  "line": 1,
640                  "column": 1
641                }
642              }
643            },
644            "overloads": [],
645            "decorators": [],
646            "loc": {
647              "start": {
648                "line": 20,
649                "column": 19
650              },
651              "end": {
652                "line": 20,
653                "column": 19
654              }
655            }
656          }
657        ],
658        "loc": {
659          "start": {
660            "line": 20,
661            "column": 17
662          },
663          "end": {
664            "line": 20,
665            "column": 19
666          }
667        }
668      },
669      "loc": {
670        "start": {
671          "line": 20,
672          "column": 1
673        },
674        "end": {
675          "line": 20,
676          "column": 19
677        }
678      }
679    },
680    {
681      "type": "ClassDeclaration",
682      "definition": {
683        "id": {
684          "type": "Identifier",
685          "name": "ETSGLOBAL",
686          "decorators": [],
687          "loc": {
688            "start": {
689              "line": 1,
690              "column": 1
691            },
692            "end": {
693              "line": 1,
694              "column": 1
695            }
696          }
697        },
698        "superClass": null,
699        "implements": [],
700        "body": [
701          {
702            "type": "MethodDefinition",
703            "key": {
704              "type": "Identifier",
705              "name": "_$init$_",
706              "decorators": [],
707              "loc": {
708                "start": {
709                  "line": 1,
710                  "column": 1
711                },
712                "end": {
713                  "line": 1,
714                  "column": 1
715                }
716              }
717            },
718            "kind": "method",
719            "accessibility": "public",
720            "static": true,
721            "optional": false,
722            "computed": false,
723            "value": {
724              "type": "FunctionExpression",
725              "function": {
726                "type": "ScriptFunction",
727                "id": {
728                  "type": "Identifier",
729                  "name": "_$init$_",
730                  "decorators": [],
731                  "loc": {
732                    "start": {
733                      "line": 1,
734                      "column": 1
735                    },
736                    "end": {
737                      "line": 1,
738                      "column": 1
739                    }
740                  }
741                },
742                "generator": false,
743                "async": false,
744                "expression": false,
745                "params": [],
746                "body": {
747                  "type": "BlockStatement",
748                  "statements": [],
749                  "loc": {
750                    "start": {
751                      "line": 1,
752                      "column": 1
753                    },
754                    "end": {
755                      "line": 1,
756                      "column": 1
757                    }
758                  }
759                },
760                "loc": {
761                  "start": {
762                    "line": 1,
763                    "column": 1
764                  },
765                  "end": {
766                    "line": 1,
767                    "column": 1
768                  }
769                }
770              },
771              "loc": {
772                "start": {
773                  "line": 1,
774                  "column": 1
775                },
776                "end": {
777                  "line": 1,
778                  "column": 1
779                }
780              }
781            },
782            "overloads": [],
783            "decorators": [],
784            "loc": {
785              "start": {
786                "line": 1,
787                "column": 1
788              },
789              "end": {
790                "line": 1,
791                "column": 1
792              }
793            }
794          },
795          {
796            "type": "MethodDefinition",
797            "key": {
798              "type": "Identifier",
799              "name": "main",
800              "decorators": [],
801              "loc": {
802                "start": {
803                  "line": 22,
804                  "column": 10
805                },
806                "end": {
807                  "line": 22,
808                  "column": 14
809                }
810              }
811            },
812            "kind": "method",
813            "accessibility": "public",
814            "static": true,
815            "optional": false,
816            "computed": false,
817            "value": {
818              "type": "FunctionExpression",
819              "function": {
820                "type": "ScriptFunction",
821                "id": {
822                  "type": "Identifier",
823                  "name": "main",
824                  "decorators": [],
825                  "loc": {
826                    "start": {
827                      "line": 22,
828                      "column": 10
829                    },
830                    "end": {
831                      "line": 22,
832                      "column": 14
833                    }
834                  }
835                },
836                "generator": false,
837                "async": false,
838                "expression": false,
839                "params": [],
840                "returnType": {
841                  "type": "ETSPrimitiveType",
842                  "loc": {
843                    "start": {
844                      "line": 22,
845                      "column": 18
846                    },
847                    "end": {
848                      "line": 22,
849                      "column": 22
850                    }
851                  }
852                },
853                "body": {
854                  "type": "BlockStatement",
855                  "statements": [
856                    {
857                      "type": "VariableDeclaration",
858                      "declarations": [
859                        {
860                          "type": "VariableDeclarator",
861                          "id": {
862                            "type": "Identifier",
863                            "name": "x1",
864                            "typeAnnotation": {
865                              "type": "ETSTypeReference",
866                              "part": {
867                                "type": "ETSTypeReferencePart",
868                                "name": {
869                                  "type": "Identifier",
870                                  "name": "A1",
871                                  "decorators": [],
872                                  "loc": {
873                                    "start": {
874                                      "line": 23,
875                                      "column": 13
876                                    },
877                                    "end": {
878                                      "line": 23,
879                                      "column": 15
880                                    }
881                                  }
882                                },
883                                "typeParams": {
884                                  "type": "TSTypeParameterInstantiation",
885                                  "params": [
886                                    {
887                                      "type": "ETSTypeReference",
888                                      "part": {
889                                        "type": "ETSTypeReferencePart",
890                                        "name": {
891                                          "type": "Identifier",
892                                          "name": "A",
893                                          "decorators": [],
894                                          "loc": {
895                                            "start": {
896                                              "line": 23,
897                                              "column": 16
898                                            },
899                                            "end": {
900                                              "line": 23,
901                                              "column": 17
902                                            }
903                                          }
904                                        },
905                                        "loc": {
906                                          "start": {
907                                            "line": 23,
908                                            "column": 16
909                                          },
910                                          "end": {
911                                            "line": 23,
912                                            "column": 18
913                                          }
914                                        }
915                                      },
916                                      "loc": {
917                                        "start": {
918                                          "line": 23,
919                                          "column": 16
920                                        },
921                                        "end": {
922                                          "line": 23,
923                                          "column": 18
924                                        }
925                                      }
926                                    }
927                                  ],
928                                  "loc": {
929                                    "start": {
930                                      "line": 23,
931                                      "column": 15
932                                    },
933                                    "end": {
934                                      "line": 23,
935                                      "column": 18
936                                    }
937                                  }
938                                },
939                                "loc": {
940                                  "start": {
941                                    "line": 23,
942                                    "column": 13
943                                  },
944                                  "end": {
945                                    "line": 23,
946                                    "column": 20
947                                  }
948                                }
949                              },
950                              "loc": {
951                                "start": {
952                                  "line": 23,
953                                  "column": 13
954                                },
955                                "end": {
956                                  "line": 23,
957                                  "column": 20
958                                }
959                              }
960                            },
961                            "decorators": [],
962                            "loc": {
963                              "start": {
964                                "line": 23,
965                                "column": 9
966                              },
967                              "end": {
968                                "line": 23,
969                                "column": 11
970                              }
971                            }
972                          },
973                          "init": {
974                            "type": "ETSNewClassInstanceExpression",
975                            "typeReference": {
976                              "type": "ETSTypeReference",
977                              "part": {
978                                "type": "ETSTypeReferencePart",
979                                "name": {
980                                  "type": "Identifier",
981                                  "name": "A1",
982                                  "decorators": [],
983                                  "loc": {
984                                    "start": {
985                                      "line": 23,
986                                      "column": 25
987                                    },
988                                    "end": {
989                                      "line": 23,
990                                      "column": 27
991                                    }
992                                  }
993                                },
994                                "typeParams": {
995                                  "type": "TSTypeParameterInstantiation",
996                                  "params": [
997                                    {
998                                      "type": "ETSTypeReference",
999                                      "part": {
1000                                        "type": "ETSTypeReferencePart",
1001                                        "name": {
1002                                          "type": "Identifier",
1003                                          "name": "A",
1004                                          "decorators": [],
1005                                          "loc": {
1006                                            "start": {
1007                                              "line": 23,
1008                                              "column": 28
1009                                            },
1010                                            "end": {
1011                                              "line": 23,
1012                                              "column": 29
1013                                            }
1014                                          }
1015                                        },
1016                                        "loc": {
1017                                          "start": {
1018                                            "line": 23,
1019                                            "column": 28
1020                                          },
1021                                          "end": {
1022                                            "line": 23,
1023                                            "column": 30
1024                                          }
1025                                        }
1026                                      },
1027                                      "loc": {
1028                                        "start": {
1029                                          "line": 23,
1030                                          "column": 28
1031                                        },
1032                                        "end": {
1033                                          "line": 23,
1034                                          "column": 30
1035                                        }
1036                                      }
1037                                    }
1038                                  ],
1039                                  "loc": {
1040                                    "start": {
1041                                      "line": 23,
1042                                      "column": 27
1043                                    },
1044                                    "end": {
1045                                      "line": 23,
1046                                      "column": 30
1047                                    }
1048                                  }
1049                                },
1050                                "loc": {
1051                                  "start": {
1052                                    "line": 23,
1053                                    "column": 25
1054                                  },
1055                                  "end": {
1056                                    "line": 23,
1057                                    "column": 31
1058                                  }
1059                                }
1060                              },
1061                              "loc": {
1062                                "start": {
1063                                  "line": 23,
1064                                  "column": 25
1065                                },
1066                                "end": {
1067                                  "line": 23,
1068                                  "column": 31
1069                                }
1070                              }
1071                            },
1072                            "arguments": [],
1073                            "loc": {
1074                              "start": {
1075                                "line": 23,
1076                                "column": 21
1077                              },
1078                              "end": {
1079                                "line": 24,
1080                                "column": 8
1081                              }
1082                            }
1083                          },
1084                          "loc": {
1085                            "start": {
1086                              "line": 23,
1087                              "column": 9
1088                            },
1089                            "end": {
1090                              "line": 24,
1091                              "column": 8
1092                            }
1093                          }
1094                        }
1095                      ],
1096                      "kind": "let",
1097                      "loc": {
1098                        "start": {
1099                          "line": 23,
1100                          "column": 5
1101                        },
1102                        "end": {
1103                          "line": 24,
1104                          "column": 8
1105                        }
1106                      }
1107                    },
1108                    {
1109                      "type": "VariableDeclaration",
1110                      "declarations": [
1111                        {
1112                          "type": "VariableDeclarator",
1113                          "id": {
1114                            "type": "Identifier",
1115                            "name": "x2",
1116                            "typeAnnotation": {
1117                              "type": "ETSTypeReference",
1118                              "part": {
1119                                "type": "ETSTypeReferencePart",
1120                                "name": {
1121                                  "type": "Identifier",
1122                                  "name": "A1",
1123                                  "decorators": [],
1124                                  "loc": {
1125                                    "start": {
1126                                      "line": 24,
1127                                      "column": 13
1128                                    },
1129                                    "end": {
1130                                      "line": 24,
1131                                      "column": 15
1132                                    }
1133                                  }
1134                                },
1135                                "typeParams": {
1136                                  "type": "TSTypeParameterInstantiation",
1137                                  "params": [
1138                                    {
1139                                      "type": "ETSTypeReference",
1140                                      "part": {
1141                                        "type": "ETSTypeReferencePart",
1142                                        "name": {
1143                                          "type": "Identifier",
1144                                          "name": "B",
1145                                          "decorators": [],
1146                                          "loc": {
1147                                            "start": {
1148                                              "line": 24,
1149                                              "column": 16
1150                                            },
1151                                            "end": {
1152                                              "line": 24,
1153                                              "column": 17
1154                                            }
1155                                          }
1156                                        },
1157                                        "loc": {
1158                                          "start": {
1159                                            "line": 24,
1160                                            "column": 16
1161                                          },
1162                                          "end": {
1163                                            "line": 24,
1164                                            "column": 18
1165                                          }
1166                                        }
1167                                      },
1168                                      "loc": {
1169                                        "start": {
1170                                          "line": 24,
1171                                          "column": 16
1172                                        },
1173                                        "end": {
1174                                          "line": 24,
1175                                          "column": 18
1176                                        }
1177                                      }
1178                                    }
1179                                  ],
1180                                  "loc": {
1181                                    "start": {
1182                                      "line": 24,
1183                                      "column": 15
1184                                    },
1185                                    "end": {
1186                                      "line": 24,
1187                                      "column": 18
1188                                    }
1189                                  }
1190                                },
1191                                "loc": {
1192                                  "start": {
1193                                    "line": 24,
1194                                    "column": 13
1195                                  },
1196                                  "end": {
1197                                    "line": 24,
1198                                    "column": 20
1199                                  }
1200                                }
1201                              },
1202                              "loc": {
1203                                "start": {
1204                                  "line": 24,
1205                                  "column": 13
1206                                },
1207                                "end": {
1208                                  "line": 24,
1209                                  "column": 20
1210                                }
1211                              }
1212                            },
1213                            "decorators": [],
1214                            "loc": {
1215                              "start": {
1216                                "line": 24,
1217                                "column": 9
1218                              },
1219                              "end": {
1220                                "line": 24,
1221                                "column": 11
1222                              }
1223                            }
1224                          },
1225                          "init": {
1226                            "type": "ETSNewClassInstanceExpression",
1227                            "typeReference": {
1228                              "type": "ETSTypeReference",
1229                              "part": {
1230                                "type": "ETSTypeReferencePart",
1231                                "name": {
1232                                  "type": "Identifier",
1233                                  "name": "A1",
1234                                  "decorators": [],
1235                                  "loc": {
1236                                    "start": {
1237                                      "line": 24,
1238                                      "column": 25
1239                                    },
1240                                    "end": {
1241                                      "line": 24,
1242                                      "column": 27
1243                                    }
1244                                  }
1245                                },
1246                                "typeParams": {
1247                                  "type": "TSTypeParameterInstantiation",
1248                                  "params": [
1249                                    {
1250                                      "type": "ETSTypeReference",
1251                                      "part": {
1252                                        "type": "ETSTypeReferencePart",
1253                                        "name": {
1254                                          "type": "Identifier",
1255                                          "name": "A",
1256                                          "decorators": [],
1257                                          "loc": {
1258                                            "start": {
1259                                              "line": 24,
1260                                              "column": 28
1261                                            },
1262                                            "end": {
1263                                              "line": 24,
1264                                              "column": 29
1265                                            }
1266                                          }
1267                                        },
1268                                        "loc": {
1269                                          "start": {
1270                                            "line": 24,
1271                                            "column": 28
1272                                          },
1273                                          "end": {
1274                                            "line": 24,
1275                                            "column": 30
1276                                          }
1277                                        }
1278                                      },
1279                                      "loc": {
1280                                        "start": {
1281                                          "line": 24,
1282                                          "column": 28
1283                                        },
1284                                        "end": {
1285                                          "line": 24,
1286                                          "column": 30
1287                                        }
1288                                      }
1289                                    }
1290                                  ],
1291                                  "loc": {
1292                                    "start": {
1293                                      "line": 24,
1294                                      "column": 27
1295                                    },
1296                                    "end": {
1297                                      "line": 24,
1298                                      "column": 30
1299                                    }
1300                                  }
1301                                },
1302                                "loc": {
1303                                  "start": {
1304                                    "line": 24,
1305                                    "column": 25
1306                                  },
1307                                  "end": {
1308                                    "line": 24,
1309                                    "column": 31
1310                                  }
1311                                }
1312                              },
1313                              "loc": {
1314                                "start": {
1315                                  "line": 24,
1316                                  "column": 25
1317                                },
1318                                "end": {
1319                                  "line": 24,
1320                                  "column": 31
1321                                }
1322                              }
1323                            },
1324                            "arguments": [],
1325                            "loc": {
1326                              "start": {
1327                                "line": 24,
1328                                "column": 21
1329                              },
1330                              "end": {
1331                                "line": 26,
1332                                "column": 8
1333                              }
1334                            }
1335                          },
1336                          "loc": {
1337                            "start": {
1338                              "line": 24,
1339                              "column": 9
1340                            },
1341                            "end": {
1342                              "line": 26,
1343                              "column": 8
1344                            }
1345                          }
1346                        }
1347                      ],
1348                      "kind": "let",
1349                      "loc": {
1350                        "start": {
1351                          "line": 24,
1352                          "column": 5
1353                        },
1354                        "end": {
1355                          "line": 26,
1356                          "column": 8
1357                        }
1358                      }
1359                    },
1360                    {
1361                      "type": "VariableDeclaration",
1362                      "declarations": [
1363                        {
1364                          "type": "VariableDeclarator",
1365                          "id": {
1366                            "type": "Identifier",
1367                            "name": "x3",
1368                            "typeAnnotation": {
1369                              "type": "ETSTypeReference",
1370                              "part": {
1371                                "type": "ETSTypeReferencePart",
1372                                "name": {
1373                                  "type": "Identifier",
1374                                  "name": "A2",
1375                                  "decorators": [],
1376                                  "loc": {
1377                                    "start": {
1378                                      "line": 26,
1379                                      "column": 13
1380                                    },
1381                                    "end": {
1382                                      "line": 26,
1383                                      "column": 15
1384                                    }
1385                                  }
1386                                },
1387                                "typeParams": {
1388                                  "type": "TSTypeParameterInstantiation",
1389                                  "params": [
1390                                    {
1391                                      "type": "ETSTypeReference",
1392                                      "part": {
1393                                        "type": "ETSTypeReferencePart",
1394                                        "name": {
1395                                          "type": "Identifier",
1396                                          "name": "A",
1397                                          "decorators": [],
1398                                          "loc": {
1399                                            "start": {
1400                                              "line": 26,
1401                                              "column": 16
1402                                            },
1403                                            "end": {
1404                                              "line": 26,
1405                                              "column": 17
1406                                            }
1407                                          }
1408                                        },
1409                                        "loc": {
1410                                          "start": {
1411                                            "line": 26,
1412                                            "column": 16
1413                                          },
1414                                          "end": {
1415                                            "line": 26,
1416                                            "column": 18
1417                                          }
1418                                        }
1419                                      },
1420                                      "loc": {
1421                                        "start": {
1422                                          "line": 26,
1423                                          "column": 16
1424                                        },
1425                                        "end": {
1426                                          "line": 26,
1427                                          "column": 18
1428                                        }
1429                                      }
1430                                    }
1431                                  ],
1432                                  "loc": {
1433                                    "start": {
1434                                      "line": 26,
1435                                      "column": 15
1436                                    },
1437                                    "end": {
1438                                      "line": 26,
1439                                      "column": 18
1440                                    }
1441                                  }
1442                                },
1443                                "loc": {
1444                                  "start": {
1445                                    "line": 26,
1446                                    "column": 13
1447                                  },
1448                                  "end": {
1449                                    "line": 26,
1450                                    "column": 20
1451                                  }
1452                                }
1453                              },
1454                              "loc": {
1455                                "start": {
1456                                  "line": 26,
1457                                  "column": 13
1458                                },
1459                                "end": {
1460                                  "line": 26,
1461                                  "column": 20
1462                                }
1463                              }
1464                            },
1465                            "decorators": [],
1466                            "loc": {
1467                              "start": {
1468                                "line": 26,
1469                                "column": 9
1470                              },
1471                              "end": {
1472                                "line": 26,
1473                                "column": 11
1474                              }
1475                            }
1476                          },
1477                          "init": {
1478                            "type": "ETSNewClassInstanceExpression",
1479                            "typeReference": {
1480                              "type": "ETSTypeReference",
1481                              "part": {
1482                                "type": "ETSTypeReferencePart",
1483                                "name": {
1484                                  "type": "Identifier",
1485                                  "name": "A2",
1486                                  "decorators": [],
1487                                  "loc": {
1488                                    "start": {
1489                                      "line": 26,
1490                                      "column": 25
1491                                    },
1492                                    "end": {
1493                                      "line": 26,
1494                                      "column": 27
1495                                    }
1496                                  }
1497                                },
1498                                "typeParams": {
1499                                  "type": "TSTypeParameterInstantiation",
1500                                  "params": [
1501                                    {
1502                                      "type": "ETSTypeReference",
1503                                      "part": {
1504                                        "type": "ETSTypeReferencePart",
1505                                        "name": {
1506                                          "type": "Identifier",
1507                                          "name": "A",
1508                                          "decorators": [],
1509                                          "loc": {
1510                                            "start": {
1511                                              "line": 26,
1512                                              "column": 28
1513                                            },
1514                                            "end": {
1515                                              "line": 26,
1516                                              "column": 29
1517                                            }
1518                                          }
1519                                        },
1520                                        "loc": {
1521                                          "start": {
1522                                            "line": 26,
1523                                            "column": 28
1524                                          },
1525                                          "end": {
1526                                            "line": 26,
1527                                            "column": 30
1528                                          }
1529                                        }
1530                                      },
1531                                      "loc": {
1532                                        "start": {
1533                                          "line": 26,
1534                                          "column": 28
1535                                        },
1536                                        "end": {
1537                                          "line": 26,
1538                                          "column": 30
1539                                        }
1540                                      }
1541                                    }
1542                                  ],
1543                                  "loc": {
1544                                    "start": {
1545                                      "line": 26,
1546                                      "column": 27
1547                                    },
1548                                    "end": {
1549                                      "line": 26,
1550                                      "column": 30
1551                                    }
1552                                  }
1553                                },
1554                                "loc": {
1555                                  "start": {
1556                                    "line": 26,
1557                                    "column": 25
1558                                  },
1559                                  "end": {
1560                                    "line": 26,
1561                                    "column": 31
1562                                  }
1563                                }
1564                              },
1565                              "loc": {
1566                                "start": {
1567                                  "line": 26,
1568                                  "column": 25
1569                                },
1570                                "end": {
1571                                  "line": 26,
1572                                  "column": 31
1573                                }
1574                              }
1575                            },
1576                            "arguments": [],
1577                            "loc": {
1578                              "start": {
1579                                "line": 26,
1580                                "column": 21
1581                              },
1582                              "end": {
1583                                "line": 27,
1584                                "column": 8
1585                              }
1586                            }
1587                          },
1588                          "loc": {
1589                            "start": {
1590                              "line": 26,
1591                              "column": 9
1592                            },
1593                            "end": {
1594                              "line": 27,
1595                              "column": 8
1596                            }
1597                          }
1598                        }
1599                      ],
1600                      "kind": "let",
1601                      "loc": {
1602                        "start": {
1603                          "line": 26,
1604                          "column": 5
1605                        },
1606                        "end": {
1607                          "line": 27,
1608                          "column": 8
1609                        }
1610                      }
1611                    },
1612                    {
1613                      "type": "VariableDeclaration",
1614                      "declarations": [
1615                        {
1616                          "type": "VariableDeclarator",
1617                          "id": {
1618                            "type": "Identifier",
1619                            "name": "x4",
1620                            "typeAnnotation": {
1621                              "type": "ETSTypeReference",
1622                              "part": {
1623                                "type": "ETSTypeReferencePart",
1624                                "name": {
1625                                  "type": "Identifier",
1626                                  "name": "A2",
1627                                  "decorators": [],
1628                                  "loc": {
1629                                    "start": {
1630                                      "line": 27,
1631                                      "column": 13
1632                                    },
1633                                    "end": {
1634                                      "line": 27,
1635                                      "column": 15
1636                                    }
1637                                  }
1638                                },
1639                                "typeParams": {
1640                                  "type": "TSTypeParameterInstantiation",
1641                                  "params": [
1642                                    {
1643                                      "type": "ETSTypeReference",
1644                                      "part": {
1645                                        "type": "ETSTypeReferencePart",
1646                                        "name": {
1647                                          "type": "Identifier",
1648                                          "name": "A",
1649                                          "decorators": [],
1650                                          "loc": {
1651                                            "start": {
1652                                              "line": 27,
1653                                              "column": 16
1654                                            },
1655                                            "end": {
1656                                              "line": 27,
1657                                              "column": 17
1658                                            }
1659                                          }
1660                                        },
1661                                        "loc": {
1662                                          "start": {
1663                                            "line": 27,
1664                                            "column": 16
1665                                          },
1666                                          "end": {
1667                                            "line": 27,
1668                                            "column": 18
1669                                          }
1670                                        }
1671                                      },
1672                                      "loc": {
1673                                        "start": {
1674                                          "line": 27,
1675                                          "column": 16
1676                                        },
1677                                        "end": {
1678                                          "line": 27,
1679                                          "column": 18
1680                                        }
1681                                      }
1682                                    }
1683                                  ],
1684                                  "loc": {
1685                                    "start": {
1686                                      "line": 27,
1687                                      "column": 15
1688                                    },
1689                                    "end": {
1690                                      "line": 27,
1691                                      "column": 18
1692                                    }
1693                                  }
1694                                },
1695                                "loc": {
1696                                  "start": {
1697                                    "line": 27,
1698                                    "column": 13
1699                                  },
1700                                  "end": {
1701                                    "line": 27,
1702                                    "column": 20
1703                                  }
1704                                }
1705                              },
1706                              "loc": {
1707                                "start": {
1708                                  "line": 27,
1709                                  "column": 13
1710                                },
1711                                "end": {
1712                                  "line": 27,
1713                                  "column": 20
1714                                }
1715                              }
1716                            },
1717                            "decorators": [],
1718                            "loc": {
1719                              "start": {
1720                                "line": 27,
1721                                "column": 9
1722                              },
1723                              "end": {
1724                                "line": 27,
1725                                "column": 11
1726                              }
1727                            }
1728                          },
1729                          "init": {
1730                            "type": "ETSNewClassInstanceExpression",
1731                            "typeReference": {
1732                              "type": "ETSTypeReference",
1733                              "part": {
1734                                "type": "ETSTypeReferencePart",
1735                                "name": {
1736                                  "type": "Identifier",
1737                                  "name": "A2",
1738                                  "decorators": [],
1739                                  "loc": {
1740                                    "start": {
1741                                      "line": 27,
1742                                      "column": 25
1743                                    },
1744                                    "end": {
1745                                      "line": 27,
1746                                      "column": 27
1747                                    }
1748                                  }
1749                                },
1750                                "typeParams": {
1751                                  "type": "TSTypeParameterInstantiation",
1752                                  "params": [
1753                                    {
1754                                      "type": "ETSTypeReference",
1755                                      "part": {
1756                                        "type": "ETSTypeReferencePart",
1757                                        "name": {
1758                                          "type": "Identifier",
1759                                          "name": "B",
1760                                          "decorators": [],
1761                                          "loc": {
1762                                            "start": {
1763                                              "line": 27,
1764                                              "column": 28
1765                                            },
1766                                            "end": {
1767                                              "line": 27,
1768                                              "column": 29
1769                                            }
1770                                          }
1771                                        },
1772                                        "loc": {
1773                                          "start": {
1774                                            "line": 27,
1775                                            "column": 28
1776                                          },
1777                                          "end": {
1778                                            "line": 27,
1779                                            "column": 30
1780                                          }
1781                                        }
1782                                      },
1783                                      "loc": {
1784                                        "start": {
1785                                          "line": 27,
1786                                          "column": 28
1787                                        },
1788                                        "end": {
1789                                          "line": 27,
1790                                          "column": 30
1791                                        }
1792                                      }
1793                                    }
1794                                  ],
1795                                  "loc": {
1796                                    "start": {
1797                                      "line": 27,
1798                                      "column": 27
1799                                    },
1800                                    "end": {
1801                                      "line": 27,
1802                                      "column": 30
1803                                    }
1804                                  }
1805                                },
1806                                "loc": {
1807                                  "start": {
1808                                    "line": 27,
1809                                    "column": 25
1810                                  },
1811                                  "end": {
1812                                    "line": 27,
1813                                    "column": 31
1814                                  }
1815                                }
1816                              },
1817                              "loc": {
1818                                "start": {
1819                                  "line": 27,
1820                                  "column": 25
1821                                },
1822                                "end": {
1823                                  "line": 27,
1824                                  "column": 31
1825                                }
1826                              }
1827                            },
1828                            "arguments": [],
1829                            "loc": {
1830                              "start": {
1831                                "line": 27,
1832                                "column": 21
1833                              },
1834                              "end": {
1835                                "line": 28,
1836                                "column": 2
1837                              }
1838                            }
1839                          },
1840                          "loc": {
1841                            "start": {
1842                              "line": 27,
1843                              "column": 9
1844                            },
1845                            "end": {
1846                              "line": 28,
1847                              "column": 2
1848                            }
1849                          }
1850                        }
1851                      ],
1852                      "kind": "let",
1853                      "loc": {
1854                        "start": {
1855                          "line": 27,
1856                          "column": 5
1857                        },
1858                        "end": {
1859                          "line": 28,
1860                          "column": 2
1861                        }
1862                      }
1863                    }
1864                  ],
1865                  "loc": {
1866                    "start": {
1867                      "line": 22,
1868                      "column": 23
1869                    },
1870                    "end": {
1871                      "line": 28,
1872                      "column": 2
1873                    }
1874                  }
1875                },
1876                "loc": {
1877                  "start": {
1878                    "line": 22,
1879                    "column": 14
1880                  },
1881                  "end": {
1882                    "line": 28,
1883                    "column": 2
1884                  }
1885                }
1886              },
1887              "loc": {
1888                "start": {
1889                  "line": 22,
1890                  "column": 14
1891                },
1892                "end": {
1893                  "line": 28,
1894                  "column": 2
1895                }
1896              }
1897            },
1898            "overloads": [],
1899            "decorators": [],
1900            "loc": {
1901              "start": {
1902                "line": 22,
1903                "column": 1
1904              },
1905              "end": {
1906                "line": 28,
1907                "column": 2
1908              }
1909            }
1910          }
1911        ],
1912        "loc": {
1913          "start": {
1914            "line": 1,
1915            "column": 1
1916          },
1917          "end": {
1918            "line": 1,
1919            "column": 1
1920          }
1921        }
1922      },
1923      "loc": {
1924        "start": {
1925          "line": 1,
1926          "column": 1
1927        },
1928        "end": {
1929          "line": 1,
1930          "column": 1
1931        }
1932      }
1933    }
1934  ],
1935  "loc": {
1936    "start": {
1937      "line": 1,
1938      "column": 1
1939    },
1940    "end": {
1941      "line": 28,
1942      "column": 2
1943    }
1944  }
1945}
1946