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