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