1{
2  "type": "Program",
3  "statements": [
4    {
5      "type": "ClassDeclaration",
6      "definition": {
7        "id": {
8          "type": "Identifier",
9          "name": "A",
10          "decorators": [],
11          "loc": {
12            "start": {
13              "line": 16,
14              "column": 7
15            },
16            "end": {
17              "line": 16,
18              "column": 8
19            }
20          }
21        },
22        "typeParameters": {
23          "type": "TSTypeParameterDeclaration",
24          "params": [
25            {
26              "type": "TSTypeParameter",
27              "name": {
28                "type": "Identifier",
29                "name": "T",
30                "decorators": [],
31                "loc": {
32                  "start": {
33                    "line": 16,
34                    "column": 9
35                  },
36                  "end": {
37                    "line": 16,
38                    "column": 10
39                  }
40                }
41              },
42              "constraint": {
43                "type": "ETSTypeReference",
44                "part": {
45                  "type": "ETSTypeReferencePart",
46                  "name": {
47                    "type": "Identifier",
48                    "name": "Object",
49                    "decorators": [],
50                    "loc": {
51                      "start": {
52                        "line": 16,
53                        "column": 19
54                      },
55                      "end": {
56                        "line": 16,
57                        "column": 25
58                      }
59                    }
60                  },
61                  "loc": {
62                    "start": {
63                      "line": 16,
64                      "column": 19
65                    },
66                    "end": {
67                      "line": 16,
68                      "column": 26
69                    }
70                  }
71                },
72                "loc": {
73                  "start": {
74                    "line": 16,
75                    "column": 19
76                  },
77                  "end": {
78                    "line": 16,
79                    "column": 26
80                  }
81                }
82              },
83              "loc": {
84                "start": {
85                  "line": 16,
86                  "column": 9
87                },
88                "end": {
89                  "line": 16,
90                  "column": 26
91                }
92              }
93            }
94          ],
95          "loc": {
96            "start": {
97              "line": 16,
98              "column": 8
99            },
100            "end": {
101              "line": 16,
102              "column": 26
103            }
104          }
105        },
106        "superClass": null,
107        "implements": [],
108        "body": [
109          {
110            "type": "MethodDefinition",
111            "key": {
112              "type": "Identifier",
113              "name": "foo",
114              "decorators": [],
115              "loc": {
116                "start": {
117                  "line": 17,
118                  "column": 12
119                },
120                "end": {
121                  "line": 17,
122                  "column": 15
123                }
124              }
125            },
126            "kind": "method",
127            "accessibility": "public",
128            "static": false,
129            "optional": false,
130            "computed": false,
131            "value": {
132              "type": "FunctionExpression",
133              "function": {
134                "type": "ScriptFunction",
135                "id": {
136                  "type": "Identifier",
137                  "name": "foo",
138                  "decorators": [],
139                  "loc": {
140                    "start": {
141                      "line": 17,
142                      "column": 12
143                    },
144                    "end": {
145                      "line": 17,
146                      "column": 15
147                    }
148                  }
149                },
150                "generator": false,
151                "async": false,
152                "expression": false,
153                "params": [
154                  {
155                    "type": "ETSParameterExpression",
156                    "name": {
157                      "type": "Identifier",
158                      "name": "e",
159                      "typeAnnotation": {
160                        "type": "ETSTypeReference",
161                        "part": {
162                          "type": "ETSTypeReferencePart",
163                          "name": {
164                            "type": "Identifier",
165                            "name": "T",
166                            "decorators": [],
167                            "loc": {
168                              "start": {
169                                "line": 17,
170                                "column": 19
171                              },
172                              "end": {
173                                "line": 17,
174                                "column": 20
175                              }
176                            }
177                          },
178                          "loc": {
179                            "start": {
180                              "line": 17,
181                              "column": 19
182                            },
183                            "end": {
184                              "line": 17,
185                              "column": 21
186                            }
187                          }
188                        },
189                        "loc": {
190                          "start": {
191                            "line": 17,
192                            "column": 19
193                          },
194                          "end": {
195                            "line": 17,
196                            "column": 21
197                          }
198                        }
199                      },
200                      "decorators": [],
201                      "loc": {
202                        "start": {
203                          "line": 17,
204                          "column": 16
205                        },
206                        "end": {
207                          "line": 17,
208                          "column": 21
209                        }
210                      }
211                    },
212                    "loc": {
213                      "start": {
214                        "line": 17,
215                        "column": 16
216                      },
217                      "end": {
218                        "line": 17,
219                        "column": 21
220                      }
221                    }
222                  }
223                ],
224                "returnType": {
225                  "type": "ETSPrimitiveType",
226                  "loc": {
227                    "start": {
228                      "line": 17,
229                      "column": 23
230                    },
231                    "end": {
232                      "line": 17,
233                      "column": 27
234                    }
235                  }
236                },
237                "body": {
238                  "type": "BlockStatement",
239                  "statements": [
240                    {
241                      "type": "ExpressionStatement",
242                      "expression": {
243                        "type": "BinaryExpression",
244                        "operator": "==",
245                        "left": {
246                          "type": "MemberExpression",
247                          "object": {
248                            "type": "MemberExpression",
249                            "object": {
250                              "type": "ThisExpression",
251                              "loc": {
252                                "start": {
253                                  "line": 18,
254                                  "column": 9
255                                },
256                                "end": {
257                                  "line": 18,
258                                  "column": 13
259                                }
260                              }
261                            },
262                            "property": {
263                              "type": "Identifier",
264                              "name": "data",
265                              "decorators": [],
266                              "loc": {
267                                "start": {
268                                  "line": 18,
269                                  "column": 14
270                                },
271                                "end": {
272                                  "line": 18,
273                                  "column": 18
274                                }
275                              }
276                            },
277                            "computed": false,
278                            "optional": false,
279                            "loc": {
280                              "start": {
281                                "line": 18,
282                                "column": 9
283                              },
284                              "end": {
285                                "line": 18,
286                                "column": 18
287                              }
288                            }
289                          },
290                          "property": {
291                            "type": "NumberLiteral",
292                            "value": 2,
293                            "loc": {
294                              "start": {
295                                "line": 18,
296                                "column": 19
297                              },
298                              "end": {
299                                "line": 18,
300                                "column": 20
301                              }
302                            }
303                          },
304                          "computed": true,
305                          "optional": false,
306                          "loc": {
307                            "start": {
308                              "line": 18,
309                              "column": 9
310                            },
311                            "end": {
312                              "line": 18,
313                              "column": 21
314                            }
315                          }
316                        },
317                        "right": {
318                          "type": "Identifier",
319                          "name": "e",
320                          "decorators": [],
321                          "loc": {
322                            "start": {
323                              "line": 18,
324                              "column": 25
325                            },
326                            "end": {
327                              "line": 18,
328                              "column": 26
329                            }
330                          }
331                        },
332                        "loc": {
333                          "start": {
334                            "line": 18,
335                            "column": 9
336                          },
337                          "end": {
338                            "line": 18,
339                            "column": 26
340                          }
341                        }
342                      },
343                      "loc": {
344                        "start": {
345                          "line": 18,
346                          "column": 9
347                        },
348                        "end": {
349                          "line": 18,
350                          "column": 27
351                        }
352                      }
353                    }
354                  ],
355                  "loc": {
356                    "start": {
357                      "line": 17,
358                      "column": 28
359                    },
360                    "end": {
361                      "line": 19,
362                      "column": 6
363                    }
364                  }
365                },
366                "loc": {
367                  "start": {
368                    "line": 17,
369                    "column": 15
370                  },
371                  "end": {
372                    "line": 19,
373                    "column": 6
374                  }
375                }
376              },
377              "loc": {
378                "start": {
379                  "line": 17,
380                  "column": 15
381                },
382                "end": {
383                  "line": 19,
384                  "column": 6
385                }
386              }
387            },
388            "overloads": [],
389            "decorators": [],
390            "loc": {
391              "start": {
392                "line": 17,
393                "column": 5
394              },
395              "end": {
396                "line": 19,
397                "column": 6
398              }
399            }
400          },
401          {
402            "type": "ClassProperty",
403            "key": {
404              "type": "Identifier",
405              "name": "data",
406              "decorators": [],
407              "loc": {
408                "start": {
409                  "line": 21,
410                  "column": 13
411                },
412                "end": {
413                  "line": 21,
414                  "column": 17
415                }
416              }
417            },
418            "value": {
419              "type": "ArrayExpression",
420              "elements": [],
421              "loc": {
422                "start": {
423                  "line": 21,
424                  "column": 25
425                },
426                "end": {
427                  "line": 21,
428                  "column": 27
429                }
430              }
431            },
432            "accessibility": "private",
433            "static": false,
434            "readonly": false,
435            "declare": false,
436            "optional": false,
437            "computed": false,
438            "typeAnnotation": {
439              "type": "TSArrayType",
440              "elementType": {
441                "type": "ETSTypeReference",
442                "part": {
443                  "type": "ETSTypeReferencePart",
444                  "name": {
445                    "type": "Identifier",
446                    "name": "T",
447                    "decorators": [],
448                    "loc": {
449                      "start": {
450                        "line": 21,
451                        "column": 19
452                      },
453                      "end": {
454                        "line": 21,
455                        "column": 20
456                      }
457                    }
458                  },
459                  "loc": {
460                    "start": {
461                      "line": 21,
462                      "column": 19
463                    },
464                    "end": {
465                      "line": 21,
466                      "column": 21
467                    }
468                  }
469                },
470                "loc": {
471                  "start": {
472                    "line": 21,
473                    "column": 19
474                  },
475                  "end": {
476                    "line": 21,
477                    "column": 21
478                  }
479                }
480              },
481              "loc": {
482                "start": {
483                  "line": 21,
484                  "column": 23
485                },
486                "end": {
487                  "line": 21,
488                  "column": 24
489                }
490              }
491            },
492            "definite": false,
493            "decorators": [],
494            "loc": {
495              "start": {
496                "line": 21,
497                "column": 13
498              },
499              "end": {
500                "line": 21,
501                "column": 27
502              }
503            }
504          },
505          {
506            "type": "MethodDefinition",
507            "key": {
508              "type": "Identifier",
509              "name": "constructor",
510              "decorators": [],
511              "loc": {
512                "start": {
513                  "line": 1,
514                  "column": 1
515                },
516                "end": {
517                  "line": 1,
518                  "column": 1
519                }
520              }
521            },
522            "kind": "constructor",
523            "static": false,
524            "optional": false,
525            "computed": false,
526            "value": {
527              "type": "FunctionExpression",
528              "function": {
529                "type": "ScriptFunction",
530                "id": {
531                  "type": "Identifier",
532                  "name": "constructor",
533                  "decorators": [],
534                  "loc": {
535                    "start": {
536                      "line": 1,
537                      "column": 1
538                    },
539                    "end": {
540                      "line": 1,
541                      "column": 1
542                    }
543                  }
544                },
545                "generator": false,
546                "async": false,
547                "expression": false,
548                "params": [],
549                "body": {
550                  "type": "BlockStatement",
551                  "statements": [],
552                  "loc": {
553                    "start": {
554                      "line": 1,
555                      "column": 1
556                    },
557                    "end": {
558                      "line": 1,
559                      "column": 1
560                    }
561                  }
562                },
563                "loc": {
564                  "start": {
565                    "line": 1,
566                    "column": 1
567                  },
568                  "end": {
569                    "line": 1,
570                    "column": 1
571                  }
572                }
573              },
574              "loc": {
575                "start": {
576                  "line": 1,
577                  "column": 1
578                },
579                "end": {
580                  "line": 1,
581                  "column": 1
582                }
583              }
584            },
585            "overloads": [],
586            "decorators": [],
587            "loc": {
588              "start": {
589                "line": 22,
590                "column": 2
591              },
592              "end": {
593                "line": 22,
594                "column": 2
595              }
596            }
597          }
598        ],
599        "loc": {
600          "start": {
601            "line": 16,
602            "column": 27
603          },
604          "end": {
605            "line": 22,
606            "column": 2
607          }
608        }
609      },
610      "loc": {
611        "start": {
612          "line": 16,
613          "column": 1
614        },
615        "end": {
616          "line": 22,
617          "column": 2
618        }
619      }
620    },
621    {
622      "type": "ClassDeclaration",
623      "definition": {
624        "id": {
625          "type": "Identifier",
626          "name": "ETSGLOBAL",
627          "decorators": [],
628          "loc": {
629            "start": {
630              "line": 1,
631              "column": 1
632            },
633            "end": {
634              "line": 1,
635              "column": 1
636            }
637          }
638        },
639        "superClass": null,
640        "implements": [],
641        "body": [
642          {
643            "type": "MethodDefinition",
644            "key": {
645              "type": "Identifier",
646              "name": "_$init$_",
647              "decorators": [],
648              "loc": {
649                "start": {
650                  "line": 1,
651                  "column": 1
652                },
653                "end": {
654                  "line": 1,
655                  "column": 1
656                }
657              }
658            },
659            "kind": "method",
660            "accessibility": "public",
661            "static": true,
662            "optional": false,
663            "computed": false,
664            "value": {
665              "type": "FunctionExpression",
666              "function": {
667                "type": "ScriptFunction",
668                "id": {
669                  "type": "Identifier",
670                  "name": "_$init$_",
671                  "decorators": [],
672                  "loc": {
673                    "start": {
674                      "line": 1,
675                      "column": 1
676                    },
677                    "end": {
678                      "line": 1,
679                      "column": 1
680                    }
681                  }
682                },
683                "generator": false,
684                "async": false,
685                "expression": false,
686                "params": [],
687                "body": {
688                  "type": "BlockStatement",
689                  "statements": [],
690                  "loc": {
691                    "start": {
692                      "line": 1,
693                      "column": 1
694                    },
695                    "end": {
696                      "line": 1,
697                      "column": 1
698                    }
699                  }
700                },
701                "loc": {
702                  "start": {
703                    "line": 1,
704                    "column": 1
705                  },
706                  "end": {
707                    "line": 1,
708                    "column": 1
709                  }
710                }
711              },
712              "loc": {
713                "start": {
714                  "line": 1,
715                  "column": 1
716                },
717                "end": {
718                  "line": 1,
719                  "column": 1
720                }
721              }
722            },
723            "overloads": [],
724            "decorators": [],
725            "loc": {
726              "start": {
727                "line": 1,
728                "column": 1
729              },
730              "end": {
731                "line": 1,
732                "column": 1
733              }
734            }
735          }
736        ],
737        "loc": {
738          "start": {
739            "line": 1,
740            "column": 1
741          },
742          "end": {
743            "line": 1,
744            "column": 1
745          }
746        }
747      },
748      "loc": {
749        "start": {
750          "line": 1,
751          "column": 1
752        },
753        "end": {
754          "line": 1,
755          "column": 1
756        }
757      }
758    }
759  ],
760  "loc": {
761    "start": {
762      "line": 1,
763      "column": 1
764    },
765    "end": {
766      "line": 23,
767      "column": 1
768    }
769  }
770}
771