• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1{
2  "type": "Program",
3  "statements": [
4    {
5      "type": "TSInterfaceDeclaration",
6      "body": {
7        "type": "TSInterfaceBody",
8        "body": [],
9        "loc": {
10          "start": {
11            "line": 16,
12            "column": 31
13          },
14          "end": {
15            "line": 16,
16            "column": 33
17          }
18        }
19      },
20      "id": {
21        "type": "Identifier",
22        "name": "MutableState",
23        "decorators": [],
24        "loc": {
25          "start": {
26            "line": 16,
27            "column": 11
28          },
29          "end": {
30            "line": 16,
31            "column": 23
32          }
33        }
34      },
35      "extends": [],
36      "typeParameters": {
37        "type": "TSTypeParameterDeclaration",
38        "params": [
39          {
40            "type": "TSTypeParameter",
41            "name": {
42              "type": "Identifier",
43              "name": "Value",
44              "decorators": [],
45              "loc": {
46                "start": {
47                  "line": 16,
48                  "column": 24
49                },
50                "end": {
51                  "line": 16,
52                  "column": 29
53                }
54              }
55            },
56            "loc": {
57              "start": {
58                "line": 16,
59                "column": 24
60              },
61              "end": {
62                "line": 16,
63                "column": 30
64              }
65            }
66          }
67        ],
68        "loc": {
69          "start": {
70            "line": 16,
71            "column": 23
72          },
73          "end": {
74            "line": 16,
75            "column": 30
76          }
77        }
78      },
79      "loc": {
80        "start": {
81          "line": 16,
82          "column": 1
83        },
84        "end": {
85          "line": 18,
86          "column": 6
87        }
88      }
89    },
90    {
91      "type": "ClassDeclaration",
92      "definition": {
93        "id": {
94          "type": "Identifier",
95          "name": "StateImpl",
96          "decorators": [],
97          "loc": {
98            "start": {
99              "line": 18,
100              "column": 7
101            },
102            "end": {
103              "line": 18,
104              "column": 16
105            }
106          }
107        },
108        "typeParameters": {
109          "type": "TSTypeParameterDeclaration",
110          "params": [
111            {
112              "type": "TSTypeParameter",
113              "name": {
114                "type": "Identifier",
115                "name": "Value",
116                "decorators": [],
117                "loc": {
118                  "start": {
119                    "line": 18,
120                    "column": 17
121                  },
122                  "end": {
123                    "line": 18,
124                    "column": 22
125                  }
126                }
127              },
128              "loc": {
129                "start": {
130                  "line": 18,
131                  "column": 17
132                },
133                "end": {
134                  "line": 18,
135                  "column": 23
136                }
137              }
138            }
139          ],
140          "loc": {
141            "start": {
142              "line": 18,
143              "column": 16
144            },
145            "end": {
146              "line": 18,
147              "column": 23
148            }
149          }
150        },
151        "superClass": null,
152        "implements": [
153          {
154            "type": "TSClassImplements",
155            "expression": {
156              "type": "ETSTypeReference",
157              "part": {
158                "type": "ETSTypeReferencePart",
159                "name": {
160                  "type": "Identifier",
161                  "name": "MutableState",
162                  "decorators": [],
163                  "loc": {
164                    "start": {
165                      "line": 18,
166                      "column": 35
167                    },
168                    "end": {
169                      "line": 18,
170                      "column": 47
171                    }
172                  }
173                },
174                "typeParams": {
175                  "type": "TSTypeParameterInstantiation",
176                  "params": [
177                    {
178                      "type": "ETSTypeReference",
179                      "part": {
180                        "type": "ETSTypeReferencePart",
181                        "name": {
182                          "type": "Identifier",
183                          "name": "Value",
184                          "decorators": [],
185                          "loc": {
186                            "start": {
187                              "line": 18,
188                              "column": 48
189                            },
190                            "end": {
191                              "line": 18,
192                              "column": 53
193                            }
194                          }
195                        },
196                        "loc": {
197                          "start": {
198                            "line": 18,
199                            "column": 48
200                          },
201                          "end": {
202                            "line": 18,
203                            "column": 54
204                          }
205                        }
206                      },
207                      "loc": {
208                        "start": {
209                          "line": 18,
210                          "column": 48
211                        },
212                        "end": {
213                          "line": 18,
214                          "column": 54
215                        }
216                      }
217                    }
218                  ],
219                  "loc": {
220                    "start": {
221                      "line": 18,
222                      "column": 47
223                    },
224                    "end": {
225                      "line": 18,
226                      "column": 54
227                    }
228                  }
229                },
230                "loc": {
231                  "start": {
232                    "line": 18,
233                    "column": 35
234                  },
235                  "end": {
236                    "line": 18,
237                    "column": 56
238                  }
239                }
240              },
241              "loc": {
242                "start": {
243                  "line": 18,
244                  "column": 35
245                },
246                "end": {
247                  "line": 18,
248                  "column": 56
249                }
250              }
251            },
252            "loc": {
253              "start": {
254                "line": 18,
255                "column": 35
256              },
257              "end": {
258                "line": 18,
259                "column": 56
260              }
261            }
262          }
263        ],
264        "body": [
265          {
266            "type": "MethodDefinition",
267            "key": {
268              "type": "Identifier",
269              "name": "constructor",
270              "decorators": [],
271              "loc": {
272                "start": {
273                  "line": 1,
274                  "column": 1
275                },
276                "end": {
277                  "line": 1,
278                  "column": 1
279                }
280              }
281            },
282            "kind": "constructor",
283            "static": false,
284            "optional": false,
285            "computed": false,
286            "value": {
287              "type": "FunctionExpression",
288              "function": {
289                "type": "ScriptFunction",
290                "id": {
291                  "type": "Identifier",
292                  "name": "constructor",
293                  "decorators": [],
294                  "loc": {
295                    "start": {
296                      "line": 1,
297                      "column": 1
298                    },
299                    "end": {
300                      "line": 1,
301                      "column": 1
302                    }
303                  }
304                },
305                "generator": false,
306                "async": false,
307                "expression": false,
308                "params": [],
309                "body": {
310                  "type": "BlockStatement",
311                  "statements": [],
312                  "loc": {
313                    "start": {
314                      "line": 1,
315                      "column": 1
316                    },
317                    "end": {
318                      "line": 1,
319                      "column": 1
320                    }
321                  }
322                },
323                "loc": {
324                  "start": {
325                    "line": 1,
326                    "column": 1
327                  },
328                  "end": {
329                    "line": 1,
330                    "column": 1
331                  }
332                }
333              },
334              "loc": {
335                "start": {
336                  "line": 1,
337                  "column": 1
338                },
339                "end": {
340                  "line": 1,
341                  "column": 1
342                }
343              }
344            },
345            "overloads": [],
346            "decorators": [],
347            "loc": {
348              "start": {
349                "line": 18,
350                "column": 57
351              },
352              "end": {
353                "line": 18,
354                "column": 57
355              }
356            }
357          }
358        ],
359        "loc": {
360          "start": {
361            "line": 18,
362            "column": 55
363          },
364          "end": {
365            "line": 18,
366            "column": 57
367          }
368        }
369      },
370      "loc": {
371        "start": {
372          "line": 18,
373          "column": 1
374        },
375        "end": {
376          "line": 18,
377          "column": 57
378        }
379      }
380    },
381    {
382      "type": "TSInterfaceDeclaration",
383      "body": {
384        "type": "TSInterfaceBody",
385        "body": [
386          {
387            "type": "MethodDefinition",
388            "key": {
389              "type": "Identifier",
390              "name": "foo",
391              "decorators": [],
392              "loc": {
393                "start": {
394                  "line": 21,
395                  "column": 5
396                },
397                "end": {
398                  "line": 21,
399                  "column": 8
400                }
401              }
402            },
403            "kind": "method",
404            "accessibility": "public",
405            "static": false,
406            "optional": false,
407            "computed": false,
408            "value": {
409              "type": "FunctionExpression",
410              "function": {
411                "type": "ScriptFunction",
412                "id": {
413                  "type": "Identifier",
414                  "name": "foo",
415                  "decorators": [],
416                  "loc": {
417                    "start": {
418                      "line": 21,
419                      "column": 5
420                    },
421                    "end": {
422                      "line": 21,
423                      "column": 8
424                    }
425                  }
426                },
427                "generator": false,
428                "async": false,
429                "expression": false,
430                "params": [
431                  {
432                    "type": "ETSParameterExpression",
433                    "name": {
434                      "type": "Identifier",
435                      "name": "equivalent",
436                      "typeAnnotation": {
437                        "type": "ETSUnionType",
438                        "types": [
439                          {
440                            "type": "ETSTypeReference",
441                            "part": {
442                              "type": "ETSTypeReferencePart",
443                              "name": {
444                                "type": "Identifier",
445                                "name": "ValueTracker",
446                                "decorators": [],
447                                "loc": {
448                                  "start": {
449                                    "line": 21,
450                                    "column": 29
451                                  },
452                                  "end": {
453                                    "line": 21,
454                                    "column": 41
455                                  }
456                                }
457                              },
458                              "typeParams": {
459                                "type": "TSTypeParameterInstantiation",
460                                "params": [
461                                  {
462                                    "type": "ETSTypeReference",
463                                    "part": {
464                                      "type": "ETSTypeReferencePart",
465                                      "name": {
466                                        "type": "Identifier",
467                                        "name": "Value",
468                                        "decorators": [],
469                                        "loc": {
470                                          "start": {
471                                            "line": 21,
472                                            "column": 42
473                                          },
474                                          "end": {
475                                            "line": 21,
476                                            "column": 47
477                                          }
478                                        }
479                                      },
480                                      "loc": {
481                                        "start": {
482                                          "line": 21,
483                                          "column": 42
484                                        },
485                                        "end": {
486                                          "line": 21,
487                                          "column": 48
488                                        }
489                                      }
490                                    },
491                                    "loc": {
492                                      "start": {
493                                        "line": 21,
494                                        "column": 42
495                                      },
496                                      "end": {
497                                        "line": 21,
498                                        "column": 48
499                                      }
500                                    }
501                                  }
502                                ],
503                                "loc": {
504                                  "start": {
505                                    "line": 21,
506                                    "column": 41
507                                  },
508                                  "end": {
509                                    "line": 21,
510                                    "column": 48
511                                  }
512                                }
513                              },
514                              "loc": {
515                                "start": {
516                                  "line": 21,
517                                  "column": 29
518                                },
519                                "end": {
520                                  "line": 21,
521                                  "column": 49
522                                }
523                              }
524                            },
525                            "loc": {
526                              "start": {
527                                "line": 21,
528                                "column": 29
529                              },
530                              "end": {
531                                "line": 21,
532                                "column": 49
533                              }
534                            }
535                          },
536                          {
537                            "type": "ETSUndefinedType",
538                            "loc": {
539                              "start": {
540                                "line": 21,
541                                "column": 26
542                              },
543                              "end": {
544                                "line": 21,
545                                "column": 27
546                              }
547                            }
548                          }
549                        ],
550                        "loc": {
551                          "start": {
552                            "line": 21,
553                            "column": 29
554                          },
555                          "end": {
556                            "line": 21,
557                            "column": 49
558                          }
559                        }
560                      },
561                      "decorators": [],
562                      "loc": {
563                        "start": {
564                          "line": 21,
565                          "column": 16
566                        },
567                        "end": {
568                          "line": 21,
569                          "column": 49
570                        }
571                      }
572                    },
573                    "loc": {
574                      "start": {
575                        "line": 21,
576                        "column": 16
577                      },
578                      "end": {
579                        "line": 21,
580                        "column": 49
581                      }
582                    }
583                  },
584                  {
585                    "type": "ETSParameterExpression",
586                    "name": {
587                      "type": "Identifier",
588                      "name": "tracker",
589                      "typeAnnotation": {
590                        "type": "ETSUnionType",
591                        "types": [
592                          {
593                            "type": "ETSTypeReference",
594                            "part": {
595                              "type": "ETSTypeReferencePart",
596                              "name": {
597                                "type": "Identifier",
598                                "name": "ValueTracker",
599                                "decorators": [],
600                                "loc": {
601                                  "start": {
602                                    "line": 21,
603                                    "column": 60
604                                  },
605                                  "end": {
606                                    "line": 21,
607                                    "column": 72
608                                  }
609                                }
610                              },
611                              "typeParams": {
612                                "type": "TSTypeParameterInstantiation",
613                                "params": [
614                                  {
615                                    "type": "ETSTypeReference",
616                                    "part": {
617                                      "type": "ETSTypeReferencePart",
618                                      "name": {
619                                        "type": "Identifier",
620                                        "name": "Value",
621                                        "decorators": [],
622                                        "loc": {
623                                          "start": {
624                                            "line": 21,
625                                            "column": 73
626                                          },
627                                          "end": {
628                                            "line": 21,
629                                            "column": 78
630                                          }
631                                        }
632                                      },
633                                      "loc": {
634                                        "start": {
635                                          "line": 21,
636                                          "column": 73
637                                        },
638                                        "end": {
639                                          "line": 21,
640                                          "column": 79
641                                        }
642                                      }
643                                    },
644                                    "loc": {
645                                      "start": {
646                                        "line": 21,
647                                        "column": 73
648                                      },
649                                      "end": {
650                                        "line": 21,
651                                        "column": 79
652                                      }
653                                    }
654                                  }
655                                ],
656                                "loc": {
657                                  "start": {
658                                    "line": 21,
659                                    "column": 72
660                                  },
661                                  "end": {
662                                    "line": 21,
663                                    "column": 79
664                                  }
665                                }
666                              },
667                              "loc": {
668                                "start": {
669                                  "line": 21,
670                                  "column": 60
671                                },
672                                "end": {
673                                  "line": 21,
674                                  "column": 80
675                                }
676                              }
677                            },
678                            "loc": {
679                              "start": {
680                                "line": 21,
681                                "column": 60
682                              },
683                              "end": {
684                                "line": 21,
685                                "column": 80
686                              }
687                            }
688                          },
689                          {
690                            "type": "ETSUndefinedType",
691                            "loc": {
692                              "start": {
693                                "line": 21,
694                                "column": 57
695                              },
696                              "end": {
697                                "line": 21,
698                                "column": 58
699                              }
700                            }
701                          }
702                        ],
703                        "loc": {
704                          "start": {
705                            "line": 21,
706                            "column": 60
707                          },
708                          "end": {
709                            "line": 21,
710                            "column": 80
711                          }
712                        }
713                      },
714                      "decorators": [],
715                      "loc": {
716                        "start": {
717                          "line": 21,
718                          "column": 50
719                        },
720                        "end": {
721                          "line": 21,
722                          "column": 80
723                        }
724                      }
725                    },
726                    "loc": {
727                      "start": {
728                        "line": 21,
729                        "column": 50
730                      },
731                      "end": {
732                        "line": 21,
733                        "column": 80
734                      }
735                    }
736                  }
737                ],
738                "returnType": {
739                  "type": "ETSTypeReference",
740                  "part": {
741                    "type": "ETSTypeReferencePart",
742                    "name": {
743                      "type": "Identifier",
744                      "name": "MutableState",
745                      "decorators": [],
746                      "loc": {
747                        "start": {
748                          "line": 21,
749                          "column": 82
750                        },
751                        "end": {
752                          "line": 21,
753                          "column": 94
754                        }
755                      }
756                    },
757                    "typeParams": {
758                      "type": "TSTypeParameterInstantiation",
759                      "params": [
760                        {
761                          "type": "ETSTypeReference",
762                          "part": {
763                            "type": "ETSTypeReferencePart",
764                            "name": {
765                              "type": "Identifier",
766                              "name": "Value",
767                              "decorators": [],
768                              "loc": {
769                                "start": {
770                                  "line": 21,
771                                  "column": 95
772                                },
773                                "end": {
774                                  "line": 21,
775                                  "column": 100
776                                }
777                              }
778                            },
779                            "loc": {
780                              "start": {
781                                "line": 21,
782                                "column": 95
783                              },
784                              "end": {
785                                "line": 21,
786                                "column": 101
787                              }
788                            }
789                          },
790                          "loc": {
791                            "start": {
792                              "line": 21,
793                              "column": 95
794                            },
795                            "end": {
796                              "line": 21,
797                              "column": 101
798                            }
799                          }
800                        }
801                      ],
802                      "loc": {
803                        "start": {
804                          "line": 21,
805                          "column": 94
806                        },
807                        "end": {
808                          "line": 21,
809                          "column": 101
810                        }
811                      }
812                    },
813                    "loc": {
814                      "start": {
815                        "line": 21,
816                        "column": 82
817                      },
818                      "end": {
819                        "line": 22,
820                        "column": 2
821                      }
822                    }
823                  },
824                  "loc": {
825                    "start": {
826                      "line": 21,
827                      "column": 82
828                    },
829                    "end": {
830                      "line": 22,
831                      "column": 2
832                    }
833                  }
834                },
835                "typeParameters": {
836                  "type": "TSTypeParameterDeclaration",
837                  "params": [
838                    {
839                      "type": "TSTypeParameter",
840                      "name": {
841                        "type": "Identifier",
842                        "name": "Value",
843                        "decorators": [],
844                        "loc": {
845                          "start": {
846                            "line": 21,
847                            "column": 9
848                          },
849                          "end": {
850                            "line": 21,
851                            "column": 14
852                          }
853                        }
854                      },
855                      "loc": {
856                        "start": {
857                          "line": 21,
858                          "column": 9
859                        },
860                        "end": {
861                          "line": 21,
862                          "column": 15
863                        }
864                      }
865                    }
866                  ],
867                  "loc": {
868                    "start": {
869                      "line": 21,
870                      "column": 8
871                    },
872                    "end": {
873                      "line": 21,
874                      "column": 15
875                    }
876                  }
877                },
878                "loc": {
879                  "start": {
880                    "line": 21,
881                    "column": 8
882                  },
883                  "end": {
884                    "line": 22,
885                    "column": 2
886                  }
887                }
888              },
889              "loc": {
890                "start": {
891                  "line": 21,
892                  "column": 8
893                },
894                "end": {
895                  "line": 22,
896                  "column": 2
897                }
898              }
899            },
900            "overloads": [
901              {
902                "type": "MethodDefinition",
903                "key": {
904                  "type": "Identifier",
905                  "name": "foo",
906                  "decorators": [],
907                  "loc": {
908                    "start": {
909                      "line": 21,
910                      "column": 5
911                    },
912                    "end": {
913                      "line": 21,
914                      "column": 8
915                    }
916                  }
917                },
918                "kind": "method",
919                "accessibility": "public",
920                "static": false,
921                "optional": false,
922                "computed": false,
923                "value": {
924                  "type": "FunctionExpression",
925                  "function": {
926                    "type": "ScriptFunction",
927                    "id": {
928                      "type": "Identifier",
929                      "name": "foo",
930                      "decorators": [],
931                      "loc": {
932                        "start": {
933                          "line": 21,
934                          "column": 5
935                        },
936                        "end": {
937                          "line": 21,
938                          "column": 8
939                        }
940                      }
941                    },
942                    "generator": false,
943                    "async": false,
944                    "expression": false,
945                    "params": [
946                      {
947                        "type": "ETSParameterExpression",
948                        "name": {
949                          "type": "Identifier",
950                          "name": "equivalent",
951                          "typeAnnotation": {
952                            "type": "ETSUnionType",
953                            "types": [
954                              {
955                                "type": "ETSTypeReference",
956                                "part": {
957                                  "type": "ETSTypeReferencePart",
958                                  "name": {
959                                    "type": "Identifier",
960                                    "name": "ValueTracker",
961                                    "decorators": [],
962                                    "loc": {
963                                      "start": {
964                                        "line": 21,
965                                        "column": 29
966                                      },
967                                      "end": {
968                                        "line": 21,
969                                        "column": 41
970                                      }
971                                    }
972                                  },
973                                  "typeParams": {
974                                    "type": "TSTypeParameterInstantiation",
975                                    "params": [
976                                      {
977                                        "type": "ETSTypeReference",
978                                        "part": {
979                                          "type": "ETSTypeReferencePart",
980                                          "name": {
981                                            "type": "Identifier",
982                                            "name": "Value",
983                                            "decorators": [],
984                                            "loc": {
985                                              "start": {
986                                                "line": 21,
987                                                "column": 42
988                                              },
989                                              "end": {
990                                                "line": 21,
991                                                "column": 47
992                                              }
993                                            }
994                                          },
995                                          "loc": {
996                                            "start": {
997                                              "line": 21,
998                                              "column": 42
999                                            },
1000                                            "end": {
1001                                              "line": 21,
1002                                              "column": 48
1003                                            }
1004                                          }
1005                                        },
1006                                        "loc": {
1007                                          "start": {
1008                                            "line": 21,
1009                                            "column": 42
1010                                          },
1011                                          "end": {
1012                                            "line": 21,
1013                                            "column": 48
1014                                          }
1015                                        }
1016                                      }
1017                                    ],
1018                                    "loc": {
1019                                      "start": {
1020                                        "line": 21,
1021                                        "column": 41
1022                                      },
1023                                      "end": {
1024                                        "line": 21,
1025                                        "column": 48
1026                                      }
1027                                    }
1028                                  },
1029                                  "loc": {
1030                                    "start": {
1031                                      "line": 21,
1032                                      "column": 29
1033                                    },
1034                                    "end": {
1035                                      "line": 21,
1036                                      "column": 49
1037                                    }
1038                                  }
1039                                },
1040                                "loc": {
1041                                  "start": {
1042                                    "line": 21,
1043                                    "column": 29
1044                                  },
1045                                  "end": {
1046                                    "line": 21,
1047                                    "column": 49
1048                                  }
1049                                }
1050                              },
1051                              {
1052                                "type": "ETSUndefinedType",
1053                                "loc": {
1054                                  "start": {
1055                                    "line": 1,
1056                                    "column": 1
1057                                  },
1058                                  "end": {
1059                                    "line": 1,
1060                                    "column": 1
1061                                  }
1062                                }
1063                              }
1064                            ],
1065                            "loc": {
1066                              "start": {
1067                                "line": 1,
1068                                "column": 1
1069                              },
1070                              "end": {
1071                                "line": 1,
1072                                "column": 1
1073                              }
1074                            }
1075                          },
1076                          "decorators": [],
1077                          "loc": {
1078                            "start": {
1079                              "line": 21,
1080                              "column": 16
1081                            },
1082                            "end": {
1083                              "line": 21,
1084                              "column": 49
1085                            }
1086                          }
1087                        },
1088                        "loc": {
1089                          "start": {
1090                            "line": 1,
1091                            "column": 1
1092                          },
1093                          "end": {
1094                            "line": 1,
1095                            "column": 1
1096                          }
1097                        }
1098                      }
1099                    ],
1100                    "returnType": {
1101                      "type": "ETSTypeReference",
1102                      "part": {
1103                        "type": "ETSTypeReferencePart",
1104                        "name": {
1105                          "type": "Identifier",
1106                          "name": "MutableState",
1107                          "decorators": [],
1108                          "loc": {
1109                            "start": {
1110                              "line": 21,
1111                              "column": 82
1112                            },
1113                            "end": {
1114                              "line": 21,
1115                              "column": 94
1116                            }
1117                          }
1118                        },
1119                        "typeParams": {
1120                          "type": "TSTypeParameterInstantiation",
1121                          "params": [
1122                            {
1123                              "type": "ETSTypeReference",
1124                              "part": {
1125                                "type": "ETSTypeReferencePart",
1126                                "name": {
1127                                  "type": "Identifier",
1128                                  "name": "Value",
1129                                  "decorators": [],
1130                                  "loc": {
1131                                    "start": {
1132                                      "line": 21,
1133                                      "column": 95
1134                                    },
1135                                    "end": {
1136                                      "line": 21,
1137                                      "column": 100
1138                                    }
1139                                  }
1140                                },
1141                                "loc": {
1142                                  "start": {
1143                                    "line": 21,
1144                                    "column": 95
1145                                  },
1146                                  "end": {
1147                                    "line": 21,
1148                                    "column": 101
1149                                  }
1150                                }
1151                              },
1152                              "loc": {
1153                                "start": {
1154                                  "line": 21,
1155                                  "column": 95
1156                                },
1157                                "end": {
1158                                  "line": 21,
1159                                  "column": 101
1160                                }
1161                              }
1162                            }
1163                          ],
1164                          "loc": {
1165                            "start": {
1166                              "line": 21,
1167                              "column": 94
1168                            },
1169                            "end": {
1170                              "line": 21,
1171                              "column": 101
1172                            }
1173                          }
1174                        },
1175                        "loc": {
1176                          "start": {
1177                            "line": 21,
1178                            "column": 82
1179                          },
1180                          "end": {
1181                            "line": 22,
1182                            "column": 2
1183                          }
1184                        }
1185                      },
1186                      "loc": {
1187                        "start": {
1188                          "line": 21,
1189                          "column": 82
1190                        },
1191                        "end": {
1192                          "line": 22,
1193                          "column": 2
1194                        }
1195                      }
1196                    },
1197                    "typeParameters": {
1198                      "type": "TSTypeParameterDeclaration",
1199                      "params": [
1200                        {
1201                          "type": "TSTypeParameter",
1202                          "name": {
1203                            "type": "Identifier",
1204                            "name": "Value",
1205                            "decorators": [],
1206                            "loc": {
1207                              "start": {
1208                                "line": 21,
1209                                "column": 9
1210                              },
1211                              "end": {
1212                                "line": 21,
1213                                "column": 14
1214                              }
1215                            }
1216                          },
1217                          "loc": {
1218                            "start": {
1219                              "line": 1,
1220                              "column": 1
1221                            },
1222                            "end": {
1223                              "line": 1,
1224                              "column": 1
1225                            }
1226                          }
1227                        }
1228                      ],
1229                      "loc": {
1230                        "start": {
1231                          "line": 1,
1232                          "column": 1
1233                        },
1234                        "end": {
1235                          "line": 1,
1236                          "column": 1
1237                        }
1238                      }
1239                    },
1240                    "body": {
1241                      "type": "BlockStatement",
1242                      "statements": [],
1243                      "loc": {
1244                        "start": {
1245                          "line": 1,
1246                          "column": 1
1247                        },
1248                        "end": {
1249                          "line": 1,
1250                          "column": 1
1251                        }
1252                      }
1253                    },
1254                    "loc": {
1255                      "start": {
1256                        "line": 728,
1257                        "column": 1
1258                      },
1259                      "end": {
1260                        "line": 728,
1261                        "column": 1
1262                      }
1263                    }
1264                  },
1265                  "loc": {
1266                    "start": {
1267                      "line": 1,
1268                      "column": 1
1269                    },
1270                    "end": {
1271                      "line": 1,
1272                      "column": 1
1273                    }
1274                  }
1275                },
1276                "overloads": [],
1277                "decorators": [],
1278                "loc": {
1279                  "start": {
1280                    "line": 21,
1281                    "column": 5
1282                  },
1283                  "end": {
1284                    "line": 1,
1285                    "column": 1
1286                  }
1287                }
1288              },
1289              {
1290                "type": "MethodDefinition",
1291                "key": {
1292                  "type": "Identifier",
1293                  "name": "foo",
1294                  "decorators": [],
1295                  "loc": {
1296                    "start": {
1297                      "line": 21,
1298                      "column": 5
1299                    },
1300                    "end": {
1301                      "line": 21,
1302                      "column": 8
1303                    }
1304                  }
1305                },
1306                "kind": "method",
1307                "accessibility": "public",
1308                "static": false,
1309                "optional": false,
1310                "computed": false,
1311                "value": {
1312                  "type": "FunctionExpression",
1313                  "function": {
1314                    "type": "ScriptFunction",
1315                    "id": {
1316                      "type": "Identifier",
1317                      "name": "foo",
1318                      "decorators": [],
1319                      "loc": {
1320                        "start": {
1321                          "line": 21,
1322                          "column": 5
1323                        },
1324                        "end": {
1325                          "line": 21,
1326                          "column": 8
1327                        }
1328                      }
1329                    },
1330                    "generator": false,
1331                    "async": false,
1332                    "expression": false,
1333                    "params": [],
1334                    "returnType": {
1335                      "type": "ETSTypeReference",
1336                      "part": {
1337                        "type": "ETSTypeReferencePart",
1338                        "name": {
1339                          "type": "Identifier",
1340                          "name": "MutableState",
1341                          "decorators": [],
1342                          "loc": {
1343                            "start": {
1344                              "line": 21,
1345                              "column": 82
1346                            },
1347                            "end": {
1348                              "line": 21,
1349                              "column": 94
1350                            }
1351                          }
1352                        },
1353                        "typeParams": {
1354                          "type": "TSTypeParameterInstantiation",
1355                          "params": [
1356                            {
1357                              "type": "ETSTypeReference",
1358                              "part": {
1359                                "type": "ETSTypeReferencePart",
1360                                "name": {
1361                                  "type": "Identifier",
1362                                  "name": "Value",
1363                                  "decorators": [],
1364                                  "loc": {
1365                                    "start": {
1366                                      "line": 21,
1367                                      "column": 95
1368                                    },
1369                                    "end": {
1370                                      "line": 21,
1371                                      "column": 100
1372                                    }
1373                                  }
1374                                },
1375                                "loc": {
1376                                  "start": {
1377                                    "line": 21,
1378                                    "column": 95
1379                                  },
1380                                  "end": {
1381                                    "line": 21,
1382                                    "column": 101
1383                                  }
1384                                }
1385                              },
1386                              "loc": {
1387                                "start": {
1388                                  "line": 21,
1389                                  "column": 95
1390                                },
1391                                "end": {
1392                                  "line": 21,
1393                                  "column": 101
1394                                }
1395                              }
1396                            }
1397                          ],
1398                          "loc": {
1399                            "start": {
1400                              "line": 21,
1401                              "column": 94
1402                            },
1403                            "end": {
1404                              "line": 21,
1405                              "column": 101
1406                            }
1407                          }
1408                        },
1409                        "loc": {
1410                          "start": {
1411                            "line": 21,
1412                            "column": 82
1413                          },
1414                          "end": {
1415                            "line": 22,
1416                            "column": 2
1417                          }
1418                        }
1419                      },
1420                      "loc": {
1421                        "start": {
1422                          "line": 21,
1423                          "column": 82
1424                        },
1425                        "end": {
1426                          "line": 22,
1427                          "column": 2
1428                        }
1429                      }
1430                    },
1431                    "typeParameters": {
1432                      "type": "TSTypeParameterDeclaration",
1433                      "params": [
1434                        {
1435                          "type": "TSTypeParameter",
1436                          "name": {
1437                            "type": "Identifier",
1438                            "name": "Value",
1439                            "decorators": [],
1440                            "loc": {
1441                              "start": {
1442                                "line": 21,
1443                                "column": 9
1444                              },
1445                              "end": {
1446                                "line": 21,
1447                                "column": 14
1448                              }
1449                            }
1450                          },
1451                          "loc": {
1452                            "start": {
1453                              "line": 1,
1454                              "column": 1
1455                            },
1456                            "end": {
1457                              "line": 1,
1458                              "column": 1
1459                            }
1460                          }
1461                        }
1462                      ],
1463                      "loc": {
1464                        "start": {
1465                          "line": 1,
1466                          "column": 1
1467                        },
1468                        "end": {
1469                          "line": 1,
1470                          "column": 1
1471                        }
1472                      }
1473                    },
1474                    "body": {
1475                      "type": "BlockStatement",
1476                      "statements": [],
1477                      "loc": {
1478                        "start": {
1479                          "line": 1,
1480                          "column": 1
1481                        },
1482                        "end": {
1483                          "line": 1,
1484                          "column": 1
1485                        }
1486                      }
1487                    },
1488                    "loc": {
1489                      "start": {
1490                        "line": 728,
1491                        "column": 1
1492                      },
1493                      "end": {
1494                        "line": 728,
1495                        "column": 1
1496                      }
1497                    }
1498                  },
1499                  "loc": {
1500                    "start": {
1501                      "line": 1,
1502                      "column": 1
1503                    },
1504                    "end": {
1505                      "line": 1,
1506                      "column": 1
1507                    }
1508                  }
1509                },
1510                "overloads": [],
1511                "decorators": [],
1512                "loc": {
1513                  "start": {
1514                    "line": 21,
1515                    "column": 5
1516                  },
1517                  "end": {
1518                    "line": 1,
1519                    "column": 1
1520                  }
1521                }
1522              }
1523            ],
1524            "decorators": [],
1525            "loc": {
1526              "start": {
1527                "line": 21,
1528                "column": 5
1529              },
1530              "end": {
1531                "line": 22,
1532                "column": 2
1533              }
1534            }
1535          }
1536        ],
1537        "loc": {
1538          "start": {
1539            "line": 20,
1540            "column": 25
1541          },
1542          "end": {
1543            "line": 22,
1544            "column": 2
1545          }
1546        }
1547      },
1548      "id": {
1549        "type": "Identifier",
1550        "name": "StateManager",
1551        "decorators": [],
1552        "loc": {
1553          "start": {
1554            "line": 20,
1555            "column": 11
1556          },
1557          "end": {
1558            "line": 20,
1559            "column": 23
1560          }
1561        }
1562      },
1563      "extends": [],
1564      "loc": {
1565        "start": {
1566          "line": 20,
1567          "column": 1
1568        },
1569        "end": {
1570          "line": 24,
1571          "column": 10
1572        }
1573      }
1574    },
1575    {
1576      "type": "TSInterfaceDeclaration",
1577      "body": {
1578        "type": "TSInterfaceBody",
1579        "body": [],
1580        "loc": {
1581          "start": {
1582            "line": 24,
1583            "column": 31
1584          },
1585          "end": {
1586            "line": 24,
1587            "column": 33
1588          }
1589        }
1590      },
1591      "id": {
1592        "type": "Identifier",
1593        "name": "ValueTracker",
1594        "decorators": [],
1595        "loc": {
1596          "start": {
1597            "line": 24,
1598            "column": 11
1599          },
1600          "end": {
1601            "line": 24,
1602            "column": 23
1603          }
1604        }
1605      },
1606      "extends": [],
1607      "typeParameters": {
1608        "type": "TSTypeParameterDeclaration",
1609        "params": [
1610          {
1611            "type": "TSTypeParameter",
1612            "name": {
1613              "type": "Identifier",
1614              "name": "Value",
1615              "decorators": [],
1616              "loc": {
1617                "start": {
1618                  "line": 24,
1619                  "column": 24
1620                },
1621                "end": {
1622                  "line": 24,
1623                  "column": 29
1624                }
1625              }
1626            },
1627            "loc": {
1628              "start": {
1629                "line": 24,
1630                "column": 24
1631              },
1632              "end": {
1633                "line": 24,
1634                "column": 30
1635              }
1636            }
1637          }
1638        ],
1639        "loc": {
1640          "start": {
1641            "line": 24,
1642            "column": 23
1643          },
1644          "end": {
1645            "line": 24,
1646            "column": 30
1647          }
1648        }
1649      },
1650      "loc": {
1651        "start": {
1652          "line": 24,
1653          "column": 1
1654        },
1655        "end": {
1656          "line": 26,
1657          "column": 6
1658        }
1659      }
1660    },
1661    {
1662      "type": "ClassDeclaration",
1663      "definition": {
1664        "id": {
1665          "type": "Identifier",
1666          "name": "StateManagerImpl",
1667          "decorators": [],
1668          "loc": {
1669            "start": {
1670              "line": 26,
1671              "column": 7
1672            },
1673            "end": {
1674              "line": 26,
1675              "column": 23
1676            }
1677          }
1678        },
1679        "superClass": null,
1680        "implements": [
1681          {
1682            "type": "TSClassImplements",
1683            "expression": {
1684              "type": "ETSTypeReference",
1685              "part": {
1686                "type": "ETSTypeReferencePart",
1687                "name": {
1688                  "type": "Identifier",
1689                  "name": "StateManager",
1690                  "decorators": [],
1691                  "loc": {
1692                    "start": {
1693                      "line": 26,
1694                      "column": 35
1695                    },
1696                    "end": {
1697                      "line": 26,
1698                      "column": 47
1699                    }
1700                  }
1701                },
1702                "loc": {
1703                  "start": {
1704                    "line": 26,
1705                    "column": 35
1706                  },
1707                  "end": {
1708                    "line": 26,
1709                    "column": 49
1710                  }
1711                }
1712              },
1713              "loc": {
1714                "start": {
1715                  "line": 26,
1716                  "column": 35
1717                },
1718                "end": {
1719                  "line": 26,
1720                  "column": 49
1721                }
1722              }
1723            },
1724            "loc": {
1725              "start": {
1726                "line": 26,
1727                "column": 35
1728              },
1729              "end": {
1730                "line": 26,
1731                "column": 49
1732              }
1733            }
1734          }
1735        ],
1736        "body": [
1737          {
1738            "type": "MethodDefinition",
1739            "key": {
1740              "type": "Identifier",
1741              "name": "foo",
1742              "decorators": [],
1743              "loc": {
1744                "start": {
1745                  "line": 27,
1746                  "column": 5
1747                },
1748                "end": {
1749                  "line": 27,
1750                  "column": 8
1751                }
1752              }
1753            },
1754            "kind": "method",
1755            "accessibility": "public",
1756            "static": false,
1757            "optional": false,
1758            "computed": false,
1759            "value": {
1760              "type": "FunctionExpression",
1761              "function": {
1762                "type": "ScriptFunction",
1763                "id": {
1764                  "type": "Identifier",
1765                  "name": "foo",
1766                  "decorators": [],
1767                  "loc": {
1768                    "start": {
1769                      "line": 27,
1770                      "column": 5
1771                    },
1772                    "end": {
1773                      "line": 27,
1774                      "column": 8
1775                    }
1776                  }
1777                },
1778                "generator": false,
1779                "async": false,
1780                "expression": false,
1781                "params": [
1782                  {
1783                    "type": "ETSParameterExpression",
1784                    "name": {
1785                      "type": "Identifier",
1786                      "name": "equivalent",
1787                      "typeAnnotation": {
1788                        "type": "ETSUnionType",
1789                        "types": [
1790                          {
1791                            "type": "ETSTypeReference",
1792                            "part": {
1793                              "type": "ETSTypeReferencePart",
1794                              "name": {
1795                                "type": "Identifier",
1796                                "name": "ValueTracker",
1797                                "decorators": [],
1798                                "loc": {
1799                                  "start": {
1800                                    "line": 27,
1801                                    "column": 29
1802                                  },
1803                                  "end": {
1804                                    "line": 27,
1805                                    "column": 41
1806                                  }
1807                                }
1808                              },
1809                              "typeParams": {
1810                                "type": "TSTypeParameterInstantiation",
1811                                "params": [
1812                                  {
1813                                    "type": "ETSTypeReference",
1814                                    "part": {
1815                                      "type": "ETSTypeReferencePart",
1816                                      "name": {
1817                                        "type": "Identifier",
1818                                        "name": "Value",
1819                                        "decorators": [],
1820                                        "loc": {
1821                                          "start": {
1822                                            "line": 27,
1823                                            "column": 42
1824                                          },
1825                                          "end": {
1826                                            "line": 27,
1827                                            "column": 47
1828                                          }
1829                                        }
1830                                      },
1831                                      "loc": {
1832                                        "start": {
1833                                          "line": 27,
1834                                          "column": 42
1835                                        },
1836                                        "end": {
1837                                          "line": 27,
1838                                          "column": 48
1839                                        }
1840                                      }
1841                                    },
1842                                    "loc": {
1843                                      "start": {
1844                                        "line": 27,
1845                                        "column": 42
1846                                      },
1847                                      "end": {
1848                                        "line": 27,
1849                                        "column": 48
1850                                      }
1851                                    }
1852                                  }
1853                                ],
1854                                "loc": {
1855                                  "start": {
1856                                    "line": 27,
1857                                    "column": 41
1858                                  },
1859                                  "end": {
1860                                    "line": 27,
1861                                    "column": 48
1862                                  }
1863                                }
1864                              },
1865                              "loc": {
1866                                "start": {
1867                                  "line": 27,
1868                                  "column": 29
1869                                },
1870                                "end": {
1871                                  "line": 27,
1872                                  "column": 49
1873                                }
1874                              }
1875                            },
1876                            "loc": {
1877                              "start": {
1878                                "line": 27,
1879                                "column": 29
1880                              },
1881                              "end": {
1882                                "line": 27,
1883                                "column": 49
1884                              }
1885                            }
1886                          },
1887                          {
1888                            "type": "ETSUndefinedType",
1889                            "loc": {
1890                              "start": {
1891                                "line": 27,
1892                                "column": 27
1893                              },
1894                              "end": {
1895                                "line": 27,
1896                                "column": 28
1897                              }
1898                            }
1899                          }
1900                        ],
1901                        "loc": {
1902                          "start": {
1903                            "line": 27,
1904                            "column": 29
1905                          },
1906                          "end": {
1907                            "line": 27,
1908                            "column": 49
1909                          }
1910                        }
1911                      },
1912                      "decorators": [],
1913                      "loc": {
1914                        "start": {
1915                          "line": 27,
1916                          "column": 17
1917                        },
1918                        "end": {
1919                          "line": 27,
1920                          "column": 49
1921                        }
1922                      }
1923                    },
1924                    "loc": {
1925                      "start": {
1926                        "line": 27,
1927                        "column": 17
1928                      },
1929                      "end": {
1930                        "line": 27,
1931                        "column": 49
1932                      }
1933                    }
1934                  },
1935                  {
1936                    "type": "ETSParameterExpression",
1937                    "name": {
1938                      "type": "Identifier",
1939                      "name": "tracker",
1940                      "typeAnnotation": {
1941                        "type": "ETSUnionType",
1942                        "types": [
1943                          {
1944                            "type": "ETSTypeReference",
1945                            "part": {
1946                              "type": "ETSTypeReferencePart",
1947                              "name": {
1948                                "type": "Identifier",
1949                                "name": "ValueTracker",
1950                                "decorators": [],
1951                                "loc": {
1952                                  "start": {
1953                                    "line": 27,
1954                                    "column": 59
1955                                  },
1956                                  "end": {
1957                                    "line": 27,
1958                                    "column": 71
1959                                  }
1960                                }
1961                              },
1962                              "typeParams": {
1963                                "type": "TSTypeParameterInstantiation",
1964                                "params": [
1965                                  {
1966                                    "type": "ETSTypeReference",
1967                                    "part": {
1968                                      "type": "ETSTypeReferencePart",
1969                                      "name": {
1970                                        "type": "Identifier",
1971                                        "name": "Value",
1972                                        "decorators": [],
1973                                        "loc": {
1974                                          "start": {
1975                                            "line": 27,
1976                                            "column": 72
1977                                          },
1978                                          "end": {
1979                                            "line": 27,
1980                                            "column": 77
1981                                          }
1982                                        }
1983                                      },
1984                                      "loc": {
1985                                        "start": {
1986                                          "line": 27,
1987                                          "column": 72
1988                                        },
1989                                        "end": {
1990                                          "line": 27,
1991                                          "column": 78
1992                                        }
1993                                      }
1994                                    },
1995                                    "loc": {
1996                                      "start": {
1997                                        "line": 27,
1998                                        "column": 72
1999                                      },
2000                                      "end": {
2001                                        "line": 27,
2002                                        "column": 78
2003                                      }
2004                                    }
2005                                  }
2006                                ],
2007                                "loc": {
2008                                  "start": {
2009                                    "line": 27,
2010                                    "column": 71
2011                                  },
2012                                  "end": {
2013                                    "line": 27,
2014                                    "column": 78
2015                                  }
2016                                }
2017                              },
2018                              "loc": {
2019                                "start": {
2020                                  "line": 27,
2021                                  "column": 59
2022                                },
2023                                "end": {
2024                                  "line": 27,
2025                                  "column": 79
2026                                }
2027                              }
2028                            },
2029                            "loc": {
2030                              "start": {
2031                                "line": 27,
2032                                "column": 59
2033                              },
2034                              "end": {
2035                                "line": 27,
2036                                "column": 79
2037                              }
2038                            }
2039                          },
2040                          {
2041                            "type": "ETSUndefinedType",
2042                            "loc": {
2043                              "start": {
2044                                "line": 27,
2045                                "column": 57
2046                              },
2047                              "end": {
2048                                "line": 27,
2049                                "column": 58
2050                              }
2051                            }
2052                          }
2053                        ],
2054                        "loc": {
2055                          "start": {
2056                            "line": 27,
2057                            "column": 59
2058                          },
2059                          "end": {
2060                            "line": 27,
2061                            "column": 79
2062                          }
2063                        }
2064                      },
2065                      "decorators": [],
2066                      "loc": {
2067                        "start": {
2068                          "line": 27,
2069                          "column": 50
2070                        },
2071                        "end": {
2072                          "line": 27,
2073                          "column": 79
2074                        }
2075                      }
2076                    },
2077                    "loc": {
2078                      "start": {
2079                        "line": 27,
2080                        "column": 50
2081                      },
2082                      "end": {
2083                        "line": 27,
2084                        "column": 79
2085                      }
2086                    }
2087                  }
2088                ],
2089                "returnType": {
2090                  "type": "ETSTypeReference",
2091                  "part": {
2092                    "type": "ETSTypeReferencePart",
2093                    "name": {
2094                      "type": "Identifier",
2095                      "name": "StateImpl",
2096                      "decorators": [],
2097                      "loc": {
2098                        "start": {
2099                          "line": 27,
2100                          "column": 81
2101                        },
2102                        "end": {
2103                          "line": 27,
2104                          "column": 90
2105                        }
2106                      }
2107                    },
2108                    "typeParams": {
2109                      "type": "TSTypeParameterInstantiation",
2110                      "params": [
2111                        {
2112                          "type": "ETSTypeReference",
2113                          "part": {
2114                            "type": "ETSTypeReferencePart",
2115                            "name": {
2116                              "type": "Identifier",
2117                              "name": "Value",
2118                              "decorators": [],
2119                              "loc": {
2120                                "start": {
2121                                  "line": 27,
2122                                  "column": 91
2123                                },
2124                                "end": {
2125                                  "line": 27,
2126                                  "column": 96
2127                                }
2128                              }
2129                            },
2130                            "loc": {
2131                              "start": {
2132                                "line": 27,
2133                                "column": 91
2134                              },
2135                              "end": {
2136                                "line": 27,
2137                                "column": 97
2138                              }
2139                            }
2140                          },
2141                          "loc": {
2142                            "start": {
2143                              "line": 27,
2144                              "column": 91
2145                            },
2146                            "end": {
2147                              "line": 27,
2148                              "column": 97
2149                            }
2150                          }
2151                        }
2152                      ],
2153                      "loc": {
2154                        "start": {
2155                          "line": 27,
2156                          "column": 90
2157                        },
2158                        "end": {
2159                          "line": 27,
2160                          "column": 97
2161                        }
2162                      }
2163                    },
2164                    "loc": {
2165                      "start": {
2166                        "line": 27,
2167                        "column": 81
2168                      },
2169                      "end": {
2170                        "line": 27,
2171                        "column": 99
2172                      }
2173                    }
2174                  },
2175                  "loc": {
2176                    "start": {
2177                      "line": 27,
2178                      "column": 81
2179                    },
2180                    "end": {
2181                      "line": 27,
2182                      "column": 99
2183                    }
2184                  }
2185                },
2186                "typeParameters": {
2187                  "type": "TSTypeParameterDeclaration",
2188                  "params": [
2189                    {
2190                      "type": "TSTypeParameter",
2191                      "name": {
2192                        "type": "Identifier",
2193                        "name": "Value",
2194                        "decorators": [],
2195                        "loc": {
2196                          "start": {
2197                            "line": 27,
2198                            "column": 9
2199                          },
2200                          "end": {
2201                            "line": 27,
2202                            "column": 14
2203                          }
2204                        }
2205                      },
2206                      "loc": {
2207                        "start": {
2208                          "line": 27,
2209                          "column": 9
2210                        },
2211                        "end": {
2212                          "line": 27,
2213                          "column": 15
2214                        }
2215                      }
2216                    }
2217                  ],
2218                  "loc": {
2219                    "start": {
2220                      "line": 27,
2221                      "column": 8
2222                    },
2223                    "end": {
2224                      "line": 27,
2225                      "column": 15
2226                    }
2227                  }
2228                },
2229                "body": {
2230                  "type": "BlockStatement",
2231                  "statements": [
2232                    {
2233                      "type": "ReturnStatement",
2234                      "argument": {
2235                        "type": "ETSNewClassInstanceExpression",
2236                        "typeReference": {
2237                          "type": "ETSTypeReference",
2238                          "part": {
2239                            "type": "ETSTypeReferencePart",
2240                            "name": {
2241                              "type": "Identifier",
2242                              "name": "StateImpl",
2243                              "decorators": [],
2244                              "loc": {
2245                                "start": {
2246                                  "line": 28,
2247                                  "column": 20
2248                                },
2249                                "end": {
2250                                  "line": 28,
2251                                  "column": 29
2252                                }
2253                              }
2254                            },
2255                            "typeParams": {
2256                              "type": "TSTypeParameterInstantiation",
2257                              "params": [
2258                                {
2259                                  "type": "ETSTypeReference",
2260                                  "part": {
2261                                    "type": "ETSTypeReferencePart",
2262                                    "name": {
2263                                      "type": "Identifier",
2264                                      "name": "Value",
2265                                      "decorators": [],
2266                                      "loc": {
2267                                        "start": {
2268                                          "line": 28,
2269                                          "column": 30
2270                                        },
2271                                        "end": {
2272                                          "line": 28,
2273                                          "column": 35
2274                                        }
2275                                      }
2276                                    },
2277                                    "loc": {
2278                                      "start": {
2279                                        "line": 28,
2280                                        "column": 30
2281                                      },
2282                                      "end": {
2283                                        "line": 28,
2284                                        "column": 36
2285                                      }
2286                                    }
2287                                  },
2288                                  "loc": {
2289                                    "start": {
2290                                      "line": 28,
2291                                      "column": 30
2292                                    },
2293                                    "end": {
2294                                      "line": 28,
2295                                      "column": 36
2296                                    }
2297                                  }
2298                                }
2299                              ],
2300                              "loc": {
2301                                "start": {
2302                                  "line": 28,
2303                                  "column": 29
2304                                },
2305                                "end": {
2306                                  "line": 28,
2307                                  "column": 36
2308                                }
2309                              }
2310                            },
2311                            "loc": {
2312                              "start": {
2313                                "line": 28,
2314                                "column": 20
2315                              },
2316                              "end": {
2317                                "line": 28,
2318                                "column": 37
2319                              }
2320                            }
2321                          },
2322                          "loc": {
2323                            "start": {
2324                              "line": 28,
2325                              "column": 20
2326                            },
2327                            "end": {
2328                              "line": 28,
2329                              "column": 37
2330                            }
2331                          }
2332                        },
2333                        "arguments": [],
2334                        "loc": {
2335                          "start": {
2336                            "line": 28,
2337                            "column": 16
2338                          },
2339                          "end": {
2340                            "line": 29,
2341                            "column": 6
2342                          }
2343                        }
2344                      },
2345                      "loc": {
2346                        "start": {
2347                          "line": 28,
2348                          "column": 9
2349                        },
2350                        "end": {
2351                          "line": 29,
2352                          "column": 6
2353                        }
2354                      }
2355                    }
2356                  ],
2357                  "loc": {
2358                    "start": {
2359                      "line": 27,
2360                      "column": 98
2361                    },
2362                    "end": {
2363                      "line": 29,
2364                      "column": 6
2365                    }
2366                  }
2367                },
2368                "loc": {
2369                  "start": {
2370                    "line": 27,
2371                    "column": 8
2372                  },
2373                  "end": {
2374                    "line": 29,
2375                    "column": 6
2376                  }
2377                }
2378              },
2379              "loc": {
2380                "start": {
2381                  "line": 27,
2382                  "column": 8
2383                },
2384                "end": {
2385                  "line": 29,
2386                  "column": 6
2387                }
2388              }
2389            },
2390            "overloads": [
2391              {
2392                "type": "MethodDefinition",
2393                "key": {
2394                  "type": "Identifier",
2395                  "name": "foo",
2396                  "decorators": [],
2397                  "loc": {
2398                    "start": {
2399                      "line": 27,
2400                      "column": 5
2401                    },
2402                    "end": {
2403                      "line": 27,
2404                      "column": 8
2405                    }
2406                  }
2407                },
2408                "kind": "method",
2409                "accessibility": "public",
2410                "static": false,
2411                "optional": false,
2412                "computed": false,
2413                "value": {
2414                  "type": "FunctionExpression",
2415                  "function": {
2416                    "type": "ScriptFunction",
2417                    "id": {
2418                      "type": "Identifier",
2419                      "name": "foo",
2420                      "decorators": [],
2421                      "loc": {
2422                        "start": {
2423                          "line": 27,
2424                          "column": 5
2425                        },
2426                        "end": {
2427                          "line": 27,
2428                          "column": 8
2429                        }
2430                      }
2431                    },
2432                    "generator": false,
2433                    "async": false,
2434                    "expression": false,
2435                    "params": [
2436                      {
2437                        "type": "ETSParameterExpression",
2438                        "name": {
2439                          "type": "Identifier",
2440                          "name": "equivalent",
2441                          "typeAnnotation": {
2442                            "type": "ETSUnionType",
2443                            "types": [
2444                              {
2445                                "type": "ETSTypeReference",
2446                                "part": {
2447                                  "type": "ETSTypeReferencePart",
2448                                  "name": {
2449                                    "type": "Identifier",
2450                                    "name": "ValueTracker",
2451                                    "decorators": [],
2452                                    "loc": {
2453                                      "start": {
2454                                        "line": 27,
2455                                        "column": 29
2456                                      },
2457                                      "end": {
2458                                        "line": 27,
2459                                        "column": 41
2460                                      }
2461                                    }
2462                                  },
2463                                  "typeParams": {
2464                                    "type": "TSTypeParameterInstantiation",
2465                                    "params": [
2466                                      {
2467                                        "type": "ETSTypeReference",
2468                                        "part": {
2469                                          "type": "ETSTypeReferencePart",
2470                                          "name": {
2471                                            "type": "Identifier",
2472                                            "name": "Value",
2473                                            "decorators": [],
2474                                            "loc": {
2475                                              "start": {
2476                                                "line": 27,
2477                                                "column": 42
2478                                              },
2479                                              "end": {
2480                                                "line": 27,
2481                                                "column": 47
2482                                              }
2483                                            }
2484                                          },
2485                                          "loc": {
2486                                            "start": {
2487                                              "line": 27,
2488                                              "column": 42
2489                                            },
2490                                            "end": {
2491                                              "line": 27,
2492                                              "column": 48
2493                                            }
2494                                          }
2495                                        },
2496                                        "loc": {
2497                                          "start": {
2498                                            "line": 27,
2499                                            "column": 42
2500                                          },
2501                                          "end": {
2502                                            "line": 27,
2503                                            "column": 48
2504                                          }
2505                                        }
2506                                      }
2507                                    ],
2508                                    "loc": {
2509                                      "start": {
2510                                        "line": 27,
2511                                        "column": 41
2512                                      },
2513                                      "end": {
2514                                        "line": 27,
2515                                        "column": 48
2516                                      }
2517                                    }
2518                                  },
2519                                  "loc": {
2520                                    "start": {
2521                                      "line": 27,
2522                                      "column": 29
2523                                    },
2524                                    "end": {
2525                                      "line": 27,
2526                                      "column": 49
2527                                    }
2528                                  }
2529                                },
2530                                "loc": {
2531                                  "start": {
2532                                    "line": 27,
2533                                    "column": 29
2534                                  },
2535                                  "end": {
2536                                    "line": 27,
2537                                    "column": 49
2538                                  }
2539                                }
2540                              },
2541                              {
2542                                "type": "ETSUndefinedType",
2543                                "loc": {
2544                                  "start": {
2545                                    "line": 1,
2546                                    "column": 1
2547                                  },
2548                                  "end": {
2549                                    "line": 1,
2550                                    "column": 1
2551                                  }
2552                                }
2553                              }
2554                            ],
2555                            "loc": {
2556                              "start": {
2557                                "line": 1,
2558                                "column": 1
2559                              },
2560                              "end": {
2561                                "line": 1,
2562                                "column": 1
2563                              }
2564                            }
2565                          },
2566                          "decorators": [],
2567                          "loc": {
2568                            "start": {
2569                              "line": 27,
2570                              "column": 17
2571                            },
2572                            "end": {
2573                              "line": 27,
2574                              "column": 49
2575                            }
2576                          }
2577                        },
2578                        "loc": {
2579                          "start": {
2580                            "line": 1,
2581                            "column": 1
2582                          },
2583                          "end": {
2584                            "line": 1,
2585                            "column": 1
2586                          }
2587                        }
2588                      }
2589                    ],
2590                    "returnType": {
2591                      "type": "ETSTypeReference",
2592                      "part": {
2593                        "type": "ETSTypeReferencePart",
2594                        "name": {
2595                          "type": "Identifier",
2596                          "name": "StateImpl",
2597                          "decorators": [],
2598                          "loc": {
2599                            "start": {
2600                              "line": 27,
2601                              "column": 81
2602                            },
2603                            "end": {
2604                              "line": 27,
2605                              "column": 90
2606                            }
2607                          }
2608                        },
2609                        "typeParams": {
2610                          "type": "TSTypeParameterInstantiation",
2611                          "params": [
2612                            {
2613                              "type": "ETSTypeReference",
2614                              "part": {
2615                                "type": "ETSTypeReferencePart",
2616                                "name": {
2617                                  "type": "Identifier",
2618                                  "name": "Value",
2619                                  "decorators": [],
2620                                  "loc": {
2621                                    "start": {
2622                                      "line": 27,
2623                                      "column": 91
2624                                    },
2625                                    "end": {
2626                                      "line": 27,
2627                                      "column": 96
2628                                    }
2629                                  }
2630                                },
2631                                "loc": {
2632                                  "start": {
2633                                    "line": 27,
2634                                    "column": 91
2635                                  },
2636                                  "end": {
2637                                    "line": 27,
2638                                    "column": 97
2639                                  }
2640                                }
2641                              },
2642                              "loc": {
2643                                "start": {
2644                                  "line": 27,
2645                                  "column": 91
2646                                },
2647                                "end": {
2648                                  "line": 27,
2649                                  "column": 97
2650                                }
2651                              }
2652                            }
2653                          ],
2654                          "loc": {
2655                            "start": {
2656                              "line": 27,
2657                              "column": 90
2658                            },
2659                            "end": {
2660                              "line": 27,
2661                              "column": 97
2662                            }
2663                          }
2664                        },
2665                        "loc": {
2666                          "start": {
2667                            "line": 27,
2668                            "column": 81
2669                          },
2670                          "end": {
2671                            "line": 27,
2672                            "column": 99
2673                          }
2674                        }
2675                      },
2676                      "loc": {
2677                        "start": {
2678                          "line": 27,
2679                          "column": 81
2680                        },
2681                        "end": {
2682                          "line": 27,
2683                          "column": 99
2684                        }
2685                      }
2686                    },
2687                    "typeParameters": {
2688                      "type": "TSTypeParameterDeclaration",
2689                      "params": [
2690                        {
2691                          "type": "TSTypeParameter",
2692                          "name": {
2693                            "type": "Identifier",
2694                            "name": "Value",
2695                            "decorators": [],
2696                            "loc": {
2697                              "start": {
2698                                "line": 27,
2699                                "column": 9
2700                              },
2701                              "end": {
2702                                "line": 27,
2703                                "column": 14
2704                              }
2705                            }
2706                          },
2707                          "loc": {
2708                            "start": {
2709                              "line": 1,
2710                              "column": 1
2711                            },
2712                            "end": {
2713                              "line": 1,
2714                              "column": 1
2715                            }
2716                          }
2717                        }
2718                      ],
2719                      "loc": {
2720                        "start": {
2721                          "line": 1,
2722                          "column": 1
2723                        },
2724                        "end": {
2725                          "line": 1,
2726                          "column": 1
2727                        }
2728                      }
2729                    },
2730                    "body": {
2731                      "type": "BlockStatement",
2732                      "statements": [
2733                        {
2734                          "type": "ReturnStatement",
2735                          "argument": {
2736                            "type": "CallExpression",
2737                            "callee": {
2738                              "type": "MemberExpression",
2739                              "object": {
2740                                "type": "ThisExpression",
2741                                "loc": {
2742                                  "start": {
2743                                    "line": 1,
2744                                    "column": 1
2745                                  },
2746                                  "end": {
2747                                    "line": 1,
2748                                    "column": 1
2749                                  }
2750                                }
2751                              },
2752                              "property": {
2753                                "type": "Identifier",
2754                                "name": "foo",
2755                                "decorators": [],
2756                                "loc": {
2757                                  "start": {
2758                                    "line": 1,
2759                                    "column": 1
2760                                  },
2761                                  "end": {
2762                                    "line": 1,
2763                                    "column": 1
2764                                  }
2765                                }
2766                              },
2767                              "computed": false,
2768                              "optional": false,
2769                              "loc": {
2770                                "start": {
2771                                  "line": 1,
2772                                  "column": 1
2773                                },
2774                                "end": {
2775                                  "line": 1,
2776                                  "column": 1
2777                                }
2778                              }
2779                            },
2780                            "arguments": [
2781                              {
2782                                "type": "Identifier",
2783                                "name": "equivalent",
2784                                "decorators": [],
2785                                "loc": {
2786                                  "start": {
2787                                    "line": 27,
2788                                    "column": 17
2789                                  },
2790                                  "end": {
2791                                    "line": 27,
2792                                    "column": 49
2793                                  }
2794                                }
2795                              },
2796                              {
2797                                "type": "UndefinedLiteral",
2798                                "value": "undefined",
2799                                "loc": {
2800                                  "start": {
2801                                    "line": 1,
2802                                    "column": 1
2803                                  },
2804                                  "end": {
2805                                    "line": 1,
2806                                    "column": 1
2807                                  }
2808                                }
2809                              }
2810                            ],
2811                            "optional": false,
2812                            "typeParameters": {
2813                              "type": "TSTypeParameterInstantiation",
2814                              "params": [
2815                                {
2816                                  "type": "ETSTypeReference",
2817                                  "part": {
2818                                    "type": "ETSTypeReferencePart",
2819                                    "name": {
2820                                      "type": "Identifier",
2821                                      "name": "Value",
2822                                      "decorators": [],
2823                                      "loc": {
2824                                        "start": {
2825                                          "line": 1,
2826                                          "column": 1
2827                                        },
2828                                        "end": {
2829                                          "line": 1,
2830                                          "column": 1
2831                                        }
2832                                      }
2833                                    },
2834                                    "loc": {
2835                                      "start": {
2836                                        "line": 1,
2837                                        "column": 1
2838                                      },
2839                                      "end": {
2840                                        "line": 1,
2841                                        "column": 1
2842                                      }
2843                                    }
2844                                  },
2845                                  "loc": {
2846                                    "start": {
2847                                      "line": 1,
2848                                      "column": 1
2849                                    },
2850                                    "end": {
2851                                      "line": 1,
2852                                      "column": 1
2853                                    }
2854                                  }
2855                                }
2856                              ],
2857                              "loc": {
2858                                "start": {
2859                                  "line": 1,
2860                                  "column": 1
2861                                },
2862                                "end": {
2863                                  "line": 1,
2864                                  "column": 1
2865                                }
2866                              }
2867                            },
2868                            "loc": {
2869                              "start": {
2870                                "line": 27,
2871                                "column": 5
2872                              },
2873                              "end": {
2874                                "line": 29,
2875                                "column": 6
2876                              }
2877                            }
2878                          },
2879                          "loc": {
2880                            "start": {
2881                              "line": 1,
2882                              "column": 1
2883                            },
2884                            "end": {
2885                              "line": 1,
2886                              "column": 1
2887                            }
2888                          }
2889                        }
2890                      ],
2891                      "loc": {
2892                        "start": {
2893                          "line": 1,
2894                          "column": 1
2895                        },
2896                        "end": {
2897                          "line": 1,
2898                          "column": 1
2899                        }
2900                      }
2901                    },
2902                    "loc": {
2903                      "start": {
2904                        "line": 915,
2905                        "column": 1
2906                      },
2907                      "end": {
2908                        "line": 915,
2909                        "column": 1
2910                      }
2911                    }
2912                  },
2913                  "loc": {
2914                    "start": {
2915                      "line": 1,
2916                      "column": 1
2917                    },
2918                    "end": {
2919                      "line": 1,
2920                      "column": 1
2921                    }
2922                  }
2923                },
2924                "overloads": [],
2925                "decorators": [],
2926                "loc": {
2927                  "start": {
2928                    "line": 27,
2929                    "column": 5
2930                  },
2931                  "end": {
2932                    "line": 1,
2933                    "column": 1
2934                  }
2935                }
2936              },
2937              {
2938                "type": "MethodDefinition",
2939                "key": {
2940                  "type": "Identifier",
2941                  "name": "foo",
2942                  "decorators": [],
2943                  "loc": {
2944                    "start": {
2945                      "line": 27,
2946                      "column": 5
2947                    },
2948                    "end": {
2949                      "line": 27,
2950                      "column": 8
2951                    }
2952                  }
2953                },
2954                "kind": "method",
2955                "accessibility": "public",
2956                "static": false,
2957                "optional": false,
2958                "computed": false,
2959                "value": {
2960                  "type": "FunctionExpression",
2961                  "function": {
2962                    "type": "ScriptFunction",
2963                    "id": {
2964                      "type": "Identifier",
2965                      "name": "foo",
2966                      "decorators": [],
2967                      "loc": {
2968                        "start": {
2969                          "line": 27,
2970                          "column": 5
2971                        },
2972                        "end": {
2973                          "line": 27,
2974                          "column": 8
2975                        }
2976                      }
2977                    },
2978                    "generator": false,
2979                    "async": false,
2980                    "expression": false,
2981                    "params": [],
2982                    "returnType": {
2983                      "type": "ETSTypeReference",
2984                      "part": {
2985                        "type": "ETSTypeReferencePart",
2986                        "name": {
2987                          "type": "Identifier",
2988                          "name": "StateImpl",
2989                          "decorators": [],
2990                          "loc": {
2991                            "start": {
2992                              "line": 27,
2993                              "column": 81
2994                            },
2995                            "end": {
2996                              "line": 27,
2997                              "column": 90
2998                            }
2999                          }
3000                        },
3001                        "typeParams": {
3002                          "type": "TSTypeParameterInstantiation",
3003                          "params": [
3004                            {
3005                              "type": "ETSTypeReference",
3006                              "part": {
3007                                "type": "ETSTypeReferencePart",
3008                                "name": {
3009                                  "type": "Identifier",
3010                                  "name": "Value",
3011                                  "decorators": [],
3012                                  "loc": {
3013                                    "start": {
3014                                      "line": 27,
3015                                      "column": 91
3016                                    },
3017                                    "end": {
3018                                      "line": 27,
3019                                      "column": 96
3020                                    }
3021                                  }
3022                                },
3023                                "loc": {
3024                                  "start": {
3025                                    "line": 27,
3026                                    "column": 91
3027                                  },
3028                                  "end": {
3029                                    "line": 27,
3030                                    "column": 97
3031                                  }
3032                                }
3033                              },
3034                              "loc": {
3035                                "start": {
3036                                  "line": 27,
3037                                  "column": 91
3038                                },
3039                                "end": {
3040                                  "line": 27,
3041                                  "column": 97
3042                                }
3043                              }
3044                            }
3045                          ],
3046                          "loc": {
3047                            "start": {
3048                              "line": 27,
3049                              "column": 90
3050                            },
3051                            "end": {
3052                              "line": 27,
3053                              "column": 97
3054                            }
3055                          }
3056                        },
3057                        "loc": {
3058                          "start": {
3059                            "line": 27,
3060                            "column": 81
3061                          },
3062                          "end": {
3063                            "line": 27,
3064                            "column": 99
3065                          }
3066                        }
3067                      },
3068                      "loc": {
3069                        "start": {
3070                          "line": 27,
3071                          "column": 81
3072                        },
3073                        "end": {
3074                          "line": 27,
3075                          "column": 99
3076                        }
3077                      }
3078                    },
3079                    "typeParameters": {
3080                      "type": "TSTypeParameterDeclaration",
3081                      "params": [
3082                        {
3083                          "type": "TSTypeParameter",
3084                          "name": {
3085                            "type": "Identifier",
3086                            "name": "Value",
3087                            "decorators": [],
3088                            "loc": {
3089                              "start": {
3090                                "line": 27,
3091                                "column": 9
3092                              },
3093                              "end": {
3094                                "line": 27,
3095                                "column": 14
3096                              }
3097                            }
3098                          },
3099                          "loc": {
3100                            "start": {
3101                              "line": 1,
3102                              "column": 1
3103                            },
3104                            "end": {
3105                              "line": 1,
3106                              "column": 1
3107                            }
3108                          }
3109                        }
3110                      ],
3111                      "loc": {
3112                        "start": {
3113                          "line": 1,
3114                          "column": 1
3115                        },
3116                        "end": {
3117                          "line": 1,
3118                          "column": 1
3119                        }
3120                      }
3121                    },
3122                    "body": {
3123                      "type": "BlockStatement",
3124                      "statements": [
3125                        {
3126                          "type": "ReturnStatement",
3127                          "argument": {
3128                            "type": "CallExpression",
3129                            "callee": {
3130                              "type": "MemberExpression",
3131                              "object": {
3132                                "type": "ThisExpression",
3133                                "loc": {
3134                                  "start": {
3135                                    "line": 1,
3136                                    "column": 1
3137                                  },
3138                                  "end": {
3139                                    "line": 1,
3140                                    "column": 1
3141                                  }
3142                                }
3143                              },
3144                              "property": {
3145                                "type": "Identifier",
3146                                "name": "foo",
3147                                "decorators": [],
3148                                "loc": {
3149                                  "start": {
3150                                    "line": 1,
3151                                    "column": 1
3152                                  },
3153                                  "end": {
3154                                    "line": 1,
3155                                    "column": 1
3156                                  }
3157                                }
3158                              },
3159                              "computed": false,
3160                              "optional": false,
3161                              "loc": {
3162                                "start": {
3163                                  "line": 1,
3164                                  "column": 1
3165                                },
3166                                "end": {
3167                                  "line": 1,
3168                                  "column": 1
3169                                }
3170                              }
3171                            },
3172                            "arguments": [
3173                              {
3174                                "type": "UndefinedLiteral",
3175                                "value": "undefined",
3176                                "loc": {
3177                                  "start": {
3178                                    "line": 1,
3179                                    "column": 1
3180                                  },
3181                                  "end": {
3182                                    "line": 1,
3183                                    "column": 1
3184                                  }
3185                                }
3186                              },
3187                              {
3188                                "type": "UndefinedLiteral",
3189                                "value": "undefined",
3190                                "loc": {
3191                                  "start": {
3192                                    "line": 1,
3193                                    "column": 1
3194                                  },
3195                                  "end": {
3196                                    "line": 1,
3197                                    "column": 1
3198                                  }
3199                                }
3200                              }
3201                            ],
3202                            "optional": false,
3203                            "typeParameters": {
3204                              "type": "TSTypeParameterInstantiation",
3205                              "params": [
3206                                {
3207                                  "type": "ETSTypeReference",
3208                                  "part": {
3209                                    "type": "ETSTypeReferencePart",
3210                                    "name": {
3211                                      "type": "Identifier",
3212                                      "name": "Value",
3213                                      "decorators": [],
3214                                      "loc": {
3215                                        "start": {
3216                                          "line": 1,
3217                                          "column": 1
3218                                        },
3219                                        "end": {
3220                                          "line": 1,
3221                                          "column": 1
3222                                        }
3223                                      }
3224                                    },
3225                                    "loc": {
3226                                      "start": {
3227                                        "line": 1,
3228                                        "column": 1
3229                                      },
3230                                      "end": {
3231                                        "line": 1,
3232                                        "column": 1
3233                                      }
3234                                    }
3235                                  },
3236                                  "loc": {
3237                                    "start": {
3238                                      "line": 1,
3239                                      "column": 1
3240                                    },
3241                                    "end": {
3242                                      "line": 1,
3243                                      "column": 1
3244                                    }
3245                                  }
3246                                }
3247                              ],
3248                              "loc": {
3249                                "start": {
3250                                  "line": 1,
3251                                  "column": 1
3252                                },
3253                                "end": {
3254                                  "line": 1,
3255                                  "column": 1
3256                                }
3257                              }
3258                            },
3259                            "loc": {
3260                              "start": {
3261                                "line": 27,
3262                                "column": 5
3263                              },
3264                              "end": {
3265                                "line": 29,
3266                                "column": 6
3267                              }
3268                            }
3269                          },
3270                          "loc": {
3271                            "start": {
3272                              "line": 1,
3273                              "column": 1
3274                            },
3275                            "end": {
3276                              "line": 1,
3277                              "column": 1
3278                            }
3279                          }
3280                        }
3281                      ],
3282                      "loc": {
3283                        "start": {
3284                          "line": 1,
3285                          "column": 1
3286                        },
3287                        "end": {
3288                          "line": 1,
3289                          "column": 1
3290                        }
3291                      }
3292                    },
3293                    "loc": {
3294                      "start": {
3295                        "line": 915,
3296                        "column": 1
3297                      },
3298                      "end": {
3299                        "line": 915,
3300                        "column": 1
3301                      }
3302                    }
3303                  },
3304                  "loc": {
3305                    "start": {
3306                      "line": 1,
3307                      "column": 1
3308                    },
3309                    "end": {
3310                      "line": 1,
3311                      "column": 1
3312                    }
3313                  }
3314                },
3315                "overloads": [],
3316                "decorators": [],
3317                "loc": {
3318                  "start": {
3319                    "line": 27,
3320                    "column": 5
3321                  },
3322                  "end": {
3323                    "line": 1,
3324                    "column": 1
3325                  }
3326                }
3327              }
3328            ],
3329            "decorators": [],
3330            "loc": {
3331              "start": {
3332                "line": 27,
3333                "column": 5
3334              },
3335              "end": {
3336                "line": 29,
3337                "column": 6
3338              }
3339            }
3340          },
3341          {
3342            "type": "MethodDefinition",
3343            "key": {
3344              "type": "Identifier",
3345              "name": "constructor",
3346              "decorators": [],
3347              "loc": {
3348                "start": {
3349                  "line": 1,
3350                  "column": 1
3351                },
3352                "end": {
3353                  "line": 1,
3354                  "column": 1
3355                }
3356              }
3357            },
3358            "kind": "constructor",
3359            "static": false,
3360            "optional": false,
3361            "computed": false,
3362            "value": {
3363              "type": "FunctionExpression",
3364              "function": {
3365                "type": "ScriptFunction",
3366                "id": {
3367                  "type": "Identifier",
3368                  "name": "constructor",
3369                  "decorators": [],
3370                  "loc": {
3371                    "start": {
3372                      "line": 1,
3373                      "column": 1
3374                    },
3375                    "end": {
3376                      "line": 1,
3377                      "column": 1
3378                    }
3379                  }
3380                },
3381                "generator": false,
3382                "async": false,
3383                "expression": false,
3384                "params": [],
3385                "body": {
3386                  "type": "BlockStatement",
3387                  "statements": [],
3388                  "loc": {
3389                    "start": {
3390                      "line": 1,
3391                      "column": 1
3392                    },
3393                    "end": {
3394                      "line": 1,
3395                      "column": 1
3396                    }
3397                  }
3398                },
3399                "loc": {
3400                  "start": {
3401                    "line": 1,
3402                    "column": 1
3403                  },
3404                  "end": {
3405                    "line": 1,
3406                    "column": 1
3407                  }
3408                }
3409              },
3410              "loc": {
3411                "start": {
3412                  "line": 1,
3413                  "column": 1
3414                },
3415                "end": {
3416                  "line": 1,
3417                  "column": 1
3418                }
3419              }
3420            },
3421            "overloads": [],
3422            "decorators": [],
3423            "loc": {
3424              "start": {
3425                "line": 30,
3426                "column": 2
3427              },
3428              "end": {
3429                "line": 30,
3430                "column": 2
3431              }
3432            }
3433          }
3434        ],
3435        "loc": {
3436          "start": {
3437            "line": 26,
3438            "column": 48
3439          },
3440          "end": {
3441            "line": 30,
3442            "column": 2
3443          }
3444        }
3445      },
3446      "loc": {
3447        "start": {
3448          "line": 26,
3449          "column": 1
3450        },
3451        "end": {
3452          "line": 30,
3453          "column": 2
3454        }
3455      }
3456    },
3457    {
3458      "type": "ClassDeclaration",
3459      "definition": {
3460        "id": {
3461          "type": "Identifier",
3462          "name": "ETSGLOBAL",
3463          "decorators": [],
3464          "loc": {
3465            "start": {
3466              "line": 1,
3467              "column": 1
3468            },
3469            "end": {
3470              "line": 1,
3471              "column": 1
3472            }
3473          }
3474        },
3475        "superClass": null,
3476        "implements": [],
3477        "body": [
3478          {
3479            "type": "MethodDefinition",
3480            "key": {
3481              "type": "Identifier",
3482              "name": "_$init$_",
3483              "decorators": [],
3484              "loc": {
3485                "start": {
3486                  "line": 1,
3487                  "column": 1
3488                },
3489                "end": {
3490                  "line": 1,
3491                  "column": 1
3492                }
3493              }
3494            },
3495            "kind": "method",
3496            "accessibility": "public",
3497            "static": true,
3498            "optional": false,
3499            "computed": false,
3500            "value": {
3501              "type": "FunctionExpression",
3502              "function": {
3503                "type": "ScriptFunction",
3504                "id": {
3505                  "type": "Identifier",
3506                  "name": "_$init$_",
3507                  "decorators": [],
3508                  "loc": {
3509                    "start": {
3510                      "line": 1,
3511                      "column": 1
3512                    },
3513                    "end": {
3514                      "line": 1,
3515                      "column": 1
3516                    }
3517                  }
3518                },
3519                "generator": false,
3520                "async": false,
3521                "expression": false,
3522                "params": [],
3523                "body": {
3524                  "type": "BlockStatement",
3525                  "statements": [],
3526                  "loc": {
3527                    "start": {
3528                      "line": 1,
3529                      "column": 1
3530                    },
3531                    "end": {
3532                      "line": 1,
3533                      "column": 1
3534                    }
3535                  }
3536                },
3537                "loc": {
3538                  "start": {
3539                    "line": 1,
3540                    "column": 1
3541                  },
3542                  "end": {
3543                    "line": 1,
3544                    "column": 1
3545                  }
3546                }
3547              },
3548              "loc": {
3549                "start": {
3550                  "line": 1,
3551                  "column": 1
3552                },
3553                "end": {
3554                  "line": 1,
3555                  "column": 1
3556                }
3557              }
3558            },
3559            "overloads": [],
3560            "decorators": [],
3561            "loc": {
3562              "start": {
3563                "line": 1,
3564                "column": 1
3565              },
3566              "end": {
3567                "line": 1,
3568                "column": 1
3569              }
3570            }
3571          }
3572        ],
3573        "loc": {
3574          "start": {
3575            "line": 1,
3576            "column": 1
3577          },
3578          "end": {
3579            "line": 1,
3580            "column": 1
3581          }
3582        }
3583      },
3584      "loc": {
3585        "start": {
3586          "line": 1,
3587          "column": 1
3588        },
3589        "end": {
3590          "line": 1,
3591          "column": 1
3592        }
3593      }
3594    }
3595  ],
3596  "loc": {
3597    "start": {
3598      "line": 1,
3599      "column": 1
3600    },
3601    "end": {
3602      "line": 31,
3603      "column": 1
3604    }
3605  }
3606}
3607