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