anchor.diff:      List<HInstruction> values = _visitPositionalArguments(arguments);
   
       if (arguments.named.isNotEmpty) {
  -      Map<String, HInstruction> namedValues = {};
  -      for (ir.NamedExpression argument in arguments.named) {
  -        argument.value.accept(this);
  -        namedValues[argument.name] = pop();
  -      }
  +      Map<String, HInstruction> namedValues = _visitNamedArguments(arguments);
         for (String name in selector.callStructure.getOrderedNamedArguments()) {
           values.add(namedValues[name]);
         }
  
positive.code:     }
    }
  
    /// Extracts the list of instructions for the positional subset of arguments.
    List<HInstruction> _visitPositionalArguments(ir.Arguments arguments) {
      List<HInstruction> result = [];
      for (ir.Expression argument in arguments.positional) {
  
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.
  