anchor.diff:          brackets: true, span: scanner.spanFrom(start));
     }
   
  -  /// Parse a parenthesized expression.
  +  /// Consumes a parenthesized expression.
     Expression _parentheses() {
       var start = scanner.state;
       scanner.expectChar($lparen);
  
positive.code: 
      return new StringExpression(buffer.interpolation(scanner.spanFrom(start)),
          quotes: true);
    }
  
    Expression _hexColorOrID() {
      var start = scanner.state;
      scanner.expectChar($hash);
  
      var first = scanner.peekChar();
      if (first != null && isDigit(first)) {
        return new ColorExpression(_hexColorContents(), scanner.spanFrom(start));
      }
  
      var afterHash = scanner.state;
      var identifier = _interpolatedIdentifier();
      if (_isHexColor(identifier)) {
        scanner.state = afterHash;
        return new ColorExpression(_hexColorContents(), scanner.spanFrom(start));
      }
  
      var buffer = new InterpolationBuffer();
      buffer.writeCharCode($hash);
      buffer.addInterpolation(identifier);
      return new StringExpression(buffer.interpolation(scanner.spanFrom(start)));
    }
  
    SassColor _hexColorContents() {
      var red = _hexDigit();
      var green = _hexDigit();
      var blue = _hexDigit();
  
      var next = scanner.peekChar();
      if (next != null && isHex(next)) {
        red = (red << 4) + green;
        green = (blue << 4) + _hexDigit();
        blue = (_hexDigit() << 4) + _hexDigit();
      } else {
        red = (red << 4) + red;
        green = (green << 4) + green;
        blue = (blue << 4) + blue;
      }
  
      return new SassColor.rgb(red, green, blue);
    }
  
    bool _isHexColor(Interpolation interpolation) {
      var plain = interpolation.asPlain;
      if (plain == null) return false;
      if (plain.length != 3 && plain.length != 6) return false;
      return plain.codeUnits.every(isHex);
    }
  
    int _hexDigit() {
      var char = scanner.peekChar();
      if (char == null || !isHex(char)) scanner.error("Expected hex digit.");
      return asHex(scanner.readChar());
    }
  
    Expression _identifierLike() {
  
negative.code:         unit: unit);
    }
  
    /// Consumes a variable expression.
    VariableExpression _variable() {
      var start = scanner.state;
      return new VariableExpression(variableName(), scanner.spanFrom(start));
    }
  
    /// Consumes a selector expression.
    SelectorExpression _selector() {
      var start = scanner.state;
      scanner.expectChar($ampersand);
      return new SelectorExpression(scanner.spanFrom(start));
    }
  
    /// Consumes a quoted string expression.
    StringExpression interpolatedString() {
      // NOTE: this logic is largely duplicated in ScssParser.interpolatedString.
      // Most changes here should be mirrored there.
  