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