1{
2  "type": "Program",
3  "statements": [
4    {
5      "type": "ClassDeclaration",
6      "definition": {
7        "id": {
8          "type": "Identifier",
9          "name": "is",
10          "loc": {
11            "start": {
12              "line": 17,
13              "column": 7
14            },
15            "end": {
16              "line": 17,
17              "column": 9
18            }
19          }
20        },
21        "superClass": null,
22        "implements": [],
23        "constructor": {
24          "type": "MethodDefinition",
25          "key": {
26            "type": "Identifier",
27            "name": "constructor",
28            "loc": {
29              "start": {
30                "line": 1,
31                "column": 1
32              },
33              "end": {
34                "line": 1,
35                "column": 1
36              }
37            }
38          },
39          "kind": "constructor",
40          "static": false,
41          "optional": false,
42          "computed": false,
43          "value": {
44            "type": "FunctionExpression",
45            "function": {
46              "type": "ScriptFunction",
47              "id": null,
48              "generator": false,
49              "async": false,
50              "expression": false,
51              "params": [],
52              "body": {
53                "type": "BlockStatement",
54                "statements": [],
55                "loc": {
56                  "start": {
57                    "line": 1,
58                    "column": 1
59                  },
60                  "end": {
61                    "line": 1,
62                    "column": 1
63                  }
64                }
65              },
66              "loc": {
67                "start": {
68                  "line": 1,
69                  "column": 1
70                },
71                "end": {
72                  "line": 1,
73                  "column": 1
74                }
75              }
76            },
77            "loc": {
78              "start": {
79                "line": 1,
80                "column": 1
81              },
82              "end": {
83                "line": 1,
84                "column": 1
85              }
86            }
87          },
88          "overloads": [],
89          "decorators": [],
90          "annotations": [],
91          "loc": {
92            "start": {
93              "line": 17,
94              "column": 1
95            },
96            "end": {
97              "line": 17,
98              "column": 13
99            }
100          }
101        },
102        "body": [],
103        "indexSignatures": [],
104        "loc": {
105          "start": {
106            "line": 17,
107            "column": 10
108          },
109          "end": {
110            "line": 17,
111            "column": 13
112          }
113        }
114      },
115      "decorators": [],
116      "isAnnotationDeclaration": false,
117      "loc": {
118        "start": {
119          "line": 17,
120          "column": 1
121        },
122        "end": {
123          "line": 17,
124          "column": 13
125        }
126      }
127    },
128    {
129      "type": "TSModuleDeclaration",
130      "id": {
131        "type": "Identifier",
132        "name": "is",
133        "loc": {
134          "start": {
135            "line": 19,
136            "column": 11
137          },
138          "end": {
139            "line": 19,
140            "column": 13
141          }
142        }
143      },
144      "body": {
145        "type": "TSModuleBlock",
146        "body": [
147          {
148            "type": "VariableDeclaration",
149            "declarations": [
150              {
151                "type": "VariableDeclarator",
152                "id": {
153                  "type": "Identifier",
154                  "name": "is",
155                  "loc": {
156                    "start": {
157                      "line": 20,
158                      "column": 9
159                    },
160                    "end": {
161                      "line": 20,
162                      "column": 11
163                    }
164                  }
165                },
166                "init": {
167                  "type": "NumberLiteral",
168                  "value": 1,
169                  "loc": {
170                    "start": {
171                      "line": 20,
172                      "column": 14
173                    },
174                    "end": {
175                      "line": 20,
176                      "column": 15
177                    }
178                  }
179                },
180                "loc": {
181                  "start": {
182                    "line": 20,
183                    "column": 9
184                  },
185                  "end": {
186                    "line": 20,
187                    "column": 15
188                  }
189                }
190              }
191            ],
192            "kind": "var",
193            "loc": {
194              "start": {
195                "line": 20,
196                "column": 5
197              },
198              "end": {
199                "line": 20,
200                "column": 16
201              }
202            }
203          },
204          {
205            "type": "VariableDeclaration",
206            "declarations": [
207              {
208                "type": "VariableDeclarator",
209                "id": {
210                  "type": "Identifier",
211                  "name": "asserts",
212                  "loc": {
213                    "start": {
214                      "line": 21,
215                      "column": 9
216                    },
217                    "end": {
218                      "line": 21,
219                      "column": 16
220                    }
221                  }
222                },
223                "init": {
224                  "type": "NumberLiteral",
225                  "value": 2,
226                  "loc": {
227                    "start": {
228                      "line": 21,
229                      "column": 19
230                    },
231                    "end": {
232                      "line": 21,
233                      "column": 20
234                    }
235                  }
236                },
237                "loc": {
238                  "start": {
239                    "line": 21,
240                    "column": 9
241                  },
242                  "end": {
243                    "line": 21,
244                    "column": 20
245                  }
246                }
247              }
248            ],
249            "kind": "var",
250            "loc": {
251              "start": {
252                "line": 21,
253                "column": 5
254              },
255              "end": {
256                "line": 21,
257                "column": 21
258              }
259            }
260          },
261          {
262            "type": "VariableDeclaration",
263            "declarations": [
264              {
265                "type": "VariableDeclarator",
266                "id": {
267                  "type": "Identifier",
268                  "name": "async",
269                  "loc": {
270                    "start": {
271                      "line": 22,
272                      "column": 9
273                    },
274                    "end": {
275                      "line": 22,
276                      "column": 14
277                    }
278                  }
279                },
280                "init": {
281                  "type": "NumberLiteral",
282                  "value": 3,
283                  "loc": {
284                    "start": {
285                      "line": 22,
286                      "column": 17
287                    },
288                    "end": {
289                      "line": 22,
290                      "column": 18
291                    }
292                  }
293                },
294                "loc": {
295                  "start": {
296                    "line": 22,
297                    "column": 9
298                  },
299                  "end": {
300                    "line": 22,
301                    "column": 18
302                  }
303                }
304              }
305            ],
306            "kind": "var",
307            "loc": {
308              "start": {
309                "line": 22,
310                "column": 5
311              },
312              "end": {
313                "line": 22,
314                "column": 19
315              }
316            }
317          }
318        ],
319        "loc": {
320          "start": {
321            "line": 19,
322            "column": 14
323          },
324          "end": {
325            "line": 23,
326            "column": 2
327          }
328        }
329      },
330      "declare": false,
331      "global": false,
332      "loc": {
333        "start": {
334          "line": 19,
335          "column": 1
336        },
337        "end": {
338          "line": 25,
339          "column": 6
340        }
341      }
342    },
343    {
344      "type": "ClassDeclaration",
345      "definition": {
346        "id": {
347          "type": "Identifier",
348          "name": "asserts",
349          "loc": {
350            "start": {
351              "line": 25,
352              "column": 7
353            },
354            "end": {
355              "line": 25,
356              "column": 14
357            }
358          }
359        },
360        "superClass": null,
361        "implements": [],
362        "constructor": {
363          "type": "MethodDefinition",
364          "key": {
365            "type": "Identifier",
366            "name": "constructor",
367            "loc": {
368              "start": {
369                "line": 1,
370                "column": 1
371              },
372              "end": {
373                "line": 1,
374                "column": 1
375              }
376            }
377          },
378          "kind": "constructor",
379          "static": false,
380          "optional": false,
381          "computed": false,
382          "value": {
383            "type": "FunctionExpression",
384            "function": {
385              "type": "ScriptFunction",
386              "id": null,
387              "generator": false,
388              "async": false,
389              "expression": false,
390              "params": [],
391              "body": {
392                "type": "BlockStatement",
393                "statements": [],
394                "loc": {
395                  "start": {
396                    "line": 1,
397                    "column": 1
398                  },
399                  "end": {
400                    "line": 1,
401                    "column": 1
402                  }
403                }
404              },
405              "loc": {
406                "start": {
407                  "line": 1,
408                  "column": 1
409                },
410                "end": {
411                  "line": 1,
412                  "column": 1
413                }
414              }
415            },
416            "loc": {
417              "start": {
418                "line": 1,
419                "column": 1
420              },
421              "end": {
422                "line": 1,
423                "column": 1
424              }
425            }
426          },
427          "overloads": [],
428          "decorators": [],
429          "annotations": [],
430          "loc": {
431            "start": {
432              "line": 25,
433              "column": 1
434            },
435            "end": {
436              "line": 29,
437              "column": 2
438            }
439          }
440        },
441        "body": [
442          {
443            "type": "ClassProperty",
444            "key": {
445              "type": "Identifier",
446              "name": "is",
447              "loc": {
448                "start": {
449                  "line": 26,
450                  "column": 5
451                },
452                "end": {
453                  "line": 26,
454                  "column": 7
455                }
456              }
457            },
458            "value": {
459              "type": "NumberLiteral",
460              "value": 1,
461              "loc": {
462                "start": {
463                  "line": 26,
464                  "column": 10
465                },
466                "end": {
467                  "line": 26,
468                  "column": 11
469                }
470              }
471            },
472            "static": false,
473            "readonly": false,
474            "declare": false,
475            "optional": false,
476            "computed": false,
477            "decorators": [],
478            "loc": {
479              "start": {
480                "line": 26,
481                "column": 5
482              },
483              "end": {
484                "line": 26,
485                "column": 11
486              }
487            }
488          },
489          {
490            "type": "ClassProperty",
491            "key": {
492              "type": "Identifier",
493              "name": "asserts",
494              "loc": {
495                "start": {
496                  "line": 27,
497                  "column": 5
498                },
499                "end": {
500                  "line": 27,
501                  "column": 12
502                }
503              }
504            },
505            "value": {
506              "type": "NumberLiteral",
507              "value": 2,
508              "loc": {
509                "start": {
510                  "line": 27,
511                  "column": 15
512                },
513                "end": {
514                  "line": 27,
515                  "column": 16
516                }
517              }
518            },
519            "static": false,
520            "readonly": false,
521            "declare": false,
522            "optional": false,
523            "computed": false,
524            "decorators": [],
525            "loc": {
526              "start": {
527                "line": 27,
528                "column": 5
529              },
530              "end": {
531                "line": 27,
532                "column": 16
533              }
534            }
535          },
536          {
537            "type": "ClassProperty",
538            "key": {
539              "type": "Identifier",
540              "name": "async",
541              "loc": {
542                "start": {
543                  "line": 28,
544                  "column": 5
545                },
546                "end": {
547                  "line": 28,
548                  "column": 10
549                }
550              }
551            },
552            "value": {
553              "type": "NumberLiteral",
554              "value": 3,
555              "loc": {
556                "start": {
557                  "line": 28,
558                  "column": 13
559                },
560                "end": {
561                  "line": 28,
562                  "column": 14
563                }
564              }
565            },
566            "static": false,
567            "readonly": false,
568            "declare": false,
569            "optional": false,
570            "computed": false,
571            "decorators": [],
572            "loc": {
573              "start": {
574                "line": 28,
575                "column": 5
576              },
577              "end": {
578                "line": 28,
579                "column": 14
580              }
581            }
582          }
583        ],
584        "indexSignatures": [],
585        "loc": {
586          "start": {
587            "line": 25,
588            "column": 15
589          },
590          "end": {
591            "line": 29,
592            "column": 2
593          }
594        }
595      },
596      "decorators": [],
597      "isAnnotationDeclaration": false,
598      "loc": {
599        "start": {
600          "line": 25,
601          "column": 1
602        },
603        "end": {
604          "line": 29,
605          "column": 2
606        }
607      }
608    },
609    {
610      "type": "FunctionDeclaration",
611      "function": {
612        "type": "ScriptFunction",
613        "id": {
614          "type": "Identifier",
615          "name": "async",
616          "loc": {
617            "start": {
618              "line": 31,
619              "column": 10
620            },
621            "end": {
622              "line": 31,
623              "column": 15
624            }
625          }
626        },
627        "generator": false,
628        "async": false,
629        "expression": false,
630        "params": [],
631        "body": {
632          "type": "BlockStatement",
633          "statements": [],
634          "loc": {
635            "start": {
636              "line": 31,
637              "column": 18
638            },
639            "end": {
640              "line": 31,
641              "column": 21
642            }
643          }
644        },
645        "loc": {
646          "start": {
647            "line": 31,
648            "column": 1
649          },
650          "end": {
651            "line": 31,
652            "column": 21
653          }
654        }
655      },
656      "loc": {
657        "start": {
658          "line": 31,
659          "column": 1
660        },
661        "end": {
662          "line": 31,
663          "column": 21
664        }
665      }
666    },
667    {
668      "type": "FunctionDeclaration",
669      "function": {
670        "type": "ScriptFunction",
671        "id": {
672          "type": "Identifier",
673          "name": "assertsUse",
674          "loc": {
675            "start": {
676              "line": 33,
677              "column": 10
678            },
679            "end": {
680              "line": 33,
681              "column": 20
682            }
683          }
684        },
685        "generator": false,
686        "async": false,
687        "expression": false,
688        "params": [
689          {
690            "type": "Identifier",
691            "name": "asserts",
692            "typeAnnotation": {
693              "type": "TSTypeReference",
694              "typeName": {
695                "type": "Identifier",
696                "name": "T",
697                "loc": {
698                  "start": {
699                    "line": 33,
700                    "column": 33
701                  },
702                  "end": {
703                    "line": 33,
704                    "column": 34
705                  }
706                }
707              },
708              "loc": {
709                "start": {
710                  "line": 33,
711                  "column": 33
712                },
713                "end": {
714                  "line": 33,
715                  "column": 34
716                }
717              }
718            },
719            "loc": {
720              "start": {
721                "line": 33,
722                "column": 24
723              },
724              "end": {
725                "line": 33,
726                "column": 31
727              }
728            }
729          }
730        ],
731        "returnType": {
732          "type": "TSTypePredicate",
733          "parameterName": {
734            "type": "Identifier",
735            "name": "asserts",
736            "loc": {
737              "start": {
738                "line": 33,
739                "column": 45
740              },
741              "end": {
742                "line": 33,
743                "column": 52
744              }
745            }
746          },
747          "typeAnnotation": {
748            "type": "TSTypeReference",
749            "typeName": {
750              "type": "Identifier",
751              "name": "NonNullable",
752              "loc": {
753                "start": {
754                  "line": 33,
755                  "column": 56
756                },
757                "end": {
758                  "line": 33,
759                  "column": 67
760                }
761              }
762            },
763            "typeParameters": {
764              "type": "TSTypeParameterInstantiation",
765              "params": [
766                {
767                  "type": "TSTypeReference",
768                  "typeName": {
769                    "type": "Identifier",
770                    "name": "T",
771                    "loc": {
772                      "start": {
773                        "line": 33,
774                        "column": 68
775                      },
776                      "end": {
777                        "line": 33,
778                        "column": 69
779                      }
780                    }
781                  },
782                  "loc": {
783                    "start": {
784                      "line": 33,
785                      "column": 68
786                    },
787                    "end": {
788                      "line": 33,
789                      "column": 69
790                    }
791                  }
792                }
793              ],
794              "loc": {
795                "start": {
796                  "line": 33,
797                  "column": 67
798                },
799                "end": {
800                  "line": 33,
801                  "column": 70
802                }
803              }
804            },
805            "loc": {
806              "start": {
807                "line": 33,
808                "column": 56
809              },
810              "end": {
811                "line": 33,
812                "column": 67
813              }
814            }
815          },
816          "asserts": true,
817          "loc": {
818            "start": {
819              "line": 33,
820              "column": 37
821            },
822            "end": {
823              "line": 33,
824              "column": 67
825            }
826          }
827        },
828        "typeParameters": {
829          "type": "TSTypeParameterDeclaration",
830          "params": [
831            {
832              "type": "TSTypeParameter",
833              "name": {
834                "type": "Identifier",
835                "name": "T",
836                "loc": {
837                  "start": {
838                    "line": 33,
839                    "column": 21
840                  },
841                  "end": {
842                    "line": 33,
843                    "column": 22
844                  }
845                }
846              },
847              "in": false,
848              "out": false,
849              "loc": {
850                "start": {
851                  "line": 33,
852                  "column": 21
853                },
854                "end": {
855                  "line": 33,
856                  "column": 23
857                }
858              }
859            }
860          ],
861          "loc": {
862            "start": {
863              "line": 33,
864              "column": 20
865            },
866            "end": {
867              "line": 33,
868              "column": 23
869            }
870          }
871        },
872        "body": {
873          "type": "BlockStatement",
874          "statements": [],
875          "loc": {
876            "start": {
877              "line": 33,
878              "column": 71
879            },
880            "end": {
881              "line": 33,
882              "column": 74
883            }
884          }
885        },
886        "loc": {
887          "start": {
888            "line": 33,
889            "column": 1
890          },
891          "end": {
892            "line": 33,
893            "column": 74
894          }
895        }
896      },
897      "loc": {
898        "start": {
899          "line": 33,
900          "column": 1
901        },
902        "end": {
903          "line": 33,
904          "column": 74
905        }
906      }
907    }
908  ],
909  "loc": {
910    "start": {
911      "line": 1,
912      "column": 1
913    },
914    "end": {
915      "line": 34,
916      "column": 1
917    }
918  }
919}
920