anchor.diff:    }
   
     Token parseExpressionWithoutCascade(Token token) {
  -    // TODO(brianwilkerson) Accept the last consumed token.
  -    // TODO(brianwilkerson) Return the last consumed token.
  -    return optional('throw', token)
  -        ? parseThrowExpression(token, false)
  -        : parsePrecedenceExpression(token, ASSIGNMENT_PRECEDENCE, false);
  +    // TODO(brianwilkerson) Return the last consumed token.
  +    return optional('throw', token.next)
  +        ? parseThrowExpression(token.next, false)
  +        : parsePrecedenceExpression(token.next, ASSIGNMENT_PRECEDENCE, false);
     }
   
     Token parseConditionalExpressionRest(Token token) {
  
positive.code: 
      if (identical(token.type.precedence, ASSIGNMENT_PRECEDENCE)) {
        Token assignment = token;
        token = parseExpressionWithoutCascade(token.next);
        listener.handleAssignmentExpression(assignment);
      }
      listener.endCascade();
  
negative.code:     assert(optional('?', token));
      Token question = token;
      listener.beginConditionalExpression();
      token = parseExpressionWithoutCascade(token);
      Token colon = token;
      expect(':', token);
      listener.handleConditionalExpressionColon();
      token = parseExpressionWithoutCascade(token);
      listener.endConditionalExpression(question, colon);
  