anchor.diff:        result.add(pop());
       }
       return result;
  +  }
  +
  +  /// Generate instructions to evaluate the named arguments in source order.
  +  /// Returns a fresh map from parameter name to evaluated argument.
  +  Map<String, HInstruction> _visitNamedArguments(ir.Arguments arguments) {
  +    Map<String, HInstruction> values = {};
  +    for (ir.NamedExpression argument in arguments.named) {
  +      argument.value.accept(this);
  +      values[argument.name] = pop();
  +    }
  +    return values;
     }
   
     /// Builds the list of instructions for the expressions in the arguments to a
  
positive.code:         arguments.positional[positionalIndex++].accept(this);
          builtArguments.add(pop());
        } else {
          ConstantValue constantValue = _elementMap.getConstantValue(
              member, parameter.initializer,
              implicitNull: true);
          assert(
              constantValue != null,
              failedAt(_elementMap.getMethod(function.parent),
                  'No constant computed for $parameter'));
          builtArguments.add(graph.addConstant(constantValue, closedWorld));
        }
      });
      function.namedParameters.toList()
        ..sort(namedOrdering)
        ..forEach((ir.VariableDeclaration parameter) {
          var correspondingNamed = arguments.named.firstWhere(
              (named) => named.name == parameter.name,
              orElse: () => null);
          if (correspondingNamed != null) {
            correspondingNamed.value.accept(this);
            builtArguments.add(pop());
          } else {
            ConstantValue constantValue = _elementMap.getConstantValue(
                member, parameter.initializer,
                implicitNull: true);
            assert(
                constantValue != null,
                failedAt(_elementMap.getMethod(function.parent),
                    'No constant computed for $parameter'));
            builtArguments.add(graph.addConstant(constantValue, closedWorld));
          }
        });
  
      return builtArguments;
  
negative.code:       if (function is ConstructorEntity && function.isFactoryConstructor) {
          // TODO(sra): Have a "CompiledArguments" structure to just update with
          // what values we have rather than creating a map and de-populating it.
          Map<String, HInstruction> namedValues = _visitNamedArguments(arguments);
  
          // Visit named arguments in parameter-position order, selecting provided
          // or default value.
  