1{
2  "type": "Program",
3  "statements": [
4    {
5      "type": "FunctionDeclaration",
6      "function": {
7        "type": "ScriptFunction",
8        "id": {
9          "type": "Identifier",
10          "name": "func",
11          "loc": {
12            "start": {
13              "line": 17,
14              "column": 10
15            },
16            "end": {
17              "line": 17,
18              "column": 14
19            }
20          }
21        },
22        "generator": false,
23        "async": false,
24        "expression": false,
25        "params": [],
26        "typeParameters": {
27          "type": "TSTypeParameterDeclaration",
28          "params": [
29            {
30              "type": "TSTypeParameter",
31              "name": {
32                "type": "Identifier",
33                "name": "T",
34                "loc": {
35                  "start": {
36                    "line": 17,
37                    "column": 15
38                  },
39                  "end": {
40                    "line": 17,
41                    "column": 16
42                  }
43                }
44              },
45              "in": false,
46              "out": false,
47              "loc": {
48                "start": {
49                  "line": 17,
50                  "column": 15
51                },
52                "end": {
53                  "line": 17,
54                  "column": 17
55                }
56              }
57            }
58          ],
59          "loc": {
60            "start": {
61              "line": 17,
62              "column": 14
63            },
64            "end": {
65              "line": 17,
66              "column": 17
67            }
68          }
69        },
70        "body": {
71          "type": "BlockStatement",
72          "statements": [],
73          "loc": {
74            "start": {
75              "line": 17,
76              "column": 20
77            },
78            "end": {
79              "line": 17,
80              "column": 22
81            }
82          }
83        },
84        "loc": {
85          "start": {
86            "line": 17,
87            "column": 1
88          },
89          "end": {
90            "line": 17,
91            "column": 22
92          }
93        }
94      },
95      "loc": {
96        "start": {
97          "line": 17,
98          "column": 1
99        },
100        "end": {
101          "line": 17,
102          "column": 22
103        }
104      }
105    },
106    {
107      "type": "ExpressionStatement",
108      "expression": {
109        "type": "ChainExpression",
110        "expression": {
111          "type": "CallExpression",
112          "callee": {
113            "type": "Identifier",
114            "name": "func",
115            "loc": {
116              "start": {
117                "line": 18,
118                "column": 1
119              },
120              "end": {
121                "line": 18,
122                "column": 5
123              }
124            }
125          },
126          "arguments": [],
127          "optional": true,
128          "typeParameters": {
129            "type": "TSTypeParameterInstantiation",
130            "params": [
131              {
132                "type": "TSNumberKeyword",
133                "loc": {
134                  "start": {
135                    "line": 18,
136                    "column": 8
137                  },
138                  "end": {
139                    "line": 18,
140                    "column": 14
141                  }
142                }
143              }
144            ],
145            "loc": {
146              "start": {
147                "line": 18,
148                "column": 7
149              },
150              "end": {
151                "line": 18,
152                "column": 15
153              }
154            }
155          },
156          "loc": {
157            "start": {
158              "line": 18,
159              "column": 1
160            },
161            "end": {
162              "line": 18,
163              "column": 17
164            }
165          }
166        },
167        "loc": {
168          "start": {
169            "line": 18,
170            "column": 1
171          },
172          "end": {
173            "line": 18,
174            "column": 17
175          }
176        }
177      },
178      "loc": {
179        "start": {
180          "line": 18,
181          "column": 1
182        },
183        "end": {
184          "line": 18,
185          "column": 18
186        }
187      }
188    },
189    {
190      "type": "ExpressionStatement",
191      "expression": {
192        "type": "ChainExpression",
193        "expression": {
194          "type": "CallExpression",
195          "callee": {
196            "type": "TypeArgumentsExpression",
197            "leftHandExpression": {
198              "type": "Identifier",
199              "name": "func",
200              "loc": {
201                "start": {
202                  "line": 19,
203                  "column": 1
204                },
205                "end": {
206                  "line": 19,
207                  "column": 5
208                }
209              }
210            },
211            "typeArguments": {
212              "type": "TSTypeParameterInstantiation",
213              "params": [
214                {
215                  "type": "TSTypeReference",
216                  "typeName": {
217                    "type": "Identifier",
218                    "name": "Number",
219                    "loc": {
220                      "start": {
221                        "line": 19,
222                        "column": 6
223                      },
224                      "end": {
225                        "line": 19,
226                        "column": 12
227                      }
228                    }
229                  },
230                  "loc": {
231                    "start": {
232                      "line": 19,
233                      "column": 6
234                    },
235                    "end": {
236                      "line": 19,
237                      "column": 12
238                    }
239                  }
240                }
241              ],
242              "loc": {
243                "start": {
244                  "line": 19,
245                  "column": 5
246                },
247                "end": {
248                  "line": 19,
249                  "column": 13
250                }
251              }
252            },
253            "loc": {
254              "start": {
255                "line": 19,
256                "column": 1
257              },
258              "end": {
259                "line": 19,
260                "column": 13
261              }
262            }
263          },
264          "arguments": [],
265          "optional": true,
266          "loc": {
267            "start": {
268              "line": 19,
269              "column": 1
270            },
271            "end": {
272              "line": 19,
273              "column": 17
274            }
275          }
276        },
277        "loc": {
278          "start": {
279            "line": 19,
280            "column": 1
281          },
282          "end": {
283            "line": 19,
284            "column": 17
285          }
286        }
287      },
288      "loc": {
289        "start": {
290          "line": 19,
291          "column": 1
292        },
293        "end": {
294          "line": 19,
295          "column": 18
296        }
297      }
298    }
299  ],
300  "loc": {
301    "start": {
302      "line": 1,
303      "column": 1
304    },
305    "end": {
306      "line": 20,
307      "column": 1
308    }
309  }
310}
311