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