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