anchor.diff:      assert(optional('part', token));
       Token partKeyword = token;
       listener.beginPart(token);
  -    token = parseLiteralStringOrRecoverExpression(token.next);
  +    token = parseLiteralStringOrRecoverExpression(token);
       token = ensureSemicolon(token);
       listener.endPart(partKeyword, token);
       return token;
  
positive.code:     Token equalitySign;
      if (optional('==', token)) {
        equalitySign = token;
        token = parseLiteralStringOrRecoverExpression(token.next);
      }
      token = expect(')', token);
      token = parseLiteralStringOrRecoverExpression(token);
      listener.endConditionalUri(ifKeyword, leftParen, equalitySign);
      return token;
  
negative.code:   }
  
    Token parseRecoverExpression(Token token, Message message) {
      // TODO(brianwilkerson) Return the last consumed token.
      return parseExpression(token.next);
    }
  
    int expressionDepth = 0;
  