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": "TSBooleanKeyword",
126              "loc": {
127                "start": {
128                  "line": 17,
129                  "column": 8
130                },
131                "end": {
132                  "line": 17,
133                  "column": 15
134                }
135              }
136            },
137            "decorators": [],
138            "loc": {
139              "start": {
140                "line": 17,
141                "column": 5
142              },
143              "end": {
144                "line": 17,
145                "column": 6
146              }
147            }
148          }
149        ],
150        "indexSignatures": [],
151        "loc": {
152          "start": {
153            "line": 16,
154            "column": 17
155          },
156          "end": {
157            "line": 18,
158            "column": 2
159          }
160        }
161      },
162      "decorators": [],
163      "isAnnotationDeclaration": true,
164      "loc": {
165        "start": {
166          "line": 16,
167          "column": 2
168        },
169        "end": {
170          "line": 18,
171          "column": 2
172        }
173      }
174    },
175    {
176      "type": "ClassDeclaration",
177      "definition": {
178        "id": {
179          "type": "Identifier",
180          "name": "A",
181          "loc": {
182            "start": {
183              "line": 21,
184              "column": 7
185            },
186            "end": {
187              "line": 21,
188              "column": 8
189            }
190          }
191        },
192        "superClass": null,
193        "implements": [],
194        "constructor": {
195          "type": "MethodDefinition",
196          "key": {
197            "type": "Identifier",
198            "name": "constructor",
199            "loc": {
200              "start": {
201                "line": 1,
202                "column": 1
203              },
204              "end": {
205                "line": 1,
206                "column": 1
207              }
208            }
209          },
210          "kind": "constructor",
211          "static": false,
212          "optional": false,
213          "computed": false,
214          "value": {
215            "type": "FunctionExpression",
216            "function": {
217              "type": "ScriptFunction",
218              "id": null,
219              "generator": false,
220              "async": false,
221              "expression": false,
222              "params": [],
223              "body": {
224                "type": "BlockStatement",
225                "statements": [],
226                "loc": {
227                  "start": {
228                    "line": 1,
229                    "column": 1
230                  },
231                  "end": {
232                    "line": 1,
233                    "column": 1
234                  }
235                }
236              },
237              "loc": {
238                "start": {
239                  "line": 1,
240                  "column": 1
241                },
242                "end": {
243                  "line": 1,
244                  "column": 1
245                }
246              }
247            },
248            "loc": {
249              "start": {
250                "line": 1,
251                "column": 1
252              },
253              "end": {
254                "line": 1,
255                "column": 1
256              }
257            }
258          },
259          "overloads": [],
260          "decorators": [],
261          "annotations": [
262            {
263              "type": "Annotation",
264              "expression": {
265                "type": "CallExpression",
266                "callee": {
267                  "type": "Identifier",
268                  "name": "Anno",
269                  "loc": {
270                    "start": {
271                      "line": 20,
272                      "column": 3
273                    },
274                    "end": {
275                      "line": 20,
276                      "column": 7
277                    }
278                  }
279                },
280                "arguments": [
281                  {
282                    "type": "ObjectExpression",
283                    "properties": [
284                      {
285                        "type": "Property",
286                        "method": false,
287                        "shorthand": false,
288                        "computed": false,
289                        "key": {
290                          "type": "Identifier",
291                          "name": "a",
292                          "loc": {
293                            "start": {
294                              "line": 20,
295                              "column": 9
296                            },
297                            "end": {
298                              "line": 20,
299                              "column": 10
300                            }
301                          }
302                        },
303                        "value": {
304                          "type": "BooleanLiteral",
305                          "value": true,
306                          "loc": {
307                            "start": {
308                              "line": 20,
309                              "column": 13
310                            },
311                            "end": {
312                              "line": 20,
313                              "column": 17
314                            }
315                          }
316                        },
317                        "kind": "init",
318                        "loc": {
319                          "start": {
320                            "line": 20,
321                            "column": 9
322                          },
323                          "end": {
324                            "line": 20,
325                            "column": 17
326                          }
327                        }
328                      }
329                    ],
330                    "loc": {
331                      "start": {
332                        "line": 20,
333                        "column": 8
334                      },
335                      "end": {
336                        "line": 20,
337                        "column": 18
338                      }
339                    }
340                  }
341                ],
342                "optional": false,
343                "loc": {
344                  "start": {
345                    "line": 20,
346                    "column": 3
347                  },
348                  "end": {
349                    "line": 20,
350                    "column": 19
351                  }
352                }
353              },
354              "name": "Anno",
355              "isImported": false,
356              "loc": {
357                "start": {
358                  "line": 20,
359                  "column": 1
360                },
361                "end": {
362                  "line": 20,
363                  "column": 19
364                }
365              }
366            }
367          ],
368          "loc": {
369            "start": {
370              "line": 21,
371              "column": 1
372            },
373            "end": {
374              "line": 24,
375              "column": 2
376            }
377          }
378        },
379        "body": [
380          {
381            "type": "MethodDefinition",
382            "key": {
383              "type": "Identifier",
384              "name": "foo",
385              "loc": {
386                "start": {
387                  "line": 23,
388                  "column": 5
389                },
390                "end": {
391                  "line": 23,
392                  "column": 8
393                }
394              }
395            },
396            "kind": "method",
397            "static": false,
398            "optional": false,
399            "computed": false,
400            "value": {
401              "type": "FunctionExpression",
402              "function": {
403                "type": "ScriptFunction",
404                "id": null,
405                "generator": false,
406                "async": false,
407                "expression": false,
408                "params": [],
409                "body": {
410                  "type": "BlockStatement",
411                  "statements": [],
412                  "loc": {
413                    "start": {
414                      "line": 23,
415                      "column": 11
416                    },
417                    "end": {
418                      "line": 23,
419                      "column": 13
420                    }
421                  }
422                },
423                "loc": {
424                  "start": {
425                    "line": 23,
426                    "column": 8
427                  },
428                  "end": {
429                    "line": 23,
430                    "column": 13
431                  }
432                }
433              },
434              "loc": {
435                "start": {
436                  "line": 23,
437                  "column": 8
438                },
439                "end": {
440                  "line": 23,
441                  "column": 13
442                }
443              }
444            },
445            "overloads": [],
446            "decorators": [],
447            "annotations": [
448              {
449                "type": "Annotation",
450                "expression": {
451                  "type": "CallExpression",
452                  "callee": {
453                    "type": "Identifier",
454                    "name": "Anno",
455                    "loc": {
456                      "start": {
457                        "line": 22,
458                        "column": 7
459                      },
460                      "end": {
461                        "line": 22,
462                        "column": 11
463                      }
464                    }
465                  },
466                  "arguments": [
467                    {
468                      "type": "ObjectExpression",
469                      "properties": [
470                        {
471                          "type": "Property",
472                          "method": false,
473                          "shorthand": false,
474                          "computed": false,
475                          "key": {
476                            "type": "Identifier",
477                            "name": "a",
478                            "loc": {
479                              "start": {
480                                "line": 22,
481                                "column": 13
482                              },
483                              "end": {
484                                "line": 22,
485                                "column": 14
486                              }
487                            }
488                          },
489                          "value": {
490                            "type": "BooleanLiteral",
491                            "value": false,
492                            "loc": {
493                              "start": {
494                                "line": 22,
495                                "column": 17
496                              },
497                              "end": {
498                                "line": 22,
499                                "column": 22
500                              }
501                            }
502                          },
503                          "kind": "init",
504                          "loc": {
505                            "start": {
506                              "line": 22,
507                              "column": 13
508                            },
509                            "end": {
510                              "line": 22,
511                              "column": 22
512                            }
513                          }
514                        }
515                      ],
516                      "loc": {
517                        "start": {
518                          "line": 22,
519                          "column": 12
520                        },
521                        "end": {
522                          "line": 22,
523                          "column": 23
524                        }
525                      }
526                    }
527                  ],
528                  "optional": false,
529                  "loc": {
530                    "start": {
531                      "line": 22,
532                      "column": 7
533                    },
534                    "end": {
535                      "line": 22,
536                      "column": 24
537                    }
538                  }
539                },
540                "name": "Anno",
541                "isImported": false,
542                "loc": {
543                  "start": {
544                    "line": 22,
545                    "column": 5
546                  },
547                  "end": {
548                    "line": 22,
549                    "column": 24
550                  }
551                }
552              }
553            ],
554            "loc": {
555              "start": {
556                "line": 22,
557                "column": 5
558              },
559              "end": {
560                "line": 23,
561                "column": 13
562              }
563            }
564          }
565        ],
566        "indexSignatures": [],
567        "loc": {
568          "start": {
569            "line": 21,
570            "column": 9
571          },
572          "end": {
573            "line": 24,
574            "column": 2
575          }
576        }
577      },
578      "decorators": [],
579      "isAnnotationDeclaration": false,
580      "loc": {
581        "start": {
582          "line": 21,
583          "column": 1
584        },
585        "end": {
586          "line": 24,
587          "column": 2
588        }
589      }
590    }
591  ],
592  "loc": {
593    "start": {
594      "line": 1,
595      "column": 1
596    },
597    "end": {
598      "line": 24,
599      "column": 2
600    }
601  }
602}
603