anchor.diff:          : new StringExpression(identifier);
     }
   
  -  StringExpression _trySpecialFunction(String name, FileSpan nameSpan) {
  +  Expression _trySpecialFunction(String name, FileSpan nameSpan) {
       var normalized = unvendor(name);
   
       InterpolationBuffer buffer;
  
positive.code:           ..write(name)
            ..writeCharCode($colon);
          buffer.write(identifier());
          break;
  
        default:
          return null;
      }
  
      scanner.expectChar($lparen);
      buffer.writeCharCode($lparen);
      buffer.addInterpolation(_interpolatedDeclarationValue().text);
      scanner.expectChar($rparen);
      buffer.writeCharCode($rparen);
  
      return new StringExpression(
          buffer.interpolation(nameSpan.expand(scanner.emptySpan)));
    }
  
    /// Consumes tokens up to "{", "}", ";", or "!".
  
negative.code:       case "calc":
        case "element":
        case "expression":
          if (!scanner.scanChar($lparen)) return null;
          buffer = new InterpolationBuffer()
            ..write(name)
            ..writeCharCode($lparen);
          break;
  
        case "progid":
  