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": 16
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": "Anno",
122          "loc": {
123            "start": {
124              "line": 21,
125              "column": 12
126            },
127            "end": {
128              "line": 21,
129              "column": 16
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": 23,
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": 22,
223                  "column": 5
224                },
225                "end": {
226                  "line": 22,
227                  "column": 6
228                }
229              }
230            },
231            "static": false,
232            "readonly": false,
233            "declare": false,
234            "optional": false,
235            "computed": false,
236            "typeAnnotation": {
237              "type": "TSTypeReference",
238              "typeName": {
239                "type": "Identifier",
240                "name": "E",
241                "loc": {
242                  "start": {
243                    "line": 22,
244                    "column": 8
245                  },
246                  "end": {
247                    "line": 22,
248                    "column": 9
249                  }
250                }
251              },
252              "loc": {
253                "start": {
254                  "line": 22,
255                  "column": 8
256                },
257                "end": {
258                  "line": 22,
259                  "column": 9
260                }
261              }
262            },
263            "decorators": [],
264            "loc": {
265              "start": {
266                "line": 22,
267                "column": 5
268              },
269              "end": {
270                "line": 22,
271                "column": 6
272              }
273            }
274          }
275        ],
276        "indexSignatures": [],
277        "loc": {
278          "start": {
279            "line": 21,
280            "column": 17
281          },
282          "end": {
283            "line": 23,
284            "column": 2
285          }
286        }
287      },
288      "decorators": [],
289      "isAnnotationDeclaration": true,
290      "loc": {
291        "start": {
292          "line": 21,
293          "column": 2
294        },
295        "end": {
296          "line": 23,
297          "column": 2
298        }
299      }
300    },
301    {
302      "type": "ClassDeclaration",
303      "definition": {
304        "id": {
305          "type": "Identifier",
306          "name": "A",
307          "loc": {
308            "start": {
309              "line": 26,
310              "column": 7
311            },
312            "end": {
313              "line": 26,
314              "column": 8
315            }
316          }
317        },
318        "superClass": null,
319        "implements": [],
320        "constructor": {
321          "type": "MethodDefinition",
322          "key": {
323            "type": "Identifier",
324            "name": "constructor",
325            "loc": {
326              "start": {
327                "line": 1,
328                "column": 1
329              },
330              "end": {
331                "line": 1,
332                "column": 1
333              }
334            }
335          },
336          "kind": "constructor",
337          "static": false,
338          "optional": false,
339          "computed": false,
340          "value": {
341            "type": "FunctionExpression",
342            "function": {
343              "type": "ScriptFunction",
344              "id": null,
345              "generator": false,
346              "async": false,
347              "expression": false,
348              "params": [],
349              "body": {
350                "type": "BlockStatement",
351                "statements": [],
352                "loc": {
353                  "start": {
354                    "line": 1,
355                    "column": 1
356                  },
357                  "end": {
358                    "line": 1,
359                    "column": 1
360                  }
361                }
362              },
363              "loc": {
364                "start": {
365                  "line": 1,
366                  "column": 1
367                },
368                "end": {
369                  "line": 1,
370                  "column": 1
371                }
372              }
373            },
374            "loc": {
375              "start": {
376                "line": 1,
377                "column": 1
378              },
379              "end": {
380                "line": 1,
381                "column": 1
382              }
383            }
384          },
385          "overloads": [],
386          "decorators": [],
387          "annotations": [
388            {
389              "type": "Annotation",
390              "expression": {
391                "type": "CallExpression",
392                "callee": {
393                  "type": "Identifier",
394                  "name": "Anno",
395                  "loc": {
396                    "start": {
397                      "line": 25,
398                      "column": 3
399                    },
400                    "end": {
401                      "line": 25,
402                      "column": 7
403                    }
404                  }
405                },
406                "arguments": [
407                  {
408                    "type": "ObjectExpression",
409                    "properties": [
410                      {
411                        "type": "Property",
412                        "method": false,
413                        "shorthand": false,
414                        "computed": false,
415                        "key": {
416                          "type": "Identifier",
417                          "name": "a",
418                          "loc": {
419                            "start": {
420                              "line": 25,
421                              "column": 9
422                            },
423                            "end": {
424                              "line": 25,
425                              "column": 10
426                            }
427                          }
428                        },
429                        "value": {
430                          "type": "StringLiteral",
431                          "value": "Hello",
432                          "loc": {
433                            "start": {
434                              "line": 25,
435                              "column": 13
436                            },
437                            "end": {
438                              "line": 25,
439                              "column": 20
440                            }
441                          }
442                        },
443                        "kind": "init",
444                        "loc": {
445                          "start": {
446                            "line": 25,
447                            "column": 9
448                          },
449                          "end": {
450                            "line": 25,
451                            "column": 20
452                          }
453                        }
454                      }
455                    ],
456                    "loc": {
457                      "start": {
458                        "line": 25,
459                        "column": 8
460                      },
461                      "end": {
462                        "line": 25,
463                        "column": 21
464                      }
465                    }
466                  }
467                ],
468                "optional": false,
469                "loc": {
470                  "start": {
471                    "line": 25,
472                    "column": 3
473                  },
474                  "end": {
475                    "line": 25,
476                    "column": 22
477                  }
478                }
479              },
480              "name": "Anno",
481              "isImported": false,
482              "loc": {
483                "start": {
484                  "line": 25,
485                  "column": 1
486                },
487                "end": {
488                  "line": 25,
489                  "column": 22
490                }
491              }
492            }
493          ],
494          "loc": {
495            "start": {
496              "line": 26,
497              "column": 1
498            },
499            "end": {
500              "line": 29,
501              "column": 2
502            }
503          }
504        },
505        "body": [
506          {
507            "type": "MethodDefinition",
508            "key": {
509              "type": "Identifier",
510              "name": "foo",
511              "loc": {
512                "start": {
513                  "line": 28,
514                  "column": 5
515                },
516                "end": {
517                  "line": 28,
518                  "column": 8
519                }
520              }
521            },
522            "kind": "method",
523            "static": false,
524            "optional": false,
525            "computed": false,
526            "value": {
527              "type": "FunctionExpression",
528              "function": {
529                "type": "ScriptFunction",
530                "id": null,
531                "generator": false,
532                "async": false,
533                "expression": false,
534                "params": [],
535                "body": {
536                  "type": "BlockStatement",
537                  "statements": [],
538                  "loc": {
539                    "start": {
540                      "line": 28,
541                      "column": 11
542                    },
543                    "end": {
544                      "line": 28,
545                      "column": 13
546                    }
547                  }
548                },
549                "loc": {
550                  "start": {
551                    "line": 28,
552                    "column": 8
553                  },
554                  "end": {
555                    "line": 28,
556                    "column": 13
557                  }
558                }
559              },
560              "loc": {
561                "start": {
562                  "line": 28,
563                  "column": 8
564                },
565                "end": {
566                  "line": 28,
567                  "column": 13
568                }
569              }
570            },
571            "overloads": [],
572            "decorators": [],
573            "annotations": [
574              {
575                "type": "Annotation",
576                "expression": {
577                  "type": "CallExpression",
578                  "callee": {
579                    "type": "Identifier",
580                    "name": "Anno",
581                    "loc": {
582                      "start": {
583                        "line": 27,
584                        "column": 7
585                      },
586                      "end": {
587                        "line": 27,
588                        "column": 11
589                      }
590                    }
591                  },
592                  "arguments": [
593                    {
594                      "type": "ObjectExpression",
595                      "properties": [
596                        {
597                          "type": "Property",
598                          "method": false,
599                          "shorthand": false,
600                          "computed": false,
601                          "key": {
602                            "type": "Identifier",
603                            "name": "a",
604                            "loc": {
605                              "start": {
606                                "line": 27,
607                                "column": 13
608                              },
609                              "end": {
610                                "line": 27,
611                                "column": 14
612                              }
613                            }
614                          },
615                          "value": {
616                            "type": "StringLiteral",
617                            "value": "world",
618                            "loc": {
619                              "start": {
620                                "line": 27,
621                                "column": 17
622                              },
623                              "end": {
624                                "line": 27,
625                                "column": 24
626                              }
627                            }
628                          },
629                          "kind": "init",
630                          "loc": {
631                            "start": {
632                              "line": 27,
633                              "column": 13
634                            },
635                            "end": {
636                              "line": 27,
637                              "column": 24
638                            }
639                          }
640                        }
641                      ],
642                      "loc": {
643                        "start": {
644                          "line": 27,
645                          "column": 12
646                        },
647                        "end": {
648                          "line": 27,
649                          "column": 25
650                        }
651                      }
652                    }
653                  ],
654                  "optional": false,
655                  "loc": {
656                    "start": {
657                      "line": 27,
658                      "column": 7
659                    },
660                    "end": {
661                      "line": 27,
662                      "column": 26
663                    }
664                  }
665                },
666                "name": "Anno",
667                "isImported": false,
668                "loc": {
669                  "start": {
670                    "line": 27,
671                    "column": 5
672                  },
673                  "end": {
674                    "line": 27,
675                    "column": 26
676                  }
677                }
678              }
679            ],
680            "loc": {
681              "start": {
682                "line": 27,
683                "column": 5
684              },
685              "end": {
686                "line": 28,
687                "column": 13
688              }
689            }
690          }
691        ],
692        "indexSignatures": [],
693        "loc": {
694          "start": {
695            "line": 26,
696            "column": 9
697          },
698          "end": {
699            "line": 29,
700            "column": 2
701          }
702        }
703      },
704      "decorators": [],
705      "isAnnotationDeclaration": false,
706      "loc": {
707        "start": {
708          "line": 26,
709          "column": 1
710        },
711        "end": {
712          "line": 29,
713          "column": 2
714        }
715      }
716    }
717  ],
718  "loc": {
719    "start": {
720      "line": 1,
721      "column": 1
722    },
723    "end": {
724      "line": 29,
725      "column": 2
726    }
727  }
728}
729