1{
2  "type": "Program",
3  "statements": [
4    {
5      "type": "FunctionDeclaration",
6      "function": {
7        "type": "ScriptFunction",
8        "id": {
9          "type": "Identifier",
10          "name": "func1",
11          "decorators": [],
12          "loc": {
13            "start": {
14              "line": 17,
15              "column": 10
16            },
17            "end": {
18              "line": 17,
19              "column": 15
20            }
21          }
22        },
23        "generator": false,
24        "async": false,
25        "expression": false,
26        "params": [
27          {
28            "type": "Identifier",
29            "name": "a",
30            "typeAnnotation": {
31              "type": "TSNumberKeyword",
32              "loc": {
33                "start": {
34                  "line": 17,
35                  "column": 19
36                },
37                "end": {
38                  "line": 17,
39                  "column": 25
40                }
41              }
42            },
43            "decorators": [],
44            "loc": {
45              "start": {
46                "line": 17,
47                "column": 16
48              },
49              "end": {
50                "line": 17,
51                "column": 17
52              }
53            }
54          },
55          {
56            "type": "Identifier",
57            "name": "b",
58            "typeAnnotation": {
59              "type": "TSStringKeyword",
60              "loc": {
61                "start": {
62                  "line": 17,
63                  "column": 30
64                },
65                "end": {
66                  "line": 17,
67                  "column": 36
68                }
69              }
70            },
71            "decorators": [],
72            "loc": {
73              "start": {
74                "line": 17,
75                "column": 27
76              },
77              "end": {
78                "line": 17,
79                "column": 28
80              }
81            }
82          }
83        ],
84        "body": {
85          "type": "BlockStatement",
86          "statements": [],
87          "loc": {
88            "start": {
89              "line": 17,
90              "column": 38
91            },
92            "end": {
93              "line": 17,
94              "column": 41
95            }
96          }
97        },
98        "loc": {
99          "start": {
100            "line": 17,
101            "column": 1
102          },
103          "end": {
104            "line": 17,
105            "column": 41
106          }
107        }
108      },
109      "loc": {
110        "start": {
111          "line": 17,
112          "column": 1
113        },
114        "end": {
115          "line": 17,
116          "column": 41
117        }
118      }
119    },
120    {
121      "type": "FunctionDeclaration",
122      "function": {
123        "type": "ScriptFunction",
124        "id": {
125          "type": "Identifier",
126          "name": "func2",
127          "decorators": [],
128          "loc": {
129            "start": {
130              "line": 18,
131              "column": 10
132            },
133            "end": {
134              "line": 18,
135              "column": 15
136            }
137          }
138        },
139        "generator": false,
140        "async": false,
141        "expression": false,
142        "params": [
143          {
144            "type": "AssignmentPattern",
145            "left": {
146              "type": "Identifier",
147              "name": "a",
148              "typeAnnotation": {
149                "type": "TSBooleanKeyword",
150                "loc": {
151                  "start": {
152                    "line": 18,
153                    "column": 19
154                  },
155                  "end": {
156                    "line": 18,
157                    "column": 26
158                  }
159                }
160              },
161              "decorators": [],
162              "loc": {
163                "start": {
164                  "line": 18,
165                  "column": 16
166                },
167                "end": {
168                  "line": 18,
169                  "column": 17
170                }
171              }
172            },
173            "right": {
174              "type": "BooleanLiteral",
175              "value": true,
176              "loc": {
177                "start": {
178                  "line": 18,
179                  "column": 29
180                },
181                "end": {
182                  "line": 18,
183                  "column": 33
184                }
185              }
186            },
187            "loc": {
188              "start": {
189                "line": 18,
190                "column": 16
191              },
192              "end": {
193                "line": 18,
194                "column": 33
195              }
196            }
197          },
198          {
199            "type": "RestElement",
200            "argument": {
201              "type": "Identifier",
202              "name": "b",
203              "typeAnnotation": {
204                "type": "TSArrayType",
205                "elementType": {
206                  "type": "TSNumberKeyword",
207                  "loc": {
208                    "start": {
209                      "line": 18,
210                      "column": 41
211                    },
212                    "end": {
213                      "line": 18,
214                      "column": 47
215                    }
216                  }
217                },
218                "loc": {
219                  "start": {
220                    "line": 18,
221                    "column": 41
222                  },
223                  "end": {
224                    "line": 18,
225                    "column": 49
226                  }
227                }
228              },
229              "decorators": [],
230              "loc": {
231                "start": {
232                  "line": 18,
233                  "column": 38
234                },
235                "end": {
236                  "line": 18,
237                  "column": 39
238                }
239              }
240            },
241            "loc": {
242              "start": {
243                "line": 18,
244                "column": 35
245              },
246              "end": {
247                "line": 18,
248                "column": 39
249              }
250            }
251          }
252        ],
253        "body": {
254          "type": "BlockStatement",
255          "statements": [],
256          "loc": {
257            "start": {
258              "line": 18,
259              "column": 51
260            },
261            "end": {
262              "line": 18,
263              "column": 54
264            }
265          }
266        },
267        "loc": {
268          "start": {
269            "line": 18,
270            "column": 1
271          },
272          "end": {
273            "line": 18,
274            "column": 54
275          }
276        }
277      },
278      "loc": {
279        "start": {
280          "line": 18,
281          "column": 1
282        },
283        "end": {
284          "line": 18,
285          "column": 54
286        }
287      }
288    },
289    {
290      "type": "FunctionDeclaration",
291      "function": {
292        "type": "ScriptFunction",
293        "id": {
294          "type": "Identifier",
295          "name": "func3",
296          "decorators": [],
297          "loc": {
298            "start": {
299              "line": 19,
300              "column": 10
301            },
302            "end": {
303              "line": 19,
304              "column": 15
305            }
306          }
307        },
308        "generator": false,
309        "async": false,
310        "expression": false,
311        "params": [
312          {
313            "type": "AssignmentPattern",
314            "left": {
315              "type": "Identifier",
316              "name": "a",
317              "decorators": [],
318              "loc": {
319                "start": {
320                  "line": 19,
321                  "column": 16
322                },
323                "end": {
324                  "line": 19,
325                  "column": 17
326                }
327              }
328            },
329            "right": {
330              "type": "NumberLiteral",
331              "value": 6,
332              "loc": {
333                "start": {
334                  "line": 19,
335                  "column": 20
336                },
337                "end": {
338                  "line": 19,
339                  "column": 21
340                }
341              }
342            },
343            "loc": {
344              "start": {
345                "line": 19,
346                "column": 16
347              },
348              "end": {
349                "line": 19,
350                "column": 21
351              }
352            }
353          },
354          {
355            "type": "ArrayPattern",
356            "elements": [
357              {
358                "type": "Identifier",
359                "name": "c",
360                "decorators": [],
361                "loc": {
362                  "start": {
363                    "line": 19,
364                    "column": 24
365                  },
366                  "end": {
367                    "line": 19,
368                    "column": 25
369                  }
370                }
371              },
372              {
373                "type": "Identifier",
374                "name": "d",
375                "decorators": [],
376                "loc": {
377                  "start": {
378                    "line": 19,
379                    "column": 27
380                  },
381                  "end": {
382                    "line": 19,
383                    "column": 28
384                  }
385                }
386              }
387            ],
388            "loc": {
389              "start": {
390                "line": 19,
391                "column": 23
392              },
393              "end": {
394                "line": 19,
395                "column": 29
396              }
397            }
398          },
399          {
400            "type": "Identifier",
401            "name": "b",
402            "optional": true,
403            "decorators": [],
404            "loc": {
405              "start": {
406                "line": 19,
407                "column": 31
408              },
409              "end": {
410                "line": 19,
411                "column": 32
412              }
413            }
414          }
415        ],
416        "body": {
417          "type": "BlockStatement",
418          "statements": [],
419          "loc": {
420            "start": {
421              "line": 19,
422              "column": 35
423            },
424            "end": {
425              "line": 19,
426              "column": 38
427            }
428          }
429        },
430        "loc": {
431          "start": {
432            "line": 19,
433            "column": 1
434          },
435          "end": {
436            "line": 19,
437            "column": 38
438          }
439        }
440      },
441      "loc": {
442        "start": {
443          "line": 19,
444          "column": 1
445        },
446        "end": {
447          "line": 19,
448          "column": 38
449        }
450      }
451    },
452    {
453      "type": "FunctionDeclaration",
454      "function": {
455        "type": "ScriptFunction",
456        "id": {
457          "type": "Identifier",
458          "name": "func4",
459          "decorators": [],
460          "loc": {
461            "start": {
462              "line": 20,
463              "column": 10
464            },
465            "end": {
466              "line": 20,
467              "column": 15
468            }
469          }
470        },
471        "generator": false,
472        "async": false,
473        "expression": false,
474        "params": [
475          {
476            "type": "ObjectPattern",
477            "properties": [],
478            "typeAnnotation": {
479              "type": "TSNumberKeyword",
480              "loc": {
481                "start": {
482                  "line": 20,
483                  "column": 21
484                },
485                "end": {
486                  "line": 20,
487                  "column": 27
488                }
489              }
490            },
491            "loc": {
492              "start": {
493                "line": 20,
494                "column": 16
495              },
496              "end": {
497                "line": 20,
498                "column": 19
499              }
500            }
501          },
502          {
503            "type": "ArrayPattern",
504            "elements": [
505              {
506                "type": "Identifier",
507                "name": "a",
508                "decorators": [],
509                "loc": {
510                  "start": {
511                    "line": 20,
512                    "column": 30
513                  },
514                  "end": {
515                    "line": 20,
516                    "column": 31
517                  }
518                }
519              },
520              {
521                "type": "Identifier",
522                "name": "b",
523                "decorators": [],
524                "loc": {
525                  "start": {
526                    "line": 20,
527                    "column": 33
528                  },
529                  "end": {
530                    "line": 20,
531                    "column": 34
532                  }
533                }
534              }
535            ],
536            "typeAnnotation": {
537              "type": "TSArrayType",
538              "elementType": {
539                "type": "TSStringKeyword",
540                "loc": {
541                  "start": {
542                    "line": 20,
543                    "column": 37
544                  },
545                  "end": {
546                    "line": 20,
547                    "column": 43
548                  }
549                }
550              },
551              "loc": {
552                "start": {
553                  "line": 20,
554                  "column": 37
555                },
556                "end": {
557                  "line": 20,
558                  "column": 45
559                }
560              }
561            },
562            "loc": {
563              "start": {
564                "line": 20,
565                "column": 29
566              },
567              "end": {
568                "line": 20,
569                "column": 35
570              }
571            }
572          }
573        ],
574        "body": {
575          "type": "BlockStatement",
576          "statements": [],
577          "loc": {
578            "start": {
579              "line": 20,
580              "column": 47
581            },
582            "end": {
583              "line": 20,
584              "column": 50
585            }
586          }
587        },
588        "loc": {
589          "start": {
590            "line": 20,
591            "column": 1
592          },
593          "end": {
594            "line": 20,
595            "column": 50
596          }
597        }
598      },
599      "loc": {
600        "start": {
601          "line": 20,
602          "column": 1
603        },
604        "end": {
605          "line": 20,
606          "column": 50
607        }
608      }
609    },
610    {
611      "type": "FunctionDeclaration",
612      "function": {
613        "type": "ScriptFunction",
614        "id": {
615          "type": "Identifier",
616          "name": "func5",
617          "decorators": [],
618          "loc": {
619            "start": {
620              "line": 21,
621              "column": 10
622            },
623            "end": {
624              "line": 21,
625              "column": 15
626            }
627          }
628        },
629        "generator": false,
630        "async": false,
631        "expression": false,
632        "params": [
633          {
634            "type": "AssignmentPattern",
635            "left": {
636              "type": "ArrayPattern",
637              "elements": [
638                {
639                  "type": "Identifier",
640                  "name": "a",
641                  "decorators": [],
642                  "loc": {
643                    "start": {
644                      "line": 21,
645                      "column": 17
646                    },
647                    "end": {
648                      "line": 21,
649                      "column": 18
650                    }
651                  }
652                },
653                {
654                  "type": "Identifier",
655                  "name": "b",
656                  "decorators": [],
657                  "loc": {
658                    "start": {
659                      "line": 21,
660                      "column": 20
661                    },
662                    "end": {
663                      "line": 21,
664                      "column": 21
665                    }
666                  }
667                }
668              ],
669              "typeAnnotation": {
670                "type": "TSTupleType",
671                "elementTypes": [
672                  {
673                    "type": "TSNumberKeyword",
674                    "loc": {
675                      "start": {
676                        "line": 21,
677                        "column": 25
678                      },
679                      "end": {
680                        "line": 21,
681                        "column": 32
682                      }
683                    }
684                  },
685                  {
686                    "type": "TSStringKeyword",
687                    "loc": {
688                      "start": {
689                        "line": 21,
690                        "column": 33
691                      },
692                      "end": {
693                        "line": 21,
694                        "column": 40
695                      }
696                    }
697                  }
698                ],
699                "loc": {
700                  "start": {
701                    "line": 21,
702                    "column": 24
703                  },
704                  "end": {
705                    "line": 21,
706                    "column": 40
707                  }
708                }
709              },
710              "loc": {
711                "start": {
712                  "line": 21,
713                  "column": 16
714                },
715                "end": {
716                  "line": 21,
717                  "column": 22
718                }
719              }
720            },
721            "right": {
722              "type": "ArrayExpression",
723              "elements": [
724                {
725                  "type": "NumberLiteral",
726                  "value": 1,
727                  "loc": {
728                    "start": {
729                      "line": 21,
730                      "column": 44
731                    },
732                    "end": {
733                      "line": 21,
734                      "column": 45
735                    }
736                  }
737                },
738                {
739                  "type": "StringLiteral",
740                  "value": "foo",
741                  "loc": {
742                    "start": {
743                      "line": 21,
744                      "column": 47
745                    },
746                    "end": {
747                      "line": 21,
748                      "column": 52
749                    }
750                  }
751                }
752              ],
753              "loc": {
754                "start": {
755                  "line": 21,
756                  "column": 43
757                },
758                "end": {
759                  "line": 21,
760                  "column": 53
761                }
762              }
763            },
764            "loc": {
765              "start": {
766                "line": 21,
767                "column": 16
768              },
769              "end": {
770                "line": 21,
771                "column": 53
772              }
773            }
774          }
775        ],
776        "body": {
777          "type": "BlockStatement",
778          "statements": [],
779          "loc": {
780            "start": {
781              "line": 21,
782              "column": 55
783            },
784            "end": {
785              "line": 21,
786              "column": 58
787            }
788          }
789        },
790        "loc": {
791          "start": {
792            "line": 21,
793            "column": 1
794          },
795          "end": {
796            "line": 21,
797            "column": 58
798          }
799        }
800      },
801      "loc": {
802        "start": {
803          "line": 21,
804          "column": 1
805        },
806        "end": {
807          "line": 21,
808          "column": 58
809        }
810      }
811    },
812    {
813      "type": "FunctionDeclaration",
814      "function": {
815        "type": "ScriptFunction",
816        "id": {
817          "type": "Identifier",
818          "name": "func6",
819          "decorators": [],
820          "loc": {
821            "start": {
822              "line": 22,
823              "column": 10
824            },
825            "end": {
826              "line": 22,
827              "column": 15
828            }
829          }
830        },
831        "generator": false,
832        "async": false,
833        "expression": false,
834        "params": [
835          {
836            "type": "AssignmentPattern",
837            "left": {
838              "type": "ObjectPattern",
839              "properties": [
840                {
841                  "type": "Property",
842                  "method": false,
843                  "shorthand": true,
844                  "computed": false,
845                  "key": {
846                    "type": "Identifier",
847                    "name": "a",
848                    "decorators": [],
849                    "loc": {
850                      "start": {
851                        "line": 22,
852                        "column": 18
853                      },
854                      "end": {
855                        "line": 22,
856                        "column": 19
857                      }
858                    }
859                  },
860                  "value": {
861                    "type": "Identifier",
862                    "name": "a",
863                    "decorators": [],
864                    "loc": {
865                      "start": {
866                        "line": 22,
867                        "column": 18
868                      },
869                      "end": {
870                        "line": 22,
871                        "column": 19
872                      }
873                    }
874                  },
875                  "kind": "init",
876                  "loc": {
877                    "start": {
878                      "line": 22,
879                      "column": 18
880                    },
881                    "end": {
882                      "line": 22,
883                      "column": 19
884                    }
885                  }
886                },
887                {
888                  "type": "Property",
889                  "method": false,
890                  "shorthand": true,
891                  "computed": false,
892                  "key": {
893                    "type": "Identifier",
894                    "name": "b",
895                    "decorators": [],
896                    "loc": {
897                      "start": {
898                        "line": 22,
899                        "column": 21
900                      },
901                      "end": {
902                        "line": 22,
903                        "column": 22
904                      }
905                    }
906                  },
907                  "value": {
908                    "type": "Identifier",
909                    "name": "b",
910                    "decorators": [],
911                    "loc": {
912                      "start": {
913                        "line": 22,
914                        "column": 21
915                      },
916                      "end": {
917                        "line": 22,
918                        "column": 22
919                      }
920                    }
921                  },
922                  "kind": "init",
923                  "loc": {
924                    "start": {
925                      "line": 22,
926                      "column": 21
927                    },
928                    "end": {
929                      "line": 22,
930                      "column": 22
931                    }
932                  }
933                }
934              ],
935              "typeAnnotation": {
936                "type": "TSTypeLiteral",
937                "members": [
938                  {
939                    "type": "TSPropertySignature",
940                    "computed": false,
941                    "optional": false,
942                    "readonly": false,
943                    "key": {
944                      "type": "Identifier",
945                      "name": "a",
946                      "decorators": [],
947                      "loc": {
948                        "start": {
949                          "line": 22,
950                          "column": 28
951                        },
952                        "end": {
953                          "line": 22,
954                          "column": 29
955                        }
956                      }
957                    },
958                    "typeAnnotation": {
959                      "type": "TSNumberKeyword",
960                      "loc": {
961                        "start": {
962                          "line": 22,
963                          "column": 31
964                        },
965                        "end": {
966                          "line": 22,
967                          "column": 37
968                        }
969                      }
970                    },
971                    "loc": {
972                      "start": {
973                        "line": 22,
974                        "column": 28
975                      },
976                      "end": {
977                        "line": 22,
978                        "column": 38
979                      }
980                    }
981                  },
982                  {
983                    "type": "TSPropertySignature",
984                    "computed": false,
985                    "optional": false,
986                    "readonly": false,
987                    "key": {
988                      "type": "Identifier",
989                      "name": "b",
990                      "decorators": [],
991                      "loc": {
992                        "start": {
993                          "line": 22,
994                          "column": 39
995                        },
996                        "end": {
997                          "line": 22,
998                          "column": 40
999                        }
1000                      }
1001                    },
1002                    "typeAnnotation": {
1003                      "type": "TSNumberKeyword",
1004                      "loc": {
1005                        "start": {
1006                          "line": 22,
1007                          "column": 42
1008                        },
1009                        "end": {
1010                          "line": 22,
1011                          "column": 48
1012                        }
1013                      }
1014                    },
1015                    "loc": {
1016                      "start": {
1017                        "line": 22,
1018                        "column": 39
1019                      },
1020                      "end": {
1021                        "line": 22,
1022                        "column": 50
1023                      }
1024                    }
1025                  }
1026                ],
1027                "loc": {
1028                  "start": {
1029                    "line": 22,
1030                    "column": 26
1031                  },
1032                  "end": {
1033                    "line": 22,
1034                    "column": 50
1035                  }
1036                }
1037              },
1038              "loc": {
1039                "start": {
1040                  "line": 22,
1041                  "column": 16
1042                },
1043                "end": {
1044                  "line": 22,
1045                  "column": 24
1046                }
1047              }
1048            },
1049            "right": {
1050              "type": "ObjectExpression",
1051              "properties": [
1052                {
1053                  "type": "Property",
1054                  "method": false,
1055                  "shorthand": false,
1056                  "computed": false,
1057                  "key": {
1058                    "type": "Identifier",
1059                    "name": "a",
1060                    "decorators": [],
1061                    "loc": {
1062                      "start": {
1063                        "line": 22,
1064                        "column": 55
1065                      },
1066                      "end": {
1067                        "line": 22,
1068                        "column": 56
1069                      }
1070                    }
1071                  },
1072                  "value": {
1073                    "type": "NumberLiteral",
1074                    "value": 0,
1075                    "loc": {
1076                      "start": {
1077                        "line": 22,
1078                        "column": 58
1079                      },
1080                      "end": {
1081                        "line": 22,
1082                        "column": 59
1083                      }
1084                    }
1085                  },
1086                  "kind": "init",
1087                  "loc": {
1088                    "start": {
1089                      "line": 22,
1090                      "column": 55
1091                    },
1092                    "end": {
1093                      "line": 22,
1094                      "column": 59
1095                    }
1096                  }
1097                },
1098                {
1099                  "type": "Property",
1100                  "method": false,
1101                  "shorthand": false,
1102                  "computed": false,
1103                  "key": {
1104                    "type": "Identifier",
1105                    "name": "b",
1106                    "decorators": [],
1107                    "loc": {
1108                      "start": {
1109                        "line": 22,
1110                        "column": 61
1111                      },
1112                      "end": {
1113                        "line": 22,
1114                        "column": 62
1115                      }
1116                    }
1117                  },
1118                  "value": {
1119                    "type": "NumberLiteral",
1120                    "value": 0,
1121                    "loc": {
1122                      "start": {
1123                        "line": 22,
1124                        "column": 64
1125                      },
1126                      "end": {
1127                        "line": 22,
1128                        "column": 65
1129                      }
1130                    }
1131                  },
1132                  "kind": "init",
1133                  "loc": {
1134                    "start": {
1135                      "line": 22,
1136                      "column": 61
1137                    },
1138                    "end": {
1139                      "line": 22,
1140                      "column": 65
1141                    }
1142                  }
1143                }
1144              ],
1145              "loc": {
1146                "start": {
1147                  "line": 22,
1148                  "column": 53
1149                },
1150                "end": {
1151                  "line": 22,
1152                  "column": 67
1153                }
1154              }
1155            },
1156            "loc": {
1157              "start": {
1158                "line": 22,
1159                "column": 16
1160              },
1161              "end": {
1162                "line": 22,
1163                "column": 67
1164              }
1165            }
1166          }
1167        ],
1168        "body": {
1169          "type": "BlockStatement",
1170          "statements": [],
1171          "loc": {
1172            "start": {
1173              "line": 22,
1174              "column": 69
1175            },
1176            "end": {
1177              "line": 22,
1178              "column": 72
1179            }
1180          }
1181        },
1182        "loc": {
1183          "start": {
1184            "line": 22,
1185            "column": 1
1186          },
1187          "end": {
1188            "line": 22,
1189            "column": 72
1190          }
1191        }
1192      },
1193      "loc": {
1194        "start": {
1195          "line": 22,
1196          "column": 1
1197        },
1198        "end": {
1199          "line": 22,
1200          "column": 72
1201        }
1202      }
1203    },
1204    {
1205      "type": "TSDeclareFunction",
1206      "function": {
1207        "type": "ScriptFunction",
1208        "id": {
1209          "type": "Identifier",
1210          "name": "func7",
1211          "decorators": [],
1212          "loc": {
1213            "start": {
1214              "line": 23,
1215              "column": 18
1216            },
1217            "end": {
1218              "line": 23,
1219              "column": 23
1220            }
1221          }
1222        },
1223        "generator": false,
1224        "async": false,
1225        "expression": false,
1226        "params": [
1227          {
1228            "type": "ArrayPattern",
1229            "elements": [
1230              {
1231                "type": "Identifier",
1232                "name": "a",
1233                "decorators": [],
1234                "loc": {
1235                  "start": {
1236                    "line": 23,
1237                    "column": 25
1238                  },
1239                  "end": {
1240                    "line": 23,
1241                    "column": 26
1242                  }
1243                }
1244              },
1245              {
1246                "type": "Identifier",
1247                "name": "b",
1248                "decorators": [],
1249                "loc": {
1250                  "start": {
1251                    "line": 23,
1252                    "column": 28
1253                  },
1254                  "end": {
1255                    "line": 23,
1256                    "column": 29
1257                  }
1258                }
1259              }
1260            ],
1261            "typeAnnotation": {
1262              "type": "TSTupleType",
1263              "elementTypes": [
1264                {
1265                  "type": "TSNumberKeyword",
1266                  "loc": {
1267                    "start": {
1268                      "line": 23,
1269                      "column": 33
1270                    },
1271                    "end": {
1272                      "line": 23,
1273                      "column": 40
1274                    }
1275                  }
1276                },
1277                {
1278                  "type": "TSStringKeyword",
1279                  "loc": {
1280                    "start": {
1281                      "line": 23,
1282                      "column": 41
1283                    },
1284                    "end": {
1285                      "line": 23,
1286                      "column": 48
1287                    }
1288                  }
1289                }
1290              ],
1291              "loc": {
1292                "start": {
1293                  "line": 23,
1294                  "column": 32
1295                },
1296                "end": {
1297                  "line": 23,
1298                  "column": 48
1299                }
1300              }
1301            },
1302            "loc": {
1303              "start": {
1304                "line": 23,
1305                "column": 24
1306              },
1307              "end": {
1308                "line": 23,
1309                "column": 30
1310              }
1311            }
1312          }
1313        ],
1314        "declare": true,
1315        "loc": {
1316          "start": {
1317            "line": 23,
1318            "column": 9
1319          },
1320          "end": {
1321            "line": 24,
1322            "column": 8
1323          }
1324        }
1325      },
1326      "loc": {
1327        "start": {
1328          "line": 23,
1329          "column": 9
1330        },
1331        "end": {
1332          "line": 24,
1333          "column": 8
1334        }
1335      }
1336    },
1337    {
1338      "type": "TSDeclareFunction",
1339      "function": {
1340        "type": "ScriptFunction",
1341        "id": {
1342          "type": "Identifier",
1343          "name": "func8",
1344          "decorators": [],
1345          "loc": {
1346            "start": {
1347              "line": 24,
1348              "column": 18
1349            },
1350            "end": {
1351              "line": 24,
1352              "column": 23
1353            }
1354          }
1355        },
1356        "generator": false,
1357        "async": false,
1358        "expression": false,
1359        "params": [
1360          {
1361            "type": "ObjectPattern",
1362            "properties": [
1363              {
1364                "type": "Property",
1365                "method": false,
1366                "shorthand": true,
1367                "computed": false,
1368                "key": {
1369                  "type": "Identifier",
1370                  "name": "a",
1371                  "decorators": [],
1372                  "loc": {
1373                    "start": {
1374                      "line": 24,
1375                      "column": 26
1376                    },
1377                    "end": {
1378                      "line": 24,
1379                      "column": 27
1380                    }
1381                  }
1382                },
1383                "value": {
1384                  "type": "Identifier",
1385                  "name": "a",
1386                  "decorators": [],
1387                  "loc": {
1388                    "start": {
1389                      "line": 24,
1390                      "column": 26
1391                    },
1392                    "end": {
1393                      "line": 24,
1394                      "column": 27
1395                    }
1396                  }
1397                },
1398                "kind": "init",
1399                "loc": {
1400                  "start": {
1401                    "line": 24,
1402                    "column": 26
1403                  },
1404                  "end": {
1405                    "line": 24,
1406                    "column": 27
1407                  }
1408                }
1409              },
1410              {
1411                "type": "Property",
1412                "method": false,
1413                "shorthand": true,
1414                "computed": false,
1415                "key": {
1416                  "type": "Identifier",
1417                  "name": "b",
1418                  "decorators": [],
1419                  "loc": {
1420                    "start": {
1421                      "line": 24,
1422                      "column": 29
1423                    },
1424                    "end": {
1425                      "line": 24,
1426                      "column": 30
1427                    }
1428                  }
1429                },
1430                "value": {
1431                  "type": "Identifier",
1432                  "name": "b",
1433                  "decorators": [],
1434                  "loc": {
1435                    "start": {
1436                      "line": 24,
1437                      "column": 29
1438                    },
1439                    "end": {
1440                      "line": 24,
1441                      "column": 30
1442                    }
1443                  }
1444                },
1445                "kind": "init",
1446                "loc": {
1447                  "start": {
1448                    "line": 24,
1449                    "column": 29
1450                  },
1451                  "end": {
1452                    "line": 24,
1453                    "column": 30
1454                  }
1455                }
1456              }
1457            ],
1458            "typeAnnotation": {
1459              "type": "TSTypeLiteral",
1460              "members": [
1461                {
1462                  "type": "TSPropertySignature",
1463                  "computed": false,
1464                  "optional": false,
1465                  "readonly": false,
1466                  "key": {
1467                    "type": "Identifier",
1468                    "name": "a",
1469                    "decorators": [],
1470                    "loc": {
1471                      "start": {
1472                        "line": 24,
1473                        "column": 36
1474                      },
1475                      "end": {
1476                        "line": 24,
1477                        "column": 37
1478                      }
1479                    }
1480                  },
1481                  "typeAnnotation": {
1482                    "type": "TSNumberKeyword",
1483                    "loc": {
1484                      "start": {
1485                        "line": 24,
1486                        "column": 39
1487                      },
1488                      "end": {
1489                        "line": 24,
1490                        "column": 45
1491                      }
1492                    }
1493                  },
1494                  "loc": {
1495                    "start": {
1496                      "line": 24,
1497                      "column": 36
1498                    },
1499                    "end": {
1500                      "line": 24,
1501                      "column": 46
1502                    }
1503                  }
1504                },
1505                {
1506                  "type": "TSPropertySignature",
1507                  "computed": false,
1508                  "optional": false,
1509                  "readonly": false,
1510                  "key": {
1511                    "type": "Identifier",
1512                    "name": "b",
1513                    "decorators": [],
1514                    "loc": {
1515                      "start": {
1516                        "line": 24,
1517                        "column": 47
1518                      },
1519                      "end": {
1520                        "line": 24,
1521                        "column": 48
1522                      }
1523                    }
1524                  },
1525                  "typeAnnotation": {
1526                    "type": "TSNumberKeyword",
1527                    "loc": {
1528                      "start": {
1529                        "line": 24,
1530                        "column": 50
1531                      },
1532                      "end": {
1533                        "line": 24,
1534                        "column": 56
1535                      }
1536                    }
1537                  },
1538                  "loc": {
1539                    "start": {
1540                      "line": 24,
1541                      "column": 47
1542                    },
1543                    "end": {
1544                      "line": 24,
1545                      "column": 58
1546                    }
1547                  }
1548                }
1549              ],
1550              "loc": {
1551                "start": {
1552                  "line": 24,
1553                  "column": 34
1554                },
1555                "end": {
1556                  "line": 24,
1557                  "column": 58
1558                }
1559              }
1560            },
1561            "loc": {
1562              "start": {
1563                "line": 24,
1564                "column": 24
1565              },
1566              "end": {
1567                "line": 24,
1568                "column": 32
1569              }
1570            }
1571          }
1572        ],
1573        "declare": true,
1574        "loc": {
1575          "start": {
1576            "line": 24,
1577            "column": 9
1578          },
1579          "end": {
1580            "line": 25,
1581            "column": 8
1582          }
1583        }
1584      },
1585      "loc": {
1586        "start": {
1587          "line": 24,
1588          "column": 9
1589        },
1590        "end": {
1591          "line": 25,
1592          "column": 8
1593        }
1594      }
1595    },
1596    {
1597      "type": "TSDeclareFunction",
1598      "function": {
1599        "type": "ScriptFunction",
1600        "id": {
1601          "type": "Identifier",
1602          "name": "func9",
1603          "decorators": [],
1604          "loc": {
1605            "start": {
1606              "line": 25,
1607              "column": 18
1608            },
1609            "end": {
1610              "line": 25,
1611              "column": 23
1612            }
1613          }
1614        },
1615        "generator": false,
1616        "async": false,
1617        "expression": false,
1618        "params": [
1619          {
1620            "type": "ArrayPattern",
1621            "elements": [
1622              {
1623                "type": "Identifier",
1624                "name": "a",
1625                "decorators": [],
1626                "loc": {
1627                  "start": {
1628                    "line": 25,
1629                    "column": 25
1630                  },
1631                  "end": {
1632                    "line": 25,
1633                    "column": 26
1634                  }
1635                }
1636              },
1637              {
1638                "type": "Identifier",
1639                "name": "b",
1640                "decorators": [],
1641                "loc": {
1642                  "start": {
1643                    "line": 25,
1644                    "column": 28
1645                  },
1646                  "end": {
1647                    "line": 25,
1648                    "column": 29
1649                  }
1650                }
1651              }
1652            ],
1653            "typeAnnotation": {
1654              "type": "TSTupleType",
1655              "elementTypes": [
1656                {
1657                  "type": "TSNumberKeyword",
1658                  "loc": {
1659                    "start": {
1660                      "line": 25,
1661                      "column": 34
1662                    },
1663                    "end": {
1664                      "line": 25,
1665                      "column": 41
1666                    }
1667                  }
1668                },
1669                {
1670                  "type": "TSStringKeyword",
1671                  "loc": {
1672                    "start": {
1673                      "line": 25,
1674                      "column": 42
1675                    },
1676                    "end": {
1677                      "line": 25,
1678                      "column": 49
1679                    }
1680                  }
1681                }
1682              ],
1683              "loc": {
1684                "start": {
1685                  "line": 25,
1686                  "column": 33
1687                },
1688                "end": {
1689                  "line": 25,
1690                  "column": 49
1691                }
1692              }
1693            },
1694            "optional": true,
1695            "loc": {
1696              "start": {
1697                "line": 25,
1698                "column": 24
1699              },
1700              "end": {
1701                "line": 25,
1702                "column": 30
1703              }
1704            }
1705          }
1706        ],
1707        "declare": true,
1708        "loc": {
1709          "start": {
1710            "line": 25,
1711            "column": 9
1712          },
1713          "end": {
1714            "line": 26,
1715            "column": 8
1716          }
1717        }
1718      },
1719      "loc": {
1720        "start": {
1721          "line": 25,
1722          "column": 9
1723        },
1724        "end": {
1725          "line": 26,
1726          "column": 8
1727        }
1728      }
1729    },
1730    {
1731      "type": "TSDeclareFunction",
1732      "function": {
1733        "type": "ScriptFunction",
1734        "id": {
1735          "type": "Identifier",
1736          "name": "func10",
1737          "decorators": [],
1738          "loc": {
1739            "start": {
1740              "line": 26,
1741              "column": 18
1742            },
1743            "end": {
1744              "line": 26,
1745              "column": 24
1746            }
1747          }
1748        },
1749        "generator": false,
1750        "async": false,
1751        "expression": false,
1752        "params": [
1753          {
1754            "type": "ObjectPattern",
1755            "properties": [
1756              {
1757                "type": "Property",
1758                "method": false,
1759                "shorthand": true,
1760                "computed": false,
1761                "key": {
1762                  "type": "Identifier",
1763                  "name": "a",
1764                  "decorators": [],
1765                  "loc": {
1766                    "start": {
1767                      "line": 26,
1768                      "column": 27
1769                    },
1770                    "end": {
1771                      "line": 26,
1772                      "column": 28
1773                    }
1774                  }
1775                },
1776                "value": {
1777                  "type": "Identifier",
1778                  "name": "a",
1779                  "decorators": [],
1780                  "loc": {
1781                    "start": {
1782                      "line": 26,
1783                      "column": 27
1784                    },
1785                    "end": {
1786                      "line": 26,
1787                      "column": 28
1788                    }
1789                  }
1790                },
1791                "kind": "init",
1792                "loc": {
1793                  "start": {
1794                    "line": 26,
1795                    "column": 27
1796                  },
1797                  "end": {
1798                    "line": 26,
1799                    "column": 28
1800                  }
1801                }
1802              },
1803              {
1804                "type": "Property",
1805                "method": false,
1806                "shorthand": true,
1807                "computed": false,
1808                "key": {
1809                  "type": "Identifier",
1810                  "name": "b",
1811                  "decorators": [],
1812                  "loc": {
1813                    "start": {
1814                      "line": 26,
1815                      "column": 30
1816                    },
1817                    "end": {
1818                      "line": 26,
1819                      "column": 31
1820                    }
1821                  }
1822                },
1823                "value": {
1824                  "type": "Identifier",
1825                  "name": "b",
1826                  "decorators": [],
1827                  "loc": {
1828                    "start": {
1829                      "line": 26,
1830                      "column": 30
1831                    },
1832                    "end": {
1833                      "line": 26,
1834                      "column": 31
1835                    }
1836                  }
1837                },
1838                "kind": "init",
1839                "loc": {
1840                  "start": {
1841                    "line": 26,
1842                    "column": 30
1843                  },
1844                  "end": {
1845                    "line": 26,
1846                    "column": 31
1847                  }
1848                }
1849              }
1850            ],
1851            "typeAnnotation": {
1852              "type": "TSTypeLiteral",
1853              "members": [
1854                {
1855                  "type": "TSPropertySignature",
1856                  "computed": false,
1857                  "optional": false,
1858                  "readonly": false,
1859                  "key": {
1860                    "type": "Identifier",
1861                    "name": "a",
1862                    "decorators": [],
1863                    "loc": {
1864                      "start": {
1865                        "line": 26,
1866                        "column": 38
1867                      },
1868                      "end": {
1869                        "line": 26,
1870                        "column": 39
1871                      }
1872                    }
1873                  },
1874                  "typeAnnotation": {
1875                    "type": "TSNumberKeyword",
1876                    "loc": {
1877                      "start": {
1878                        "line": 26,
1879                        "column": 41
1880                      },
1881                      "end": {
1882                        "line": 26,
1883                        "column": 47
1884                      }
1885                    }
1886                  },
1887                  "loc": {
1888                    "start": {
1889                      "line": 26,
1890                      "column": 38
1891                    },
1892                    "end": {
1893                      "line": 26,
1894                      "column": 48
1895                    }
1896                  }
1897                },
1898                {
1899                  "type": "TSPropertySignature",
1900                  "computed": false,
1901                  "optional": false,
1902                  "readonly": false,
1903                  "key": {
1904                    "type": "Identifier",
1905                    "name": "b",
1906                    "decorators": [],
1907                    "loc": {
1908                      "start": {
1909                        "line": 26,
1910                        "column": 49
1911                      },
1912                      "end": {
1913                        "line": 26,
1914                        "column": 50
1915                      }
1916                    }
1917                  },
1918                  "typeAnnotation": {
1919                    "type": "TSNumberKeyword",
1920                    "loc": {
1921                      "start": {
1922                        "line": 26,
1923                        "column": 52
1924                      },
1925                      "end": {
1926                        "line": 26,
1927                        "column": 58
1928                      }
1929                    }
1930                  },
1931                  "loc": {
1932                    "start": {
1933                      "line": 26,
1934                      "column": 49
1935                    },
1936                    "end": {
1937                      "line": 26,
1938                      "column": 60
1939                    }
1940                  }
1941                }
1942              ],
1943              "loc": {
1944                "start": {
1945                  "line": 26,
1946                  "column": 36
1947                },
1948                "end": {
1949                  "line": 26,
1950                  "column": 60
1951                }
1952              }
1953            },
1954            "optional": true,
1955            "loc": {
1956              "start": {
1957                "line": 26,
1958                "column": 25
1959              },
1960              "end": {
1961                "line": 26,
1962                "column": 33
1963              }
1964            }
1965          }
1966        ],
1967        "declare": true,
1968        "loc": {
1969          "start": {
1970            "line": 26,
1971            "column": 9
1972          },
1973          "end": {
1974            "line": 28,
1975            "column": 10
1976          }
1977        }
1978      },
1979      "loc": {
1980        "start": {
1981          "line": 26,
1982          "column": 9
1983        },
1984        "end": {
1985          "line": 28,
1986          "column": 10
1987        }
1988      }
1989    },
1990    {
1991      "type": "TSInterfaceDeclaration",
1992      "body": {
1993        "type": "TSInterfaceBody",
1994        "body": [
1995          {
1996            "type": "TSCallSignatureDeclaration",
1997            "params": [
1998              {
1999                "type": "Identifier",
2000                "name": "a",
2001                "typeAnnotation": {
2002                  "type": "TSNumberKeyword",
2003                  "loc": {
2004                    "start": {
2005                      "line": 29,
2006                      "column": 9
2007                    },
2008                    "end": {
2009                      "line": 29,
2010                      "column": 15
2011                    }
2012                  }
2013                },
2014                "decorators": [],
2015                "loc": {
2016                  "start": {
2017                    "line": 29,
2018                    "column": 6
2019                  },
2020                  "end": {
2021                    "line": 29,
2022                    "column": 7
2023                  }
2024                }
2025              },
2026              {
2027                "type": "ObjectPattern",
2028                "properties": [
2029                  {
2030                    "type": "Property",
2031                    "method": false,
2032                    "shorthand": true,
2033                    "computed": false,
2034                    "key": {
2035                      "type": "Identifier",
2036                      "name": "b",
2037                      "decorators": [],
2038                      "loc": {
2039                        "start": {
2040                          "line": 29,
2041                          "column": 19
2042                        },
2043                        "end": {
2044                          "line": 29,
2045                          "column": 20
2046                        }
2047                      }
2048                    },
2049                    "value": {
2050                      "type": "Identifier",
2051                      "name": "b",
2052                      "decorators": [],
2053                      "loc": {
2054                        "start": {
2055                          "line": 29,
2056                          "column": 19
2057                        },
2058                        "end": {
2059                          "line": 29,
2060                          "column": 20
2061                        }
2062                      }
2063                    },
2064                    "kind": "init",
2065                    "loc": {
2066                      "start": {
2067                        "line": 29,
2068                        "column": 19
2069                      },
2070                      "end": {
2071                        "line": 29,
2072                        "column": 20
2073                      }
2074                    }
2075                  },
2076                  {
2077                    "type": "Property",
2078                    "method": false,
2079                    "shorthand": true,
2080                    "computed": false,
2081                    "key": {
2082                      "type": "Identifier",
2083                      "name": "c",
2084                      "decorators": [],
2085                      "loc": {
2086                        "start": {
2087                          "line": 29,
2088                          "column": 22
2089                        },
2090                        "end": {
2091                          "line": 29,
2092                          "column": 23
2093                        }
2094                      }
2095                    },
2096                    "value": {
2097                      "type": "Identifier",
2098                      "name": "c",
2099                      "decorators": [],
2100                      "loc": {
2101                        "start": {
2102                          "line": 29,
2103                          "column": 22
2104                        },
2105                        "end": {
2106                          "line": 29,
2107                          "column": 23
2108                        }
2109                      }
2110                    },
2111                    "kind": "init",
2112                    "loc": {
2113                      "start": {
2114                        "line": 29,
2115                        "column": 22
2116                      },
2117                      "end": {
2118                        "line": 29,
2119                        "column": 23
2120                      }
2121                    }
2122                  }
2123                ],
2124                "typeAnnotation": {
2125                  "type": "TSTypeLiteral",
2126                  "members": [
2127                    {
2128                      "type": "TSPropertySignature",
2129                      "computed": false,
2130                      "optional": true,
2131                      "readonly": false,
2132                      "key": {
2133                        "type": "Identifier",
2134                        "name": "b",
2135                        "decorators": [],
2136                        "loc": {
2137                          "start": {
2138                            "line": 30,
2139                            "column": 9
2140                          },
2141                          "end": {
2142                            "line": 30,
2143                            "column": 10
2144                          }
2145                        }
2146                      },
2147                      "typeAnnotation": {
2148                        "type": "TSBooleanKeyword",
2149                        "loc": {
2150                          "start": {
2151                            "line": 30,
2152                            "column": 13
2153                          },
2154                          "end": {
2155                            "line": 30,
2156                            "column": 20
2157                          }
2158                        }
2159                      },
2160                      "loc": {
2161                        "start": {
2162                          "line": 30,
2163                          "column": 9
2164                        },
2165                        "end": {
2166                          "line": 30,
2167                          "column": 21
2168                        }
2169                      }
2170                    },
2171                    {
2172                      "type": "TSPropertySignature",
2173                      "computed": false,
2174                      "optional": true,
2175                      "readonly": false,
2176                      "key": {
2177                        "type": "Identifier",
2178                        "name": "c",
2179                        "decorators": [],
2180                        "loc": {
2181                          "start": {
2182                            "line": 31,
2183                            "column": 9
2184                          },
2185                          "end": {
2186                            "line": 31,
2187                            "column": 10
2188                          }
2189                        }
2190                      },
2191                      "typeAnnotation": {
2192                        "type": "TSAnyKeyword",
2193                        "loc": {
2194                          "start": {
2195                            "line": 31,
2196                            "column": 13
2197                          },
2198                          "end": {
2199                            "line": 31,
2200                            "column": 16
2201                          }
2202                        }
2203                      },
2204                      "loc": {
2205                        "start": {
2206                          "line": 31,
2207                          "column": 9
2208                        },
2209                        "end": {
2210                          "line": 31,
2211                          "column": 17
2212                        }
2213                      }
2214                    }
2215                  ],
2216                  "loc": {
2217                    "start": {
2218                      "line": 29,
2219                      "column": 28
2220                    },
2221                    "end": {
2222                      "line": 32,
2223                      "column": 6
2224                    }
2225                  }
2226                },
2227                "optional": true,
2228                "loc": {
2229                  "start": {
2230                    "line": 29,
2231                    "column": 17
2232                  },
2233                  "end": {
2234                    "line": 29,
2235                    "column": 25
2236                  }
2237                }
2238              }
2239            ],
2240            "returnType": {
2241              "type": "TSStringKeyword",
2242              "loc": {
2243                "start": {
2244                  "line": 32,
2245                  "column": 9
2246                },
2247                "end": {
2248                  "line": 32,
2249                  "column": 15
2250                }
2251              }
2252            },
2253            "loc": {
2254              "start": {
2255                "line": 29,
2256                "column": 5
2257              },
2258              "end": {
2259                "line": 32,
2260                "column": 16
2261              }
2262            }
2263          }
2264        ],
2265        "loc": {
2266          "start": {
2267            "line": 28,
2268            "column": 22
2269          },
2270          "end": {
2271            "line": 33,
2272            "column": 2
2273          }
2274        }
2275      },
2276      "id": {
2277        "type": "Identifier",
2278        "name": "Interface1",
2279        "decorators": [],
2280        "loc": {
2281          "start": {
2282            "line": 28,
2283            "column": 11
2284          },
2285          "end": {
2286            "line": 28,
2287            "column": 21
2288          }
2289        }
2290      },
2291      "extends": [],
2292      "loc": {
2293        "start": {
2294          "line": 28,
2295          "column": 1
2296        },
2297        "end": {
2298          "line": 33,
2299          "column": 2
2300        }
2301      }
2302    }
2303  ],
2304  "loc": {
2305    "start": {
2306      "line": 1,
2307      "column": 1
2308    },
2309    "end": {
2310      "line": 33,
2311      "column": 2
2312    }
2313  }
2314}
2315