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": "StringLiteral",
39            "value": "Hello",
40            "loc": {
41              "start": {
42                "line": 17,
43                "column": 9
44              },
45              "end": {
46                "line": 17,
47                "column": 16
48              }
49            }
50          },
51          "loc": {
52            "start": {
53              "line": 17,
54              "column": 9
55            },
56            "end": {
57              "line": 17,
58              "column": 17
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": "StringLiteral",
80            "value": "world!",
81            "loc": {
82              "start": {
83                "line": 18,
84                "column": 9
85              },
86              "end": {
87                "line": 18,
88                "column": 17
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": "ArrayExpression",
233              "elements": [
234                {
235                  "type": "ArrayExpression",
236                  "elements": [
237                    {
238                      "type": "NewExpression",
239                      "callee": {
240                        "type": "Identifier",
241                        "name": "Array",
242                        "loc": {
243                          "start": {
244                            "line": 23,
245                            "column": 24
246                          },
247                          "end": {
248                            "line": 23,
249                            "column": 29
250                          }
251                        }
252                      },
253                      "typeParameters": {
254                        "type": "TSTypeParameterInstantiation",
255                        "params": [
256                          {
257                            "type": "TSTypeReference",
258                            "typeName": {
259                              "type": "Identifier",
260                              "name": "E",
261                              "loc": {
262                                "start": {
263                                  "line": 23,
264                                  "column": 30
265                                },
266                                "end": {
267                                  "line": 23,
268                                  "column": 31
269                                }
270                              }
271                            },
272                            "loc": {
273                              "start": {
274                                "line": 23,
275                                "column": 30
276                              },
277                              "end": {
278                                "line": 23,
279                                "column": 31
280                              }
281                            }
282                          }
283                        ],
284                        "loc": {
285                          "start": {
286                            "line": 23,
287                            "column": 29
288                          },
289                          "end": {
290                            "line": 23,
291                            "column": 32
292                          }
293                        }
294                      },
295                      "arguments": [
296                        {
297                          "type": "NumberLiteral",
298                          "value": 2,
299                          "loc": {
300                            "start": {
301                              "line": 23,
302                              "column": 33
303                            },
304                            "end": {
305                              "line": 23,
306                              "column": 34
307                            }
308                          }
309                        }
310                      ],
311                      "loc": {
312                        "start": {
313                          "line": 23,
314                          "column": 20
315                        },
316                        "end": {
317                          "line": 23,
318                          "column": 35
319                        }
320                      }
321                    }
322                  ],
323                  "loc": {
324                    "start": {
325                      "line": 23,
326                      "column": 19
327                    },
328                    "end": {
329                      "line": 23,
330                      "column": 36
331                    }
332                  }
333                }
334              ],
335              "loc": {
336                "start": {
337                  "line": 23,
338                  "column": 18
339                },
340                "end": {
341                  "line": 23,
342                  "column": 37
343                }
344              }
345            },
346            "static": false,
347            "readonly": false,
348            "declare": false,
349            "optional": false,
350            "computed": false,
351            "typeAnnotation": {
352              "type": "TSArrayType",
353              "elementType": {
354                "type": "TSArrayType",
355                "elementType": {
356                  "type": "TSArrayType",
357                  "elementType": {
358                    "type": "TSTypeReference",
359                    "typeName": {
360                      "type": "Identifier",
361                      "name": "E",
362                      "loc": {
363                        "start": {
364                          "line": 23,
365                          "column": 8
366                        },
367                        "end": {
368                          "line": 23,
369                          "column": 9
370                        }
371                      }
372                    },
373                    "loc": {
374                      "start": {
375                        "line": 23,
376                        "column": 8
377                      },
378                      "end": {
379                        "line": 23,
380                        "column": 9
381                      }
382                    }
383                  },
384                  "loc": {
385                    "start": {
386                      "line": 23,
387                      "column": 8
388                    },
389                    "end": {
390                      "line": 23,
391                      "column": 11
392                    }
393                  }
394                },
395                "loc": {
396                  "start": {
397                    "line": 23,
398                    "column": 8
399                  },
400                  "end": {
401                    "line": 23,
402                    "column": 13
403                  }
404                }
405              },
406              "loc": {
407                "start": {
408                  "line": 23,
409                  "column": 8
410                },
411                "end": {
412                  "line": 23,
413                  "column": 15
414                }
415              }
416            },
417            "decorators": [],
418            "loc": {
419              "start": {
420                "line": 23,
421                "column": 5
422              },
423              "end": {
424                "line": 23,
425                "column": 37
426              }
427            }
428          }
429        ],
430        "indexSignatures": [],
431        "loc": {
432          "start": {
433            "line": 21,
434            "column": 18
435          },
436          "end": {
437            "line": 24,
438            "column": 2
439          }
440        }
441      },
442      "decorators": [],
443      "isAnnotationDeclaration": true,
444      "loc": {
445        "start": {
446          "line": 21,
447          "column": 2
448        },
449        "end": {
450          "line": 24,
451          "column": 2
452        }
453      }
454    },
455    {
456      "type": "ClassDeclaration",
457      "definition": {
458        "id": {
459          "type": "Identifier",
460          "name": "Anno2",
461          "loc": {
462            "start": {
463              "line": 26,
464              "column": 12
465            },
466            "end": {
467              "line": 26,
468              "column": 17
469            }
470          }
471        },
472        "superClass": null,
473        "implements": [],
474        "constructor": {
475          "type": "MethodDefinition",
476          "key": {
477            "type": "Identifier",
478            "name": "constructor",
479            "loc": {
480              "start": {
481                "line": 1,
482                "column": 1
483              },
484              "end": {
485                "line": 1,
486                "column": 1
487              }
488            }
489          },
490          "kind": "constructor",
491          "static": false,
492          "optional": false,
493          "computed": false,
494          "value": {
495            "type": "FunctionExpression",
496            "function": {
497              "type": "ScriptFunction",
498              "id": null,
499              "generator": false,
500              "async": false,
501              "expression": false,
502              "params": [],
503              "body": {
504                "type": "Program",
505                "statements": [],
506                "loc": {
507                  "start": {
508                    "line": 1,
509                    "column": 1
510                  },
511                  "end": {
512                    "line": 1,
513                    "column": 1
514                  }
515                }
516              },
517              "loc": {
518                "start": {
519                  "line": 1,
520                  "column": 1
521                },
522                "end": {
523                  "line": 1,
524                  "column": 1
525                }
526              }
527            },
528            "loc": {
529              "start": {
530                "line": 1,
531                "column": 1
532              },
533              "end": {
534                "line": 1,
535                "column": 1
536              }
537            }
538          },
539          "overloads": [],
540          "decorators": [],
541          "annotations": [],
542          "loc": {
543            "start": {
544              "line": 26,
545              "column": 2
546            },
547            "end": {
548              "line": 29,
549              "column": 2
550            }
551          }
552        },
553        "body": [
554          {
555            "type": "ClassProperty",
556            "key": {
557              "type": "Identifier",
558              "name": "a",
559              "loc": {
560                "start": {
561                  "line": 28,
562                  "column": 5
563                },
564                "end": {
565                  "line": 28,
566                  "column": 6
567                }
568              }
569            },
570            "value": {
571              "type": "ArrayExpression",
572              "elements": [
573                {
574                  "type": "ArrayExpression",
575                  "elements": [
576                    {
577                      "type": "NewExpression",
578                      "callee": {
579                        "type": "Identifier",
580                        "name": "Array",
581                        "loc": {
582                          "start": {
583                            "line": 28,
584                            "column": 24
585                          },
586                          "end": {
587                            "line": 28,
588                            "column": 29
589                          }
590                        }
591                      },
592                      "typeParameters": {
593                        "type": "TSTypeParameterInstantiation",
594                        "params": [
595                          {
596                            "type": "TSTypeReference",
597                            "typeName": {
598                              "type": "Identifier",
599                              "name": "E",
600                              "loc": {
601                                "start": {
602                                  "line": 28,
603                                  "column": 30
604                                },
605                                "end": {
606                                  "line": 28,
607                                  "column": 31
608                                }
609                              }
610                            },
611                            "loc": {
612                              "start": {
613                                "line": 28,
614                                "column": 30
615                              },
616                              "end": {
617                                "line": 28,
618                                "column": 31
619                              }
620                            }
621                          }
622                        ],
623                        "loc": {
624                          "start": {
625                            "line": 28,
626                            "column": 29
627                          },
628                          "end": {
629                            "line": 28,
630                            "column": 32
631                          }
632                        }
633                      },
634                      "arguments": [
635                        {
636                          "type": "NumberLiteral",
637                          "value": 3,
638                          "loc": {
639                            "start": {
640                              "line": 28,
641                              "column": 33
642                            },
643                            "end": {
644                              "line": 28,
645                              "column": 34
646                            }
647                          }
648                        }
649                      ],
650                      "loc": {
651                        "start": {
652                          "line": 28,
653                          "column": 20
654                        },
655                        "end": {
656                          "line": 28,
657                          "column": 35
658                        }
659                      }
660                    }
661                  ],
662                  "loc": {
663                    "start": {
664                      "line": 28,
665                      "column": 19
666                    },
667                    "end": {
668                      "line": 28,
669                      "column": 36
670                    }
671                  }
672                }
673              ],
674              "loc": {
675                "start": {
676                  "line": 28,
677                  "column": 18
678                },
679                "end": {
680                  "line": 28,
681                  "column": 37
682                }
683              }
684            },
685            "static": false,
686            "readonly": false,
687            "declare": false,
688            "optional": false,
689            "computed": false,
690            "typeAnnotation": {
691              "type": "TSArrayType",
692              "elementType": {
693                "type": "TSArrayType",
694                "elementType": {
695                  "type": "TSArrayType",
696                  "elementType": {
697                    "type": "TSTypeReference",
698                    "typeName": {
699                      "type": "Identifier",
700                      "name": "E",
701                      "loc": {
702                        "start": {
703                          "line": 28,
704                          "column": 8
705                        },
706                        "end": {
707                          "line": 28,
708                          "column": 9
709                        }
710                      }
711                    },
712                    "loc": {
713                      "start": {
714                        "line": 28,
715                        "column": 8
716                      },
717                      "end": {
718                        "line": 28,
719                        "column": 9
720                      }
721                    }
722                  },
723                  "loc": {
724                    "start": {
725                      "line": 28,
726                      "column": 8
727                    },
728                    "end": {
729                      "line": 28,
730                      "column": 11
731                    }
732                  }
733                },
734                "loc": {
735                  "start": {
736                    "line": 28,
737                    "column": 8
738                  },
739                  "end": {
740                    "line": 28,
741                    "column": 13
742                  }
743                }
744              },
745              "loc": {
746                "start": {
747                  "line": 28,
748                  "column": 8
749                },
750                "end": {
751                  "line": 28,
752                  "column": 15
753                }
754              }
755            },
756            "decorators": [],
757            "loc": {
758              "start": {
759                "line": 28,
760                "column": 5
761              },
762              "end": {
763                "line": 28,
764                "column": 37
765              }
766            }
767          }
768        ],
769        "indexSignatures": [],
770        "loc": {
771          "start": {
772            "line": 26,
773            "column": 18
774          },
775          "end": {
776            "line": 29,
777            "column": 2
778          }
779        }
780      },
781      "decorators": [],
782      "isAnnotationDeclaration": true,
783      "loc": {
784        "start": {
785          "line": 26,
786          "column": 2
787        },
788        "end": {
789          "line": 29,
790          "column": 2
791        }
792      }
793    },
794    {
795      "type": "ClassDeclaration",
796      "definition": {
797        "id": {
798          "type": "Identifier",
799          "name": "Anno3",
800          "loc": {
801            "start": {
802              "line": 31,
803              "column": 12
804            },
805            "end": {
806              "line": 31,
807              "column": 17
808            }
809          }
810        },
811        "superClass": null,
812        "implements": [],
813        "constructor": {
814          "type": "MethodDefinition",
815          "key": {
816            "type": "Identifier",
817            "name": "constructor",
818            "loc": {
819              "start": {
820                "line": 1,
821                "column": 1
822              },
823              "end": {
824                "line": 1,
825                "column": 1
826              }
827            }
828          },
829          "kind": "constructor",
830          "static": false,
831          "optional": false,
832          "computed": false,
833          "value": {
834            "type": "FunctionExpression",
835            "function": {
836              "type": "ScriptFunction",
837              "id": null,
838              "generator": false,
839              "async": false,
840              "expression": false,
841              "params": [],
842              "body": {
843                "type": "Program",
844                "statements": [],
845                "loc": {
846                  "start": {
847                    "line": 1,
848                    "column": 1
849                  },
850                  "end": {
851                    "line": 1,
852                    "column": 1
853                  }
854                }
855              },
856              "loc": {
857                "start": {
858                  "line": 1,
859                  "column": 1
860                },
861                "end": {
862                  "line": 1,
863                  "column": 1
864                }
865              }
866            },
867            "loc": {
868              "start": {
869                "line": 1,
870                "column": 1
871              },
872              "end": {
873                "line": 1,
874                "column": 1
875              }
876            }
877          },
878          "overloads": [],
879          "decorators": [],
880          "annotations": [],
881          "loc": {
882            "start": {
883              "line": 31,
884              "column": 2
885            },
886            "end": {
887              "line": 33,
888              "column": 2
889            }
890          }
891        },
892        "body": [
893          {
894            "type": "ClassProperty",
895            "key": {
896              "type": "Identifier",
897              "name": "a",
898              "loc": {
899                "start": {
900                  "line": 32,
901                  "column": 5
902                },
903                "end": {
904                  "line": 32,
905                  "column": 6
906                }
907              }
908            },
909            "value": {
910              "type": "ArrayExpression",
911              "elements": [
912                {
913                  "type": "ArrayExpression",
914                  "elements": [
915                    {
916                      "type": "ArrayExpression",
917                      "elements": [
918                        {
919                          "type": "StringLiteral",
920                          "value": "Hello",
921                          "loc": {
922                            "start": {
923                              "line": 32,
924                              "column": 21
925                            },
926                            "end": {
927                              "line": 32,
928                              "column": 28
929                            }
930                          }
931                        },
932                        {
933                          "type": "StringLiteral",
934                          "value": "world!",
935                          "loc": {
936                            "start": {
937                              "line": 32,
938                              "column": 30
939                            },
940                            "end": {
941                              "line": 32,
942                              "column": 38
943                            }
944                          }
945                        },
946                        {
947                          "type": "StringLiteral",
948                          "value": "Hello",
949                          "loc": {
950                            "start": {
951                              "line": 32,
952                              "column": 40
953                            },
954                            "end": {
955                              "line": 32,
956                              "column": 47
957                            }
958                          }
959                        }
960                      ],
961                      "loc": {
962                        "start": {
963                          "line": 32,
964                          "column": 20
965                        },
966                        "end": {
967                          "line": 32,
968                          "column": 48
969                        }
970                      }
971                    }
972                  ],
973                  "loc": {
974                    "start": {
975                      "line": 32,
976                      "column": 19
977                    },
978                    "end": {
979                      "line": 32,
980                      "column": 49
981                    }
982                  }
983                }
984              ],
985              "loc": {
986                "start": {
987                  "line": 32,
988                  "column": 18
989                },
990                "end": {
991                  "line": 32,
992                  "column": 50
993                }
994              }
995            },
996            "static": false,
997            "readonly": false,
998            "declare": false,
999            "optional": false,
1000            "computed": false,
1001            "typeAnnotation": {
1002              "type": "TSArrayType",
1003              "elementType": {
1004                "type": "TSArrayType",
1005                "elementType": {
1006                  "type": "TSArrayType",
1007                  "elementType": {
1008                    "type": "TSTypeReference",
1009                    "typeName": {
1010                      "type": "Identifier",
1011                      "name": "E",
1012                      "loc": {
1013                        "start": {
1014                          "line": 32,
1015                          "column": 8
1016                        },
1017                        "end": {
1018                          "line": 32,
1019                          "column": 9
1020                        }
1021                      }
1022                    },
1023                    "loc": {
1024                      "start": {
1025                        "line": 32,
1026                        "column": 8
1027                      },
1028                      "end": {
1029                        "line": 32,
1030                        "column": 9
1031                      }
1032                    }
1033                  },
1034                  "loc": {
1035                    "start": {
1036                      "line": 32,
1037                      "column": 8
1038                    },
1039                    "end": {
1040                      "line": 32,
1041                      "column": 11
1042                    }
1043                  }
1044                },
1045                "loc": {
1046                  "start": {
1047                    "line": 32,
1048                    "column": 8
1049                  },
1050                  "end": {
1051                    "line": 32,
1052                    "column": 13
1053                  }
1054                }
1055              },
1056              "loc": {
1057                "start": {
1058                  "line": 32,
1059                  "column": 8
1060                },
1061                "end": {
1062                  "line": 32,
1063                  "column": 15
1064                }
1065              }
1066            },
1067            "decorators": [],
1068            "loc": {
1069              "start": {
1070                "line": 32,
1071                "column": 5
1072              },
1073              "end": {
1074                "line": 32,
1075                "column": 50
1076              }
1077            }
1078          }
1079        ],
1080        "indexSignatures": [],
1081        "loc": {
1082          "start": {
1083            "line": 31,
1084            "column": 18
1085          },
1086          "end": {
1087            "line": 33,
1088            "column": 2
1089          }
1090        }
1091      },
1092      "decorators": [],
1093      "isAnnotationDeclaration": true,
1094      "loc": {
1095        "start": {
1096          "line": 31,
1097          "column": 2
1098        },
1099        "end": {
1100          "line": 33,
1101          "column": 2
1102        }
1103      }
1104    }
1105  ],
1106  "loc": {
1107    "start": {
1108      "line": 1,
1109      "column": 1
1110    },
1111    "end": {
1112      "line": 34,
1113      "column": 1
1114    }
1115  }
1116}
1117