anchor.diff:      listener.beginForInExpression(token.next);
       token = parseExpression(token.next);
       listener.endForInExpression(token);
  -    token = expect(')', token);
  -    listener.beginForInBody(token);
  -    token = parseStatementOpt(token);
  +    expect(')', token);
  +    listener.beginForInBody(token.next);
  +    token = parseStatementOpt(token.next);
       listener.endForInBody(token.next);
       listener.endForIn(
           awaitToken, forKeyword, leftParenthesis, inKeyword, token.next);
  
positive.code:     listener.beginBlockFunctionBody(begin);
      token = token.next;
      while (notEofOrValue('}', token)) {
        Token startToken = token;
        token = parseStatementOpt(token).next;
        if (identical(token, startToken)) {
          // No progress was made, so we report the current token as being invalid
          // and move forward.
          reportRecoverableError(
  
negative.code:     // TODO(brianwilkerson) Return the last consumed token.
      Token beginToken = token;
      listener.beginFunctionExpression(token);
      token = parseFormalParametersRequiredOpt(token, MemberKind.Local);
      token = parseAsyncOptBody(token.next, true, false);
      listener.endFunctionExpression(beginToken, token);
      return token;
    }
  