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