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