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