hermes-estree 0.22.0 → 0.23.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -163,6 +163,7 @@ import type {
163
163
  OpaqueType,
164
164
  OptionalIndexedAccessType,
165
165
  PrivateIdentifier,
166
+ Program,
166
167
  Property,
167
168
  PropertyDefinition,
168
169
  QualifiedTypeIdentifier,
@@ -214,1302 +215,1307 @@ import type {
214
215
  */
215
216
 
216
217
 
217
- export function isIdentifier(node /*: ESNode | Token */) /*: node is (Identifier | MostTokens) */ {
218
+ export function isIdentifier(node /*: ESNode | Token */) /*: implies node is (Identifier | MostTokens) */ {
218
219
  return node.type === 'Identifier';
219
220
  }
220
221
 
221
222
 
222
- export function isJSXIdentifier(node /*: ESNode | Token */) /*: node is (JSXIdentifier | MostTokens) */ {
223
+ export function isJSXIdentifier(node /*: ESNode | Token */) /*: implies node is (JSXIdentifier | MostTokens) */ {
223
224
  return node.type === 'JSXIdentifier';
224
225
  }
225
226
 
226
227
 
227
- export function isJSXText(node /*: ESNode | Token */) /*: node is (JSXText | MostTokens) */ {
228
+ export function isJSXText(node /*: ESNode | Token */) /*: implies node is (JSXText | MostTokens) */ {
228
229
  return node.type === 'JSXText';
229
230
  }
230
231
 
231
232
 
232
- export function isAnyTypeAnnotation(node /*: ESNode | Token */) /*: node is AnyTypeAnnotation */ {
233
+ export function isAnyTypeAnnotation(node /*: ESNode | Token */) /*: implies node is AnyTypeAnnotation */ {
233
234
  return node.type === 'AnyTypeAnnotation';
234
235
  }
235
236
 
236
237
 
237
- export function isArrayExpression(node /*: ESNode | Token */) /*: node is ArrayExpression */ {
238
+ export function isArrayExpression(node /*: ESNode | Token */) /*: implies node is ArrayExpression */ {
238
239
  return node.type === 'ArrayExpression';
239
240
  }
240
241
 
241
242
 
242
- export function isArrayPattern(node /*: ESNode | Token */) /*: node is ArrayPattern */ {
243
+ export function isArrayPattern(node /*: ESNode | Token */) /*: implies node is ArrayPattern */ {
243
244
  return node.type === 'ArrayPattern';
244
245
  }
245
246
 
246
247
 
247
- export function isArrayTypeAnnotation(node /*: ESNode | Token */) /*: node is ArrayTypeAnnotation */ {
248
+ export function isArrayTypeAnnotation(node /*: ESNode | Token */) /*: implies node is ArrayTypeAnnotation */ {
248
249
  return node.type === 'ArrayTypeAnnotation';
249
250
  }
250
251
 
251
252
 
252
- export function isArrowFunctionExpression(node /*: ESNode | Token */) /*: node is ArrowFunctionExpression */ {
253
+ export function isArrowFunctionExpression(node /*: ESNode | Token */) /*: implies node is ArrowFunctionExpression */ {
253
254
  return node.type === 'ArrowFunctionExpression';
254
255
  }
255
256
 
256
257
 
257
- export function isAsConstExpression(node /*: ESNode | Token */) /*: node is AsConstExpression */ {
258
+ export function isAsConstExpression(node /*: ESNode | Token */) /*: implies node is AsConstExpression */ {
258
259
  return node.type === 'AsConstExpression';
259
260
  }
260
261
 
261
262
 
262
- export function isAsExpression(node /*: ESNode | Token */) /*: node is AsExpression */ {
263
+ export function isAsExpression(node /*: ESNode | Token */) /*: implies node is AsExpression */ {
263
264
  return node.type === 'AsExpression';
264
265
  }
265
266
 
266
267
 
267
- export function isAssignmentExpression(node /*: ESNode | Token */) /*: node is AssignmentExpression */ {
268
+ export function isAssignmentExpression(node /*: ESNode | Token */) /*: implies node is AssignmentExpression */ {
268
269
  return node.type === 'AssignmentExpression';
269
270
  }
270
271
 
271
272
 
272
- export function isAssignmentPattern(node /*: ESNode | Token */) /*: node is AssignmentPattern */ {
273
+ export function isAssignmentPattern(node /*: ESNode | Token */) /*: implies node is AssignmentPattern */ {
273
274
  return node.type === 'AssignmentPattern';
274
275
  }
275
276
 
276
277
 
277
- export function isAwaitExpression(node /*: ESNode | Token */) /*: node is AwaitExpression */ {
278
+ export function isAwaitExpression(node /*: ESNode | Token */) /*: implies node is AwaitExpression */ {
278
279
  return node.type === 'AwaitExpression';
279
280
  }
280
281
 
281
282
 
282
- export function isBigIntLiteralTypeAnnotation(node /*: ESNode | Token */) /*: node is BigIntLiteralTypeAnnotation */ {
283
+ export function isBigIntLiteralTypeAnnotation(node /*: ESNode | Token */) /*: implies node is BigIntLiteralTypeAnnotation */ {
283
284
  return node.type === 'BigIntLiteralTypeAnnotation';
284
285
  }
285
286
 
286
287
 
287
- export function isBigIntTypeAnnotation(node /*: ESNode | Token */) /*: node is BigIntTypeAnnotation */ {
288
+ export function isBigIntTypeAnnotation(node /*: ESNode | Token */) /*: implies node is BigIntTypeAnnotation */ {
288
289
  return node.type === 'BigIntTypeAnnotation';
289
290
  }
290
291
 
291
292
 
292
- export function isBinaryExpression(node /*: ESNode | Token */) /*: node is BinaryExpression */ {
293
+ export function isBinaryExpression(node /*: ESNode | Token */) /*: implies node is BinaryExpression */ {
293
294
  return node.type === 'BinaryExpression';
294
295
  }
295
296
 
296
297
 
297
- export function isBlockStatement(node /*: ESNode | Token */) /*: node is BlockStatement */ {
298
+ export function isBlockStatement(node /*: ESNode | Token */) /*: implies node is BlockStatement */ {
298
299
  return node.type === 'BlockStatement';
299
300
  }
300
301
 
301
302
 
302
- export function isBooleanLiteralTypeAnnotation(node /*: ESNode | Token */) /*: node is BooleanLiteralTypeAnnotation */ {
303
+ export function isBooleanLiteralTypeAnnotation(node /*: ESNode | Token */) /*: implies node is BooleanLiteralTypeAnnotation */ {
303
304
  return node.type === 'BooleanLiteralTypeAnnotation';
304
305
  }
305
306
 
306
307
 
307
- export function isBooleanTypeAnnotation(node /*: ESNode | Token */) /*: node is BooleanTypeAnnotation */ {
308
+ export function isBooleanTypeAnnotation(node /*: ESNode | Token */) /*: implies node is BooleanTypeAnnotation */ {
308
309
  return node.type === 'BooleanTypeAnnotation';
309
310
  }
310
311
 
311
312
 
312
- export function isBreakStatement(node /*: ESNode | Token */) /*: node is BreakStatement */ {
313
+ export function isBreakStatement(node /*: ESNode | Token */) /*: implies node is BreakStatement */ {
313
314
  return node.type === 'BreakStatement';
314
315
  }
315
316
 
316
317
 
317
- export function isCallExpression(node /*: ESNode | Token */) /*: node is CallExpression */ {
318
+ export function isCallExpression(node /*: ESNode | Token */) /*: implies node is CallExpression */ {
318
319
  return node.type === 'CallExpression';
319
320
  }
320
321
 
321
322
 
322
- export function isCatchClause(node /*: ESNode | Token */) /*: node is CatchClause */ {
323
+ export function isCatchClause(node /*: ESNode | Token */) /*: implies node is CatchClause */ {
323
324
  return node.type === 'CatchClause';
324
325
  }
325
326
 
326
327
 
327
- export function isChainExpression(node /*: ESNode | Token */) /*: node is ChainExpression */ {
328
+ export function isChainExpression(node /*: ESNode | Token */) /*: implies node is ChainExpression */ {
328
329
  return node.type === 'ChainExpression';
329
330
  }
330
331
 
331
332
 
332
- export function isClassBody(node /*: ESNode | Token */) /*: node is ClassBody */ {
333
+ export function isClassBody(node /*: ESNode | Token */) /*: implies node is ClassBody */ {
333
334
  return node.type === 'ClassBody';
334
335
  }
335
336
 
336
337
 
337
- export function isClassDeclaration(node /*: ESNode | Token */) /*: node is ClassDeclaration */ {
338
+ export function isClassDeclaration(node /*: ESNode | Token */) /*: implies node is ClassDeclaration */ {
338
339
  return node.type === 'ClassDeclaration';
339
340
  }
340
341
 
341
342
 
342
- export function isClassExpression(node /*: ESNode | Token */) /*: node is ClassExpression */ {
343
+ export function isClassExpression(node /*: ESNode | Token */) /*: implies node is ClassExpression */ {
343
344
  return node.type === 'ClassExpression';
344
345
  }
345
346
 
346
347
 
347
- export function isClassImplements(node /*: ESNode | Token */) /*: node is ClassImplements */ {
348
+ export function isClassImplements(node /*: ESNode | Token */) /*: implies node is ClassImplements */ {
348
349
  return node.type === 'ClassImplements';
349
350
  }
350
351
 
351
352
 
352
- export function isComponentDeclaration(node /*: ESNode | Token */) /*: node is ComponentDeclaration */ {
353
+ export function isComponentDeclaration(node /*: ESNode | Token */) /*: implies node is ComponentDeclaration */ {
353
354
  return node.type === 'ComponentDeclaration';
354
355
  }
355
356
 
356
357
 
357
- export function isComponentParameter(node /*: ESNode | Token */) /*: node is ComponentParameter */ {
358
+ export function isComponentParameter(node /*: ESNode | Token */) /*: implies node is ComponentParameter */ {
358
359
  return node.type === 'ComponentParameter';
359
360
  }
360
361
 
361
362
 
362
- export function isComponentTypeAnnotation(node /*: ESNode | Token */) /*: node is ComponentTypeAnnotation */ {
363
+ export function isComponentTypeAnnotation(node /*: ESNode | Token */) /*: implies node is ComponentTypeAnnotation */ {
363
364
  return node.type === 'ComponentTypeAnnotation';
364
365
  }
365
366
 
366
367
 
367
- export function isComponentTypeParameter(node /*: ESNode | Token */) /*: node is ComponentTypeParameter */ {
368
+ export function isComponentTypeParameter(node /*: ESNode | Token */) /*: implies node is ComponentTypeParameter */ {
368
369
  return node.type === 'ComponentTypeParameter';
369
370
  }
370
371
 
371
372
 
372
- export function isConditionalExpression(node /*: ESNode | Token */) /*: node is ConditionalExpression */ {
373
+ export function isConditionalExpression(node /*: ESNode | Token */) /*: implies node is ConditionalExpression */ {
373
374
  return node.type === 'ConditionalExpression';
374
375
  }
375
376
 
376
377
 
377
- export function isConditionalTypeAnnotation(node /*: ESNode | Token */) /*: node is ConditionalTypeAnnotation */ {
378
+ export function isConditionalTypeAnnotation(node /*: ESNode | Token */) /*: implies node is ConditionalTypeAnnotation */ {
378
379
  return node.type === 'ConditionalTypeAnnotation';
379
380
  }
380
381
 
381
382
 
382
- export function isContinueStatement(node /*: ESNode | Token */) /*: node is ContinueStatement */ {
383
+ export function isContinueStatement(node /*: ESNode | Token */) /*: implies node is ContinueStatement */ {
383
384
  return node.type === 'ContinueStatement';
384
385
  }
385
386
 
386
387
 
387
- export function isDebuggerStatement(node /*: ESNode | Token */) /*: node is DebuggerStatement */ {
388
+ export function isDebuggerStatement(node /*: ESNode | Token */) /*: implies node is DebuggerStatement */ {
388
389
  return node.type === 'DebuggerStatement';
389
390
  }
390
391
 
391
392
 
392
- export function isDeclareClass(node /*: ESNode | Token */) /*: node is DeclareClass */ {
393
+ export function isDeclareClass(node /*: ESNode | Token */) /*: implies node is DeclareClass */ {
393
394
  return node.type === 'DeclareClass';
394
395
  }
395
396
 
396
397
 
397
- export function isDeclareComponent(node /*: ESNode | Token */) /*: node is DeclareComponent */ {
398
+ export function isDeclareComponent(node /*: ESNode | Token */) /*: implies node is DeclareComponent */ {
398
399
  return node.type === 'DeclareComponent';
399
400
  }
400
401
 
401
402
 
402
- export function isDeclaredPredicate(node /*: ESNode | Token */) /*: node is DeclaredPredicate */ {
403
+ export function isDeclaredPredicate(node /*: ESNode | Token */) /*: implies node is DeclaredPredicate */ {
403
404
  return node.type === 'DeclaredPredicate';
404
405
  }
405
406
 
406
407
 
407
- export function isDeclareEnum(node /*: ESNode | Token */) /*: node is DeclareEnum */ {
408
+ export function isDeclareEnum(node /*: ESNode | Token */) /*: implies node is DeclareEnum */ {
408
409
  return node.type === 'DeclareEnum';
409
410
  }
410
411
 
411
412
 
412
- export function isDeclareExportAllDeclaration(node /*: ESNode | Token */) /*: node is DeclareExportAllDeclaration */ {
413
+ export function isDeclareExportAllDeclaration(node /*: ESNode | Token */) /*: implies node is DeclareExportAllDeclaration */ {
413
414
  return node.type === 'DeclareExportAllDeclaration';
414
415
  }
415
416
 
416
417
 
417
- export function isDeclareExportDeclaration(node /*: ESNode | Token */) /*: node is DeclareExportDeclaration */ {
418
+ export function isDeclareExportDeclaration(node /*: ESNode | Token */) /*: implies node is DeclareExportDeclaration */ {
418
419
  return node.type === 'DeclareExportDeclaration';
419
420
  }
420
421
 
421
422
 
422
- export function isDeclareFunction(node /*: ESNode | Token */) /*: node is DeclareFunction */ {
423
+ export function isDeclareFunction(node /*: ESNode | Token */) /*: implies node is DeclareFunction */ {
423
424
  return node.type === 'DeclareFunction';
424
425
  }
425
426
 
426
427
 
427
- export function isDeclareHook(node /*: ESNode | Token */) /*: node is DeclareHook */ {
428
+ export function isDeclareHook(node /*: ESNode | Token */) /*: implies node is DeclareHook */ {
428
429
  return node.type === 'DeclareHook';
429
430
  }
430
431
 
431
432
 
432
- export function isDeclareInterface(node /*: ESNode | Token */) /*: node is DeclareInterface */ {
433
+ export function isDeclareInterface(node /*: ESNode | Token */) /*: implies node is DeclareInterface */ {
433
434
  return node.type === 'DeclareInterface';
434
435
  }
435
436
 
436
437
 
437
- export function isDeclareModule(node /*: ESNode | Token */) /*: node is DeclareModule */ {
438
+ export function isDeclareModule(node /*: ESNode | Token */) /*: implies node is DeclareModule */ {
438
439
  return node.type === 'DeclareModule';
439
440
  }
440
441
 
441
442
 
442
- export function isDeclareModuleExports(node /*: ESNode | Token */) /*: node is DeclareModuleExports */ {
443
+ export function isDeclareModuleExports(node /*: ESNode | Token */) /*: implies node is DeclareModuleExports */ {
443
444
  return node.type === 'DeclareModuleExports';
444
445
  }
445
446
 
446
447
 
447
- export function isDeclareNamespace(node /*: ESNode | Token */) /*: node is DeclareNamespace */ {
448
+ export function isDeclareNamespace(node /*: ESNode | Token */) /*: implies node is DeclareNamespace */ {
448
449
  return node.type === 'DeclareNamespace';
449
450
  }
450
451
 
451
452
 
452
- export function isDeclareOpaqueType(node /*: ESNode | Token */) /*: node is DeclareOpaqueType */ {
453
+ export function isDeclareOpaqueType(node /*: ESNode | Token */) /*: implies node is DeclareOpaqueType */ {
453
454
  return node.type === 'DeclareOpaqueType';
454
455
  }
455
456
 
456
457
 
457
- export function isDeclareTypeAlias(node /*: ESNode | Token */) /*: node is DeclareTypeAlias */ {
458
+ export function isDeclareTypeAlias(node /*: ESNode | Token */) /*: implies node is DeclareTypeAlias */ {
458
459
  return node.type === 'DeclareTypeAlias';
459
460
  }
460
461
 
461
462
 
462
- export function isDeclareVariable(node /*: ESNode | Token */) /*: node is DeclareVariable */ {
463
+ export function isDeclareVariable(node /*: ESNode | Token */) /*: implies node is DeclareVariable */ {
463
464
  return node.type === 'DeclareVariable';
464
465
  }
465
466
 
466
467
 
467
- export function isDoWhileStatement(node /*: ESNode | Token */) /*: node is DoWhileStatement */ {
468
+ export function isDoWhileStatement(node /*: ESNode | Token */) /*: implies node is DoWhileStatement */ {
468
469
  return node.type === 'DoWhileStatement';
469
470
  }
470
471
 
471
472
 
472
- export function isEmptyStatement(node /*: ESNode | Token */) /*: node is EmptyStatement */ {
473
+ export function isEmptyStatement(node /*: ESNode | Token */) /*: implies node is EmptyStatement */ {
473
474
  return node.type === 'EmptyStatement';
474
475
  }
475
476
 
476
477
 
477
- export function isEmptyTypeAnnotation(node /*: ESNode | Token */) /*: node is EmptyTypeAnnotation */ {
478
+ export function isEmptyTypeAnnotation(node /*: ESNode | Token */) /*: implies node is EmptyTypeAnnotation */ {
478
479
  return node.type === 'EmptyTypeAnnotation';
479
480
  }
480
481
 
481
482
 
482
- export function isEnumBigIntBody(node /*: ESNode | Token */) /*: node is EnumBigIntBody */ {
483
+ export function isEnumBigIntBody(node /*: ESNode | Token */) /*: implies node is EnumBigIntBody */ {
483
484
  return node.type === 'EnumBigIntBody';
484
485
  }
485
486
 
486
487
 
487
- export function isEnumBigIntMember(node /*: ESNode | Token */) /*: node is EnumBigIntMember */ {
488
+ export function isEnumBigIntMember(node /*: ESNode | Token */) /*: implies node is EnumBigIntMember */ {
488
489
  return node.type === 'EnumBigIntMember';
489
490
  }
490
491
 
491
492
 
492
- export function isEnumBooleanBody(node /*: ESNode | Token */) /*: node is EnumBooleanBody */ {
493
+ export function isEnumBooleanBody(node /*: ESNode | Token */) /*: implies node is EnumBooleanBody */ {
493
494
  return node.type === 'EnumBooleanBody';
494
495
  }
495
496
 
496
497
 
497
- export function isEnumBooleanMember(node /*: ESNode | Token */) /*: node is EnumBooleanMember */ {
498
+ export function isEnumBooleanMember(node /*: ESNode | Token */) /*: implies node is EnumBooleanMember */ {
498
499
  return node.type === 'EnumBooleanMember';
499
500
  }
500
501
 
501
502
 
502
- export function isEnumDeclaration(node /*: ESNode | Token */) /*: node is EnumDeclaration */ {
503
+ export function isEnumDeclaration(node /*: ESNode | Token */) /*: implies node is EnumDeclaration */ {
503
504
  return node.type === 'EnumDeclaration';
504
505
  }
505
506
 
506
507
 
507
- export function isEnumDefaultedMember(node /*: ESNode | Token */) /*: node is EnumDefaultedMember */ {
508
+ export function isEnumDefaultedMember(node /*: ESNode | Token */) /*: implies node is EnumDefaultedMember */ {
508
509
  return node.type === 'EnumDefaultedMember';
509
510
  }
510
511
 
511
512
 
512
- export function isEnumNumberBody(node /*: ESNode | Token */) /*: node is EnumNumberBody */ {
513
+ export function isEnumNumberBody(node /*: ESNode | Token */) /*: implies node is EnumNumberBody */ {
513
514
  return node.type === 'EnumNumberBody';
514
515
  }
515
516
 
516
517
 
517
- export function isEnumNumberMember(node /*: ESNode | Token */) /*: node is EnumNumberMember */ {
518
+ export function isEnumNumberMember(node /*: ESNode | Token */) /*: implies node is EnumNumberMember */ {
518
519
  return node.type === 'EnumNumberMember';
519
520
  }
520
521
 
521
522
 
522
- export function isEnumStringBody(node /*: ESNode | Token */) /*: node is EnumStringBody */ {
523
+ export function isEnumStringBody(node /*: ESNode | Token */) /*: implies node is EnumStringBody */ {
523
524
  return node.type === 'EnumStringBody';
524
525
  }
525
526
 
526
527
 
527
- export function isEnumStringMember(node /*: ESNode | Token */) /*: node is EnumStringMember */ {
528
+ export function isEnumStringMember(node /*: ESNode | Token */) /*: implies node is EnumStringMember */ {
528
529
  return node.type === 'EnumStringMember';
529
530
  }
530
531
 
531
532
 
532
- export function isEnumSymbolBody(node /*: ESNode | Token */) /*: node is EnumSymbolBody */ {
533
+ export function isEnumSymbolBody(node /*: ESNode | Token */) /*: implies node is EnumSymbolBody */ {
533
534
  return node.type === 'EnumSymbolBody';
534
535
  }
535
536
 
536
537
 
537
- export function isExistsTypeAnnotation(node /*: ESNode | Token */) /*: node is ExistsTypeAnnotation */ {
538
+ export function isExistsTypeAnnotation(node /*: ESNode | Token */) /*: implies node is ExistsTypeAnnotation */ {
538
539
  return node.type === 'ExistsTypeAnnotation';
539
540
  }
540
541
 
541
542
 
542
- export function isExportAllDeclaration(node /*: ESNode | Token */) /*: node is ExportAllDeclaration */ {
543
+ export function isExportAllDeclaration(node /*: ESNode | Token */) /*: implies node is ExportAllDeclaration */ {
543
544
  return node.type === 'ExportAllDeclaration';
544
545
  }
545
546
 
546
547
 
547
- export function isExportDefaultDeclaration(node /*: ESNode | Token */) /*: node is ExportDefaultDeclaration */ {
548
+ export function isExportDefaultDeclaration(node /*: ESNode | Token */) /*: implies node is ExportDefaultDeclaration */ {
548
549
  return node.type === 'ExportDefaultDeclaration';
549
550
  }
550
551
 
551
552
 
552
- export function isExportNamedDeclaration(node /*: ESNode | Token */) /*: node is ExportNamedDeclaration */ {
553
+ export function isExportNamedDeclaration(node /*: ESNode | Token */) /*: implies node is ExportNamedDeclaration */ {
553
554
  return node.type === 'ExportNamedDeclaration';
554
555
  }
555
556
 
556
557
 
557
- export function isExportSpecifier(node /*: ESNode | Token */) /*: node is ExportSpecifier */ {
558
+ export function isExportSpecifier(node /*: ESNode | Token */) /*: implies node is ExportSpecifier */ {
558
559
  return node.type === 'ExportSpecifier';
559
560
  }
560
561
 
561
562
 
562
- export function isExpressionStatement(node /*: ESNode | Token */) /*: node is ExpressionStatement */ {
563
+ export function isExpressionStatement(node /*: ESNode | Token */) /*: implies node is ExpressionStatement */ {
563
564
  return node.type === 'ExpressionStatement';
564
565
  }
565
566
 
566
567
 
567
- export function isForInStatement(node /*: ESNode | Token */) /*: node is ForInStatement */ {
568
+ export function isForInStatement(node /*: ESNode | Token */) /*: implies node is ForInStatement */ {
568
569
  return node.type === 'ForInStatement';
569
570
  }
570
571
 
571
572
 
572
- export function isForOfStatement(node /*: ESNode | Token */) /*: node is ForOfStatement */ {
573
+ export function isForOfStatement(node /*: ESNode | Token */) /*: implies node is ForOfStatement */ {
573
574
  return node.type === 'ForOfStatement';
574
575
  }
575
576
 
576
577
 
577
- export function isForStatement(node /*: ESNode | Token */) /*: node is ForStatement */ {
578
+ export function isForStatement(node /*: ESNode | Token */) /*: implies node is ForStatement */ {
578
579
  return node.type === 'ForStatement';
579
580
  }
580
581
 
581
582
 
582
- export function isFunctionDeclaration(node /*: ESNode | Token */) /*: node is FunctionDeclaration */ {
583
+ export function isFunctionDeclaration(node /*: ESNode | Token */) /*: implies node is FunctionDeclaration */ {
583
584
  return node.type === 'FunctionDeclaration';
584
585
  }
585
586
 
586
587
 
587
- export function isFunctionExpression(node /*: ESNode | Token */) /*: node is FunctionExpression */ {
588
+ export function isFunctionExpression(node /*: ESNode | Token */) /*: implies node is FunctionExpression */ {
588
589
  return node.type === 'FunctionExpression';
589
590
  }
590
591
 
591
592
 
592
- export function isFunctionTypeAnnotation(node /*: ESNode | Token */) /*: node is FunctionTypeAnnotation */ {
593
+ export function isFunctionTypeAnnotation(node /*: ESNode | Token */) /*: implies node is FunctionTypeAnnotation */ {
593
594
  return node.type === 'FunctionTypeAnnotation';
594
595
  }
595
596
 
596
597
 
597
- export function isFunctionTypeParam(node /*: ESNode | Token */) /*: node is FunctionTypeParam */ {
598
+ export function isFunctionTypeParam(node /*: ESNode | Token */) /*: implies node is FunctionTypeParam */ {
598
599
  return node.type === 'FunctionTypeParam';
599
600
  }
600
601
 
601
602
 
602
- export function isGenericTypeAnnotation(node /*: ESNode | Token */) /*: node is GenericTypeAnnotation */ {
603
+ export function isGenericTypeAnnotation(node /*: ESNode | Token */) /*: implies node is GenericTypeAnnotation */ {
603
604
  return node.type === 'GenericTypeAnnotation';
604
605
  }
605
606
 
606
607
 
607
- export function isHookDeclaration(node /*: ESNode | Token */) /*: node is HookDeclaration */ {
608
+ export function isHookDeclaration(node /*: ESNode | Token */) /*: implies node is HookDeclaration */ {
608
609
  return node.type === 'HookDeclaration';
609
610
  }
610
611
 
611
612
 
612
- export function isHookTypeAnnotation(node /*: ESNode | Token */) /*: node is HookTypeAnnotation */ {
613
+ export function isHookTypeAnnotation(node /*: ESNode | Token */) /*: implies node is HookTypeAnnotation */ {
613
614
  return node.type === 'HookTypeAnnotation';
614
615
  }
615
616
 
616
617
 
617
- export function isIfStatement(node /*: ESNode | Token */) /*: node is IfStatement */ {
618
+ export function isIfStatement(node /*: ESNode | Token */) /*: implies node is IfStatement */ {
618
619
  return node.type === 'IfStatement';
619
620
  }
620
621
 
621
622
 
622
- export function isImportAttribute(node /*: ESNode | Token */) /*: node is ImportAttribute */ {
623
+ export function isImportAttribute(node /*: ESNode | Token */) /*: implies node is ImportAttribute */ {
623
624
  return node.type === 'ImportAttribute';
624
625
  }
625
626
 
626
627
 
627
- export function isImportDeclaration(node /*: ESNode | Token */) /*: node is ImportDeclaration */ {
628
+ export function isImportDeclaration(node /*: ESNode | Token */) /*: implies node is ImportDeclaration */ {
628
629
  return node.type === 'ImportDeclaration';
629
630
  }
630
631
 
631
632
 
632
- export function isImportDefaultSpecifier(node /*: ESNode | Token */) /*: node is ImportDefaultSpecifier */ {
633
+ export function isImportDefaultSpecifier(node /*: ESNode | Token */) /*: implies node is ImportDefaultSpecifier */ {
633
634
  return node.type === 'ImportDefaultSpecifier';
634
635
  }
635
636
 
636
637
 
637
- export function isImportExpression(node /*: ESNode | Token */) /*: node is ImportExpression */ {
638
+ export function isImportExpression(node /*: ESNode | Token */) /*: implies node is ImportExpression */ {
638
639
  return node.type === 'ImportExpression';
639
640
  }
640
641
 
641
642
 
642
- export function isImportNamespaceSpecifier(node /*: ESNode | Token */) /*: node is ImportNamespaceSpecifier */ {
643
+ export function isImportNamespaceSpecifier(node /*: ESNode | Token */) /*: implies node is ImportNamespaceSpecifier */ {
643
644
  return node.type === 'ImportNamespaceSpecifier';
644
645
  }
645
646
 
646
647
 
647
- export function isImportSpecifier(node /*: ESNode | Token */) /*: node is ImportSpecifier */ {
648
+ export function isImportSpecifier(node /*: ESNode | Token */) /*: implies node is ImportSpecifier */ {
648
649
  return node.type === 'ImportSpecifier';
649
650
  }
650
651
 
651
652
 
652
- export function isIndexedAccessType(node /*: ESNode | Token */) /*: node is IndexedAccessType */ {
653
+ export function isIndexedAccessType(node /*: ESNode | Token */) /*: implies node is IndexedAccessType */ {
653
654
  return node.type === 'IndexedAccessType';
654
655
  }
655
656
 
656
657
 
657
- export function isInferredPredicate(node /*: ESNode | Token */) /*: node is InferredPredicate */ {
658
+ export function isInferredPredicate(node /*: ESNode | Token */) /*: implies node is InferredPredicate */ {
658
659
  return node.type === 'InferredPredicate';
659
660
  }
660
661
 
661
662
 
662
- export function isInferTypeAnnotation(node /*: ESNode | Token */) /*: node is InferTypeAnnotation */ {
663
+ export function isInferTypeAnnotation(node /*: ESNode | Token */) /*: implies node is InferTypeAnnotation */ {
663
664
  return node.type === 'InferTypeAnnotation';
664
665
  }
665
666
 
666
667
 
667
- export function isInterfaceDeclaration(node /*: ESNode | Token */) /*: node is InterfaceDeclaration */ {
668
+ export function isInterfaceDeclaration(node /*: ESNode | Token */) /*: implies node is InterfaceDeclaration */ {
668
669
  return node.type === 'InterfaceDeclaration';
669
670
  }
670
671
 
671
672
 
672
- export function isInterfaceExtends(node /*: ESNode | Token */) /*: node is InterfaceExtends */ {
673
+ export function isInterfaceExtends(node /*: ESNode | Token */) /*: implies node is InterfaceExtends */ {
673
674
  return node.type === 'InterfaceExtends';
674
675
  }
675
676
 
676
677
 
677
- export function isInterfaceTypeAnnotation(node /*: ESNode | Token */) /*: node is InterfaceTypeAnnotation */ {
678
+ export function isInterfaceTypeAnnotation(node /*: ESNode | Token */) /*: implies node is InterfaceTypeAnnotation */ {
678
679
  return node.type === 'InterfaceTypeAnnotation';
679
680
  }
680
681
 
681
682
 
682
- export function isIntersectionTypeAnnotation(node /*: ESNode | Token */) /*: node is IntersectionTypeAnnotation */ {
683
+ export function isIntersectionTypeAnnotation(node /*: ESNode | Token */) /*: implies node is IntersectionTypeAnnotation */ {
683
684
  return node.type === 'IntersectionTypeAnnotation';
684
685
  }
685
686
 
686
687
 
687
- export function isJSXAttribute(node /*: ESNode | Token */) /*: node is JSXAttribute */ {
688
+ export function isJSXAttribute(node /*: ESNode | Token */) /*: implies node is JSXAttribute */ {
688
689
  return node.type === 'JSXAttribute';
689
690
  }
690
691
 
691
692
 
692
- export function isJSXClosingElement(node /*: ESNode | Token */) /*: node is JSXClosingElement */ {
693
+ export function isJSXClosingElement(node /*: ESNode | Token */) /*: implies node is JSXClosingElement */ {
693
694
  return node.type === 'JSXClosingElement';
694
695
  }
695
696
 
696
697
 
697
- export function isJSXClosingFragment(node /*: ESNode | Token */) /*: node is JSXClosingFragment */ {
698
+ export function isJSXClosingFragment(node /*: ESNode | Token */) /*: implies node is JSXClosingFragment */ {
698
699
  return node.type === 'JSXClosingFragment';
699
700
  }
700
701
 
701
702
 
702
- export function isJSXElement(node /*: ESNode | Token */) /*: node is JSXElement */ {
703
+ export function isJSXElement(node /*: ESNode | Token */) /*: implies node is JSXElement */ {
703
704
  return node.type === 'JSXElement';
704
705
  }
705
706
 
706
707
 
707
- export function isJSXEmptyExpression(node /*: ESNode | Token */) /*: node is JSXEmptyExpression */ {
708
+ export function isJSXEmptyExpression(node /*: ESNode | Token */) /*: implies node is JSXEmptyExpression */ {
708
709
  return node.type === 'JSXEmptyExpression';
709
710
  }
710
711
 
711
712
 
712
- export function isJSXExpressionContainer(node /*: ESNode | Token */) /*: node is JSXExpressionContainer */ {
713
+ export function isJSXExpressionContainer(node /*: ESNode | Token */) /*: implies node is JSXExpressionContainer */ {
713
714
  return node.type === 'JSXExpressionContainer';
714
715
  }
715
716
 
716
717
 
717
- export function isJSXFragment(node /*: ESNode | Token */) /*: node is JSXFragment */ {
718
+ export function isJSXFragment(node /*: ESNode | Token */) /*: implies node is JSXFragment */ {
718
719
  return node.type === 'JSXFragment';
719
720
  }
720
721
 
721
722
 
722
- export function isJSXMemberExpression(node /*: ESNode | Token */) /*: node is JSXMemberExpression */ {
723
+ export function isJSXMemberExpression(node /*: ESNode | Token */) /*: implies node is JSXMemberExpression */ {
723
724
  return node.type === 'JSXMemberExpression';
724
725
  }
725
726
 
726
727
 
727
- export function isJSXNamespacedName(node /*: ESNode | Token */) /*: node is JSXNamespacedName */ {
728
+ export function isJSXNamespacedName(node /*: ESNode | Token */) /*: implies node is JSXNamespacedName */ {
728
729
  return node.type === 'JSXNamespacedName';
729
730
  }
730
731
 
731
732
 
732
- export function isJSXOpeningElement(node /*: ESNode | Token */) /*: node is JSXOpeningElement */ {
733
+ export function isJSXOpeningElement(node /*: ESNode | Token */) /*: implies node is JSXOpeningElement */ {
733
734
  return node.type === 'JSXOpeningElement';
734
735
  }
735
736
 
736
737
 
737
- export function isJSXOpeningFragment(node /*: ESNode | Token */) /*: node is JSXOpeningFragment */ {
738
+ export function isJSXOpeningFragment(node /*: ESNode | Token */) /*: implies node is JSXOpeningFragment */ {
738
739
  return node.type === 'JSXOpeningFragment';
739
740
  }
740
741
 
741
742
 
742
- export function isJSXSpreadAttribute(node /*: ESNode | Token */) /*: node is JSXSpreadAttribute */ {
743
+ export function isJSXSpreadAttribute(node /*: ESNode | Token */) /*: implies node is JSXSpreadAttribute */ {
743
744
  return node.type === 'JSXSpreadAttribute';
744
745
  }
745
746
 
746
747
 
747
- export function isJSXSpreadChild(node /*: ESNode | Token */) /*: node is JSXSpreadChild */ {
748
+ export function isJSXSpreadChild(node /*: ESNode | Token */) /*: implies node is JSXSpreadChild */ {
748
749
  return node.type === 'JSXSpreadChild';
749
750
  }
750
751
 
751
752
 
752
- export function isKeyofTypeAnnotation(node /*: ESNode | Token */) /*: node is KeyofTypeAnnotation */ {
753
+ export function isKeyofTypeAnnotation(node /*: ESNode | Token */) /*: implies node is KeyofTypeAnnotation */ {
753
754
  return node.type === 'KeyofTypeAnnotation';
754
755
  }
755
756
 
756
757
 
757
- export function isLabeledStatement(node /*: ESNode | Token */) /*: node is LabeledStatement */ {
758
+ export function isLabeledStatement(node /*: ESNode | Token */) /*: implies node is LabeledStatement */ {
758
759
  return node.type === 'LabeledStatement';
759
760
  }
760
761
 
761
762
 
762
- export function isLogicalExpression(node /*: ESNode | Token */) /*: node is LogicalExpression */ {
763
+ export function isLogicalExpression(node /*: ESNode | Token */) /*: implies node is LogicalExpression */ {
763
764
  return node.type === 'LogicalExpression';
764
765
  }
765
766
 
766
767
 
767
- export function isMemberExpression(node /*: ESNode | Token */) /*: node is MemberExpression */ {
768
+ export function isMemberExpression(node /*: ESNode | Token */) /*: implies node is MemberExpression */ {
768
769
  return node.type === 'MemberExpression';
769
770
  }
770
771
 
771
772
 
772
- export function isMetaProperty(node /*: ESNode | Token */) /*: node is MetaProperty */ {
773
+ export function isMetaProperty(node /*: ESNode | Token */) /*: implies node is MetaProperty */ {
773
774
  return node.type === 'MetaProperty';
774
775
  }
775
776
 
776
777
 
777
- export function isMethodDefinition(node /*: ESNode | Token */) /*: node is MethodDefinition */ {
778
+ export function isMethodDefinition(node /*: ESNode | Token */) /*: implies node is MethodDefinition */ {
778
779
  return node.type === 'MethodDefinition';
779
780
  }
780
781
 
781
782
 
782
- export function isMixedTypeAnnotation(node /*: ESNode | Token */) /*: node is MixedTypeAnnotation */ {
783
+ export function isMixedTypeAnnotation(node /*: ESNode | Token */) /*: implies node is MixedTypeAnnotation */ {
783
784
  return node.type === 'MixedTypeAnnotation';
784
785
  }
785
786
 
786
787
 
787
- export function isNewExpression(node /*: ESNode | Token */) /*: node is NewExpression */ {
788
+ export function isNewExpression(node /*: ESNode | Token */) /*: implies node is NewExpression */ {
788
789
  return node.type === 'NewExpression';
789
790
  }
790
791
 
791
792
 
792
- export function isNullableTypeAnnotation(node /*: ESNode | Token */) /*: node is NullableTypeAnnotation */ {
793
+ export function isNullableTypeAnnotation(node /*: ESNode | Token */) /*: implies node is NullableTypeAnnotation */ {
793
794
  return node.type === 'NullableTypeAnnotation';
794
795
  }
795
796
 
796
797
 
797
- export function isNullLiteralTypeAnnotation(node /*: ESNode | Token */) /*: node is NullLiteralTypeAnnotation */ {
798
+ export function isNullLiteralTypeAnnotation(node /*: ESNode | Token */) /*: implies node is NullLiteralTypeAnnotation */ {
798
799
  return node.type === 'NullLiteralTypeAnnotation';
799
800
  }
800
801
 
801
802
 
802
- export function isNumberLiteralTypeAnnotation(node /*: ESNode | Token */) /*: node is NumberLiteralTypeAnnotation */ {
803
+ export function isNumberLiteralTypeAnnotation(node /*: ESNode | Token */) /*: implies node is NumberLiteralTypeAnnotation */ {
803
804
  return node.type === 'NumberLiteralTypeAnnotation';
804
805
  }
805
806
 
806
807
 
807
- export function isNumberTypeAnnotation(node /*: ESNode | Token */) /*: node is NumberTypeAnnotation */ {
808
+ export function isNumberTypeAnnotation(node /*: ESNode | Token */) /*: implies node is NumberTypeAnnotation */ {
808
809
  return node.type === 'NumberTypeAnnotation';
809
810
  }
810
811
 
811
812
 
812
- export function isObjectExpression(node /*: ESNode | Token */) /*: node is ObjectExpression */ {
813
+ export function isObjectExpression(node /*: ESNode | Token */) /*: implies node is ObjectExpression */ {
813
814
  return node.type === 'ObjectExpression';
814
815
  }
815
816
 
816
817
 
817
- export function isObjectPattern(node /*: ESNode | Token */) /*: node is ObjectPattern */ {
818
+ export function isObjectPattern(node /*: ESNode | Token */) /*: implies node is ObjectPattern */ {
818
819
  return node.type === 'ObjectPattern';
819
820
  }
820
821
 
821
822
 
822
- export function isObjectTypeAnnotation(node /*: ESNode | Token */) /*: node is ObjectTypeAnnotation */ {
823
+ export function isObjectTypeAnnotation(node /*: ESNode | Token */) /*: implies node is ObjectTypeAnnotation */ {
823
824
  return node.type === 'ObjectTypeAnnotation';
824
825
  }
825
826
 
826
827
 
827
- export function isObjectTypeCallProperty(node /*: ESNode | Token */) /*: node is ObjectTypeCallProperty */ {
828
+ export function isObjectTypeCallProperty(node /*: ESNode | Token */) /*: implies node is ObjectTypeCallProperty */ {
828
829
  return node.type === 'ObjectTypeCallProperty';
829
830
  }
830
831
 
831
832
 
832
- export function isObjectTypeIndexer(node /*: ESNode | Token */) /*: node is ObjectTypeIndexer */ {
833
+ export function isObjectTypeIndexer(node /*: ESNode | Token */) /*: implies node is ObjectTypeIndexer */ {
833
834
  return node.type === 'ObjectTypeIndexer';
834
835
  }
835
836
 
836
837
 
837
- export function isObjectTypeInternalSlot(node /*: ESNode | Token */) /*: node is ObjectTypeInternalSlot */ {
838
+ export function isObjectTypeInternalSlot(node /*: ESNode | Token */) /*: implies node is ObjectTypeInternalSlot */ {
838
839
  return node.type === 'ObjectTypeInternalSlot';
839
840
  }
840
841
 
841
842
 
842
- export function isObjectTypeMappedTypeProperty(node /*: ESNode | Token */) /*: node is ObjectTypeMappedTypeProperty */ {
843
+ export function isObjectTypeMappedTypeProperty(node /*: ESNode | Token */) /*: implies node is ObjectTypeMappedTypeProperty */ {
843
844
  return node.type === 'ObjectTypeMappedTypeProperty';
844
845
  }
845
846
 
846
847
 
847
- export function isObjectTypeProperty(node /*: ESNode | Token */) /*: node is ObjectTypeProperty */ {
848
+ export function isObjectTypeProperty(node /*: ESNode | Token */) /*: implies node is ObjectTypeProperty */ {
848
849
  return node.type === 'ObjectTypeProperty';
849
850
  }
850
851
 
851
852
 
852
- export function isObjectTypeSpreadProperty(node /*: ESNode | Token */) /*: node is ObjectTypeSpreadProperty */ {
853
+ export function isObjectTypeSpreadProperty(node /*: ESNode | Token */) /*: implies node is ObjectTypeSpreadProperty */ {
853
854
  return node.type === 'ObjectTypeSpreadProperty';
854
855
  }
855
856
 
856
857
 
857
- export function isOpaqueType(node /*: ESNode | Token */) /*: node is OpaqueType */ {
858
+ export function isOpaqueType(node /*: ESNode | Token */) /*: implies node is OpaqueType */ {
858
859
  return node.type === 'OpaqueType';
859
860
  }
860
861
 
861
862
 
862
- export function isOptionalIndexedAccessType(node /*: ESNode | Token */) /*: node is OptionalIndexedAccessType */ {
863
+ export function isOptionalIndexedAccessType(node /*: ESNode | Token */) /*: implies node is OptionalIndexedAccessType */ {
863
864
  return node.type === 'OptionalIndexedAccessType';
864
865
  }
865
866
 
866
867
 
867
- export function isPrivateIdentifier(node /*: ESNode | Token */) /*: node is PrivateIdentifier */ {
868
+ export function isPrivateIdentifier(node /*: ESNode | Token */) /*: implies node is PrivateIdentifier */ {
868
869
  return node.type === 'PrivateIdentifier';
869
870
  }
870
871
 
871
872
 
872
- export function isProperty(node /*: ESNode | Token */) /*: node is Property */ {
873
+ export function isProgram(node /*: ESNode | Token */) /*: implies node is Program */ {
874
+ return node.type === 'Program';
875
+ }
876
+
877
+
878
+ export function isProperty(node /*: ESNode | Token */) /*: implies node is Property */ {
873
879
  return node.type === 'Property';
874
880
  }
875
881
 
876
882
 
877
- export function isPropertyDefinition(node /*: ESNode | Token */) /*: node is PropertyDefinition */ {
883
+ export function isPropertyDefinition(node /*: ESNode | Token */) /*: implies node is PropertyDefinition */ {
878
884
  return node.type === 'PropertyDefinition';
879
885
  }
880
886
 
881
887
 
882
- export function isQualifiedTypeIdentifier(node /*: ESNode | Token */) /*: node is QualifiedTypeIdentifier */ {
888
+ export function isQualifiedTypeIdentifier(node /*: ESNode | Token */) /*: implies node is QualifiedTypeIdentifier */ {
883
889
  return node.type === 'QualifiedTypeIdentifier';
884
890
  }
885
891
 
886
892
 
887
- export function isQualifiedTypeofIdentifier(node /*: ESNode | Token */) /*: node is QualifiedTypeofIdentifier */ {
893
+ export function isQualifiedTypeofIdentifier(node /*: ESNode | Token */) /*: implies node is QualifiedTypeofIdentifier */ {
888
894
  return node.type === 'QualifiedTypeofIdentifier';
889
895
  }
890
896
 
891
897
 
892
- export function isRestElement(node /*: ESNode | Token */) /*: node is RestElement */ {
898
+ export function isRestElement(node /*: ESNode | Token */) /*: implies node is RestElement */ {
893
899
  return node.type === 'RestElement';
894
900
  }
895
901
 
896
902
 
897
- export function isReturnStatement(node /*: ESNode | Token */) /*: node is ReturnStatement */ {
903
+ export function isReturnStatement(node /*: ESNode | Token */) /*: implies node is ReturnStatement */ {
898
904
  return node.type === 'ReturnStatement';
899
905
  }
900
906
 
901
907
 
902
- export function isSequenceExpression(node /*: ESNode | Token */) /*: node is SequenceExpression */ {
908
+ export function isSequenceExpression(node /*: ESNode | Token */) /*: implies node is SequenceExpression */ {
903
909
  return node.type === 'SequenceExpression';
904
910
  }
905
911
 
906
912
 
907
- export function isSpreadElement(node /*: ESNode | Token */) /*: node is SpreadElement */ {
913
+ export function isSpreadElement(node /*: ESNode | Token */) /*: implies node is SpreadElement */ {
908
914
  return node.type === 'SpreadElement';
909
915
  }
910
916
 
911
917
 
912
- export function isStringLiteralTypeAnnotation(node /*: ESNode | Token */) /*: node is StringLiteralTypeAnnotation */ {
918
+ export function isStringLiteralTypeAnnotation(node /*: ESNode | Token */) /*: implies node is StringLiteralTypeAnnotation */ {
913
919
  return node.type === 'StringLiteralTypeAnnotation';
914
920
  }
915
921
 
916
922
 
917
- export function isStringTypeAnnotation(node /*: ESNode | Token */) /*: node is StringTypeAnnotation */ {
923
+ export function isStringTypeAnnotation(node /*: ESNode | Token */) /*: implies node is StringTypeAnnotation */ {
918
924
  return node.type === 'StringTypeAnnotation';
919
925
  }
920
926
 
921
927
 
922
- export function isSuper(node /*: ESNode | Token */) /*: node is Super */ {
928
+ export function isSuper(node /*: ESNode | Token */) /*: implies node is Super */ {
923
929
  return node.type === 'Super';
924
930
  }
925
931
 
926
932
 
927
- export function isSwitchCase(node /*: ESNode | Token */) /*: node is SwitchCase */ {
933
+ export function isSwitchCase(node /*: ESNode | Token */) /*: implies node is SwitchCase */ {
928
934
  return node.type === 'SwitchCase';
929
935
  }
930
936
 
931
937
 
932
- export function isSwitchStatement(node /*: ESNode | Token */) /*: node is SwitchStatement */ {
938
+ export function isSwitchStatement(node /*: ESNode | Token */) /*: implies node is SwitchStatement */ {
933
939
  return node.type === 'SwitchStatement';
934
940
  }
935
941
 
936
942
 
937
- export function isSymbolTypeAnnotation(node /*: ESNode | Token */) /*: node is SymbolTypeAnnotation */ {
943
+ export function isSymbolTypeAnnotation(node /*: ESNode | Token */) /*: implies node is SymbolTypeAnnotation */ {
938
944
  return node.type === 'SymbolTypeAnnotation';
939
945
  }
940
946
 
941
947
 
942
- export function isTaggedTemplateExpression(node /*: ESNode | Token */) /*: node is TaggedTemplateExpression */ {
948
+ export function isTaggedTemplateExpression(node /*: ESNode | Token */) /*: implies node is TaggedTemplateExpression */ {
943
949
  return node.type === 'TaggedTemplateExpression';
944
950
  }
945
951
 
946
952
 
947
- export function isTemplateElement(node /*: ESNode | Token */) /*: node is TemplateElement */ {
953
+ export function isTemplateElement(node /*: ESNode | Token */) /*: implies node is TemplateElement */ {
948
954
  return node.type === 'TemplateElement';
949
955
  }
950
956
 
951
957
 
952
- export function isTemplateLiteral(node /*: ESNode | Token */) /*: node is TemplateLiteral */ {
958
+ export function isTemplateLiteral(node /*: ESNode | Token */) /*: implies node is TemplateLiteral */ {
953
959
  return node.type === 'TemplateLiteral';
954
960
  }
955
961
 
956
962
 
957
- export function isThisExpression(node /*: ESNode | Token */) /*: node is ThisExpression */ {
963
+ export function isThisExpression(node /*: ESNode | Token */) /*: implies node is ThisExpression */ {
958
964
  return node.type === 'ThisExpression';
959
965
  }
960
966
 
961
967
 
962
- export function isThisTypeAnnotation(node /*: ESNode | Token */) /*: node is ThisTypeAnnotation */ {
968
+ export function isThisTypeAnnotation(node /*: ESNode | Token */) /*: implies node is ThisTypeAnnotation */ {
963
969
  return node.type === 'ThisTypeAnnotation';
964
970
  }
965
971
 
966
972
 
967
- export function isThrowStatement(node /*: ESNode | Token */) /*: node is ThrowStatement */ {
973
+ export function isThrowStatement(node /*: ESNode | Token */) /*: implies node is ThrowStatement */ {
968
974
  return node.type === 'ThrowStatement';
969
975
  }
970
976
 
971
977
 
972
- export function isTryStatement(node /*: ESNode | Token */) /*: node is TryStatement */ {
978
+ export function isTryStatement(node /*: ESNode | Token */) /*: implies node is TryStatement */ {
973
979
  return node.type === 'TryStatement';
974
980
  }
975
981
 
976
982
 
977
- export function isTupleTypeAnnotation(node /*: ESNode | Token */) /*: node is TupleTypeAnnotation */ {
983
+ export function isTupleTypeAnnotation(node /*: ESNode | Token */) /*: implies node is TupleTypeAnnotation */ {
978
984
  return node.type === 'TupleTypeAnnotation';
979
985
  }
980
986
 
981
987
 
982
- export function isTupleTypeLabeledElement(node /*: ESNode | Token */) /*: node is TupleTypeLabeledElement */ {
988
+ export function isTupleTypeLabeledElement(node /*: ESNode | Token */) /*: implies node is TupleTypeLabeledElement */ {
983
989
  return node.type === 'TupleTypeLabeledElement';
984
990
  }
985
991
 
986
992
 
987
- export function isTupleTypeSpreadElement(node /*: ESNode | Token */) /*: node is TupleTypeSpreadElement */ {
993
+ export function isTupleTypeSpreadElement(node /*: ESNode | Token */) /*: implies node is TupleTypeSpreadElement */ {
988
994
  return node.type === 'TupleTypeSpreadElement';
989
995
  }
990
996
 
991
997
 
992
- export function isTypeAlias(node /*: ESNode | Token */) /*: node is TypeAlias */ {
998
+ export function isTypeAlias(node /*: ESNode | Token */) /*: implies node is TypeAlias */ {
993
999
  return node.type === 'TypeAlias';
994
1000
  }
995
1001
 
996
1002
 
997
- export function isTypeAnnotation(node /*: ESNode | Token */) /*: node is TypeAnnotation */ {
1003
+ export function isTypeAnnotation(node /*: ESNode | Token */) /*: implies node is TypeAnnotation */ {
998
1004
  return node.type === 'TypeAnnotation';
999
1005
  }
1000
1006
 
1001
1007
 
1002
- export function isTypeCastExpression(node /*: ESNode | Token */) /*: node is TypeCastExpression */ {
1008
+ export function isTypeCastExpression(node /*: ESNode | Token */) /*: implies node is TypeCastExpression */ {
1003
1009
  return node.type === 'TypeCastExpression';
1004
1010
  }
1005
1011
 
1006
1012
 
1007
- export function isTypeofTypeAnnotation(node /*: ESNode | Token */) /*: node is TypeofTypeAnnotation */ {
1013
+ export function isTypeofTypeAnnotation(node /*: ESNode | Token */) /*: implies node is TypeofTypeAnnotation */ {
1008
1014
  return node.type === 'TypeofTypeAnnotation';
1009
1015
  }
1010
1016
 
1011
1017
 
1012
- export function isTypeOperator(node /*: ESNode | Token */) /*: node is TypeOperator */ {
1018
+ export function isTypeOperator(node /*: ESNode | Token */) /*: implies node is TypeOperator */ {
1013
1019
  return node.type === 'TypeOperator';
1014
1020
  }
1015
1021
 
1016
1022
 
1017
- export function isTypeParameter(node /*: ESNode | Token */) /*: node is TypeParameter */ {
1023
+ export function isTypeParameter(node /*: ESNode | Token */) /*: implies node is TypeParameter */ {
1018
1024
  return node.type === 'TypeParameter';
1019
1025
  }
1020
1026
 
1021
1027
 
1022
- export function isTypeParameterDeclaration(node /*: ESNode | Token */) /*: node is TypeParameterDeclaration */ {
1028
+ export function isTypeParameterDeclaration(node /*: ESNode | Token */) /*: implies node is TypeParameterDeclaration */ {
1023
1029
  return node.type === 'TypeParameterDeclaration';
1024
1030
  }
1025
1031
 
1026
1032
 
1027
- export function isTypeParameterInstantiation(node /*: ESNode | Token */) /*: node is TypeParameterInstantiation */ {
1033
+ export function isTypeParameterInstantiation(node /*: ESNode | Token */) /*: implies node is TypeParameterInstantiation */ {
1028
1034
  return node.type === 'TypeParameterInstantiation';
1029
1035
  }
1030
1036
 
1031
1037
 
1032
- export function isTypePredicate(node /*: ESNode | Token */) /*: node is TypePredicate */ {
1038
+ export function isTypePredicate(node /*: ESNode | Token */) /*: implies node is TypePredicate */ {
1033
1039
  return node.type === 'TypePredicate';
1034
1040
  }
1035
1041
 
1036
1042
 
1037
- export function isUnaryExpression(node /*: ESNode | Token */) /*: node is UnaryExpression */ {
1043
+ export function isUnaryExpression(node /*: ESNode | Token */) /*: implies node is UnaryExpression */ {
1038
1044
  return node.type === 'UnaryExpression';
1039
1045
  }
1040
1046
 
1041
1047
 
1042
- export function isUnionTypeAnnotation(node /*: ESNode | Token */) /*: node is UnionTypeAnnotation */ {
1048
+ export function isUnionTypeAnnotation(node /*: ESNode | Token */) /*: implies node is UnionTypeAnnotation */ {
1043
1049
  return node.type === 'UnionTypeAnnotation';
1044
1050
  }
1045
1051
 
1046
1052
 
1047
- export function isUpdateExpression(node /*: ESNode | Token */) /*: node is UpdateExpression */ {
1053
+ export function isUpdateExpression(node /*: ESNode | Token */) /*: implies node is UpdateExpression */ {
1048
1054
  return node.type === 'UpdateExpression';
1049
1055
  }
1050
1056
 
1051
1057
 
1052
- export function isVariableDeclaration(node /*: ESNode | Token */) /*: node is VariableDeclaration */ {
1058
+ export function isVariableDeclaration(node /*: ESNode | Token */) /*: implies node is VariableDeclaration */ {
1053
1059
  return node.type === 'VariableDeclaration';
1054
1060
  }
1055
1061
 
1056
1062
 
1057
- export function isVariableDeclarator(node /*: ESNode | Token */) /*: node is VariableDeclarator */ {
1063
+ export function isVariableDeclarator(node /*: ESNode | Token */) /*: implies node is VariableDeclarator */ {
1058
1064
  return node.type === 'VariableDeclarator';
1059
1065
  }
1060
1066
 
1061
1067
 
1062
- export function isVariance(node /*: ESNode | Token */) /*: node is Variance */ {
1068
+ export function isVariance(node /*: ESNode | Token */) /*: implies node is Variance */ {
1063
1069
  return node.type === 'Variance';
1064
1070
  }
1065
1071
 
1066
1072
 
1067
- export function isVoidTypeAnnotation(node /*: ESNode | Token */) /*: node is VoidTypeAnnotation */ {
1073
+ export function isVoidTypeAnnotation(node /*: ESNode | Token */) /*: implies node is VoidTypeAnnotation */ {
1068
1074
  return node.type === 'VoidTypeAnnotation';
1069
1075
  }
1070
1076
 
1071
1077
 
1072
- export function isWhileStatement(node /*: ESNode | Token */) /*: node is WhileStatement */ {
1078
+ export function isWhileStatement(node /*: ESNode | Token */) /*: implies node is WhileStatement */ {
1073
1079
  return node.type === 'WhileStatement';
1074
1080
  }
1075
1081
 
1076
1082
 
1077
- export function isWithStatement(node /*: ESNode | Token */) /*: node is WithStatement */ {
1083
+ export function isWithStatement(node /*: ESNode | Token */) /*: implies node is WithStatement */ {
1078
1084
  return node.type === 'WithStatement';
1079
1085
  }
1080
1086
 
1081
1087
 
1082
- export function isYieldExpression(node /*: ESNode | Token */) /*: node is YieldExpression */ {
1088
+ export function isYieldExpression(node /*: ESNode | Token */) /*: implies node is YieldExpression */ {
1083
1089
  return node.type === 'YieldExpression';
1084
1090
  }
1085
1091
 
1086
1092
 
1087
- export function isLiteral(node /*: ESNode | Token */) /*: node is Literal */ {
1093
+ export function isLiteral(node /*: ESNode | Token */) /*: implies node is Literal */ {
1088
1094
  return node.type === 'Literal';
1089
1095
  }
1090
1096
 
1091
1097
 
1092
- export function isLineComment(node /*: ESNode | Token */) /*: node is (MostTokens | LineComment) */ {
1098
+ export function isLineComment(node /*: ESNode | Token */) /*: implies node is (MostTokens | LineComment) */ {
1093
1099
  return node.type === 'Line';
1094
1100
  }
1095
1101
 
1096
1102
 
1097
- export function isBlockComment(node /*: ESNode | Token */) /*: node is (MostTokens | BlockComment) */ {
1103
+ export function isBlockComment(node /*: ESNode | Token */) /*: implies node is (MostTokens | BlockComment) */ {
1098
1104
  return node.type === 'Block';
1099
1105
  }
1100
1106
 
1101
1107
 
1102
- export function isMinusToken(node /*: ESNode | Token */) /*: node is MostTokens */ {
1108
+ export function isMinusToken(node /*: ESNode | Token */) /*: implies node is MostTokens */ {
1103
1109
  return node.type === 'Punctuator' && node.value === '-';
1104
1110
  }
1105
1111
 
1106
1112
 
1107
- export function isPlusToken(node /*: ESNode | Token */) /*: node is MostTokens */ {
1113
+ export function isPlusToken(node /*: ESNode | Token */) /*: implies node is MostTokens */ {
1108
1114
  return node.type === 'Punctuator' && node.value === '+';
1109
1115
  }
1110
1116
 
1111
1117
 
1112
- export function isLogicalNotToken(node /*: ESNode | Token */) /*: node is MostTokens */ {
1118
+ export function isLogicalNotToken(node /*: ESNode | Token */) /*: implies node is MostTokens */ {
1113
1119
  return node.type === 'Punctuator' && node.value === '!';
1114
1120
  }
1115
1121
 
1116
1122
 
1117
- export function isUnaryNegationToken(node /*: ESNode | Token */) /*: node is MostTokens */ {
1123
+ export function isUnaryNegationToken(node /*: ESNode | Token */) /*: implies node is MostTokens */ {
1118
1124
  return node.type === 'Punctuator' && node.value === '~';
1119
1125
  }
1120
1126
 
1121
1127
 
1122
- export function isTypeOfToken(node /*: ESNode | Token */) /*: node is MostTokens */ {
1128
+ export function isTypeOfToken(node /*: ESNode | Token */) /*: implies node is MostTokens */ {
1123
1129
  return node.type === 'Keyword' && node.value === 'typeof';
1124
1130
  }
1125
1131
 
1126
1132
 
1127
- export function isVoidToken(node /*: ESNode | Token */) /*: node is MostTokens */ {
1133
+ export function isVoidToken(node /*: ESNode | Token */) /*: implies node is MostTokens */ {
1128
1134
  return node.type === 'Keyword' && node.value === 'void';
1129
1135
  }
1130
1136
 
1131
1137
 
1132
- export function isDeleteToken(node /*: ESNode | Token */) /*: node is MostTokens */ {
1138
+ export function isDeleteToken(node /*: ESNode | Token */) /*: implies node is MostTokens */ {
1133
1139
  return node.type === 'Keyword' && node.value === 'delete';
1134
1140
  }
1135
1141
 
1136
1142
 
1137
- export function isLooseEqualToken(node /*: ESNode | Token */) /*: node is MostTokens */ {
1143
+ export function isLooseEqualToken(node /*: ESNode | Token */) /*: implies node is MostTokens */ {
1138
1144
  return node.type === 'Punctuator' && node.value === '==';
1139
1145
  }
1140
1146
 
1141
1147
 
1142
- export function isLooseNotEqualToken(node /*: ESNode | Token */) /*: node is MostTokens */ {
1148
+ export function isLooseNotEqualToken(node /*: ESNode | Token */) /*: implies node is MostTokens */ {
1143
1149
  return node.type === 'Punctuator' && node.value === '!=';
1144
1150
  }
1145
1151
 
1146
1152
 
1147
- export function isStrictEqualToken(node /*: ESNode | Token */) /*: node is MostTokens */ {
1153
+ export function isStrictEqualToken(node /*: ESNode | Token */) /*: implies node is MostTokens */ {
1148
1154
  return node.type === 'Punctuator' && node.value === '===';
1149
1155
  }
1150
1156
 
1151
1157
 
1152
- export function isStrictNotEqualToken(node /*: ESNode | Token */) /*: node is MostTokens */ {
1158
+ export function isStrictNotEqualToken(node /*: ESNode | Token */) /*: implies node is MostTokens */ {
1153
1159
  return node.type === 'Punctuator' && node.value === '!==';
1154
1160
  }
1155
1161
 
1156
1162
 
1157
- export function isLessThanToken(node /*: ESNode | Token */) /*: node is MostTokens */ {
1163
+ export function isLessThanToken(node /*: ESNode | Token */) /*: implies node is MostTokens */ {
1158
1164
  return node.type === 'Punctuator' && node.value === '<';
1159
1165
  }
1160
1166
 
1161
1167
 
1162
- export function isLessThanOrEqualToToken(node /*: ESNode | Token */) /*: node is MostTokens */ {
1168
+ export function isLessThanOrEqualToToken(node /*: ESNode | Token */) /*: implies node is MostTokens */ {
1163
1169
  return node.type === 'Punctuator' && node.value === '<=';
1164
1170
  }
1165
1171
 
1166
1172
 
1167
- export function isGreaterThanToken(node /*: ESNode | Token */) /*: node is MostTokens */ {
1173
+ export function isGreaterThanToken(node /*: ESNode | Token */) /*: implies node is MostTokens */ {
1168
1174
  return node.type === 'Punctuator' && node.value === '>';
1169
1175
  }
1170
1176
 
1171
1177
 
1172
- export function isGreaterThanOrEqualToToken(node /*: ESNode | Token */) /*: node is MostTokens */ {
1178
+ export function isGreaterThanOrEqualToToken(node /*: ESNode | Token */) /*: implies node is MostTokens */ {
1173
1179
  return node.type === 'Punctuator' && node.value === '>=';
1174
1180
  }
1175
1181
 
1176
1182
 
1177
- export function isBitwiseLeftShiftToken(node /*: ESNode | Token */) /*: node is MostTokens */ {
1183
+ export function isBitwiseLeftShiftToken(node /*: ESNode | Token */) /*: implies node is MostTokens */ {
1178
1184
  return node.type === 'Punctuator' && node.value === '<<';
1179
1185
  }
1180
1186
 
1181
1187
 
1182
- export function isBitwiseRightShiftToken(node /*: ESNode | Token */) /*: node is MostTokens */ {
1188
+ export function isBitwiseRightShiftToken(node /*: ESNode | Token */) /*: implies node is MostTokens */ {
1183
1189
  return node.type === 'Punctuator' && node.value === '>>';
1184
1190
  }
1185
1191
 
1186
1192
 
1187
- export function isBitwiseUnsignedRightShiftToken(node /*: ESNode | Token */) /*: node is MostTokens */ {
1193
+ export function isBitwiseUnsignedRightShiftToken(node /*: ESNode | Token */) /*: implies node is MostTokens */ {
1188
1194
  return node.type === 'Punctuator' && node.value === '>>>';
1189
1195
  }
1190
1196
 
1191
1197
 
1192
- export function isAsterixToken(node /*: ESNode | Token */) /*: node is MostTokens */ {
1198
+ export function isAsterixToken(node /*: ESNode | Token */) /*: implies node is MostTokens */ {
1193
1199
  return node.type === 'Punctuator' && node.value === '*';
1194
1200
  }
1195
1201
 
1196
1202
 
1197
- export function isForwardSlashToken(node /*: ESNode | Token */) /*: node is MostTokens */ {
1203
+ export function isForwardSlashToken(node /*: ESNode | Token */) /*: implies node is MostTokens */ {
1198
1204
  return node.type === 'Punctuator' && node.value === '/';
1199
1205
  }
1200
1206
 
1201
1207
 
1202
- export function isPercentToken(node /*: ESNode | Token */) /*: node is MostTokens */ {
1208
+ export function isPercentToken(node /*: ESNode | Token */) /*: implies node is MostTokens */ {
1203
1209
  return node.type === 'Punctuator' && node.value === '%';
1204
1210
  }
1205
1211
 
1206
1212
 
1207
- export function isExponentiationToken(node /*: ESNode | Token */) /*: node is MostTokens */ {
1213
+ export function isExponentiationToken(node /*: ESNode | Token */) /*: implies node is MostTokens */ {
1208
1214
  return node.type === 'Punctuator' && node.value === '**';
1209
1215
  }
1210
1216
 
1211
1217
 
1212
- export function isBitwiseORToken(node /*: ESNode | Token */) /*: node is MostTokens */ {
1218
+ export function isBitwiseORToken(node /*: ESNode | Token */) /*: implies node is MostTokens */ {
1213
1219
  return node.type === 'Punctuator' && node.value === '|';
1214
1220
  }
1215
1221
 
1216
1222
 
1217
- export function isBitwiseXORToken(node /*: ESNode | Token */) /*: node is MostTokens */ {
1223
+ export function isBitwiseXORToken(node /*: ESNode | Token */) /*: implies node is MostTokens */ {
1218
1224
  return node.type === 'Punctuator' && node.value === '^';
1219
1225
  }
1220
1226
 
1221
1227
 
1222
- export function isBitwiseANDToken(node /*: ESNode | Token */) /*: node is MostTokens */ {
1228
+ export function isBitwiseANDToken(node /*: ESNode | Token */) /*: implies node is MostTokens */ {
1223
1229
  return node.type === 'Punctuator' && node.value === '&';
1224
1230
  }
1225
1231
 
1226
1232
 
1227
- export function isInToken(node /*: ESNode | Token */) /*: node is MostTokens */ {
1233
+ export function isInToken(node /*: ESNode | Token */) /*: implies node is MostTokens */ {
1228
1234
  return node.type === 'Keyword' && node.value === 'in';
1229
1235
  }
1230
1236
 
1231
1237
 
1232
- export function isInstanceOfToken(node /*: ESNode | Token */) /*: node is MostTokens */ {
1238
+ export function isInstanceOfToken(node /*: ESNode | Token */) /*: implies node is MostTokens */ {
1233
1239
  return node.type === 'Keyword' && node.value === 'instanceof';
1234
1240
  }
1235
1241
 
1236
1242
 
1237
- export function isLogicalORToken(node /*: ESNode | Token */) /*: node is MostTokens */ {
1243
+ export function isLogicalORToken(node /*: ESNode | Token */) /*: implies node is MostTokens */ {
1238
1244
  return node.type === 'Punctuator' && node.value === '||';
1239
1245
  }
1240
1246
 
1241
1247
 
1242
- export function isLogicalANDToken(node /*: ESNode | Token */) /*: node is MostTokens */ {
1248
+ export function isLogicalANDToken(node /*: ESNode | Token */) /*: implies node is MostTokens */ {
1243
1249
  return node.type === 'Punctuator' && node.value === '&&';
1244
1250
  }
1245
1251
 
1246
1252
 
1247
- export function isNullishCoalesceToken(node /*: ESNode | Token */) /*: node is MostTokens */ {
1253
+ export function isNullishCoalesceToken(node /*: ESNode | Token */) /*: implies node is MostTokens */ {
1248
1254
  return node.type === 'Punctuator' && node.value === '??';
1249
1255
  }
1250
1256
 
1251
1257
 
1252
- export function isEqualToken(node /*: ESNode | Token */) /*: node is MostTokens */ {
1258
+ export function isEqualToken(node /*: ESNode | Token */) /*: implies node is MostTokens */ {
1253
1259
  return node.type === 'Punctuator' && node.value === '=';
1254
1260
  }
1255
1261
 
1256
1262
 
1257
- export function isPlusEqualToken(node /*: ESNode | Token */) /*: node is MostTokens */ {
1263
+ export function isPlusEqualToken(node /*: ESNode | Token */) /*: implies node is MostTokens */ {
1258
1264
  return node.type === 'Punctuator' && node.value === '+=';
1259
1265
  }
1260
1266
 
1261
1267
 
1262
- export function isMinusEqualToken(node /*: ESNode | Token */) /*: node is MostTokens */ {
1268
+ export function isMinusEqualToken(node /*: ESNode | Token */) /*: implies node is MostTokens */ {
1263
1269
  return node.type === 'Punctuator' && node.value === '-=';
1264
1270
  }
1265
1271
 
1266
1272
 
1267
- export function isMultiplyEqualToken(node /*: ESNode | Token */) /*: node is MostTokens */ {
1273
+ export function isMultiplyEqualToken(node /*: ESNode | Token */) /*: implies node is MostTokens */ {
1268
1274
  return node.type === 'Punctuator' && node.value === '*=';
1269
1275
  }
1270
1276
 
1271
1277
 
1272
- export function isDivideEqualToken(node /*: ESNode | Token */) /*: node is MostTokens */ {
1278
+ export function isDivideEqualToken(node /*: ESNode | Token */) /*: implies node is MostTokens */ {
1273
1279
  return node.type === 'Punctuator' && node.value === '/=';
1274
1280
  }
1275
1281
 
1276
1282
 
1277
- export function isRemainderEqualToken(node /*: ESNode | Token */) /*: node is MostTokens */ {
1283
+ export function isRemainderEqualToken(node /*: ESNode | Token */) /*: implies node is MostTokens */ {
1278
1284
  return node.type === 'Punctuator' && node.value === '%=';
1279
1285
  }
1280
1286
 
1281
1287
 
1282
- export function isExponentateEqualToken(node /*: ESNode | Token */) /*: node is MostTokens */ {
1288
+ export function isExponentateEqualToken(node /*: ESNode | Token */) /*: implies node is MostTokens */ {
1283
1289
  return node.type === 'Punctuator' && node.value === '**=';
1284
1290
  }
1285
1291
 
1286
1292
 
1287
- export function isBitwiseLeftShiftEqualToken(node /*: ESNode | Token */) /*: node is MostTokens */ {
1293
+ export function isBitwiseLeftShiftEqualToken(node /*: ESNode | Token */) /*: implies node is MostTokens */ {
1288
1294
  return node.type === 'Punctuator' && node.value === '<<=';
1289
1295
  }
1290
1296
 
1291
1297
 
1292
- export function isBitwiseRightShiftEqualToken(node /*: ESNode | Token */) /*: node is MostTokens */ {
1298
+ export function isBitwiseRightShiftEqualToken(node /*: ESNode | Token */) /*: implies node is MostTokens */ {
1293
1299
  return node.type === 'Punctuator' && node.value === '>>=';
1294
1300
  }
1295
1301
 
1296
1302
 
1297
- export function isBitwiseUnsignedRightShiftEqualToken(node /*: ESNode | Token */) /*: node is MostTokens */ {
1303
+ export function isBitwiseUnsignedRightShiftEqualToken(node /*: ESNode | Token */) /*: implies node is MostTokens */ {
1298
1304
  return node.type === 'Punctuator' && node.value === '>>>=';
1299
1305
  }
1300
1306
 
1301
1307
 
1302
- export function isBitwiseOREqualToken(node /*: ESNode | Token */) /*: node is MostTokens */ {
1308
+ export function isBitwiseOREqualToken(node /*: ESNode | Token */) /*: implies node is MostTokens */ {
1303
1309
  return node.type === 'Punctuator' && node.value === '|=';
1304
1310
  }
1305
1311
 
1306
1312
 
1307
- export function isBitwiseXOREqualToken(node /*: ESNode | Token */) /*: node is MostTokens */ {
1313
+ export function isBitwiseXOREqualToken(node /*: ESNode | Token */) /*: implies node is MostTokens */ {
1308
1314
  return node.type === 'Punctuator' && node.value === '^=';
1309
1315
  }
1310
1316
 
1311
1317
 
1312
- export function isBitwiseANDEqualToken(node /*: ESNode | Token */) /*: node is MostTokens */ {
1318
+ export function isBitwiseANDEqualToken(node /*: ESNode | Token */) /*: implies node is MostTokens */ {
1313
1319
  return node.type === 'Punctuator' && node.value === '&=';
1314
1320
  }
1315
1321
 
1316
1322
 
1317
- export function isLogicalOREqualToken(node /*: ESNode | Token */) /*: node is MostTokens */ {
1323
+ export function isLogicalOREqualToken(node /*: ESNode | Token */) /*: implies node is MostTokens */ {
1318
1324
  return node.type === 'Punctuator' && node.value === '||=';
1319
1325
  }
1320
1326
 
1321
1327
 
1322
- export function isLogicalANDEqualToken(node /*: ESNode | Token */) /*: node is MostTokens */ {
1328
+ export function isLogicalANDEqualToken(node /*: ESNode | Token */) /*: implies node is MostTokens */ {
1323
1329
  return node.type === 'Punctuator' && node.value === '&&=';
1324
1330
  }
1325
1331
 
1326
1332
 
1327
- export function isNullishCoalesceEqualToken(node /*: ESNode | Token */) /*: node is MostTokens */ {
1333
+ export function isNullishCoalesceEqualToken(node /*: ESNode | Token */) /*: implies node is MostTokens */ {
1328
1334
  return node.type === 'Punctuator' && node.value === '??=';
1329
1335
  }
1330
1336
 
1331
1337
 
1332
- export function isIncrementToken(node /*: ESNode | Token */) /*: node is MostTokens */ {
1338
+ export function isIncrementToken(node /*: ESNode | Token */) /*: implies node is MostTokens */ {
1333
1339
  return node.type === 'Punctuator' && node.value === '++';
1334
1340
  }
1335
1341
 
1336
1342
 
1337
- export function isDecrementToken(node /*: ESNode | Token */) /*: node is MostTokens */ {
1343
+ export function isDecrementToken(node /*: ESNode | Token */) /*: implies node is MostTokens */ {
1338
1344
  return node.type === 'Punctuator' && node.value === '--';
1339
1345
  }
1340
1346
 
1341
1347
 
1342
- export function isUnionTypeToken(node /*: ESNode | Token */) /*: node is MostTokens */ {
1348
+ export function isUnionTypeToken(node /*: ESNode | Token */) /*: implies node is MostTokens */ {
1343
1349
  return node.type === 'Punctuator' && node.value === '|';
1344
1350
  }
1345
1351
 
1346
1352
 
1347
- export function isIntersectionTypeToken(node /*: ESNode | Token */) /*: node is MostTokens */ {
1353
+ export function isIntersectionTypeToken(node /*: ESNode | Token */) /*: implies node is MostTokens */ {
1348
1354
  return node.type === 'Punctuator' && node.value === '&';
1349
1355
  }
1350
1356
 
1351
1357
 
1352
- export function isBreakToken(node /*: ESNode | Token */) /*: node is MostTokens */ {
1358
+ export function isBreakToken(node /*: ESNode | Token */) /*: implies node is MostTokens */ {
1353
1359
  return node.type === 'Keyword' && node.value === 'break';
1354
1360
  }
1355
1361
 
1356
1362
 
1357
- export function isCaseToken(node /*: ESNode | Token */) /*: node is MostTokens */ {
1363
+ export function isCaseToken(node /*: ESNode | Token */) /*: implies node is MostTokens */ {
1358
1364
  return node.type === 'Keyword' && node.value === 'case';
1359
1365
  }
1360
1366
 
1361
1367
 
1362
- export function isCatchToken(node /*: ESNode | Token */) /*: node is MostTokens */ {
1368
+ export function isCatchToken(node /*: ESNode | Token */) /*: implies node is MostTokens */ {
1363
1369
  return node.type === 'Keyword' && node.value === 'catch';
1364
1370
  }
1365
1371
 
1366
1372
 
1367
- export function isClassToken(node /*: ESNode | Token */) /*: node is MostTokens */ {
1373
+ export function isClassToken(node /*: ESNode | Token */) /*: implies node is MostTokens */ {
1368
1374
  return node.type === 'Keyword' && node.value === 'class';
1369
1375
  }
1370
1376
 
1371
1377
 
1372
- export function isConstToken(node /*: ESNode | Token */) /*: node is MostTokens */ {
1378
+ export function isConstToken(node /*: ESNode | Token */) /*: implies node is MostTokens */ {
1373
1379
  return node.type === 'Keyword' && node.value === 'const';
1374
1380
  }
1375
1381
 
1376
1382
 
1377
- export function isContinueToken(node /*: ESNode | Token */) /*: node is MostTokens */ {
1383
+ export function isContinueToken(node /*: ESNode | Token */) /*: implies node is MostTokens */ {
1378
1384
  return node.type === 'Keyword' && node.value === 'continue';
1379
1385
  }
1380
1386
 
1381
1387
 
1382
- export function isDebuggerToken(node /*: ESNode | Token */) /*: node is MostTokens */ {
1388
+ export function isDebuggerToken(node /*: ESNode | Token */) /*: implies node is MostTokens */ {
1383
1389
  return node.type === 'Keyword' && node.value === 'debugger';
1384
1390
  }
1385
1391
 
1386
1392
 
1387
- export function isDefaultToken(node /*: ESNode | Token */) /*: node is MostTokens */ {
1393
+ export function isDefaultToken(node /*: ESNode | Token */) /*: implies node is MostTokens */ {
1388
1394
  return node.type === 'Keyword' && node.value === 'default';
1389
1395
  }
1390
1396
 
1391
1397
 
1392
- export function isDoToken(node /*: ESNode | Token */) /*: node is MostTokens */ {
1398
+ export function isDoToken(node /*: ESNode | Token */) /*: implies node is MostTokens */ {
1393
1399
  return node.type === 'Keyword' && node.value === 'do';
1394
1400
  }
1395
1401
 
1396
1402
 
1397
- export function isElseToken(node /*: ESNode | Token */) /*: node is MostTokens */ {
1403
+ export function isElseToken(node /*: ESNode | Token */) /*: implies node is MostTokens */ {
1398
1404
  return node.type === 'Keyword' && node.value === 'else';
1399
1405
  }
1400
1406
 
1401
1407
 
1402
- export function isEnumToken(node /*: ESNode | Token */) /*: node is MostTokens */ {
1408
+ export function isEnumToken(node /*: ESNode | Token */) /*: implies node is MostTokens */ {
1403
1409
  return node.type === 'Keyword' && node.value === 'enum';
1404
1410
  }
1405
1411
 
1406
1412
 
1407
- export function isExportToken(node /*: ESNode | Token */) /*: node is MostTokens */ {
1413
+ export function isExportToken(node /*: ESNode | Token */) /*: implies node is MostTokens */ {
1408
1414
  return node.type === 'Keyword' && node.value === 'export';
1409
1415
  }
1410
1416
 
1411
1417
 
1412
- export function isExtendsToken(node /*: ESNode | Token */) /*: node is MostTokens */ {
1418
+ export function isExtendsToken(node /*: ESNode | Token */) /*: implies node is MostTokens */ {
1413
1419
  return node.type === 'Keyword' && node.value === 'extends';
1414
1420
  }
1415
1421
 
1416
1422
 
1417
- export function isFinallyToken(node /*: ESNode | Token */) /*: node is MostTokens */ {
1423
+ export function isFinallyToken(node /*: ESNode | Token */) /*: implies node is MostTokens */ {
1418
1424
  return node.type === 'Keyword' && node.value === 'finally';
1419
1425
  }
1420
1426
 
1421
1427
 
1422
- export function isForToken(node /*: ESNode | Token */) /*: node is MostTokens */ {
1428
+ export function isForToken(node /*: ESNode | Token */) /*: implies node is MostTokens */ {
1423
1429
  return node.type === 'Keyword' && node.value === 'for';
1424
1430
  }
1425
1431
 
1426
1432
 
1427
- export function isFunctionToken(node /*: ESNode | Token */) /*: node is MostTokens */ {
1433
+ export function isFunctionToken(node /*: ESNode | Token */) /*: implies node is MostTokens */ {
1428
1434
  return node.type === 'Keyword' && node.value === 'function';
1429
1435
  }
1430
1436
 
1431
1437
 
1432
- export function isIfToken(node /*: ESNode | Token */) /*: node is MostTokens */ {
1438
+ export function isIfToken(node /*: ESNode | Token */) /*: implies node is MostTokens */ {
1433
1439
  return node.type === 'Keyword' && node.value === 'if';
1434
1440
  }
1435
1441
 
1436
1442
 
1437
- export function isImplementsToken(node /*: ESNode | Token */) /*: node is MostTokens */ {
1443
+ export function isImplementsToken(node /*: ESNode | Token */) /*: implies node is MostTokens */ {
1438
1444
  return node.type === 'Keyword' && node.value === 'implements';
1439
1445
  }
1440
1446
 
1441
1447
 
1442
- export function isImportToken(node /*: ESNode | Token */) /*: node is MostTokens */ {
1448
+ export function isImportToken(node /*: ESNode | Token */) /*: implies node is MostTokens */ {
1443
1449
  return node.type === 'Keyword' && node.value === 'import';
1444
1450
  }
1445
1451
 
1446
1452
 
1447
- export function isInterfaceToken(node /*: ESNode | Token */) /*: node is MostTokens */ {
1453
+ export function isInterfaceToken(node /*: ESNode | Token */) /*: implies node is MostTokens */ {
1448
1454
  return node.type === 'Keyword' && node.value === 'interface';
1449
1455
  }
1450
1456
 
1451
1457
 
1452
- export function isNewToken(node /*: ESNode | Token */) /*: node is MostTokens */ {
1458
+ export function isNewToken(node /*: ESNode | Token */) /*: implies node is MostTokens */ {
1453
1459
  return node.type === 'Keyword' && node.value === 'new';
1454
1460
  }
1455
1461
 
1456
1462
 
1457
- export function isReturnToken(node /*: ESNode | Token */) /*: node is MostTokens */ {
1463
+ export function isReturnToken(node /*: ESNode | Token */) /*: implies node is MostTokens */ {
1458
1464
  return node.type === 'Keyword' && node.value === 'return';
1459
1465
  }
1460
1466
 
1461
1467
 
1462
- export function isStaticToken(node /*: ESNode | Token */) /*: node is MostTokens */ {
1468
+ export function isStaticToken(node /*: ESNode | Token */) /*: implies node is MostTokens */ {
1463
1469
  return node.type === 'Keyword' && node.value === 'static';
1464
1470
  }
1465
1471
 
1466
1472
 
1467
- export function isSuperToken(node /*: ESNode | Token */) /*: node is MostTokens */ {
1473
+ export function isSuperToken(node /*: ESNode | Token */) /*: implies node is MostTokens */ {
1468
1474
  return node.type === 'Keyword' && node.value === 'super';
1469
1475
  }
1470
1476
 
1471
1477
 
1472
- export function isSwitchToken(node /*: ESNode | Token */) /*: node is MostTokens */ {
1478
+ export function isSwitchToken(node /*: ESNode | Token */) /*: implies node is MostTokens */ {
1473
1479
  return node.type === 'Keyword' && node.value === 'switch';
1474
1480
  }
1475
1481
 
1476
1482
 
1477
- export function isThisToken(node /*: ESNode | Token */) /*: node is MostTokens */ {
1483
+ export function isThisToken(node /*: ESNode | Token */) /*: implies node is MostTokens */ {
1478
1484
  return node.type === 'Keyword' && node.value === 'this';
1479
1485
  }
1480
1486
 
1481
1487
 
1482
- export function isThrowToken(node /*: ESNode | Token */) /*: node is MostTokens */ {
1488
+ export function isThrowToken(node /*: ESNode | Token */) /*: implies node is MostTokens */ {
1483
1489
  return node.type === 'Keyword' && node.value === 'throw';
1484
1490
  }
1485
1491
 
1486
1492
 
1487
- export function isTryToken(node /*: ESNode | Token */) /*: node is MostTokens */ {
1493
+ export function isTryToken(node /*: ESNode | Token */) /*: implies node is MostTokens */ {
1488
1494
  return node.type === 'Keyword' && node.value === 'try';
1489
1495
  }
1490
1496
 
1491
1497
 
1492
- export function isVarToken(node /*: ESNode | Token */) /*: node is MostTokens */ {
1498
+ export function isVarToken(node /*: ESNode | Token */) /*: implies node is MostTokens */ {
1493
1499
  return node.type === 'Keyword' && node.value === 'var';
1494
1500
  }
1495
1501
 
1496
1502
 
1497
- export function isWhileToken(node /*: ESNode | Token */) /*: node is MostTokens */ {
1503
+ export function isWhileToken(node /*: ESNode | Token */) /*: implies node is MostTokens */ {
1498
1504
  return node.type === 'Keyword' && node.value === 'while';
1499
1505
  }
1500
1506
 
1501
1507
 
1502
- export function isWithToken(node /*: ESNode | Token */) /*: node is MostTokens */ {
1508
+ export function isWithToken(node /*: ESNode | Token */) /*: implies node is MostTokens */ {
1503
1509
  return node.type === 'Keyword' && node.value === 'with';
1504
1510
  }
1505
1511
 
1506
1512
 
1507
- export function isYieldToken(node /*: ESNode | Token */) /*: node is MostTokens */ {
1513
+ export function isYieldToken(node /*: ESNode | Token */) /*: implies node is MostTokens */ {
1508
1514
  return node.type === 'Keyword' && node.value === 'yield';
1509
1515
  }
1510
1516
 
1511
1517
 
1512
- export function isAsKeyword(node /*: ESNode | Token */) /*: node is (Identifier | MostTokens) */ {
1518
+ export function isAsKeyword(node /*: ESNode | Token */) /*: implies node is (Identifier | MostTokens) */ {
1513
1519
  return (
1514
1520
  (node.type === 'Identifier' && node.name === 'as') ||
1515
1521
  (node.type === 'Keyword' && node.value === 'as')
@@ -1517,7 +1523,7 @@ export function isAsKeyword(node /*: ESNode | Token */) /*: node is (Identifier
1517
1523
  }
1518
1524
 
1519
1525
 
1520
- export function isAsyncKeyword(node /*: ESNode | Token */) /*: node is (Identifier | MostTokens) */ {
1526
+ export function isAsyncKeyword(node /*: ESNode | Token */) /*: implies node is (Identifier | MostTokens) */ {
1521
1527
  return (
1522
1528
  (node.type === 'Identifier' && node.name === 'async') ||
1523
1529
  (node.type === 'Keyword' && node.value === 'async')
@@ -1525,7 +1531,7 @@ export function isAsyncKeyword(node /*: ESNode | Token */) /*: node is (Identifi
1525
1531
  }
1526
1532
 
1527
1533
 
1528
- export function isAwaitKeyword(node /*: ESNode | Token */) /*: node is (Identifier | MostTokens) */ {
1534
+ export function isAwaitKeyword(node /*: ESNode | Token */) /*: implies node is (Identifier | MostTokens) */ {
1529
1535
  return (
1530
1536
  (node.type === 'Identifier' && node.name === 'await') ||
1531
1537
  (node.type === 'Keyword' && node.value === 'await')
@@ -1533,7 +1539,7 @@ export function isAwaitKeyword(node /*: ESNode | Token */) /*: node is (Identifi
1533
1539
  }
1534
1540
 
1535
1541
 
1536
- export function isDeclareKeyword(node /*: ESNode | Token */) /*: node is (Identifier | MostTokens) */ {
1542
+ export function isDeclareKeyword(node /*: ESNode | Token */) /*: implies node is (Identifier | MostTokens) */ {
1537
1543
  return (
1538
1544
  (node.type === 'Identifier' && node.name === 'declare') ||
1539
1545
  (node.type === 'Keyword' && node.value === 'declare')
@@ -1541,7 +1547,7 @@ export function isDeclareKeyword(node /*: ESNode | Token */) /*: node is (Identi
1541
1547
  }
1542
1548
 
1543
1549
 
1544
- export function isFromKeyword(node /*: ESNode | Token */) /*: node is (Identifier | MostTokens) */ {
1550
+ export function isFromKeyword(node /*: ESNode | Token */) /*: implies node is (Identifier | MostTokens) */ {
1545
1551
  return (
1546
1552
  (node.type === 'Identifier' && node.name === 'from') ||
1547
1553
  (node.type === 'Keyword' && node.value === 'from')
@@ -1549,7 +1555,7 @@ export function isFromKeyword(node /*: ESNode | Token */) /*: node is (Identifie
1549
1555
  }
1550
1556
 
1551
1557
 
1552
- export function isGetKeyword(node /*: ESNode | Token */) /*: node is (Identifier | MostTokens) */ {
1558
+ export function isGetKeyword(node /*: ESNode | Token */) /*: implies node is (Identifier | MostTokens) */ {
1553
1559
  return (
1554
1560
  (node.type === 'Identifier' && node.name === 'get') ||
1555
1561
  (node.type === 'Keyword' && node.value === 'get')
@@ -1557,7 +1563,7 @@ export function isGetKeyword(node /*: ESNode | Token */) /*: node is (Identifier
1557
1563
  }
1558
1564
 
1559
1565
 
1560
- export function isLetKeyword(node /*: ESNode | Token */) /*: node is (Identifier | MostTokens) */ {
1566
+ export function isLetKeyword(node /*: ESNode | Token */) /*: implies node is (Identifier | MostTokens) */ {
1561
1567
  return (
1562
1568
  (node.type === 'Identifier' && node.name === 'let') ||
1563
1569
  (node.type === 'Keyword' && node.value === 'let')
@@ -1565,7 +1571,7 @@ export function isLetKeyword(node /*: ESNode | Token */) /*: node is (Identifier
1565
1571
  }
1566
1572
 
1567
1573
 
1568
- export function isModuleKeyword(node /*: ESNode | Token */) /*: node is (Identifier | MostTokens) */ {
1574
+ export function isModuleKeyword(node /*: ESNode | Token */) /*: implies node is (Identifier | MostTokens) */ {
1569
1575
  return (
1570
1576
  (node.type === 'Identifier' && node.name === 'module') ||
1571
1577
  (node.type === 'Keyword' && node.value === 'module')
@@ -1573,7 +1579,7 @@ export function isModuleKeyword(node /*: ESNode | Token */) /*: node is (Identif
1573
1579
  }
1574
1580
 
1575
1581
 
1576
- export function isOfKeyword(node /*: ESNode | Token */) /*: node is (Identifier | MostTokens) */ {
1582
+ export function isOfKeyword(node /*: ESNode | Token */) /*: implies node is (Identifier | MostTokens) */ {
1577
1583
  return (
1578
1584
  (node.type === 'Identifier' && node.name === 'of') ||
1579
1585
  (node.type === 'Keyword' && node.value === 'of')
@@ -1581,7 +1587,7 @@ export function isOfKeyword(node /*: ESNode | Token */) /*: node is (Identifier
1581
1587
  }
1582
1588
 
1583
1589
 
1584
- export function isSetKeyword(node /*: ESNode | Token */) /*: node is (Identifier | MostTokens) */ {
1590
+ export function isSetKeyword(node /*: ESNode | Token */) /*: implies node is (Identifier | MostTokens) */ {
1585
1591
  return (
1586
1592
  (node.type === 'Identifier' && node.name === 'set') ||
1587
1593
  (node.type === 'Keyword' && node.value === 'set')
@@ -1589,7 +1595,7 @@ export function isSetKeyword(node /*: ESNode | Token */) /*: node is (Identifier
1589
1595
  }
1590
1596
 
1591
1597
 
1592
- export function isTypeKeyword(node /*: ESNode | Token */) /*: node is (Identifier | MostTokens) */ {
1598
+ export function isTypeKeyword(node /*: ESNode | Token */) /*: implies node is (Identifier | MostTokens) */ {
1593
1599
  return (
1594
1600
  (node.type === 'Identifier' && node.name === 'type') ||
1595
1601
  (node.type === 'Keyword' && node.value === 'type')
@@ -1597,67 +1603,67 @@ export function isTypeKeyword(node /*: ESNode | Token */) /*: node is (Identifie
1597
1603
  }
1598
1604
 
1599
1605
 
1600
- export function isCommaToken(node /*: ESNode | Token */) /*: node is MostTokens */ {
1606
+ export function isCommaToken(node /*: ESNode | Token */) /*: implies node is MostTokens */ {
1601
1607
  return node.type === 'Punctuator' && node.value === ',';
1602
1608
  }
1603
1609
 
1604
1610
 
1605
- export function isColonToken(node /*: ESNode | Token */) /*: node is MostTokens */ {
1611
+ export function isColonToken(node /*: ESNode | Token */) /*: implies node is MostTokens */ {
1606
1612
  return node.type === 'Punctuator' && node.value === ':';
1607
1613
  }
1608
1614
 
1609
1615
 
1610
- export function isSemicolonToken(node /*: ESNode | Token */) /*: node is MostTokens */ {
1616
+ export function isSemicolonToken(node /*: ESNode | Token */) /*: implies node is MostTokens */ {
1611
1617
  return node.type === 'Punctuator' && node.value === ';';
1612
1618
  }
1613
1619
 
1614
1620
 
1615
- export function isDotToken(node /*: ESNode | Token */) /*: node is MostTokens */ {
1621
+ export function isDotToken(node /*: ESNode | Token */) /*: implies node is MostTokens */ {
1616
1622
  return node.type === 'Punctuator' && node.value === '.';
1617
1623
  }
1618
1624
 
1619
1625
 
1620
- export function isDotDotDotToken(node /*: ESNode | Token */) /*: node is MostTokens */ {
1626
+ export function isDotDotDotToken(node /*: ESNode | Token */) /*: implies node is MostTokens */ {
1621
1627
  return node.type === 'Punctuator' && node.value === '...';
1622
1628
  }
1623
1629
 
1624
1630
 
1625
- export function isOptionalChainToken(node /*: ESNode | Token */) /*: node is MostTokens */ {
1631
+ export function isOptionalChainToken(node /*: ESNode | Token */) /*: implies node is MostTokens */ {
1626
1632
  return node.type === 'Punctuator' && node.value === '?.';
1627
1633
  }
1628
1634
 
1629
1635
 
1630
- export function isQuestionMarkToken(node /*: ESNode | Token */) /*: node is MostTokens */ {
1636
+ export function isQuestionMarkToken(node /*: ESNode | Token */) /*: implies node is MostTokens */ {
1631
1637
  return node.type === 'Punctuator' && node.value === '?';
1632
1638
  }
1633
1639
 
1634
1640
 
1635
- export function isOpeningParenthesisToken(node /*: ESNode | Token */) /*: node is MostTokens */ {
1641
+ export function isOpeningParenthesisToken(node /*: ESNode | Token */) /*: implies node is MostTokens */ {
1636
1642
  return node.type === 'Punctuator' && node.value === '(';
1637
1643
  }
1638
1644
 
1639
1645
 
1640
- export function isClosingParenthesisToken(node /*: ESNode | Token */) /*: node is MostTokens */ {
1646
+ export function isClosingParenthesisToken(node /*: ESNode | Token */) /*: implies node is MostTokens */ {
1641
1647
  return node.type === 'Punctuator' && node.value === ')';
1642
1648
  }
1643
1649
 
1644
1650
 
1645
- export function isOpeningCurlyBracketToken(node /*: ESNode | Token */) /*: node is MostTokens */ {
1651
+ export function isOpeningCurlyBracketToken(node /*: ESNode | Token */) /*: implies node is MostTokens */ {
1646
1652
  return node.type === 'Punctuator' && node.value === '{';
1647
1653
  }
1648
1654
 
1649
1655
 
1650
- export function isClosingCurlyBracketToken(node /*: ESNode | Token */) /*: node is MostTokens */ {
1656
+ export function isClosingCurlyBracketToken(node /*: ESNode | Token */) /*: implies node is MostTokens */ {
1651
1657
  return node.type === 'Punctuator' && node.value === '}';
1652
1658
  }
1653
1659
 
1654
1660
 
1655
- export function isOpeningAngleBracketToken(node /*: ESNode | Token */) /*: node is MostTokens */ {
1661
+ export function isOpeningAngleBracketToken(node /*: ESNode | Token */) /*: implies node is MostTokens */ {
1656
1662
  return node.type === 'Punctuator' && node.value === '<';
1657
1663
  }
1658
1664
 
1659
1665
 
1660
- export function isClosingAngleBracketToken(node /*: ESNode | Token */) /*: node is MostTokens */ {
1666
+ export function isClosingAngleBracketToken(node /*: ESNode | Token */) /*: implies node is MostTokens */ {
1661
1667
  return node.type === 'Punctuator' && node.value === '>';
1662
1668
  }
1663
1669