anchor.diff:      scanner.expectChar($rparen);
       buffer.writeCharCode($rparen);
   
  -    return new StringExpression(
  -        buffer.interpolation(nameSpan.expand(scanner.emptySpan)));
  -  }
  -
  -  Expression _urlContents(FileSpan nameSpan) {
  -    var start = scanner.state;
  +    return new StringExpression(buffer.interpolation(scanner.spanFrom(start)));
  +  }
  +
  +  Interpolation _tryUrlContents(LineScannerState start) {
  +    var start = scanner.state;
  +    if (!scanner.scanChar($lparen)) return null;
       whitespace();
   
       // Match Ruby Sass's behavior: parse a raw URL() if possible, and if not
  
positive.code:   }
  
    Expression _identifierLike() {
      var identifier = _interpolatedIdentifier();
      var plain = identifier.asPlain;
      if (plain != null) {
  
negative.code:         case $semicolon:
            break loop;
  
          case $u:
          case $U:
            var beforeUrl = scanner.state;
            if (!scanIdentifier("url", ignoreCase: true)) {
              buffer.writeCharCode(scanner.readChar());
              wroteNewline = false;
              break;
            }
  
            var contents = _tryUrlContents(beforeUrl);
            if (contents == null) {
              scanner.state = beforeUrl;
              buffer.writeCharCode(scanner.readChar());
            } else {
              buffer.addInterpolation(contents);
            }
            wroteNewline = false;
            break;
  
          default:
            if (next == null) break loop;
  
            if (lookingAtIdentifier()) {
              buffer.write(identifier());
            } else {
              buffer.writeCharCode(scanner.readChar());
            }
            wroteNewline = false;
            break;
        }
  