anchor.diff:  
         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);
  
positive.code: 
        arguments.add(new Argument(name,
            span: scanner.spanFrom(variableStart), defaultValue: defaultValue));
        if (!scanner.scanChar($comma)) break;
        whitespace();
      }
  
negative.code:     whitespace();
  
      var positional = <Expression>[];
      var named = normalizedMap/*<Expression>*/();
      Expression rest;
      Expression keywordRest;
      while (_lookingAtExpression()) {
  