522: * @param type BlockStatement or StaticBlock
524:function parseBlock<T extends ESTree.BlockStatement | ESTree.StaticBlock = ESTree.BlockStatement>(
1444:function parseStaticBlock(
1450:): ESTree.StaticBlock {
1451:  // ClassStaticBlock :
1452:  //   static { ClassStaticBlockBody }
1454:  // ClassStaticBlockBody :
1455:  //   ClassStaticBlockStatementList
1457:  // ClassStaticBlockStatementList :
1469:    Context.InStaticBlock |
---
) {
  if (parser.getToken() === Token.AwaitKeyword) parser.report(Errors.AwaitInParameter);

  if (context & (Context.Strict | Context.InYieldContext) && parser.getToken() === Token.YieldKeyword) {
    parser.report(Errors.YieldInParameter);
  }

  classifyIdentifier(parser, context, parser.getToken());

  if ((parser.getToken() & Token.FutureReserved) === Token.FutureReserved) {
    parser.flags |= Flags.HasStrictReserved;
  }

  return parseArrowFromIdentifier(
    parser,
    (context & ~Context.InStaticBlock) | Context.InAwaitContext,
    privateScope,
    parser.tokenValue,
    parseIdentifier(parser, context),
    0,
    canAssign,
    1,
    start,
  );
}

/**
 * Parses async arrow or call expressions
 *
 * @param parser Parser object
 * @param context  Context masks
 * @param callee  ESTree AST node
 * @param assignable
 * @param kind Binding kind
 * @param origin Binding origin
 * @param flags Mutual parser flags
 * @param start Start pos of node
 */
function parseAsyncArrowOrCallExpression(
  parser: Parser,
  context: Context,
  privateScope: PrivateScope | undefined,
  callee: ESTree.Identifier | void,
  canAssign: 0 | 1,
  kind: BindingKind,
  origin: Origin,
  flags: Flags,
  start: Location,
): ESTree.CallExpression | ESTree.ArrowFunctionExpression {
  nextToken(parser, context | Context.AllowRegExp);

