1{
2  "type": "Program",
3  "statements": [
4    {
5      "type": "ClassDeclaration",
6      "definition": {
7        "id": {
8          "type": "Identifier",
9          "name": "A",
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        "typeParameters": {
23          "type": "TSTypeParameterDeclaration",
24          "params": [
25            {
26              "type": "TSTypeParameter",
27              "name": {
28                "type": "Identifier",
29                "name": "T",
30                "decorators": [],
31                "loc": {
32                  "start": {
33                    "line": 16,
34                    "column": 9
35                  },
36                  "end": {
37                    "line": 16,
38                    "column": 10
39                  }
40                }
41              },
42              "loc": {
43                "start": {
44                  "line": 16,
45                  "column": 9
46                },
47                "end": {
48                  "line": 16,
49                  "column": 11
50                }
51              }
52            }
53          ],
54          "loc": {
55            "start": {
56              "line": 16,
57              "column": 8
58            },
59            "end": {
60              "line": 16,
61              "column": 11
62            }
63          }
64        },
65        "superClass": null,
66        "implements": [],
67        "body": [
68          {
69            "type": "MethodDefinition",
70            "key": {
71              "type": "Identifier",
72              "name": "foo",
73              "decorators": [],
74              "loc": {
75                "start": {
76                  "line": 17,
77                  "column": 3
78                },
79                "end": {
80                  "line": 17,
81                  "column": 6
82                }
83              }
84            },
85            "kind": "method",
86            "accessibility": "public",
87            "static": false,
88            "optional": false,
89            "computed": false,
90            "value": {
91              "type": "FunctionExpression",
92              "function": {
93                "type": "ScriptFunction",
94                "id": {
95                  "type": "Identifier",
96                  "name": "foo",
97                  "decorators": [],
98                  "loc": {
99                    "start": {
100                      "line": 17,
101                      "column": 3
102                    },
103                    "end": {
104                      "line": 17,
105                      "column": 6
106                    }
107                  }
108                },
109                "generator": false,
110                "async": false,
111                "expression": false,
112                "params": [
113                  {
114                    "type": "ETSParameterExpression",
115                    "name": {
116                      "type": "Identifier",
117                      "name": "x",
118                      "typeAnnotation": {
119                        "type": "ETSUnionType",
120                        "types": [
121                          {
122                            "type": "ETSFunctionType",
123                            "params": [
124                              {
125                                "type": "ETSParameterExpression",
126                                "name": {
127                                  "type": "Identifier",
128                                  "name": "a",
129                                  "typeAnnotation": {
130                                    "type": "ETSTypeReference",
131                                    "part": {
132                                      "type": "ETSTypeReferencePart",
133                                      "name": {
134                                        "type": "Identifier",
135                                        "name": "T",
136                                        "decorators": [],
137                                        "loc": {
138                                          "start": {
139                                            "line": 17,
140                                            "column": 15
141                                          },
142                                          "end": {
143                                            "line": 17,
144                                            "column": 16
145                                          }
146                                        }
147                                      },
148                                      "loc": {
149                                        "start": {
150                                          "line": 17,
151                                          "column": 15
152                                        },
153                                        "end": {
154                                          "line": 17,
155                                          "column": 17
156                                        }
157                                      }
158                                    },
159                                    "loc": {
160                                      "start": {
161                                        "line": 17,
162                                        "column": 15
163                                      },
164                                      "end": {
165                                        "line": 17,
166                                        "column": 17
167                                      }
168                                    }
169                                  },
170                                  "decorators": [],
171                                  "loc": {
172                                    "start": {
173                                      "line": 17,
174                                      "column": 12
175                                    },
176                                    "end": {
177                                      "line": 17,
178                                      "column": 17
179                                    }
180                                  }
181                                },
182                                "loc": {
183                                  "start": {
184                                    "line": 17,
185                                    "column": 12
186                                  },
187                                  "end": {
188                                    "line": 17,
189                                    "column": 17
190                                  }
191                                }
192                              },
193                              {
194                                "type": "ETSParameterExpression",
195                                "name": {
196                                  "type": "Identifier",
197                                  "name": "b",
198                                  "typeAnnotation": {
199                                    "type": "ETSTypeReference",
200                                    "part": {
201                                      "type": "ETSTypeReferencePart",
202                                      "name": {
203                                        "type": "Identifier",
204                                        "name": "T",
205                                        "decorators": [],
206                                        "loc": {
207                                          "start": {
208                                            "line": 17,
209                                            "column": 21
210                                          },
211                                          "end": {
212                                            "line": 17,
213                                            "column": 22
214                                          }
215                                        }
216                                      },
217                                      "loc": {
218                                        "start": {
219                                          "line": 17,
220                                          "column": 21
221                                        },
222                                        "end": {
223                                          "line": 17,
224                                          "column": 23
225                                        }
226                                      }
227                                    },
228                                    "loc": {
229                                      "start": {
230                                        "line": 17,
231                                        "column": 21
232                                      },
233                                      "end": {
234                                        "line": 17,
235                                        "column": 23
236                                      }
237                                    }
238                                  },
239                                  "decorators": [],
240                                  "loc": {
241                                    "start": {
242                                      "line": 17,
243                                      "column": 18
244                                    },
245                                    "end": {
246                                      "line": 17,
247                                      "column": 23
248                                    }
249                                  }
250                                },
251                                "loc": {
252                                  "start": {
253                                    "line": 17,
254                                    "column": 18
255                                  },
256                                  "end": {
257                                    "line": 17,
258                                    "column": 23
259                                  }
260                                }
261                              }
262                            ],
263                            "returnType": {
264                              "type": "ETSTypeReference",
265                              "part": {
266                                "type": "ETSTypeReferencePart",
267                                "name": {
268                                  "type": "Identifier",
269                                  "name": "number",
270                                  "decorators": [],
271                                  "loc": {
272                                    "start": {
273                                      "line": 17,
274                                      "column": 27
275                                    },
276                                    "end": {
277                                      "line": 17,
278                                      "column": 33
279                                    }
280                                  }
281                                },
282                                "loc": {
283                                  "start": {
284                                    "line": 17,
285                                    "column": 27
286                                  },
287                                  "end": {
288                                    "line": 17,
289                                    "column": 34
290                                  }
291                                }
292                              },
293                              "loc": {
294                                "start": {
295                                  "line": 17,
296                                  "column": 27
297                                },
298                                "end": {
299                                  "line": 17,
300                                  "column": 34
301                                }
302                              }
303                            },
304                            "loc": {
305                              "start": {
306                                "line": 17,
307                                "column": 11
308                              },
309                              "end": {
310                                "line": 17,
311                                "column": 34
312                              }
313                            }
314                          },
315                          {
316                            "type": "ETSUndefinedType",
317                            "loc": {
318                              "start": {
319                                "line": 17,
320                                "column": 8
321                              },
322                              "end": {
323                                "line": 17,
324                                "column": 9
325                              }
326                            }
327                          }
328                        ],
329                        "loc": {
330                          "start": {
331                            "line": 17,
332                            "column": 11
333                          },
334                          "end": {
335                            "line": 17,
336                            "column": 34
337                          }
338                        }
339                      },
340                      "decorators": [],
341                      "loc": {
342                        "start": {
343                          "line": 17,
344                          "column": 7
345                        },
346                        "end": {
347                          "line": 17,
348                          "column": 34
349                        }
350                      }
351                    },
352                    "loc": {
353                      "start": {
354                        "line": 17,
355                        "column": 7
356                      },
357                      "end": {
358                        "line": 17,
359                        "column": 34
360                      }
361                    }
362                  }
363                ],
364                "returnType": {
365                  "type": "TSThisType",
366                  "loc": {
367                    "start": {
368                      "line": 17,
369                      "column": 36
370                    },
371                    "end": {
372                      "line": 17,
373                      "column": 40
374                    }
375                  }
376                },
377                "body": {
378                  "type": "BlockStatement",
379                  "statements": [
380                    {
381                      "type": "ReturnStatement",
382                      "argument": {
383                        "type": "ThisExpression",
384                        "loc": {
385                          "start": {
386                            "line": 18,
387                            "column": 12
388                          },
389                          "end": {
390                            "line": 18,
391                            "column": 16
392                          }
393                        }
394                      },
395                      "loc": {
396                        "start": {
397                          "line": 18,
398                          "column": 5
399                        },
400                        "end": {
401                          "line": 18,
402                          "column": 16
403                        }
404                      }
405                    }
406                  ],
407                  "loc": {
408                    "start": {
409                      "line": 17,
410                      "column": 41
411                    },
412                    "end": {
413                      "line": 19,
414                      "column": 4
415                    }
416                  }
417                },
418                "loc": {
419                  "start": {
420                    "line": 17,
421                    "column": 6
422                  },
423                  "end": {
424                    "line": 19,
425                    "column": 4
426                  }
427                }
428              },
429              "loc": {
430                "start": {
431                  "line": 17,
432                  "column": 6
433                },
434                "end": {
435                  "line": 19,
436                  "column": 4
437                }
438              }
439            },
440            "overloads": [
441              {
442                "type": "MethodDefinition",
443                "key": {
444                  "type": "Identifier",
445                  "name": "foo",
446                  "decorators": [],
447                  "loc": {
448                    "start": {
449                      "line": 17,
450                      "column": 3
451                    },
452                    "end": {
453                      "line": 17,
454                      "column": 6
455                    }
456                  }
457                },
458                "kind": "method",
459                "accessibility": "public",
460                "static": false,
461                "optional": false,
462                "computed": false,
463                "value": {
464                  "type": "FunctionExpression",
465                  "function": {
466                    "type": "ScriptFunction",
467                    "id": {
468                      "type": "Identifier",
469                      "name": "foo",
470                      "decorators": [],
471                      "loc": {
472                        "start": {
473                          "line": 17,
474                          "column": 3
475                        },
476                        "end": {
477                          "line": 17,
478                          "column": 6
479                        }
480                      }
481                    },
482                    "generator": false,
483                    "async": false,
484                    "expression": false,
485                    "params": [],
486                    "returnType": {
487                      "type": "TSThisType",
488                      "loc": {
489                        "start": {
490                          "line": 17,
491                          "column": 36
492                        },
493                        "end": {
494                          "line": 17,
495                          "column": 40
496                        }
497                      }
498                    },
499                    "body": {
500                      "type": "BlockStatement",
501                      "statements": [
502                        {
503                          "type": "ExpressionStatement",
504                          "expression": {
505                            "type": "CallExpression",
506                            "callee": {
507                              "type": "MemberExpression",
508                              "object": {
509                                "type": "ThisExpression",
510                                "loc": {
511                                  "start": {
512                                    "line": 1,
513                                    "column": 1
514                                  },
515                                  "end": {
516                                    "line": 1,
517                                    "column": 1
518                                  }
519                                }
520                              },
521                              "property": {
522                                "type": "Identifier",
523                                "name": "foo",
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                              "computed": false,
537                              "optional": false,
538                              "loc": {
539                                "start": {
540                                  "line": 1,
541                                  "column": 1
542                                },
543                                "end": {
544                                  "line": 1,
545                                  "column": 1
546                                }
547                              }
548                            },
549                            "arguments": [
550                              {
551                                "type": "UndefinedLiteral",
552                                "value": undefined,
553                                "loc": {
554                                  "start": {
555                                    "line": 1,
556                                    "column": 1
557                                  },
558                                  "end": {
559                                    "line": 1,
560                                    "column": 1
561                                  }
562                                }
563                              }
564                            ],
565                            "optional": false,
566                            "loc": {
567                              "start": {
568                                "line": 17,
569                                "column": 3
570                              },
571                              "end": {
572                                "line": 19,
573                                "column": 4
574                              }
575                            }
576                          },
577                          "loc": {
578                            "start": {
579                              "line": 1,
580                              "column": 1
581                            },
582                            "end": {
583                              "line": 1,
584                              "column": 1
585                            }
586                          }
587                        },
588                        {
589                          "type": "ReturnStatement",
590                          "argument": {
591                            "type": "ThisExpression",
592                            "loc": {
593                              "start": {
594                                "line": 1,
595                                "column": 1
596                              },
597                              "end": {
598                                "line": 1,
599                                "column": 1
600                              }
601                            }
602                          },
603                          "loc": {
604                            "start": {
605                              "line": 1,
606                              "column": 1
607                            },
608                            "end": {
609                              "line": 1,
610                              "column": 1
611                            }
612                          }
613                        }
614                      ],
615                      "loc": {
616                        "start": {
617                          "line": 1,
618                          "column": 1
619                        },
620                        "end": {
621                          "line": 1,
622                          "column": 1
623                        }
624                      }
625                    },
626                    "loc": {
627                      "start": {
628                        "line": 621,
629                        "column": 1
630                      },
631                      "end": {
632                        "line": 621,
633                        "column": 1
634                      }
635                    }
636                  },
637                  "loc": {
638                    "start": {
639                      "line": 1,
640                      "column": 1
641                    },
642                    "end": {
643                      "line": 1,
644                      "column": 1
645                    }
646                  }
647                },
648                "overloads": [],
649                "decorators": [],
650                "loc": {
651                  "start": {
652                    "line": 17,
653                    "column": 3
654                  },
655                  "end": {
656                    "line": 1,
657                    "column": 1
658                  }
659                }
660              }
661            ],
662            "decorators": [],
663            "loc": {
664              "start": {
665                "line": 17,
666                "column": 3
667              },
668              "end": {
669                "line": 19,
670                "column": 4
671              }
672            }
673          },
674          {
675            "type": "MethodDefinition",
676            "key": {
677              "type": "Identifier",
678              "name": "constructor",
679              "decorators": [],
680              "loc": {
681                "start": {
682                  "line": 1,
683                  "column": 1
684                },
685                "end": {
686                  "line": 1,
687                  "column": 1
688                }
689              }
690            },
691            "kind": "constructor",
692            "static": false,
693            "optional": false,
694            "computed": false,
695            "value": {
696              "type": "FunctionExpression",
697              "function": {
698                "type": "ScriptFunction",
699                "id": {
700                  "type": "Identifier",
701                  "name": "constructor",
702                  "decorators": [],
703                  "loc": {
704                    "start": {
705                      "line": 1,
706                      "column": 1
707                    },
708                    "end": {
709                      "line": 1,
710                      "column": 1
711                    }
712                  }
713                },
714                "generator": false,
715                "async": false,
716                "expression": false,
717                "params": [],
718                "body": {
719                  "type": "BlockStatement",
720                  "statements": [],
721                  "loc": {
722                    "start": {
723                      "line": 1,
724                      "column": 1
725                    },
726                    "end": {
727                      "line": 1,
728                      "column": 1
729                    }
730                  }
731                },
732                "loc": {
733                  "start": {
734                    "line": 1,
735                    "column": 1
736                  },
737                  "end": {
738                    "line": 1,
739                    "column": 1
740                  }
741                }
742              },
743              "loc": {
744                "start": {
745                  "line": 1,
746                  "column": 1
747                },
748                "end": {
749                  "line": 1,
750                  "column": 1
751                }
752              }
753            },
754            "overloads": [],
755            "decorators": [],
756            "loc": {
757              "start": {
758                "line": 20,
759                "column": 2
760              },
761              "end": {
762                "line": 20,
763                "column": 2
764              }
765            }
766          }
767        ],
768        "loc": {
769          "start": {
770            "line": 16,
771            "column": 12
772          },
773          "end": {
774            "line": 20,
775            "column": 2
776          }
777        }
778      },
779      "loc": {
780        "start": {
781          "line": 16,
782          "column": 1
783        },
784        "end": {
785          "line": 20,
786          "column": 2
787        }
788      }
789    },
790    {
791      "type": "ClassDeclaration",
792      "definition": {
793        "id": {
794          "type": "Identifier",
795          "name": "ETSGLOBAL",
796          "decorators": [],
797          "loc": {
798            "start": {
799              "line": 1,
800              "column": 1
801            },
802            "end": {
803              "line": 1,
804              "column": 1
805            }
806          }
807        },
808        "superClass": null,
809        "implements": [],
810        "body": [
811          {
812            "type": "MethodDefinition",
813            "key": {
814              "type": "Identifier",
815              "name": "_$init$_",
816              "decorators": [],
817              "loc": {
818                "start": {
819                  "line": 1,
820                  "column": 1
821                },
822                "end": {
823                  "line": 1,
824                  "column": 1
825                }
826              }
827            },
828            "kind": "method",
829            "accessibility": "public",
830            "static": true,
831            "optional": false,
832            "computed": false,
833            "value": {
834              "type": "FunctionExpression",
835              "function": {
836                "type": "ScriptFunction",
837                "id": {
838                  "type": "Identifier",
839                  "name": "_$init$_",
840                  "decorators": [],
841                  "loc": {
842                    "start": {
843                      "line": 1,
844                      "column": 1
845                    },
846                    "end": {
847                      "line": 1,
848                      "column": 1
849                    }
850                  }
851                },
852                "generator": false,
853                "async": false,
854                "expression": false,
855                "params": [],
856                "body": {
857                  "type": "BlockStatement",
858                  "statements": [],
859                  "loc": {
860                    "start": {
861                      "line": 1,
862                      "column": 1
863                    },
864                    "end": {
865                      "line": 1,
866                      "column": 1
867                    }
868                  }
869                },
870                "loc": {
871                  "start": {
872                    "line": 1,
873                    "column": 1
874                  },
875                  "end": {
876                    "line": 1,
877                    "column": 1
878                  }
879                }
880              },
881              "loc": {
882                "start": {
883                  "line": 1,
884                  "column": 1
885                },
886                "end": {
887                  "line": 1,
888                  "column": 1
889                }
890              }
891            },
892            "overloads": [],
893            "decorators": [],
894            "loc": {
895              "start": {
896                "line": 1,
897                "column": 1
898              },
899              "end": {
900                "line": 1,
901                "column": 1
902              }
903            }
904          },
905          {
906            "type": "MethodDefinition",
907            "key": {
908              "type": "Identifier",
909              "name": "main",
910              "decorators": [],
911              "loc": {
912                "start": {
913                  "line": 22,
914                  "column": 10
915                },
916                "end": {
917                  "line": 22,
918                  "column": 14
919                }
920              }
921            },
922            "kind": "method",
923            "accessibility": "public",
924            "static": true,
925            "optional": false,
926            "computed": false,
927            "value": {
928              "type": "FunctionExpression",
929              "function": {
930                "type": "ScriptFunction",
931                "id": {
932                  "type": "Identifier",
933                  "name": "main",
934                  "decorators": [],
935                  "loc": {
936                    "start": {
937                      "line": 22,
938                      "column": 10
939                    },
940                    "end": {
941                      "line": 22,
942                      "column": 14
943                    }
944                  }
945                },
946                "generator": false,
947                "async": false,
948                "expression": false,
949                "params": [],
950                "returnType": {
951                  "type": "ETSPrimitiveType",
952                  "loc": {
953                    "start": {
954                      "line": 22,
955                      "column": 18
956                    },
957                    "end": {
958                      "line": 22,
959                      "column": 22
960                    }
961                  }
962                },
963                "body": {
964                  "type": "BlockStatement",
965                  "statements": [
966                    {
967                      "type": "VariableDeclaration",
968                      "declarations": [
969                        {
970                          "type": "VariableDeclarator",
971                          "id": {
972                            "type": "Identifier",
973                            "name": "x",
974                            "decorators": [],
975                            "loc": {
976                              "start": {
977                                "line": 23,
978                                "column": 9
979                              },
980                              "end": {
981                                "line": 23,
982                                "column": 10
983                              }
984                            }
985                          },
986                          "init": {
987                            "type": "ETSNewClassInstanceExpression",
988                            "typeReference": {
989                              "type": "ETSTypeReference",
990                              "part": {
991                                "type": "ETSTypeReferencePart",
992                                "name": {
993                                  "type": "Identifier",
994                                  "name": "A",
995                                  "decorators": [],
996                                  "loc": {
997                                    "start": {
998                                      "line": 23,
999                                      "column": 17
1000                                    },
1001                                    "end": {
1002                                      "line": 23,
1003                                      "column": 18
1004                                    }
1005                                  }
1006                                },
1007                                "typeParams": {
1008                                  "type": "TSTypeParameterInstantiation",
1009                                  "params": [
1010                                    {
1011                                      "type": "ETSTypeReference",
1012                                      "part": {
1013                                        "type": "ETSTypeReferencePart",
1014                                        "name": {
1015                                          "type": "Identifier",
1016                                          "name": "number",
1017                                          "decorators": [],
1018                                          "loc": {
1019                                            "start": {
1020                                              "line": 23,
1021                                              "column": 19
1022                                            },
1023                                            "end": {
1024                                              "line": 23,
1025                                              "column": 25
1026                                            }
1027                                          }
1028                                        },
1029                                        "loc": {
1030                                          "start": {
1031                                            "line": 23,
1032                                            "column": 19
1033                                          },
1034                                          "end": {
1035                                            "line": 23,
1036                                            "column": 26
1037                                          }
1038                                        }
1039                                      },
1040                                      "loc": {
1041                                        "start": {
1042                                          "line": 23,
1043                                          "column": 19
1044                                        },
1045                                        "end": {
1046                                          "line": 23,
1047                                          "column": 26
1048                                        }
1049                                      }
1050                                    }
1051                                  ],
1052                                  "loc": {
1053                                    "start": {
1054                                      "line": 23,
1055                                      "column": 18
1056                                    },
1057                                    "end": {
1058                                      "line": 23,
1059                                      "column": 26
1060                                    }
1061                                  }
1062                                },
1063                                "loc": {
1064                                  "start": {
1065                                    "line": 23,
1066                                    "column": 17
1067                                  },
1068                                  "end": {
1069                                    "line": 23,
1070                                    "column": 27
1071                                  }
1072                                }
1073                              },
1074                              "loc": {
1075                                "start": {
1076                                  "line": 23,
1077                                  "column": 17
1078                                },
1079                                "end": {
1080                                  "line": 23,
1081                                  "column": 27
1082                                }
1083                              }
1084                            },
1085                            "arguments": [],
1086                            "loc": {
1087                              "start": {
1088                                "line": 23,
1089                                "column": 13
1090                              },
1091                              "end": {
1092                                "line": 24,
1093                                "column": 4
1094                              }
1095                            }
1096                          },
1097                          "loc": {
1098                            "start": {
1099                              "line": 23,
1100                              "column": 9
1101                            },
1102                            "end": {
1103                              "line": 24,
1104                              "column": 4
1105                            }
1106                          }
1107                        }
1108                      ],
1109                      "kind": "const",
1110                      "loc": {
1111                        "start": {
1112                          "line": 23,
1113                          "column": 3
1114                        },
1115                        "end": {
1116                          "line": 24,
1117                          "column": 4
1118                        }
1119                      }
1120                    },
1121                    {
1122                      "type": "ExpressionStatement",
1123                      "expression": {
1124                        "type": "CallExpression",
1125                        "callee": {
1126                          "type": "MemberExpression",
1127                          "object": {
1128                            "type": "Identifier",
1129                            "name": "x",
1130                            "decorators": [],
1131                            "loc": {
1132                              "start": {
1133                                "line": 24,
1134                                "column": 3
1135                              },
1136                              "end": {
1137                                "line": 24,
1138                                "column": 4
1139                              }
1140                            }
1141                          },
1142                          "property": {
1143                            "type": "Identifier",
1144                            "name": "foo",
1145                            "decorators": [],
1146                            "loc": {
1147                              "start": {
1148                                "line": 24,
1149                                "column": 5
1150                              },
1151                              "end": {
1152                                "line": 24,
1153                                "column": 8
1154                              }
1155                            }
1156                          },
1157                          "computed": false,
1158                          "optional": false,
1159                          "loc": {
1160                            "start": {
1161                              "line": 24,
1162                              "column": 3
1163                            },
1164                            "end": {
1165                              "line": 24,
1166                              "column": 8
1167                            }
1168                          }
1169                        },
1170                        "arguments": [
1171                          {
1172                            "type": "ArrowFunctionExpression",
1173                            "function": {
1174                              "type": "ScriptFunction",
1175                              "id": null,
1176                              "generator": false,
1177                              "async": false,
1178                              "expression": true,
1179                              "params": [
1180                                {
1181                                  "type": "ETSParameterExpression",
1182                                  "name": {
1183                                    "type": "Identifier",
1184                                    "name": "a",
1185                                    "typeAnnotation": {
1186                                      "type": "ETSTypeReference",
1187                                      "part": {
1188                                        "type": "ETSTypeReferencePart",
1189                                        "name": {
1190                                          "type": "Identifier",
1191                                          "name": "number",
1192                                          "decorators": [],
1193                                          "loc": {
1194                                            "start": {
1195                                              "line": 24,
1196                                              "column": 13
1197                                            },
1198                                            "end": {
1199                                              "line": 24,
1200                                              "column": 19
1201                                            }
1202                                          }
1203                                        },
1204                                        "loc": {
1205                                          "start": {
1206                                            "line": 24,
1207                                            "column": 13
1208                                          },
1209                                          "end": {
1210                                            "line": 24,
1211                                            "column": 20
1212                                          }
1213                                        }
1214                                      },
1215                                      "loc": {
1216                                        "start": {
1217                                          "line": 24,
1218                                          "column": 13
1219                                        },
1220                                        "end": {
1221                                          "line": 24,
1222                                          "column": 20
1223                                        }
1224                                      }
1225                                    },
1226                                    "decorators": [],
1227                                    "loc": {
1228                                      "start": {
1229                                        "line": 24,
1230                                        "column": 10
1231                                      },
1232                                      "end": {
1233                                        "line": 24,
1234                                        "column": 20
1235                                      }
1236                                    }
1237                                  },
1238                                  "loc": {
1239                                    "start": {
1240                                      "line": 24,
1241                                      "column": 10
1242                                    },
1243                                    "end": {
1244                                      "line": 24,
1245                                      "column": 20
1246                                    }
1247                                  }
1248                                },
1249                                {
1250                                  "type": "ETSParameterExpression",
1251                                  "name": {
1252                                    "type": "Identifier",
1253                                    "name": "b",
1254                                    "typeAnnotation": {
1255                                      "type": "ETSTypeReference",
1256                                      "part": {
1257                                        "type": "ETSTypeReferencePart",
1258                                        "name": {
1259                                          "type": "Identifier",
1260                                          "name": "number",
1261                                          "decorators": [],
1262                                          "loc": {
1263                                            "start": {
1264                                              "line": 24,
1265                                              "column": 24
1266                                            },
1267                                            "end": {
1268                                              "line": 24,
1269                                              "column": 30
1270                                            }
1271                                          }
1272                                        },
1273                                        "loc": {
1274                                          "start": {
1275                                            "line": 24,
1276                                            "column": 24
1277                                          },
1278                                          "end": {
1279                                            "line": 24,
1280                                            "column": 31
1281                                          }
1282                                        }
1283                                      },
1284                                      "loc": {
1285                                        "start": {
1286                                          "line": 24,
1287                                          "column": 24
1288                                        },
1289                                        "end": {
1290                                          "line": 24,
1291                                          "column": 31
1292                                        }
1293                                      }
1294                                    },
1295                                    "decorators": [],
1296                                    "loc": {
1297                                      "start": {
1298                                        "line": 24,
1299                                        "column": 21
1300                                      },
1301                                      "end": {
1302                                        "line": 24,
1303                                        "column": 31
1304                                      }
1305                                    }
1306                                  },
1307                                  "loc": {
1308                                    "start": {
1309                                      "line": 24,
1310                                      "column": 21
1311                                    },
1312                                    "end": {
1313                                      "line": 24,
1314                                      "column": 31
1315                                    }
1316                                  }
1317                                }
1318                              ],
1319                              "returnType": {
1320                                "type": "ETSTypeReference",
1321                                "part": {
1322                                  "type": "ETSTypeReferencePart",
1323                                  "name": {
1324                                    "type": "Identifier",
1325                                    "name": "number",
1326                                    "decorators": [],
1327                                    "loc": {
1328                                      "start": {
1329                                        "line": 24,
1330                                        "column": 33
1331                                      },
1332                                      "end": {
1333                                        "line": 24,
1334                                        "column": 39
1335                                      }
1336                                    }
1337                                  },
1338                                  "loc": {
1339                                    "start": {
1340                                      "line": 24,
1341                                      "column": 33
1342                                    },
1343                                    "end": {
1344                                      "line": 24,
1345                                      "column": 42
1346                                    }
1347                                  }
1348                                },
1349                                "loc": {
1350                                  "start": {
1351                                    "line": 24,
1352                                    "column": 33
1353                                  },
1354                                  "end": {
1355                                    "line": 24,
1356                                    "column": 42
1357                                  }
1358                                }
1359                              },
1360                              "body": {
1361                                "type": "BlockStatement",
1362                                "statements": [
1363                                  {
1364                                    "type": "ReturnStatement",
1365                                    "argument": {
1366                                      "type": "BinaryExpression",
1367                                      "operator": "-",
1368                                      "left": {
1369                                        "type": "Identifier",
1370                                        "name": "b",
1371                                        "decorators": [],
1372                                        "loc": {
1373                                          "start": {
1374                                            "line": 24,
1375                                            "column": 43
1376                                          },
1377                                          "end": {
1378                                            "line": 24,
1379                                            "column": 44
1380                                          }
1381                                        }
1382                                      },
1383                                      "right": {
1384                                        "type": "Identifier",
1385                                        "name": "a",
1386                                        "decorators": [],
1387                                        "loc": {
1388                                          "start": {
1389                                            "line": 24,
1390                                            "column": 47
1391                                          },
1392                                          "end": {
1393                                            "line": 24,
1394                                            "column": 48
1395                                          }
1396                                        }
1397                                      },
1398                                      "loc": {
1399                                        "start": {
1400                                          "line": 24,
1401                                          "column": 43
1402                                        },
1403                                        "end": {
1404                                          "line": 24,
1405                                          "column": 48
1406                                        }
1407                                      }
1408                                    },
1409                                    "loc": {
1410                                      "start": {
1411                                        "line": 1,
1412                                        "column": 1
1413                                      },
1414                                      "end": {
1415                                        "line": 1,
1416                                        "column": 1
1417                                      }
1418                                    }
1419                                  }
1420                                ],
1421                                "loc": {
1422                                  "start": {
1423                                    "line": 1,
1424                                    "column": 1
1425                                  },
1426                                  "end": {
1427                                    "line": 1,
1428                                    "column": 1
1429                                  }
1430                                }
1431                              },
1432                              "loc": {
1433                                "start": {
1434                                  "line": 24,
1435                                  "column": 9
1436                                },
1437                                "end": {
1438                                  "line": 24,
1439                                  "column": 48
1440                                }
1441                              }
1442                            },
1443                            "loc": {
1444                              "start": {
1445                                "line": 24,
1446                                "column": 9
1447                              },
1448                              "end": {
1449                                "line": 24,
1450                                "column": 48
1451                              }
1452                            }
1453                          }
1454                        ],
1455                        "optional": false,
1456                        "loc": {
1457                          "start": {
1458                            "line": 24,
1459                            "column": 3
1460                          },
1461                          "end": {
1462                            "line": 24,
1463                            "column": 49
1464                          }
1465                        }
1466                      },
1467                      "loc": {
1468                        "start": {
1469                          "line": 24,
1470                          "column": 3
1471                        },
1472                        "end": {
1473                          "line": 24,
1474                          "column": 49
1475                        }
1476                      }
1477                    }
1478                  ],
1479                  "loc": {
1480                    "start": {
1481                      "line": 22,
1482                      "column": 23
1483                    },
1484                    "end": {
1485                      "line": 25,
1486                      "column": 2
1487                    }
1488                  }
1489                },
1490                "loc": {
1491                  "start": {
1492                    "line": 22,
1493                    "column": 14
1494                  },
1495                  "end": {
1496                    "line": 25,
1497                    "column": 2
1498                  }
1499                }
1500              },
1501              "loc": {
1502                "start": {
1503                  "line": 22,
1504                  "column": 14
1505                },
1506                "end": {
1507                  "line": 25,
1508                  "column": 2
1509                }
1510              }
1511            },
1512            "overloads": [],
1513            "decorators": [],
1514            "loc": {
1515              "start": {
1516                "line": 22,
1517                "column": 1
1518              },
1519              "end": {
1520                "line": 25,
1521                "column": 2
1522              }
1523            }
1524          }
1525        ],
1526        "loc": {
1527          "start": {
1528            "line": 1,
1529            "column": 1
1530          },
1531          "end": {
1532            "line": 1,
1533            "column": 1
1534          }
1535        }
1536      },
1537      "loc": {
1538        "start": {
1539          "line": 1,
1540          "column": 1
1541        },
1542        "end": {
1543          "line": 1,
1544          "column": 1
1545        }
1546      }
1547    }
1548  ],
1549  "loc": {
1550    "start": {
1551      "line": 1,
1552      "column": 1
1553    },
1554    "end": {
1555      "line": 26,
1556      "column": 1
1557    }
1558  }
1559}
1560