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