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