1{
2  "type": "Program",
3  "statements": [
4    {
5      "type": "ClassDeclaration",
6      "definition": {
7        "id": {
8          "type": "Identifier",
9          "name": "Foo",
10          "decorators": [],
11          "loc": {
12            "start": {
13              "line": 16,
14              "column": 7
15            },
16            "end": {
17              "line": 16,
18              "column": 10
19            }
20          }
21        },
22        "superClass": null,
23        "implements": [],
24        "body": [
25          {
26            "type": "MethodDefinition",
27            "key": {
28              "type": "Identifier",
29              "name": "constructor",
30              "decorators": [],
31              "loc": {
32                "start": {
33                  "line": 1,
34                  "column": 1
35                },
36                "end": {
37                  "line": 1,
38                  "column": 1
39                }
40              }
41            },
42            "kind": "constructor",
43            "accessibility": "public",
44            "static": false,
45            "optional": false,
46            "computed": false,
47            "value": {
48              "type": "FunctionExpression",
49              "function": {
50                "type": "ScriptFunction",
51                "id": {
52                  "type": "Identifier",
53                  "name": "constructor",
54                  "decorators": [],
55                  "loc": {
56                    "start": {
57                      "line": 1,
58                      "column": 1
59                    },
60                    "end": {
61                      "line": 1,
62                      "column": 1
63                    }
64                  }
65                },
66                "generator": false,
67                "async": false,
68                "expression": false,
69                "params": [
70                  {
71                    "type": "ETSParameterExpression",
72                    "name": {
73                      "type": "Identifier",
74                      "name": "cb",
75                      "typeAnnotation": {
76                        "type": "ETSFunctionType",
77                        "params": [],
78                        "returnType": {
79                          "type": "ETSPrimitiveType",
80                          "loc": {
81                            "start": {
82                              "line": 17,
83                              "column": 27
84                            },
85                            "end": {
86                              "line": 17,
87                              "column": 31
88                            }
89                          }
90                        },
91                        "loc": {
92                          "start": {
93                            "line": 17,
94                            "column": 21
95                          },
96                          "end": {
97                            "line": 17,
98                            "column": 31
99                          }
100                        }
101                      },
102                      "decorators": [],
103                      "loc": {
104                        "start": {
105                          "line": 17,
106                          "column": 17
107                        },
108                        "end": {
109                          "line": 17,
110                          "column": 31
111                        }
112                      }
113                    },
114                    "loc": {
115                      "start": {
116                        "line": 17,
117                        "column": 17
118                      },
119                      "end": {
120                        "line": 17,
121                        "column": 31
122                      }
123                    }
124                  }
125                ],
126                "body": {
127                  "type": "BlockStatement",
128                  "statements": [
129                    {
130                      "type": "ExpressionStatement",
131                      "expression": {
132                        "type": "AssignmentExpression",
133                        "operator": "=",
134                        "left": {
135                          "type": "MemberExpression",
136                          "object": {
137                            "type": "ThisExpression",
138                            "loc": {
139                              "start": {
140                                "line": 18,
141                                "column": 9
142                              },
143                              "end": {
144                                "line": 18,
145                                "column": 13
146                              }
147                            }
148                          },
149                          "property": {
150                            "type": "Identifier",
151                            "name": "callback",
152                            "decorators": [],
153                            "loc": {
154                              "start": {
155                                "line": 18,
156                                "column": 14
157                              },
158                              "end": {
159                                "line": 18,
160                                "column": 22
161                              }
162                            }
163                          },
164                          "computed": false,
165                          "optional": false,
166                          "loc": {
167                            "start": {
168                              "line": 18,
169                              "column": 9
170                            },
171                            "end": {
172                              "line": 18,
173                              "column": 22
174                            }
175                          }
176                        },
177                        "right": {
178                          "type": "Identifier",
179                          "name": "cb",
180                          "decorators": [],
181                          "loc": {
182                            "start": {
183                              "line": 18,
184                              "column": 25
185                            },
186                            "end": {
187                              "line": 18,
188                              "column": 27
189                            }
190                          }
191                        },
192                        "loc": {
193                          "start": {
194                            "line": 18,
195                            "column": 9
196                          },
197                          "end": {
198                            "line": 18,
199                            "column": 27
200                          }
201                        }
202                      },
203                      "loc": {
204                        "start": {
205                          "line": 18,
206                          "column": 9
207                        },
208                        "end": {
209                          "line": 18,
210                          "column": 28
211                        }
212                      }
213                    }
214                  ],
215                  "loc": {
216                    "start": {
217                      "line": 17,
218                      "column": 33
219                    },
220                    "end": {
221                      "line": 19,
222                      "column": 6
223                    }
224                  }
225                },
226                "loc": {
227                  "start": {
228                    "line": 17,
229                    "column": 16
230                  },
231                  "end": {
232                    "line": 19,
233                    "column": 6
234                  }
235                }
236              },
237              "loc": {
238                "start": {
239                  "line": 17,
240                  "column": 16
241                },
242                "end": {
243                  "line": 19,
244                  "column": 6
245                }
246              }
247            },
248            "overloads": [],
249            "decorators": [],
250            "loc": {
251              "start": {
252                "line": 17,
253                "column": 5
254              },
255              "end": {
256                "line": 19,
257                "column": 6
258              }
259            }
260          },
261          {
262            "type": "ClassProperty",
263            "key": {
264              "type": "Identifier",
265              "name": "callback",
266              "decorators": [],
267              "loc": {
268                "start": {
269                  "line": 21,
270                  "column": 13
271                },
272                "end": {
273                  "line": 21,
274                  "column": 21
275                }
276              }
277            },
278            "accessibility": "private",
279            "static": false,
280            "readonly": false,
281            "declare": false,
282            "optional": false,
283            "computed": false,
284            "typeAnnotation": {
285              "type": "ETSFunctionType",
286              "params": [],
287              "returnType": {
288                "type": "ETSPrimitiveType",
289                "loc": {
290                  "start": {
291                    "line": 21,
292                    "column": 29
293                  },
294                  "end": {
295                    "line": 21,
296                    "column": 33
297                  }
298                }
299              },
300              "loc": {
301                "start": {
302                  "line": 21,
303                  "column": 23
304                },
305                "end": {
306                  "line": 21,
307                  "column": 33
308                }
309              }
310            },
311            "definite": false,
312            "decorators": [],
313            "loc": {
314              "start": {
315                "line": 21,
316                "column": 13
317              },
318              "end": {
319                "line": 21,
320                "column": 33
321              }
322            }
323          }
324        ],
325        "loc": {
326          "start": {
327            "line": 16,
328            "column": 11
329          },
330          "end": {
331            "line": 22,
332            "column": 2
333          }
334        }
335      },
336      "loc": {
337        "start": {
338          "line": 16,
339          "column": 1
340        },
341        "end": {
342          "line": 22,
343          "column": 2
344        }
345      }
346    },
347    {
348      "type": "ClassDeclaration",
349      "definition": {
350        "id": {
351          "type": "Identifier",
352          "name": "ETSGLOBAL",
353          "decorators": [],
354          "loc": {
355            "start": {
356              "line": 1,
357              "column": 1
358            },
359            "end": {
360              "line": 1,
361              "column": 1
362            }
363          }
364        },
365        "superClass": null,
366        "implements": [],
367        "body": [
368          {
369            "type": "MethodDefinition",
370            "key": {
371              "type": "Identifier",
372              "name": "_$init$_",
373              "decorators": [],
374              "loc": {
375                "start": {
376                  "line": 1,
377                  "column": 1
378                },
379                "end": {
380                  "line": 1,
381                  "column": 1
382                }
383              }
384            },
385            "kind": "method",
386            "accessibility": "public",
387            "static": true,
388            "optional": false,
389            "computed": false,
390            "value": {
391              "type": "FunctionExpression",
392              "function": {
393                "type": "ScriptFunction",
394                "id": {
395                  "type": "Identifier",
396                  "name": "_$init$_",
397                  "decorators": [],
398                  "loc": {
399                    "start": {
400                      "line": 1,
401                      "column": 1
402                    },
403                    "end": {
404                      "line": 1,
405                      "column": 1
406                    }
407                  }
408                },
409                "generator": false,
410                "async": false,
411                "expression": false,
412                "params": [],
413                "body": {
414                  "type": "BlockStatement",
415                  "statements": [],
416                  "loc": {
417                    "start": {
418                      "line": 1,
419                      "column": 1
420                    },
421                    "end": {
422                      "line": 1,
423                      "column": 1
424                    }
425                  }
426                },
427                "loc": {
428                  "start": {
429                    "line": 1,
430                    "column": 1
431                  },
432                  "end": {
433                    "line": 1,
434                    "column": 1
435                  }
436                }
437              },
438              "loc": {
439                "start": {
440                  "line": 1,
441                  "column": 1
442                },
443                "end": {
444                  "line": 1,
445                  "column": 1
446                }
447              }
448            },
449            "overloads": [],
450            "decorators": [],
451            "loc": {
452              "start": {
453                "line": 1,
454                "column": 1
455              },
456              "end": {
457                "line": 1,
458                "column": 1
459              }
460            }
461          }
462        ],
463        "loc": {
464          "start": {
465            "line": 1,
466            "column": 1
467          },
468          "end": {
469            "line": 1,
470            "column": 1
471          }
472        }
473      },
474      "loc": {
475        "start": {
476          "line": 1,
477          "column": 1
478        },
479        "end": {
480          "line": 1,
481          "column": 1
482        }
483      }
484    }
485  ],
486  "loc": {
487    "start": {
488      "line": 1,
489      "column": 1
490    },
491    "end": {
492      "line": 23,
493      "column": 1
494    }
495  }
496}
497