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                "declare": true,
879                "loc": {
880                  "start": {
881                    "line": 21,
882                    "column": 8
883                  },
884                  "end": {
885                    "line": 22,
886                    "column": 2
887                  }
888                }
889              },
890              "loc": {
891                "start": {
892                  "line": 21,
893                  "column": 8
894                },
895                "end": {
896                  "line": 22,
897                  "column": 2
898                }
899              }
900            },
901            "overloads": [
902              {
903                "type": "MethodDefinition",
904                "key": {
905                  "type": "Identifier",
906                  "name": "foo",
907                  "decorators": [],
908                  "loc": {
909                    "start": {
910                      "line": 21,
911                      "column": 5
912                    },
913                    "end": {
914                      "line": 21,
915                      "column": 8
916                    }
917                  }
918                },
919                "kind": "method",
920                "accessibility": "public",
921                "static": false,
922                "optional": false,
923                "computed": false,
924                "value": {
925                  "type": "FunctionExpression",
926                  "function": {
927                    "type": "ScriptFunction",
928                    "id": {
929                      "type": "Identifier",
930                      "name": "foo",
931                      "decorators": [],
932                      "loc": {
933                        "start": {
934                          "line": 21,
935                          "column": 5
936                        },
937                        "end": {
938                          "line": 21,
939                          "column": 8
940                        }
941                      }
942                    },
943                    "generator": false,
944                    "async": false,
945                    "expression": false,
946                    "params": [
947                      {
948                        "type": "ETSParameterExpression",
949                        "name": {
950                          "type": "Identifier",
951                          "name": "equivalent",
952                          "typeAnnotation": {
953                            "type": "ETSUnionType",
954                            "types": [
955                              {
956                                "type": "ETSTypeReference",
957                                "part": {
958                                  "type": "ETSTypeReferencePart",
959                                  "name": {
960                                    "type": "Identifier",
961                                    "name": "ValueTracker",
962                                    "decorators": [],
963                                    "loc": {
964                                      "start": {
965                                        "line": 21,
966                                        "column": 29
967                                      },
968                                      "end": {
969                                        "line": 21,
970                                        "column": 41
971                                      }
972                                    }
973                                  },
974                                  "typeParams": {
975                                    "type": "TSTypeParameterInstantiation",
976                                    "params": [
977                                      {
978                                        "type": "ETSTypeReference",
979                                        "part": {
980                                          "type": "ETSTypeReferencePart",
981                                          "name": {
982                                            "type": "Identifier",
983                                            "name": "Value",
984                                            "decorators": [],
985                                            "loc": {
986                                              "start": {
987                                                "line": 21,
988                                                "column": 42
989                                              },
990                                              "end": {
991                                                "line": 21,
992                                                "column": 47
993                                              }
994                                            }
995                                          },
996                                          "loc": {
997                                            "start": {
998                                              "line": 21,
999                                              "column": 42
1000                                            },
1001                                            "end": {
1002                                              "line": 21,
1003                                              "column": 48
1004                                            }
1005                                          }
1006                                        },
1007                                        "loc": {
1008                                          "start": {
1009                                            "line": 21,
1010                                            "column": 42
1011                                          },
1012                                          "end": {
1013                                            "line": 21,
1014                                            "column": 48
1015                                          }
1016                                        }
1017                                      }
1018                                    ],
1019                                    "loc": {
1020                                      "start": {
1021                                        "line": 21,
1022                                        "column": 41
1023                                      },
1024                                      "end": {
1025                                        "line": 21,
1026                                        "column": 48
1027                                      }
1028                                    }
1029                                  },
1030                                  "loc": {
1031                                    "start": {
1032                                      "line": 21,
1033                                      "column": 29
1034                                    },
1035                                    "end": {
1036                                      "line": 21,
1037                                      "column": 49
1038                                    }
1039                                  }
1040                                },
1041                                "loc": {
1042                                  "start": {
1043                                    "line": 21,
1044                                    "column": 29
1045                                  },
1046                                  "end": {
1047                                    "line": 21,
1048                                    "column": 49
1049                                  }
1050                                }
1051                              },
1052                              {
1053                                "type": "ETSUndefinedType",
1054                                "loc": {
1055                                  "start": {
1056                                    "line": 1,
1057                                    "column": 1
1058                                  },
1059                                  "end": {
1060                                    "line": 1,
1061                                    "column": 1
1062                                  }
1063                                }
1064                              }
1065                            ],
1066                            "loc": {
1067                              "start": {
1068                                "line": 1,
1069                                "column": 1
1070                              },
1071                              "end": {
1072                                "line": 1,
1073                                "column": 1
1074                              }
1075                            }
1076                          },
1077                          "decorators": [],
1078                          "loc": {
1079                            "start": {
1080                              "line": 21,
1081                              "column": 16
1082                            },
1083                            "end": {
1084                              "line": 21,
1085                              "column": 49
1086                            }
1087                          }
1088                        },
1089                        "loc": {
1090                          "start": {
1091                            "line": 1,
1092                            "column": 1
1093                          },
1094                          "end": {
1095                            "line": 1,
1096                            "column": 1
1097                          }
1098                        }
1099                      }
1100                    ],
1101                    "returnType": {
1102                      "type": "ETSTypeReference",
1103                      "part": {
1104                        "type": "ETSTypeReferencePart",
1105                        "name": {
1106                          "type": "Identifier",
1107                          "name": "MutableState",
1108                          "decorators": [],
1109                          "loc": {
1110                            "start": {
1111                              "line": 21,
1112                              "column": 82
1113                            },
1114                            "end": {
1115                              "line": 21,
1116                              "column": 94
1117                            }
1118                          }
1119                        },
1120                        "typeParams": {
1121                          "type": "TSTypeParameterInstantiation",
1122                          "params": [
1123                            {
1124                              "type": "ETSTypeReference",
1125                              "part": {
1126                                "type": "ETSTypeReferencePart",
1127                                "name": {
1128                                  "type": "Identifier",
1129                                  "name": "Value",
1130                                  "decorators": [],
1131                                  "loc": {
1132                                    "start": {
1133                                      "line": 21,
1134                                      "column": 95
1135                                    },
1136                                    "end": {
1137                                      "line": 21,
1138                                      "column": 100
1139                                    }
1140                                  }
1141                                },
1142                                "loc": {
1143                                  "start": {
1144                                    "line": 21,
1145                                    "column": 95
1146                                  },
1147                                  "end": {
1148                                    "line": 21,
1149                                    "column": 101
1150                                  }
1151                                }
1152                              },
1153                              "loc": {
1154                                "start": {
1155                                  "line": 21,
1156                                  "column": 95
1157                                },
1158                                "end": {
1159                                  "line": 21,
1160                                  "column": 101
1161                                }
1162                              }
1163                            }
1164                          ],
1165                          "loc": {
1166                            "start": {
1167                              "line": 21,
1168                              "column": 94
1169                            },
1170                            "end": {
1171                              "line": 21,
1172                              "column": 101
1173                            }
1174                          }
1175                        },
1176                        "loc": {
1177                          "start": {
1178                            "line": 21,
1179                            "column": 82
1180                          },
1181                          "end": {
1182                            "line": 22,
1183                            "column": 2
1184                          }
1185                        }
1186                      },
1187                      "loc": {
1188                        "start": {
1189                          "line": 21,
1190                          "column": 82
1191                        },
1192                        "end": {
1193                          "line": 22,
1194                          "column": 2
1195                        }
1196                      }
1197                    },
1198                    "typeParameters": {
1199                      "type": "TSTypeParameterDeclaration",
1200                      "params": [
1201                        {
1202                          "type": "TSTypeParameter",
1203                          "name": {
1204                            "type": "Identifier",
1205                            "name": "Value",
1206                            "decorators": [],
1207                            "loc": {
1208                              "start": {
1209                                "line": 21,
1210                                "column": 9
1211                              },
1212                              "end": {
1213                                "line": 21,
1214                                "column": 14
1215                              }
1216                            }
1217                          },
1218                          "loc": {
1219                            "start": {
1220                              "line": 1,
1221                              "column": 1
1222                            },
1223                            "end": {
1224                              "line": 1,
1225                              "column": 1
1226                            }
1227                          }
1228                        }
1229                      ],
1230                      "loc": {
1231                        "start": {
1232                          "line": 1,
1233                          "column": 1
1234                        },
1235                        "end": {
1236                          "line": 1,
1237                          "column": 1
1238                        }
1239                      }
1240                    },
1241                    "body": {
1242                      "type": "BlockStatement",
1243                      "statements": [],
1244                      "loc": {
1245                        "start": {
1246                          "line": 1,
1247                          "column": 1
1248                        },
1249                        "end": {
1250                          "line": 1,
1251                          "column": 1
1252                        }
1253                      }
1254                    },
1255                    "loc": {
1256                      "start": {
1257                        "line": 728,
1258                        "column": 1
1259                      },
1260                      "end": {
1261                        "line": 728,
1262                        "column": 1
1263                      }
1264                    }
1265                  },
1266                  "loc": {
1267                    "start": {
1268                      "line": 1,
1269                      "column": 1
1270                    },
1271                    "end": {
1272                      "line": 1,
1273                      "column": 1
1274                    }
1275                  }
1276                },
1277                "overloads": [],
1278                "decorators": [],
1279                "loc": {
1280                  "start": {
1281                    "line": 21,
1282                    "column": 5
1283                  },
1284                  "end": {
1285                    "line": 1,
1286                    "column": 1
1287                  }
1288                }
1289              },
1290              {
1291                "type": "MethodDefinition",
1292                "key": {
1293                  "type": "Identifier",
1294                  "name": "foo",
1295                  "decorators": [],
1296                  "loc": {
1297                    "start": {
1298                      "line": 21,
1299                      "column": 5
1300                    },
1301                    "end": {
1302                      "line": 21,
1303                      "column": 8
1304                    }
1305                  }
1306                },
1307                "kind": "method",
1308                "accessibility": "public",
1309                "static": false,
1310                "optional": false,
1311                "computed": false,
1312                "value": {
1313                  "type": "FunctionExpression",
1314                  "function": {
1315                    "type": "ScriptFunction",
1316                    "id": {
1317                      "type": "Identifier",
1318                      "name": "foo",
1319                      "decorators": [],
1320                      "loc": {
1321                        "start": {
1322                          "line": 21,
1323                          "column": 5
1324                        },
1325                        "end": {
1326                          "line": 21,
1327                          "column": 8
1328                        }
1329                      }
1330                    },
1331                    "generator": false,
1332                    "async": false,
1333                    "expression": false,
1334                    "params": [],
1335                    "returnType": {
1336                      "type": "ETSTypeReference",
1337                      "part": {
1338                        "type": "ETSTypeReferencePart",
1339                        "name": {
1340                          "type": "Identifier",
1341                          "name": "MutableState",
1342                          "decorators": [],
1343                          "loc": {
1344                            "start": {
1345                              "line": 21,
1346                              "column": 82
1347                            },
1348                            "end": {
1349                              "line": 21,
1350                              "column": 94
1351                            }
1352                          }
1353                        },
1354                        "typeParams": {
1355                          "type": "TSTypeParameterInstantiation",
1356                          "params": [
1357                            {
1358                              "type": "ETSTypeReference",
1359                              "part": {
1360                                "type": "ETSTypeReferencePart",
1361                                "name": {
1362                                  "type": "Identifier",
1363                                  "name": "Value",
1364                                  "decorators": [],
1365                                  "loc": {
1366                                    "start": {
1367                                      "line": 21,
1368                                      "column": 95
1369                                    },
1370                                    "end": {
1371                                      "line": 21,
1372                                      "column": 100
1373                                    }
1374                                  }
1375                                },
1376                                "loc": {
1377                                  "start": {
1378                                    "line": 21,
1379                                    "column": 95
1380                                  },
1381                                  "end": {
1382                                    "line": 21,
1383                                    "column": 101
1384                                  }
1385                                }
1386                              },
1387                              "loc": {
1388                                "start": {
1389                                  "line": 21,
1390                                  "column": 95
1391                                },
1392                                "end": {
1393                                  "line": 21,
1394                                  "column": 101
1395                                }
1396                              }
1397                            }
1398                          ],
1399                          "loc": {
1400                            "start": {
1401                              "line": 21,
1402                              "column": 94
1403                            },
1404                            "end": {
1405                              "line": 21,
1406                              "column": 101
1407                            }
1408                          }
1409                        },
1410                        "loc": {
1411                          "start": {
1412                            "line": 21,
1413                            "column": 82
1414                          },
1415                          "end": {
1416                            "line": 22,
1417                            "column": 2
1418                          }
1419                        }
1420                      },
1421                      "loc": {
1422                        "start": {
1423                          "line": 21,
1424                          "column": 82
1425                        },
1426                        "end": {
1427                          "line": 22,
1428                          "column": 2
1429                        }
1430                      }
1431                    },
1432                    "typeParameters": {
1433                      "type": "TSTypeParameterDeclaration",
1434                      "params": [
1435                        {
1436                          "type": "TSTypeParameter",
1437                          "name": {
1438                            "type": "Identifier",
1439                            "name": "Value",
1440                            "decorators": [],
1441                            "loc": {
1442                              "start": {
1443                                "line": 21,
1444                                "column": 9
1445                              },
1446                              "end": {
1447                                "line": 21,
1448                                "column": 14
1449                              }
1450                            }
1451                          },
1452                          "loc": {
1453                            "start": {
1454                              "line": 1,
1455                              "column": 1
1456                            },
1457                            "end": {
1458                              "line": 1,
1459                              "column": 1
1460                            }
1461                          }
1462                        }
1463                      ],
1464                      "loc": {
1465                        "start": {
1466                          "line": 1,
1467                          "column": 1
1468                        },
1469                        "end": {
1470                          "line": 1,
1471                          "column": 1
1472                        }
1473                      }
1474                    },
1475                    "body": {
1476                      "type": "BlockStatement",
1477                      "statements": [],
1478                      "loc": {
1479                        "start": {
1480                          "line": 1,
1481                          "column": 1
1482                        },
1483                        "end": {
1484                          "line": 1,
1485                          "column": 1
1486                        }
1487                      }
1488                    },
1489                    "loc": {
1490                      "start": {
1491                        "line": 728,
1492                        "column": 1
1493                      },
1494                      "end": {
1495                        "line": 728,
1496                        "column": 1
1497                      }
1498                    }
1499                  },
1500                  "loc": {
1501                    "start": {
1502                      "line": 1,
1503                      "column": 1
1504                    },
1505                    "end": {
1506                      "line": 1,
1507                      "column": 1
1508                    }
1509                  }
1510                },
1511                "overloads": [],
1512                "decorators": [],
1513                "loc": {
1514                  "start": {
1515                    "line": 21,
1516                    "column": 5
1517                  },
1518                  "end": {
1519                    "line": 1,
1520                    "column": 1
1521                  }
1522                }
1523              }
1524            ],
1525            "decorators": [],
1526            "loc": {
1527              "start": {
1528                "line": 21,
1529                "column": 5
1530              },
1531              "end": {
1532                "line": 22,
1533                "column": 2
1534              }
1535            }
1536          }
1537        ],
1538        "loc": {
1539          "start": {
1540            "line": 20,
1541            "column": 25
1542          },
1543          "end": {
1544            "line": 22,
1545            "column": 2
1546          }
1547        }
1548      },
1549      "id": {
1550        "type": "Identifier",
1551        "name": "StateManager",
1552        "decorators": [],
1553        "loc": {
1554          "start": {
1555            "line": 20,
1556            "column": 11
1557          },
1558          "end": {
1559            "line": 20,
1560            "column": 23
1561          }
1562        }
1563      },
1564      "extends": [],
1565      "loc": {
1566        "start": {
1567          "line": 20,
1568          "column": 1
1569        },
1570        "end": {
1571          "line": 24,
1572          "column": 10
1573        }
1574      }
1575    },
1576    {
1577      "type": "TSInterfaceDeclaration",
1578      "body": {
1579        "type": "TSInterfaceBody",
1580        "body": [],
1581        "loc": {
1582          "start": {
1583            "line": 24,
1584            "column": 31
1585          },
1586          "end": {
1587            "line": 24,
1588            "column": 33
1589          }
1590        }
1591      },
1592      "id": {
1593        "type": "Identifier",
1594        "name": "ValueTracker",
1595        "decorators": [],
1596        "loc": {
1597          "start": {
1598            "line": 24,
1599            "column": 11
1600          },
1601          "end": {
1602            "line": 24,
1603            "column": 23
1604          }
1605        }
1606      },
1607      "extends": [],
1608      "typeParameters": {
1609        "type": "TSTypeParameterDeclaration",
1610        "params": [
1611          {
1612            "type": "TSTypeParameter",
1613            "name": {
1614              "type": "Identifier",
1615              "name": "Value",
1616              "decorators": [],
1617              "loc": {
1618                "start": {
1619                  "line": 24,
1620                  "column": 24
1621                },
1622                "end": {
1623                  "line": 24,
1624                  "column": 29
1625                }
1626              }
1627            },
1628            "loc": {
1629              "start": {
1630                "line": 24,
1631                "column": 24
1632              },
1633              "end": {
1634                "line": 24,
1635                "column": 30
1636              }
1637            }
1638          }
1639        ],
1640        "loc": {
1641          "start": {
1642            "line": 24,
1643            "column": 23
1644          },
1645          "end": {
1646            "line": 24,
1647            "column": 30
1648          }
1649        }
1650      },
1651      "loc": {
1652        "start": {
1653          "line": 24,
1654          "column": 1
1655        },
1656        "end": {
1657          "line": 26,
1658          "column": 6
1659        }
1660      }
1661    },
1662    {
1663      "type": "ClassDeclaration",
1664      "definition": {
1665        "id": {
1666          "type": "Identifier",
1667          "name": "StateManagerImpl",
1668          "decorators": [],
1669          "loc": {
1670            "start": {
1671              "line": 26,
1672              "column": 7
1673            },
1674            "end": {
1675              "line": 26,
1676              "column": 23
1677            }
1678          }
1679        },
1680        "superClass": null,
1681        "implements": [
1682          {
1683            "type": "TSClassImplements",
1684            "expression": {
1685              "type": "ETSTypeReference",
1686              "part": {
1687                "type": "ETSTypeReferencePart",
1688                "name": {
1689                  "type": "Identifier",
1690                  "name": "StateManager",
1691                  "decorators": [],
1692                  "loc": {
1693                    "start": {
1694                      "line": 26,
1695                      "column": 35
1696                    },
1697                    "end": {
1698                      "line": 26,
1699                      "column": 47
1700                    }
1701                  }
1702                },
1703                "loc": {
1704                  "start": {
1705                    "line": 26,
1706                    "column": 35
1707                  },
1708                  "end": {
1709                    "line": 26,
1710                    "column": 49
1711                  }
1712                }
1713              },
1714              "loc": {
1715                "start": {
1716                  "line": 26,
1717                  "column": 35
1718                },
1719                "end": {
1720                  "line": 26,
1721                  "column": 49
1722                }
1723              }
1724            },
1725            "loc": {
1726              "start": {
1727                "line": 26,
1728                "column": 35
1729              },
1730              "end": {
1731                "line": 26,
1732                "column": 49
1733              }
1734            }
1735          }
1736        ],
1737        "body": [
1738          {
1739            "type": "MethodDefinition",
1740            "key": {
1741              "type": "Identifier",
1742              "name": "foo",
1743              "decorators": [],
1744              "loc": {
1745                "start": {
1746                  "line": 27,
1747                  "column": 5
1748                },
1749                "end": {
1750                  "line": 27,
1751                  "column": 8
1752                }
1753              }
1754            },
1755            "kind": "method",
1756            "accessibility": "public",
1757            "static": false,
1758            "optional": false,
1759            "computed": false,
1760            "value": {
1761              "type": "FunctionExpression",
1762              "function": {
1763                "type": "ScriptFunction",
1764                "id": {
1765                  "type": "Identifier",
1766                  "name": "foo",
1767                  "decorators": [],
1768                  "loc": {
1769                    "start": {
1770                      "line": 27,
1771                      "column": 5
1772                    },
1773                    "end": {
1774                      "line": 27,
1775                      "column": 8
1776                    }
1777                  }
1778                },
1779                "generator": false,
1780                "async": false,
1781                "expression": false,
1782                "params": [
1783                  {
1784                    "type": "ETSParameterExpression",
1785                    "name": {
1786                      "type": "Identifier",
1787                      "name": "equivalent",
1788                      "typeAnnotation": {
1789                        "type": "ETSUnionType",
1790                        "types": [
1791                          {
1792                            "type": "ETSTypeReference",
1793                            "part": {
1794                              "type": "ETSTypeReferencePart",
1795                              "name": {
1796                                "type": "Identifier",
1797                                "name": "ValueTracker",
1798                                "decorators": [],
1799                                "loc": {
1800                                  "start": {
1801                                    "line": 27,
1802                                    "column": 29
1803                                  },
1804                                  "end": {
1805                                    "line": 27,
1806                                    "column": 41
1807                                  }
1808                                }
1809                              },
1810                              "typeParams": {
1811                                "type": "TSTypeParameterInstantiation",
1812                                "params": [
1813                                  {
1814                                    "type": "ETSTypeReference",
1815                                    "part": {
1816                                      "type": "ETSTypeReferencePart",
1817                                      "name": {
1818                                        "type": "Identifier",
1819                                        "name": "Value",
1820                                        "decorators": [],
1821                                        "loc": {
1822                                          "start": {
1823                                            "line": 27,
1824                                            "column": 42
1825                                          },
1826                                          "end": {
1827                                            "line": 27,
1828                                            "column": 47
1829                                          }
1830                                        }
1831                                      },
1832                                      "loc": {
1833                                        "start": {
1834                                          "line": 27,
1835                                          "column": 42
1836                                        },
1837                                        "end": {
1838                                          "line": 27,
1839                                          "column": 48
1840                                        }
1841                                      }
1842                                    },
1843                                    "loc": {
1844                                      "start": {
1845                                        "line": 27,
1846                                        "column": 42
1847                                      },
1848                                      "end": {
1849                                        "line": 27,
1850                                        "column": 48
1851                                      }
1852                                    }
1853                                  }
1854                                ],
1855                                "loc": {
1856                                  "start": {
1857                                    "line": 27,
1858                                    "column": 41
1859                                  },
1860                                  "end": {
1861                                    "line": 27,
1862                                    "column": 48
1863                                  }
1864                                }
1865                              },
1866                              "loc": {
1867                                "start": {
1868                                  "line": 27,
1869                                  "column": 29
1870                                },
1871                                "end": {
1872                                  "line": 27,
1873                                  "column": 49
1874                                }
1875                              }
1876                            },
1877                            "loc": {
1878                              "start": {
1879                                "line": 27,
1880                                "column": 29
1881                              },
1882                              "end": {
1883                                "line": 27,
1884                                "column": 49
1885                              }
1886                            }
1887                          },
1888                          {
1889                            "type": "ETSUndefinedType",
1890                            "loc": {
1891                              "start": {
1892                                "line": 27,
1893                                "column": 27
1894                              },
1895                              "end": {
1896                                "line": 27,
1897                                "column": 28
1898                              }
1899                            }
1900                          }
1901                        ],
1902                        "loc": {
1903                          "start": {
1904                            "line": 27,
1905                            "column": 29
1906                          },
1907                          "end": {
1908                            "line": 27,
1909                            "column": 49
1910                          }
1911                        }
1912                      },
1913                      "decorators": [],
1914                      "loc": {
1915                        "start": {
1916                          "line": 27,
1917                          "column": 17
1918                        },
1919                        "end": {
1920                          "line": 27,
1921                          "column": 49
1922                        }
1923                      }
1924                    },
1925                    "loc": {
1926                      "start": {
1927                        "line": 27,
1928                        "column": 17
1929                      },
1930                      "end": {
1931                        "line": 27,
1932                        "column": 49
1933                      }
1934                    }
1935                  },
1936                  {
1937                    "type": "ETSParameterExpression",
1938                    "name": {
1939                      "type": "Identifier",
1940                      "name": "tracker",
1941                      "typeAnnotation": {
1942                        "type": "ETSUnionType",
1943                        "types": [
1944                          {
1945                            "type": "ETSTypeReference",
1946                            "part": {
1947                              "type": "ETSTypeReferencePart",
1948                              "name": {
1949                                "type": "Identifier",
1950                                "name": "ValueTracker",
1951                                "decorators": [],
1952                                "loc": {
1953                                  "start": {
1954                                    "line": 27,
1955                                    "column": 59
1956                                  },
1957                                  "end": {
1958                                    "line": 27,
1959                                    "column": 71
1960                                  }
1961                                }
1962                              },
1963                              "typeParams": {
1964                                "type": "TSTypeParameterInstantiation",
1965                                "params": [
1966                                  {
1967                                    "type": "ETSTypeReference",
1968                                    "part": {
1969                                      "type": "ETSTypeReferencePart",
1970                                      "name": {
1971                                        "type": "Identifier",
1972                                        "name": "Value",
1973                                        "decorators": [],
1974                                        "loc": {
1975                                          "start": {
1976                                            "line": 27,
1977                                            "column": 72
1978                                          },
1979                                          "end": {
1980                                            "line": 27,
1981                                            "column": 77
1982                                          }
1983                                        }
1984                                      },
1985                                      "loc": {
1986                                        "start": {
1987                                          "line": 27,
1988                                          "column": 72
1989                                        },
1990                                        "end": {
1991                                          "line": 27,
1992                                          "column": 78
1993                                        }
1994                                      }
1995                                    },
1996                                    "loc": {
1997                                      "start": {
1998                                        "line": 27,
1999                                        "column": 72
2000                                      },
2001                                      "end": {
2002                                        "line": 27,
2003                                        "column": 78
2004                                      }
2005                                    }
2006                                  }
2007                                ],
2008                                "loc": {
2009                                  "start": {
2010                                    "line": 27,
2011                                    "column": 71
2012                                  },
2013                                  "end": {
2014                                    "line": 27,
2015                                    "column": 78
2016                                  }
2017                                }
2018                              },
2019                              "loc": {
2020                                "start": {
2021                                  "line": 27,
2022                                  "column": 59
2023                                },
2024                                "end": {
2025                                  "line": 27,
2026                                  "column": 79
2027                                }
2028                              }
2029                            },
2030                            "loc": {
2031                              "start": {
2032                                "line": 27,
2033                                "column": 59
2034                              },
2035                              "end": {
2036                                "line": 27,
2037                                "column": 79
2038                              }
2039                            }
2040                          },
2041                          {
2042                            "type": "ETSUndefinedType",
2043                            "loc": {
2044                              "start": {
2045                                "line": 27,
2046                                "column": 57
2047                              },
2048                              "end": {
2049                                "line": 27,
2050                                "column": 58
2051                              }
2052                            }
2053                          }
2054                        ],
2055                        "loc": {
2056                          "start": {
2057                            "line": 27,
2058                            "column": 59
2059                          },
2060                          "end": {
2061                            "line": 27,
2062                            "column": 79
2063                          }
2064                        }
2065                      },
2066                      "decorators": [],
2067                      "loc": {
2068                        "start": {
2069                          "line": 27,
2070                          "column": 50
2071                        },
2072                        "end": {
2073                          "line": 27,
2074                          "column": 79
2075                        }
2076                      }
2077                    },
2078                    "loc": {
2079                      "start": {
2080                        "line": 27,
2081                        "column": 50
2082                      },
2083                      "end": {
2084                        "line": 27,
2085                        "column": 79
2086                      }
2087                    }
2088                  }
2089                ],
2090                "returnType": {
2091                  "type": "ETSTypeReference",
2092                  "part": {
2093                    "type": "ETSTypeReferencePart",
2094                    "name": {
2095                      "type": "Identifier",
2096                      "name": "StateImpl",
2097                      "decorators": [],
2098                      "loc": {
2099                        "start": {
2100                          "line": 27,
2101                          "column": 81
2102                        },
2103                        "end": {
2104                          "line": 27,
2105                          "column": 90
2106                        }
2107                      }
2108                    },
2109                    "typeParams": {
2110                      "type": "TSTypeParameterInstantiation",
2111                      "params": [
2112                        {
2113                          "type": "ETSTypeReference",
2114                          "part": {
2115                            "type": "ETSTypeReferencePart",
2116                            "name": {
2117                              "type": "Identifier",
2118                              "name": "Value",
2119                              "decorators": [],
2120                              "loc": {
2121                                "start": {
2122                                  "line": 27,
2123                                  "column": 91
2124                                },
2125                                "end": {
2126                                  "line": 27,
2127                                  "column": 96
2128                                }
2129                              }
2130                            },
2131                            "loc": {
2132                              "start": {
2133                                "line": 27,
2134                                "column": 91
2135                              },
2136                              "end": {
2137                                "line": 27,
2138                                "column": 97
2139                              }
2140                            }
2141                          },
2142                          "loc": {
2143                            "start": {
2144                              "line": 27,
2145                              "column": 91
2146                            },
2147                            "end": {
2148                              "line": 27,
2149                              "column": 97
2150                            }
2151                          }
2152                        }
2153                      ],
2154                      "loc": {
2155                        "start": {
2156                          "line": 27,
2157                          "column": 90
2158                        },
2159                        "end": {
2160                          "line": 27,
2161                          "column": 97
2162                        }
2163                      }
2164                    },
2165                    "loc": {
2166                      "start": {
2167                        "line": 27,
2168                        "column": 81
2169                      },
2170                      "end": {
2171                        "line": 27,
2172                        "column": 99
2173                      }
2174                    }
2175                  },
2176                  "loc": {
2177                    "start": {
2178                      "line": 27,
2179                      "column": 81
2180                    },
2181                    "end": {
2182                      "line": 27,
2183                      "column": 99
2184                    }
2185                  }
2186                },
2187                "typeParameters": {
2188                  "type": "TSTypeParameterDeclaration",
2189                  "params": [
2190                    {
2191                      "type": "TSTypeParameter",
2192                      "name": {
2193                        "type": "Identifier",
2194                        "name": "Value",
2195                        "decorators": [],
2196                        "loc": {
2197                          "start": {
2198                            "line": 27,
2199                            "column": 9
2200                          },
2201                          "end": {
2202                            "line": 27,
2203                            "column": 14
2204                          }
2205                        }
2206                      },
2207                      "loc": {
2208                        "start": {
2209                          "line": 27,
2210                          "column": 9
2211                        },
2212                        "end": {
2213                          "line": 27,
2214                          "column": 15
2215                        }
2216                      }
2217                    }
2218                  ],
2219                  "loc": {
2220                    "start": {
2221                      "line": 27,
2222                      "column": 8
2223                    },
2224                    "end": {
2225                      "line": 27,
2226                      "column": 15
2227                    }
2228                  }
2229                },
2230                "body": {
2231                  "type": "BlockStatement",
2232                  "statements": [
2233                    {
2234                      "type": "ReturnStatement",
2235                      "argument": {
2236                        "type": "ETSNewClassInstanceExpression",
2237                        "typeReference": {
2238                          "type": "ETSTypeReference",
2239                          "part": {
2240                            "type": "ETSTypeReferencePart",
2241                            "name": {
2242                              "type": "Identifier",
2243                              "name": "StateImpl",
2244                              "decorators": [],
2245                              "loc": {
2246                                "start": {
2247                                  "line": 28,
2248                                  "column": 20
2249                                },
2250                                "end": {
2251                                  "line": 28,
2252                                  "column": 29
2253                                }
2254                              }
2255                            },
2256                            "typeParams": {
2257                              "type": "TSTypeParameterInstantiation",
2258                              "params": [
2259                                {
2260                                  "type": "ETSTypeReference",
2261                                  "part": {
2262                                    "type": "ETSTypeReferencePart",
2263                                    "name": {
2264                                      "type": "Identifier",
2265                                      "name": "Value",
2266                                      "decorators": [],
2267                                      "loc": {
2268                                        "start": {
2269                                          "line": 28,
2270                                          "column": 30
2271                                        },
2272                                        "end": {
2273                                          "line": 28,
2274                                          "column": 35
2275                                        }
2276                                      }
2277                                    },
2278                                    "loc": {
2279                                      "start": {
2280                                        "line": 28,
2281                                        "column": 30
2282                                      },
2283                                      "end": {
2284                                        "line": 28,
2285                                        "column": 36
2286                                      }
2287                                    }
2288                                  },
2289                                  "loc": {
2290                                    "start": {
2291                                      "line": 28,
2292                                      "column": 30
2293                                    },
2294                                    "end": {
2295                                      "line": 28,
2296                                      "column": 36
2297                                    }
2298                                  }
2299                                }
2300                              ],
2301                              "loc": {
2302                                "start": {
2303                                  "line": 28,
2304                                  "column": 29
2305                                },
2306                                "end": {
2307                                  "line": 28,
2308                                  "column": 36
2309                                }
2310                              }
2311                            },
2312                            "loc": {
2313                              "start": {
2314                                "line": 28,
2315                                "column": 20
2316                              },
2317                              "end": {
2318                                "line": 28,
2319                                "column": 37
2320                              }
2321                            }
2322                          },
2323                          "loc": {
2324                            "start": {
2325                              "line": 28,
2326                              "column": 20
2327                            },
2328                            "end": {
2329                              "line": 28,
2330                              "column": 37
2331                            }
2332                          }
2333                        },
2334                        "arguments": [],
2335                        "loc": {
2336                          "start": {
2337                            "line": 28,
2338                            "column": 16
2339                          },
2340                          "end": {
2341                            "line": 29,
2342                            "column": 6
2343                          }
2344                        }
2345                      },
2346                      "loc": {
2347                        "start": {
2348                          "line": 28,
2349                          "column": 9
2350                        },
2351                        "end": {
2352                          "line": 29,
2353                          "column": 6
2354                        }
2355                      }
2356                    }
2357                  ],
2358                  "loc": {
2359                    "start": {
2360                      "line": 27,
2361                      "column": 98
2362                    },
2363                    "end": {
2364                      "line": 29,
2365                      "column": 6
2366                    }
2367                  }
2368                },
2369                "loc": {
2370                  "start": {
2371                    "line": 27,
2372                    "column": 8
2373                  },
2374                  "end": {
2375                    "line": 29,
2376                    "column": 6
2377                  }
2378                }
2379              },
2380              "loc": {
2381                "start": {
2382                  "line": 27,
2383                  "column": 8
2384                },
2385                "end": {
2386                  "line": 29,
2387                  "column": 6
2388                }
2389              }
2390            },
2391            "overloads": [
2392              {
2393                "type": "MethodDefinition",
2394                "key": {
2395                  "type": "Identifier",
2396                  "name": "foo",
2397                  "decorators": [],
2398                  "loc": {
2399                    "start": {
2400                      "line": 27,
2401                      "column": 5
2402                    },
2403                    "end": {
2404                      "line": 27,
2405                      "column": 8
2406                    }
2407                  }
2408                },
2409                "kind": "method",
2410                "accessibility": "public",
2411                "static": false,
2412                "optional": false,
2413                "computed": false,
2414                "value": {
2415                  "type": "FunctionExpression",
2416                  "function": {
2417                    "type": "ScriptFunction",
2418                    "id": {
2419                      "type": "Identifier",
2420                      "name": "foo",
2421                      "decorators": [],
2422                      "loc": {
2423                        "start": {
2424                          "line": 27,
2425                          "column": 5
2426                        },
2427                        "end": {
2428                          "line": 27,
2429                          "column": 8
2430                        }
2431                      }
2432                    },
2433                    "generator": false,
2434                    "async": false,
2435                    "expression": false,
2436                    "params": [
2437                      {
2438                        "type": "ETSParameterExpression",
2439                        "name": {
2440                          "type": "Identifier",
2441                          "name": "equivalent",
2442                          "typeAnnotation": {
2443                            "type": "ETSUnionType",
2444                            "types": [
2445                              {
2446                                "type": "ETSTypeReference",
2447                                "part": {
2448                                  "type": "ETSTypeReferencePart",
2449                                  "name": {
2450                                    "type": "Identifier",
2451                                    "name": "ValueTracker",
2452                                    "decorators": [],
2453                                    "loc": {
2454                                      "start": {
2455                                        "line": 27,
2456                                        "column": 29
2457                                      },
2458                                      "end": {
2459                                        "line": 27,
2460                                        "column": 41
2461                                      }
2462                                    }
2463                                  },
2464                                  "typeParams": {
2465                                    "type": "TSTypeParameterInstantiation",
2466                                    "params": [
2467                                      {
2468                                        "type": "ETSTypeReference",
2469                                        "part": {
2470                                          "type": "ETSTypeReferencePart",
2471                                          "name": {
2472                                            "type": "Identifier",
2473                                            "name": "Value",
2474                                            "decorators": [],
2475                                            "loc": {
2476                                              "start": {
2477                                                "line": 27,
2478                                                "column": 42
2479                                              },
2480                                              "end": {
2481                                                "line": 27,
2482                                                "column": 47
2483                                              }
2484                                            }
2485                                          },
2486                                          "loc": {
2487                                            "start": {
2488                                              "line": 27,
2489                                              "column": 42
2490                                            },
2491                                            "end": {
2492                                              "line": 27,
2493                                              "column": 48
2494                                            }
2495                                          }
2496                                        },
2497                                        "loc": {
2498                                          "start": {
2499                                            "line": 27,
2500                                            "column": 42
2501                                          },
2502                                          "end": {
2503                                            "line": 27,
2504                                            "column": 48
2505                                          }
2506                                        }
2507                                      }
2508                                    ],
2509                                    "loc": {
2510                                      "start": {
2511                                        "line": 27,
2512                                        "column": 41
2513                                      },
2514                                      "end": {
2515                                        "line": 27,
2516                                        "column": 48
2517                                      }
2518                                    }
2519                                  },
2520                                  "loc": {
2521                                    "start": {
2522                                      "line": 27,
2523                                      "column": 29
2524                                    },
2525                                    "end": {
2526                                      "line": 27,
2527                                      "column": 49
2528                                    }
2529                                  }
2530                                },
2531                                "loc": {
2532                                  "start": {
2533                                    "line": 27,
2534                                    "column": 29
2535                                  },
2536                                  "end": {
2537                                    "line": 27,
2538                                    "column": 49
2539                                  }
2540                                }
2541                              },
2542                              {
2543                                "type": "ETSUndefinedType",
2544                                "loc": {
2545                                  "start": {
2546                                    "line": 1,
2547                                    "column": 1
2548                                  },
2549                                  "end": {
2550                                    "line": 1,
2551                                    "column": 1
2552                                  }
2553                                }
2554                              }
2555                            ],
2556                            "loc": {
2557                              "start": {
2558                                "line": 1,
2559                                "column": 1
2560                              },
2561                              "end": {
2562                                "line": 1,
2563                                "column": 1
2564                              }
2565                            }
2566                          },
2567                          "decorators": [],
2568                          "loc": {
2569                            "start": {
2570                              "line": 27,
2571                              "column": 17
2572                            },
2573                            "end": {
2574                              "line": 27,
2575                              "column": 49
2576                            }
2577                          }
2578                        },
2579                        "loc": {
2580                          "start": {
2581                            "line": 1,
2582                            "column": 1
2583                          },
2584                          "end": {
2585                            "line": 1,
2586                            "column": 1
2587                          }
2588                        }
2589                      }
2590                    ],
2591                    "returnType": {
2592                      "type": "ETSTypeReference",
2593                      "part": {
2594                        "type": "ETSTypeReferencePart",
2595                        "name": {
2596                          "type": "Identifier",
2597                          "name": "StateImpl",
2598                          "decorators": [],
2599                          "loc": {
2600                            "start": {
2601                              "line": 27,
2602                              "column": 81
2603                            },
2604                            "end": {
2605                              "line": 27,
2606                              "column": 90
2607                            }
2608                          }
2609                        },
2610                        "typeParams": {
2611                          "type": "TSTypeParameterInstantiation",
2612                          "params": [
2613                            {
2614                              "type": "ETSTypeReference",
2615                              "part": {
2616                                "type": "ETSTypeReferencePart",
2617                                "name": {
2618                                  "type": "Identifier",
2619                                  "name": "Value",
2620                                  "decorators": [],
2621                                  "loc": {
2622                                    "start": {
2623                                      "line": 27,
2624                                      "column": 91
2625                                    },
2626                                    "end": {
2627                                      "line": 27,
2628                                      "column": 96
2629                                    }
2630                                  }
2631                                },
2632                                "loc": {
2633                                  "start": {
2634                                    "line": 27,
2635                                    "column": 91
2636                                  },
2637                                  "end": {
2638                                    "line": 27,
2639                                    "column": 97
2640                                  }
2641                                }
2642                              },
2643                              "loc": {
2644                                "start": {
2645                                  "line": 27,
2646                                  "column": 91
2647                                },
2648                                "end": {
2649                                  "line": 27,
2650                                  "column": 97
2651                                }
2652                              }
2653                            }
2654                          ],
2655                          "loc": {
2656                            "start": {
2657                              "line": 27,
2658                              "column": 90
2659                            },
2660                            "end": {
2661                              "line": 27,
2662                              "column": 97
2663                            }
2664                          }
2665                        },
2666                        "loc": {
2667                          "start": {
2668                            "line": 27,
2669                            "column": 81
2670                          },
2671                          "end": {
2672                            "line": 27,
2673                            "column": 99
2674                          }
2675                        }
2676                      },
2677                      "loc": {
2678                        "start": {
2679                          "line": 27,
2680                          "column": 81
2681                        },
2682                        "end": {
2683                          "line": 27,
2684                          "column": 99
2685                        }
2686                      }
2687                    },
2688                    "typeParameters": {
2689                      "type": "TSTypeParameterDeclaration",
2690                      "params": [
2691                        {
2692                          "type": "TSTypeParameter",
2693                          "name": {
2694                            "type": "Identifier",
2695                            "name": "Value",
2696                            "decorators": [],
2697                            "loc": {
2698                              "start": {
2699                                "line": 27,
2700                                "column": 9
2701                              },
2702                              "end": {
2703                                "line": 27,
2704                                "column": 14
2705                              }
2706                            }
2707                          },
2708                          "loc": {
2709                            "start": {
2710                              "line": 1,
2711                              "column": 1
2712                            },
2713                            "end": {
2714                              "line": 1,
2715                              "column": 1
2716                            }
2717                          }
2718                        }
2719                      ],
2720                      "loc": {
2721                        "start": {
2722                          "line": 1,
2723                          "column": 1
2724                        },
2725                        "end": {
2726                          "line": 1,
2727                          "column": 1
2728                        }
2729                      }
2730                    },
2731                    "body": {
2732                      "type": "BlockStatement",
2733                      "statements": [
2734                        {
2735                          "type": "ReturnStatement",
2736                          "argument": {
2737                            "type": "CallExpression",
2738                            "callee": {
2739                              "type": "MemberExpression",
2740                              "object": {
2741                                "type": "ThisExpression",
2742                                "loc": {
2743                                  "start": {
2744                                    "line": 1,
2745                                    "column": 1
2746                                  },
2747                                  "end": {
2748                                    "line": 1,
2749                                    "column": 1
2750                                  }
2751                                }
2752                              },
2753                              "property": {
2754                                "type": "Identifier",
2755                                "name": "foo",
2756                                "decorators": [],
2757                                "loc": {
2758                                  "start": {
2759                                    "line": 1,
2760                                    "column": 1
2761                                  },
2762                                  "end": {
2763                                    "line": 1,
2764                                    "column": 1
2765                                  }
2766                                }
2767                              },
2768                              "computed": false,
2769                              "optional": false,
2770                              "loc": {
2771                                "start": {
2772                                  "line": 1,
2773                                  "column": 1
2774                                },
2775                                "end": {
2776                                  "line": 1,
2777                                  "column": 1
2778                                }
2779                              }
2780                            },
2781                            "arguments": [
2782                              {
2783                                "type": "Identifier",
2784                                "name": "equivalent",
2785                                "typeAnnotation": {
2786                                  "type": "ETSUnionType",
2787                                  "types": [
2788                                    {
2789                                      "type": "ETSTypeReference",
2790                                      "part": {
2791                                        "type": "ETSTypeReferencePart",
2792                                        "name": {
2793                                          "type": "Identifier",
2794                                          "name": "ValueTracker",
2795                                          "decorators": [],
2796                                          "loc": {
2797                                            "start": {
2798                                              "line": 27,
2799                                              "column": 29
2800                                            },
2801                                            "end": {
2802                                              "line": 27,
2803                                              "column": 41
2804                                            }
2805                                          }
2806                                        },
2807                                        "typeParams": {
2808                                          "type": "TSTypeParameterInstantiation",
2809                                          "params": [
2810                                            {
2811                                              "type": "ETSTypeReference",
2812                                              "part": {
2813                                                "type": "ETSTypeReferencePart",
2814                                                "name": {
2815                                                  "type": "Identifier",
2816                                                  "name": "Value",
2817                                                  "decorators": [],
2818                                                  "loc": {
2819                                                    "start": {
2820                                                      "line": 27,
2821                                                      "column": 42
2822                                                    },
2823                                                    "end": {
2824                                                      "line": 27,
2825                                                      "column": 47
2826                                                    }
2827                                                  }
2828                                                },
2829                                                "loc": {
2830                                                  "start": {
2831                                                    "line": 27,
2832                                                    "column": 42
2833                                                  },
2834                                                  "end": {
2835                                                    "line": 27,
2836                                                    "column": 48
2837                                                  }
2838                                                }
2839                                              },
2840                                              "loc": {
2841                                                "start": {
2842                                                  "line": 27,
2843                                                  "column": 42
2844                                                },
2845                                                "end": {
2846                                                  "line": 27,
2847                                                  "column": 48
2848                                                }
2849                                              }
2850                                            }
2851                                          ],
2852                                          "loc": {
2853                                            "start": {
2854                                              "line": 27,
2855                                              "column": 41
2856                                            },
2857                                            "end": {
2858                                              "line": 27,
2859                                              "column": 48
2860                                            }
2861                                          }
2862                                        },
2863                                        "loc": {
2864                                          "start": {
2865                                            "line": 27,
2866                                            "column": 29
2867                                          },
2868                                          "end": {
2869                                            "line": 27,
2870                                            "column": 49
2871                                          }
2872                                        }
2873                                      },
2874                                      "loc": {
2875                                        "start": {
2876                                          "line": 27,
2877                                          "column": 29
2878                                        },
2879                                        "end": {
2880                                          "line": 27,
2881                                          "column": 49
2882                                        }
2883                                      }
2884                                    },
2885                                    {
2886                                      "type": "ETSUndefinedType",
2887                                      "loc": {
2888                                        "start": {
2889                                          "line": 1,
2890                                          "column": 1
2891                                        },
2892                                        "end": {
2893                                          "line": 1,
2894                                          "column": 1
2895                                        }
2896                                      }
2897                                    }
2898                                  ],
2899                                  "loc": {
2900                                    "start": {
2901                                      "line": 1,
2902                                      "column": 1
2903                                    },
2904                                    "end": {
2905                                      "line": 1,
2906                                      "column": 1
2907                                    }
2908                                  }
2909                                },
2910                                "decorators": [],
2911                                "loc": {
2912                                  "start": {
2913                                    "line": 27,
2914                                    "column": 17
2915                                  },
2916                                  "end": {
2917                                    "line": 27,
2918                                    "column": 49
2919                                  }
2920                                }
2921                              },
2922                              {
2923                                "type": "UndefinedLiteral",
2924                                "value": undefined,
2925                                "loc": {
2926                                  "start": {
2927                                    "line": 1,
2928                                    "column": 1
2929                                  },
2930                                  "end": {
2931                                    "line": 1,
2932                                    "column": 1
2933                                  }
2934                                }
2935                              }
2936                            ],
2937                            "optional": false,
2938                            "typeParameters": {
2939                              "type": "TSTypeParameterInstantiation",
2940                              "params": [
2941                                {
2942                                  "type": "ETSTypeReference",
2943                                  "part": {
2944                                    "type": "ETSTypeReferencePart",
2945                                    "name": {
2946                                      "type": "Identifier",
2947                                      "name": "Value",
2948                                      "decorators": [],
2949                                      "loc": {
2950                                        "start": {
2951                                          "line": 1,
2952                                          "column": 1
2953                                        },
2954                                        "end": {
2955                                          "line": 1,
2956                                          "column": 1
2957                                        }
2958                                      }
2959                                    },
2960                                    "loc": {
2961                                      "start": {
2962                                        "line": 1,
2963                                        "column": 1
2964                                      },
2965                                      "end": {
2966                                        "line": 1,
2967                                        "column": 1
2968                                      }
2969                                    }
2970                                  },
2971                                  "loc": {
2972                                    "start": {
2973                                      "line": 1,
2974                                      "column": 1
2975                                    },
2976                                    "end": {
2977                                      "line": 1,
2978                                      "column": 1
2979                                    }
2980                                  }
2981                                }
2982                              ],
2983                              "loc": {
2984                                "start": {
2985                                  "line": 1,
2986                                  "column": 1
2987                                },
2988                                "end": {
2989                                  "line": 1,
2990                                  "column": 1
2991                                }
2992                              }
2993                            },
2994                            "loc": {
2995                              "start": {
2996                                "line": 27,
2997                                "column": 5
2998                              },
2999                              "end": {
3000                                "line": 29,
3001                                "column": 6
3002                              }
3003                            }
3004                          },
3005                          "loc": {
3006                            "start": {
3007                              "line": 1,
3008                              "column": 1
3009                            },
3010                            "end": {
3011                              "line": 1,
3012                              "column": 1
3013                            }
3014                          }
3015                        }
3016                      ],
3017                      "loc": {
3018                        "start": {
3019                          "line": 1,
3020                          "column": 1
3021                        },
3022                        "end": {
3023                          "line": 1,
3024                          "column": 1
3025                        }
3026                      }
3027                    },
3028                    "loc": {
3029                      "start": {
3030                        "line": 915,
3031                        "column": 1
3032                      },
3033                      "end": {
3034                        "line": 915,
3035                        "column": 1
3036                      }
3037                    }
3038                  },
3039                  "loc": {
3040                    "start": {
3041                      "line": 1,
3042                      "column": 1
3043                    },
3044                    "end": {
3045                      "line": 1,
3046                      "column": 1
3047                    }
3048                  }
3049                },
3050                "overloads": [],
3051                "decorators": [],
3052                "loc": {
3053                  "start": {
3054                    "line": 27,
3055                    "column": 5
3056                  },
3057                  "end": {
3058                    "line": 1,
3059                    "column": 1
3060                  }
3061                }
3062              },
3063              {
3064                "type": "MethodDefinition",
3065                "key": {
3066                  "type": "Identifier",
3067                  "name": "foo",
3068                  "decorators": [],
3069                  "loc": {
3070                    "start": {
3071                      "line": 27,
3072                      "column": 5
3073                    },
3074                    "end": {
3075                      "line": 27,
3076                      "column": 8
3077                    }
3078                  }
3079                },
3080                "kind": "method",
3081                "accessibility": "public",
3082                "static": false,
3083                "optional": false,
3084                "computed": false,
3085                "value": {
3086                  "type": "FunctionExpression",
3087                  "function": {
3088                    "type": "ScriptFunction",
3089                    "id": {
3090                      "type": "Identifier",
3091                      "name": "foo",
3092                      "decorators": [],
3093                      "loc": {
3094                        "start": {
3095                          "line": 27,
3096                          "column": 5
3097                        },
3098                        "end": {
3099                          "line": 27,
3100                          "column": 8
3101                        }
3102                      }
3103                    },
3104                    "generator": false,
3105                    "async": false,
3106                    "expression": false,
3107                    "params": [],
3108                    "returnType": {
3109                      "type": "ETSTypeReference",
3110                      "part": {
3111                        "type": "ETSTypeReferencePart",
3112                        "name": {
3113                          "type": "Identifier",
3114                          "name": "StateImpl",
3115                          "decorators": [],
3116                          "loc": {
3117                            "start": {
3118                              "line": 27,
3119                              "column": 81
3120                            },
3121                            "end": {
3122                              "line": 27,
3123                              "column": 90
3124                            }
3125                          }
3126                        },
3127                        "typeParams": {
3128                          "type": "TSTypeParameterInstantiation",
3129                          "params": [
3130                            {
3131                              "type": "ETSTypeReference",
3132                              "part": {
3133                                "type": "ETSTypeReferencePart",
3134                                "name": {
3135                                  "type": "Identifier",
3136                                  "name": "Value",
3137                                  "decorators": [],
3138                                  "loc": {
3139                                    "start": {
3140                                      "line": 27,
3141                                      "column": 91
3142                                    },
3143                                    "end": {
3144                                      "line": 27,
3145                                      "column": 96
3146                                    }
3147                                  }
3148                                },
3149                                "loc": {
3150                                  "start": {
3151                                    "line": 27,
3152                                    "column": 91
3153                                  },
3154                                  "end": {
3155                                    "line": 27,
3156                                    "column": 97
3157                                  }
3158                                }
3159                              },
3160                              "loc": {
3161                                "start": {
3162                                  "line": 27,
3163                                  "column": 91
3164                                },
3165                                "end": {
3166                                  "line": 27,
3167                                  "column": 97
3168                                }
3169                              }
3170                            }
3171                          ],
3172                          "loc": {
3173                            "start": {
3174                              "line": 27,
3175                              "column": 90
3176                            },
3177                            "end": {
3178                              "line": 27,
3179                              "column": 97
3180                            }
3181                          }
3182                        },
3183                        "loc": {
3184                          "start": {
3185                            "line": 27,
3186                            "column": 81
3187                          },
3188                          "end": {
3189                            "line": 27,
3190                            "column": 99
3191                          }
3192                        }
3193                      },
3194                      "loc": {
3195                        "start": {
3196                          "line": 27,
3197                          "column": 81
3198                        },
3199                        "end": {
3200                          "line": 27,
3201                          "column": 99
3202                        }
3203                      }
3204                    },
3205                    "typeParameters": {
3206                      "type": "TSTypeParameterDeclaration",
3207                      "params": [
3208                        {
3209                          "type": "TSTypeParameter",
3210                          "name": {
3211                            "type": "Identifier",
3212                            "name": "Value",
3213                            "decorators": [],
3214                            "loc": {
3215                              "start": {
3216                                "line": 27,
3217                                "column": 9
3218                              },
3219                              "end": {
3220                                "line": 27,
3221                                "column": 14
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                      ],
3237                      "loc": {
3238                        "start": {
3239                          "line": 1,
3240                          "column": 1
3241                        },
3242                        "end": {
3243                          "line": 1,
3244                          "column": 1
3245                        }
3246                      }
3247                    },
3248                    "body": {
3249                      "type": "BlockStatement",
3250                      "statements": [
3251                        {
3252                          "type": "ReturnStatement",
3253                          "argument": {
3254                            "type": "CallExpression",
3255                            "callee": {
3256                              "type": "MemberExpression",
3257                              "object": {
3258                                "type": "ThisExpression",
3259                                "loc": {
3260                                  "start": {
3261                                    "line": 1,
3262                                    "column": 1
3263                                  },
3264                                  "end": {
3265                                    "line": 1,
3266                                    "column": 1
3267                                  }
3268                                }
3269                              },
3270                              "property": {
3271                                "type": "Identifier",
3272                                "name": "foo",
3273                                "decorators": [],
3274                                "loc": {
3275                                  "start": {
3276                                    "line": 1,
3277                                    "column": 1
3278                                  },
3279                                  "end": {
3280                                    "line": 1,
3281                                    "column": 1
3282                                  }
3283                                }
3284                              },
3285                              "computed": false,
3286                              "optional": false,
3287                              "loc": {
3288                                "start": {
3289                                  "line": 1,
3290                                  "column": 1
3291                                },
3292                                "end": {
3293                                  "line": 1,
3294                                  "column": 1
3295                                }
3296                              }
3297                            },
3298                            "arguments": [
3299                              {
3300                                "type": "UndefinedLiteral",
3301                                "value": undefined,
3302                                "loc": {
3303                                  "start": {
3304                                    "line": 1,
3305                                    "column": 1
3306                                  },
3307                                  "end": {
3308                                    "line": 1,
3309                                    "column": 1
3310                                  }
3311                                }
3312                              },
3313                              {
3314                                "type": "UndefinedLiteral",
3315                                "value": undefined,
3316                                "loc": {
3317                                  "start": {
3318                                    "line": 1,
3319                                    "column": 1
3320                                  },
3321                                  "end": {
3322                                    "line": 1,
3323                                    "column": 1
3324                                  }
3325                                }
3326                              }
3327                            ],
3328                            "optional": false,
3329                            "typeParameters": {
3330                              "type": "TSTypeParameterInstantiation",
3331                              "params": [
3332                                {
3333                                  "type": "ETSTypeReference",
3334                                  "part": {
3335                                    "type": "ETSTypeReferencePart",
3336                                    "name": {
3337                                      "type": "Identifier",
3338                                      "name": "Value",
3339                                      "decorators": [],
3340                                      "loc": {
3341                                        "start": {
3342                                          "line": 1,
3343                                          "column": 1
3344                                        },
3345                                        "end": {
3346                                          "line": 1,
3347                                          "column": 1
3348                                        }
3349                                      }
3350                                    },
3351                                    "loc": {
3352                                      "start": {
3353                                        "line": 1,
3354                                        "column": 1
3355                                      },
3356                                      "end": {
3357                                        "line": 1,
3358                                        "column": 1
3359                                      }
3360                                    }
3361                                  },
3362                                  "loc": {
3363                                    "start": {
3364                                      "line": 1,
3365                                      "column": 1
3366                                    },
3367                                    "end": {
3368                                      "line": 1,
3369                                      "column": 1
3370                                    }
3371                                  }
3372                                }
3373                              ],
3374                              "loc": {
3375                                "start": {
3376                                  "line": 1,
3377                                  "column": 1
3378                                },
3379                                "end": {
3380                                  "line": 1,
3381                                  "column": 1
3382                                }
3383                              }
3384                            },
3385                            "loc": {
3386                              "start": {
3387                                "line": 27,
3388                                "column": 5
3389                              },
3390                              "end": {
3391                                "line": 29,
3392                                "column": 6
3393                              }
3394                            }
3395                          },
3396                          "loc": {
3397                            "start": {
3398                              "line": 1,
3399                              "column": 1
3400                            },
3401                            "end": {
3402                              "line": 1,
3403                              "column": 1
3404                            }
3405                          }
3406                        }
3407                      ],
3408                      "loc": {
3409                        "start": {
3410                          "line": 1,
3411                          "column": 1
3412                        },
3413                        "end": {
3414                          "line": 1,
3415                          "column": 1
3416                        }
3417                      }
3418                    },
3419                    "loc": {
3420                      "start": {
3421                        "line": 915,
3422                        "column": 1
3423                      },
3424                      "end": {
3425                        "line": 915,
3426                        "column": 1
3427                      }
3428                    }
3429                  },
3430                  "loc": {
3431                    "start": {
3432                      "line": 1,
3433                      "column": 1
3434                    },
3435                    "end": {
3436                      "line": 1,
3437                      "column": 1
3438                    }
3439                  }
3440                },
3441                "overloads": [],
3442                "decorators": [],
3443                "loc": {
3444                  "start": {
3445                    "line": 27,
3446                    "column": 5
3447                  },
3448                  "end": {
3449                    "line": 1,
3450                    "column": 1
3451                  }
3452                }
3453              }
3454            ],
3455            "decorators": [],
3456            "loc": {
3457              "start": {
3458                "line": 27,
3459                "column": 5
3460              },
3461              "end": {
3462                "line": 29,
3463                "column": 6
3464              }
3465            }
3466          },
3467          {
3468            "type": "MethodDefinition",
3469            "key": {
3470              "type": "Identifier",
3471              "name": "constructor",
3472              "decorators": [],
3473              "loc": {
3474                "start": {
3475                  "line": 1,
3476                  "column": 1
3477                },
3478                "end": {
3479                  "line": 1,
3480                  "column": 1
3481                }
3482              }
3483            },
3484            "kind": "constructor",
3485            "static": false,
3486            "optional": false,
3487            "computed": false,
3488            "value": {
3489              "type": "FunctionExpression",
3490              "function": {
3491                "type": "ScriptFunction",
3492                "id": {
3493                  "type": "Identifier",
3494                  "name": "constructor",
3495                  "decorators": [],
3496                  "loc": {
3497                    "start": {
3498                      "line": 1,
3499                      "column": 1
3500                    },
3501                    "end": {
3502                      "line": 1,
3503                      "column": 1
3504                    }
3505                  }
3506                },
3507                "generator": false,
3508                "async": false,
3509                "expression": false,
3510                "params": [],
3511                "body": {
3512                  "type": "BlockStatement",
3513                  "statements": [],
3514                  "loc": {
3515                    "start": {
3516                      "line": 1,
3517                      "column": 1
3518                    },
3519                    "end": {
3520                      "line": 1,
3521                      "column": 1
3522                    }
3523                  }
3524                },
3525                "loc": {
3526                  "start": {
3527                    "line": 1,
3528                    "column": 1
3529                  },
3530                  "end": {
3531                    "line": 1,
3532                    "column": 1
3533                  }
3534                }
3535              },
3536              "loc": {
3537                "start": {
3538                  "line": 1,
3539                  "column": 1
3540                },
3541                "end": {
3542                  "line": 1,
3543                  "column": 1
3544                }
3545              }
3546            },
3547            "overloads": [],
3548            "decorators": [],
3549            "loc": {
3550              "start": {
3551                "line": 30,
3552                "column": 2
3553              },
3554              "end": {
3555                "line": 30,
3556                "column": 2
3557              }
3558            }
3559          }
3560        ],
3561        "loc": {
3562          "start": {
3563            "line": 26,
3564            "column": 48
3565          },
3566          "end": {
3567            "line": 30,
3568            "column": 2
3569          }
3570        }
3571      },
3572      "loc": {
3573        "start": {
3574          "line": 26,
3575          "column": 1
3576        },
3577        "end": {
3578          "line": 30,
3579          "column": 2
3580        }
3581      }
3582    },
3583    {
3584      "type": "ClassDeclaration",
3585      "definition": {
3586        "id": {
3587          "type": "Identifier",
3588          "name": "ETSGLOBAL",
3589          "decorators": [],
3590          "loc": {
3591            "start": {
3592              "line": 1,
3593              "column": 1
3594            },
3595            "end": {
3596              "line": 1,
3597              "column": 1
3598            }
3599          }
3600        },
3601        "superClass": null,
3602        "implements": [],
3603        "body": [
3604          {
3605            "type": "MethodDefinition",
3606            "key": {
3607              "type": "Identifier",
3608              "name": "_$init$_",
3609              "decorators": [],
3610              "loc": {
3611                "start": {
3612                  "line": 1,
3613                  "column": 1
3614                },
3615                "end": {
3616                  "line": 1,
3617                  "column": 1
3618                }
3619              }
3620            },
3621            "kind": "method",
3622            "accessibility": "public",
3623            "static": true,
3624            "optional": false,
3625            "computed": false,
3626            "value": {
3627              "type": "FunctionExpression",
3628              "function": {
3629                "type": "ScriptFunction",
3630                "id": {
3631                  "type": "Identifier",
3632                  "name": "_$init$_",
3633                  "decorators": [],
3634                  "loc": {
3635                    "start": {
3636                      "line": 1,
3637                      "column": 1
3638                    },
3639                    "end": {
3640                      "line": 1,
3641                      "column": 1
3642                    }
3643                  }
3644                },
3645                "generator": false,
3646                "async": false,
3647                "expression": false,
3648                "params": [],
3649                "body": {
3650                  "type": "BlockStatement",
3651                  "statements": [],
3652                  "loc": {
3653                    "start": {
3654                      "line": 1,
3655                      "column": 1
3656                    },
3657                    "end": {
3658                      "line": 1,
3659                      "column": 1
3660                    }
3661                  }
3662                },
3663                "loc": {
3664                  "start": {
3665                    "line": 1,
3666                    "column": 1
3667                  },
3668                  "end": {
3669                    "line": 1,
3670                    "column": 1
3671                  }
3672                }
3673              },
3674              "loc": {
3675                "start": {
3676                  "line": 1,
3677                  "column": 1
3678                },
3679                "end": {
3680                  "line": 1,
3681                  "column": 1
3682                }
3683              }
3684            },
3685            "overloads": [],
3686            "decorators": [],
3687            "loc": {
3688              "start": {
3689                "line": 1,
3690                "column": 1
3691              },
3692              "end": {
3693                "line": 1,
3694                "column": 1
3695              }
3696            }
3697          }
3698        ],
3699        "loc": {
3700          "start": {
3701            "line": 1,
3702            "column": 1
3703          },
3704          "end": {
3705            "line": 1,
3706            "column": 1
3707          }
3708        }
3709      },
3710      "loc": {
3711        "start": {
3712          "line": 1,
3713          "column": 1
3714        },
3715        "end": {
3716          "line": 1,
3717          "column": 1
3718        }
3719      }
3720    }
3721  ],
3722  "loc": {
3723    "start": {
3724      "line": 1,
3725      "column": 1
3726    },
3727    "end": {
3728      "line": 31,
3729      "column": 1
3730    }
3731  }
3732}
3733