anchor.diff:      Statement elsePart = popIfNotNull(elseToken);
       Statement thenPart = pop();
       Expression condition = pop();
  -    analyzer.BeginToken leftParenthesis = ifToken.next;
  +    analyzer.BeginToken leftParenthesis =
  +        unsafeToken(ifToken.next, TokenType.OPEN_PAREN);
       push(ast.ifStatement(ifToken, ifToken.next, condition,
           leftParenthesis.endGroup, thenPart, elseToken, elsePart));
     }
  
positive.code:     exitLocalScope();
      exitContinueTarget();
      exitBreakTarget();
      analyzer.BeginToken leftParenthesis = forKeyword.next;
  
      VariableDeclarationList variableList;
      Expression initializer;
  
negative.code:     }
      library.addCompileTimeError(message, charOffset, uri);
    }
  
    /// A marker method used to mark locations where a token is being located in
    /// an unsafe way. In all such cases the parser needs to be fixed to pass in
    /// the token.
    Token unsafeToken(Token token, TokenType tokenType) {
      // TODO(brianwilkerson) Eliminate the need for this method.
      return token.type == tokenType ? token : null;
    }
  }
  
  /// Data structure placed on the stack to represent a class body.
  