  2170→
  2171→  scope = scope?.createChildScope(ScopeKind.ForStatement);
  2172→
  2173→  let test: ESTree.Expression | null = null;
  2174→  let update: ESTree.Expression | null = null;
  2175→  let destructible: AssignmentKind | DestructuringKind = 0;
  2176→  let init = null;
  2177→  let isVarDecl =
  2178→    parser.getToken() === Token.VarKeyword ||
  2179→    parser.getToken() === Token.LetKeyword ||
  2180→    parser.getToken() === Token.ConstKeyword;
  2181→  let right;
  2182→
  2183→  const { tokenStart } = parser;
  2184→  const token = parser.getToken();
  2185→
  2186→  if (isVarDecl) {
  2187→    if (token === Token.LetKeyword) {
  2188→      init = parseIdentifier(parser, context);
  2189→      if (parser.getToken() & (Token.IsIdentifier | Token.IsPatternStart)) {
  2190→        if (parser.getToken() === Token.InKeyword) {
  2191→          if (context & Context.Strict) parser.report(Errors.DisallowedLetInStrict);
  2192→        } else {
  2193→          init = parser.finishNode<ESTree.VariableDeclaration>(
  2194→            {
  2195→              type: 'VariableDeclaration',
  2196→              kind: 'let',
  2197→              declarations: parseVariableDeclarationList(
  2198→                parser,
  2199→                context | Context.DisallowIn,
  2200→                scope,
  2201→                privateScope,
  2202→                BindingKind.Let,
  2203→                Origin.ForStatement,
  2204→              ),
  2205→            },
  2206→            tokenStart,
  2207→          );
  2208→        }
  2209→
  2210→        parser.assignable = AssignmentKind.Assignable;
  2211→      } else if (context & Context.Strict) {
  2212→        parser.report(Errors.DisallowedLetInStrict);
  2213→      } else {
  2214→        isVarDecl = false;
  2215→        parser.assignable = AssignmentKind.Assignable;
  2216→        init = parseMemberOrUpdateExpression(parser, context, privateScope, init, 0, 0, tokenStart);
  2217→
  2218→        // `for of` only allows LeftHandSideExpressions which do not start with `let`, and no other production matches
  2219→        if (parser.getToken() === Token.OfKeyword) parser.report(Errors.ForOfLet);
  2220→      }
  2221→    } else {
  2222→      nextToken(parser, context);
  2223→
  2224→      init = parser.finishNode(
  2225→        token === Token.VarKeyword
  2226→          ? {
  2227→              type: 'VariableDeclaration',
  2228→              kind: 'var',
  2229→              declarations: parseVariableDeclarationList(
  2230→                parser,
  2231→                context | Context.DisallowIn,
  2232→                scope,
  2233→                privateScope,
  2234→                BindingKind.Variable,

[7008 more lines in file. Use offset=2235 to continue.]