1{
2  "type": "Program",
3  "statements": [
4    {
5      "type": "TSEnumDeclaration",
6      "id": {
7        "type": "Identifier",
8        "name": "E",
9        "loc": {
10          "start": {
11            "line": 16,
12            "column": 12
13          },
14          "end": {
15            "line": 16,
16            "column": 13
17          }
18        }
19      },
20      "members": [
21        {
22          "type": "TSEnumMember",
23          "id": {
24            "type": "Identifier",
25            "name": "A",
26            "loc": {
27              "start": {
28                "line": 17,
29                "column": 5
30              },
31              "end": {
32                "line": 17,
33                "column": 6
34              }
35            }
36          },
37          "initializer": {
38            "type": "NumberLiteral",
39            "value": 42,
40            "loc": {
41              "start": {
42                "line": 17,
43                "column": 9
44              },
45              "end": {
46                "line": 17,
47                "column": 11
48              }
49            }
50          },
51          "loc": {
52            "start": {
53              "line": 17,
54              "column": 9
55            },
56            "end": {
57              "line": 17,
58              "column": 12
59            }
60          }
61        },
62        {
63          "type": "TSEnumMember",
64          "id": {
65            "type": "Identifier",
66            "name": "B",
67            "loc": {
68              "start": {
69                "line": 18,
70                "column": 5
71              },
72              "end": {
73                "line": 18,
74                "column": 6
75              }
76            }
77          },
78          "initializer": {
79            "type": "NumberLiteral",
80            "value": 314,
81            "loc": {
82              "start": {
83                "line": 18,
84                "column": 9
85              },
86              "end": {
87                "line": 18,
88                "column": 12
89              }
90            }
91          },
92          "loc": {
93            "start": {
94              "line": 18,
95              "column": 9
96            },
97            "end": {
98              "line": 19,
99              "column": 2
100            }
101          }
102        }
103      ],
104      "const": true,
105      "loc": {
106        "start": {
107          "line": 16,
108          "column": 7
109        },
110        "end": {
111          "line": 19,
112          "column": 2
113        }
114      }
115    },
116    {
117      "type": "ClassDeclaration",
118      "definition": {
119        "id": {
120          "type": "Identifier",
121          "name": "Anno1",
122          "loc": {
123            "start": {
124              "line": 21,
125              "column": 12
126            },
127            "end": {
128              "line": 21,
129              "column": 17
130            }
131          }
132        },
133        "superClass": null,
134        "implements": [],
135        "constructor": {
136          "type": "MethodDefinition",
137          "key": {
138            "type": "Identifier",
139            "name": "constructor",
140            "loc": {
141              "start": {
142                "line": 1,
143                "column": 1
144              },
145              "end": {
146                "line": 1,
147                "column": 1
148              }
149            }
150          },
151          "kind": "constructor",
152          "static": false,
153          "optional": false,
154          "computed": false,
155          "value": {
156            "type": "FunctionExpression",
157            "function": {
158              "type": "ScriptFunction",
159              "id": null,
160              "generator": false,
161              "async": false,
162              "expression": false,
163              "params": [],
164              "body": {
165                "type": "Program",
166                "statements": [],
167                "loc": {
168                  "start": {
169                    "line": 1,
170                    "column": 1
171                  },
172                  "end": {
173                    "line": 1,
174                    "column": 1
175                  }
176                }
177              },
178              "loc": {
179                "start": {
180                  "line": 1,
181                  "column": 1
182                },
183                "end": {
184                  "line": 1,
185                  "column": 1
186                }
187              }
188            },
189            "loc": {
190              "start": {
191                "line": 1,
192                "column": 1
193              },
194              "end": {
195                "line": 1,
196                "column": 1
197              }
198            }
199          },
200          "overloads": [],
201          "decorators": [],
202          "annotations": [],
203          "loc": {
204            "start": {
205              "line": 21,
206              "column": 2
207            },
208            "end": {
209              "line": 24,
210              "column": 2
211            }
212          }
213        },
214        "body": [
215          {
216            "type": "ClassProperty",
217            "key": {
218              "type": "Identifier",
219              "name": "a",
220              "loc": {
221                "start": {
222                  "line": 23,
223                  "column": 5
224                },
225                "end": {
226                  "line": 23,
227                  "column": 6
228                }
229              }
230            },
231            "value": {
232              "type": "NewExpression",
233              "callee": {
234                "type": "Identifier",
235                "name": "Array",
236                "loc": {
237                  "start": {
238                    "line": 23,
239                    "column": 18
240                  },
241                  "end": {
242                    "line": 23,
243                    "column": 23
244                  }
245                }
246              },
247              "typeParameters": {
248                "type": "TSTypeParameterInstantiation",
249                "params": [
250                  {
251                    "type": "TSTypeReference",
252                    "typeName": {
253                      "type": "Identifier",
254                      "name": "E",
255                      "loc": {
256                        "start": {
257                          "line": 23,
258                          "column": 24
259                        },
260                        "end": {
261                          "line": 23,
262                          "column": 25
263                        }
264                      }
265                    },
266                    "loc": {
267                      "start": {
268                        "line": 23,
269                        "column": 24
270                      },
271                      "end": {
272                        "line": 23,
273                        "column": 25
274                      }
275                    }
276                  }
277                ],
278                "loc": {
279                  "start": {
280                    "line": 23,
281                    "column": 23
282                  },
283                  "end": {
284                    "line": 23,
285                    "column": 26
286                  }
287                }
288              },
289              "arguments": [
290                {
291                  "type": "NumberLiteral",
292                  "value": 0,
293                  "loc": {
294                    "start": {
295                      "line": 23,
296                      "column": 27
297                    },
298                    "end": {
299                      "line": 23,
300                      "column": 28
301                    }
302                  }
303                }
304              ],
305              "loc": {
306                "start": {
307                  "line": 23,
308                  "column": 14
309                },
310                "end": {
311                  "line": 23,
312                  "column": 29
313                }
314              }
315            },
316            "static": false,
317            "readonly": false,
318            "declare": false,
319            "optional": false,
320            "computed": false,
321            "typeAnnotation": {
322              "type": "TSArrayType",
323              "elementType": {
324                "type": "TSTypeReference",
325                "typeName": {
326                  "type": "Identifier",
327                  "name": "E",
328                  "loc": {
329                    "start": {
330                      "line": 23,
331                      "column": 8
332                    },
333                    "end": {
334                      "line": 23,
335                      "column": 9
336                    }
337                  }
338                },
339                "loc": {
340                  "start": {
341                    "line": 23,
342                    "column": 8
343                  },
344                  "end": {
345                    "line": 23,
346                    "column": 9
347                  }
348                }
349              },
350              "loc": {
351                "start": {
352                  "line": 23,
353                  "column": 8
354                },
355                "end": {
356                  "line": 23,
357                  "column": 11
358                }
359              }
360            },
361            "decorators": [],
362            "loc": {
363              "start": {
364                "line": 23,
365                "column": 5
366              },
367              "end": {
368                "line": 23,
369                "column": 29
370              }
371            }
372          }
373        ],
374        "indexSignatures": [],
375        "loc": {
376          "start": {
377            "line": 21,
378            "column": 18
379          },
380          "end": {
381            "line": 24,
382            "column": 2
383          }
384        }
385      },
386      "decorators": [],
387      "isAnnotationDeclaration": true,
388      "loc": {
389        "start": {
390          "line": 21,
391          "column": 2
392        },
393        "end": {
394          "line": 24,
395          "column": 2
396        }
397      }
398    },
399    {
400      "type": "ClassDeclaration",
401      "definition": {
402        "id": {
403          "type": "Identifier",
404          "name": "Anno2",
405          "loc": {
406            "start": {
407              "line": 26,
408              "column": 12
409            },
410            "end": {
411              "line": 26,
412              "column": 17
413            }
414          }
415        },
416        "superClass": null,
417        "implements": [],
418        "constructor": {
419          "type": "MethodDefinition",
420          "key": {
421            "type": "Identifier",
422            "name": "constructor",
423            "loc": {
424              "start": {
425                "line": 1,
426                "column": 1
427              },
428              "end": {
429                "line": 1,
430                "column": 1
431              }
432            }
433          },
434          "kind": "constructor",
435          "static": false,
436          "optional": false,
437          "computed": false,
438          "value": {
439            "type": "FunctionExpression",
440            "function": {
441              "type": "ScriptFunction",
442              "id": null,
443              "generator": false,
444              "async": false,
445              "expression": false,
446              "params": [],
447              "body": {
448                "type": "Program",
449                "statements": [],
450                "loc": {
451                  "start": {
452                    "line": 1,
453                    "column": 1
454                  },
455                  "end": {
456                    "line": 1,
457                    "column": 1
458                  }
459                }
460              },
461              "loc": {
462                "start": {
463                  "line": 1,
464                  "column": 1
465                },
466                "end": {
467                  "line": 1,
468                  "column": 1
469                }
470              }
471            },
472            "loc": {
473              "start": {
474                "line": 1,
475                "column": 1
476              },
477              "end": {
478                "line": 1,
479                "column": 1
480              }
481            }
482          },
483          "overloads": [],
484          "decorators": [],
485          "annotations": [],
486          "loc": {
487            "start": {
488              "line": 26,
489              "column": 2
490            },
491            "end": {
492              "line": 29,
493              "column": 2
494            }
495          }
496        },
497        "body": [
498          {
499            "type": "ClassProperty",
500            "key": {
501              "type": "Identifier",
502              "name": "a",
503              "loc": {
504                "start": {
505                  "line": 28,
506                  "column": 5
507                },
508                "end": {
509                  "line": 28,
510                  "column": 6
511                }
512              }
513            },
514            "value": {
515              "type": "NewExpression",
516              "callee": {
517                "type": "Identifier",
518                "name": "Array",
519                "loc": {
520                  "start": {
521                    "line": 28,
522                    "column": 18
523                  },
524                  "end": {
525                    "line": 28,
526                    "column": 23
527                  }
528                }
529              },
530              "typeParameters": {
531                "type": "TSTypeParameterInstantiation",
532                "params": [
533                  {
534                    "type": "TSTypeReference",
535                    "typeName": {
536                      "type": "Identifier",
537                      "name": "E",
538                      "loc": {
539                        "start": {
540                          "line": 28,
541                          "column": 24
542                        },
543                        "end": {
544                          "line": 28,
545                          "column": 25
546                        }
547                      }
548                    },
549                    "loc": {
550                      "start": {
551                        "line": 28,
552                        "column": 24
553                      },
554                      "end": {
555                        "line": 28,
556                        "column": 25
557                      }
558                    }
559                  }
560                ],
561                "loc": {
562                  "start": {
563                    "line": 28,
564                    "column": 23
565                  },
566                  "end": {
567                    "line": 28,
568                    "column": 26
569                  }
570                }
571              },
572              "arguments": [
573                {
574                  "type": "NumberLiteral",
575                  "value": 1,
576                  "loc": {
577                    "start": {
578                      "line": 28,
579                      "column": 27
580                    },
581                    "end": {
582                      "line": 28,
583                      "column": 28
584                    }
585                  }
586                }
587              ],
588              "loc": {
589                "start": {
590                  "line": 28,
591                  "column": 14
592                },
593                "end": {
594                  "line": 28,
595                  "column": 29
596                }
597              }
598            },
599            "static": false,
600            "readonly": false,
601            "declare": false,
602            "optional": false,
603            "computed": false,
604            "typeAnnotation": {
605              "type": "TSArrayType",
606              "elementType": {
607                "type": "TSTypeReference",
608                "typeName": {
609                  "type": "Identifier",
610                  "name": "E",
611                  "loc": {
612                    "start": {
613                      "line": 28,
614                      "column": 8
615                    },
616                    "end": {
617                      "line": 28,
618                      "column": 9
619                    }
620                  }
621                },
622                "loc": {
623                  "start": {
624                    "line": 28,
625                    "column": 8
626                  },
627                  "end": {
628                    "line": 28,
629                    "column": 9
630                  }
631                }
632              },
633              "loc": {
634                "start": {
635                  "line": 28,
636                  "column": 8
637                },
638                "end": {
639                  "line": 28,
640                  "column": 11
641                }
642              }
643            },
644            "decorators": [],
645            "loc": {
646              "start": {
647                "line": 28,
648                "column": 5
649              },
650              "end": {
651                "line": 28,
652                "column": 29
653              }
654            }
655          }
656        ],
657        "indexSignatures": [],
658        "loc": {
659          "start": {
660            "line": 26,
661            "column": 18
662          },
663          "end": {
664            "line": 29,
665            "column": 2
666          }
667        }
668      },
669      "decorators": [],
670      "isAnnotationDeclaration": true,
671      "loc": {
672        "start": {
673          "line": 26,
674          "column": 2
675        },
676        "end": {
677          "line": 29,
678          "column": 2
679        }
680      }
681    },
682    {
683      "type": "ClassDeclaration",
684      "definition": {
685        "id": {
686          "type": "Identifier",
687          "name": "Anno3",
688          "loc": {
689            "start": {
690              "line": 31,
691              "column": 12
692            },
693            "end": {
694              "line": 31,
695              "column": 17
696            }
697          }
698        },
699        "superClass": null,
700        "implements": [],
701        "constructor": {
702          "type": "MethodDefinition",
703          "key": {
704            "type": "Identifier",
705            "name": "constructor",
706            "loc": {
707              "start": {
708                "line": 1,
709                "column": 1
710              },
711              "end": {
712                "line": 1,
713                "column": 1
714              }
715            }
716          },
717          "kind": "constructor",
718          "static": false,
719          "optional": false,
720          "computed": false,
721          "value": {
722            "type": "FunctionExpression",
723            "function": {
724              "type": "ScriptFunction",
725              "id": null,
726              "generator": false,
727              "async": false,
728              "expression": false,
729              "params": [],
730              "body": {
731                "type": "Program",
732                "statements": [],
733                "loc": {
734                  "start": {
735                    "line": 1,
736                    "column": 1
737                  },
738                  "end": {
739                    "line": 1,
740                    "column": 1
741                  }
742                }
743              },
744              "loc": {
745                "start": {
746                  "line": 1,
747                  "column": 1
748                },
749                "end": {
750                  "line": 1,
751                  "column": 1
752                }
753              }
754            },
755            "loc": {
756              "start": {
757                "line": 1,
758                "column": 1
759              },
760              "end": {
761                "line": 1,
762                "column": 1
763              }
764            }
765          },
766          "overloads": [],
767          "decorators": [],
768          "annotations": [],
769          "loc": {
770            "start": {
771              "line": 31,
772              "column": 2
773            },
774            "end": {
775              "line": 33,
776              "column": 2
777            }
778          }
779        },
780        "body": [
781          {
782            "type": "ClassProperty",
783            "key": {
784              "type": "Identifier",
785              "name": "a",
786              "loc": {
787                "start": {
788                  "line": 32,
789                  "column": 5
790                },
791                "end": {
792                  "line": 32,
793                  "column": 6
794                }
795              }
796            },
797            "value": {
798              "type": "ArrayExpression",
799              "elements": [
800                {
801                  "type": "NumberLiteral",
802                  "value": 42,
803                  "loc": {
804                    "start": {
805                      "line": 32,
806                      "column": 15
807                    },
808                    "end": {
809                      "line": 32,
810                      "column": 17
811                    }
812                  }
813                },
814                {
815                  "type": "NumberLiteral",
816                  "value": 314,
817                  "loc": {
818                    "start": {
819                      "line": 32,
820                      "column": 19
821                    },
822                    "end": {
823                      "line": 32,
824                      "column": 22
825                    }
826                  }
827                },
828                {
829                  "type": "NumberLiteral",
830                  "value": 42,
831                  "loc": {
832                    "start": {
833                      "line": 32,
834                      "column": 24
835                    },
836                    "end": {
837                      "line": 32,
838                      "column": 26
839                    }
840                  }
841                }
842              ],
843              "loc": {
844                "start": {
845                  "line": 32,
846                  "column": 14
847                },
848                "end": {
849                  "line": 32,
850                  "column": 27
851                }
852              }
853            },
854            "static": false,
855            "readonly": false,
856            "declare": false,
857            "optional": false,
858            "computed": false,
859            "typeAnnotation": {
860              "type": "TSArrayType",
861              "elementType": {
862                "type": "TSTypeReference",
863                "typeName": {
864                  "type": "Identifier",
865                  "name": "E",
866                  "loc": {
867                    "start": {
868                      "line": 32,
869                      "column": 8
870                    },
871                    "end": {
872                      "line": 32,
873                      "column": 9
874                    }
875                  }
876                },
877                "loc": {
878                  "start": {
879                    "line": 32,
880                    "column": 8
881                  },
882                  "end": {
883                    "line": 32,
884                    "column": 9
885                  }
886                }
887              },
888              "loc": {
889                "start": {
890                  "line": 32,
891                  "column": 8
892                },
893                "end": {
894                  "line": 32,
895                  "column": 11
896                }
897              }
898            },
899            "decorators": [],
900            "loc": {
901              "start": {
902                "line": 32,
903                "column": 5
904              },
905              "end": {
906                "line": 32,
907                "column": 27
908              }
909            }
910          }
911        ],
912        "indexSignatures": [],
913        "loc": {
914          "start": {
915            "line": 31,
916            "column": 18
917          },
918          "end": {
919            "line": 33,
920            "column": 2
921          }
922        }
923      },
924      "decorators": [],
925      "isAnnotationDeclaration": true,
926      "loc": {
927        "start": {
928          "line": 31,
929          "column": 2
930        },
931        "end": {
932          "line": 33,
933          "column": 2
934        }
935      }
936    }
937  ],
938  "loc": {
939    "start": {
940      "line": 1,
941      "column": 1
942    },
943    "end": {
944      "line": 34,
945      "column": 1
946    }
947  }
948}
949