anchor.diff:      scanner.expectChar($lparen);
       whitespace();
       var arguments = <Argument>[];
  +    var named = normalizedSet();
       String restArgument;
       while (scanner.peekChar() == $dollar) {
         var variableStart = scanner.state;
  
positive.code: 
        arguments.add(new Argument(name,
            span: scanner.spanFrom(variableStart), defaultValue: defaultValue));
        if (!scanner.scanChar($comma)) break;
        whitespace();
      }
  
negative.code: 
        if (expression is VariableExpression && scanner.scanChar($colon)) {
          whitespace();
          if (named.containsKey(expression.name)) {
            scanner.error("Duplicate argument.",
                position: expression.span.start.offset,
                length: expression.span.length);
          }
          named[expression.name] = _expressionUntilComma();
        } else if (scanner.scanChar($dot)) {
          scanner.expectChar($dot);
  