anchor.diff:            isCovariant = true;
           }
         }
  -      if (isGenericCovariantImpl != superParameter.isGenericCovariantImpl) {
  -        createImplIfNeeded();
  -      }
  -      if (isGenericCovariantImpl != parameter.isGenericCovariantImpl) {
  -        fixes.add((FunctionNode function) => function.namedParameters[i]
  -            .isGenericCovariantImpl = isGenericCovariantImpl);
  -      }
  -      if (isCovariant != superParameter.isCovariant) {
  -        createImplIfNeeded();
  -      }
  -      if (isCovariant != parameter.isCovariant) {
  -        fixes.add((FunctionNode function) =>
  -            function.namedParameters[i].isCovariant = isCovariant);
  +      if (isGenericCovariantImpl) {
  +        if (!superParameter.isGenericCovariantImpl) {
  +          createImplIfNeeded();
  +        }
  +        if (!parameter.isGenericCovariantImpl) {
  +          createStubIfNeeded();
  +          stub.function.namedParameters[i].isGenericCovariantImpl = true;
  +        }
  +      }
  +      if (isCovariant) {
  +        if (!superParameter.isCovariant) {
  +          createImplIfNeeded();
  +        }
  +        if (!parameter.isCovariant) {
  +          createStubIfNeeded();
  +          stub.function.namedParameters[i].isCovariant = true;
  +        }
         }
       }
       for (int i = 0; i < interfaceTypeParameters.length; i++) {
  
positive.code:   /// Creates a forwarding stub for this node if necessary, and propagates
    /// covariance information.
    Procedure _finalize() {
      var member = resolve();
      var substitution =
          _interfaceResolver._substitutionFor(member, enclosingClass);
      bool isDeclaredInThisClass =
          identical(member.enclosingClass, enclosingClass);
  
      // Now decide whether we need a forwarding stub or not, and propagate
      // covariance.
      var covarianceFixes = <_CovarianceFix>[];
      if (_interfaceResolver.strongMode) {
        _computeCovarianceFixes(substitution, member, covarianceFixes);
      }
      if (!isDeclaredInThisClass &&
          (!identical(member, _resolvedCandidate(_start)) ||
              covarianceFixes.isNotEmpty)) {
        member = _createForwardingStub(substitution, member);
      }
      var function = member.function;
      for (var fix in covarianceFixes) {
        fix(function);
      }
      return member;
    }
  
    /// Returns the [i]th element of [_candidates], finalizing it if necessary.
  
negative.code:           isCovariant = true;
          }
        }
        if (isGenericCovariantImpl) {
          if (!superParameter.isGenericCovariantImpl) {
            createImplIfNeeded();
          }
          if (!parameter.isGenericCovariantImpl) {
            createStubIfNeeded();
            stub.function.positionalParameters[i].isGenericCovariantImpl = true;
          }
        }
        if (isCovariant) {
          if (!superParameter.isCovariant) {
            createImplIfNeeded();
          }
          if (!parameter.isCovariant) {
            createStubIfNeeded();
            stub.function.positionalParameters[i].isCovariant = true;
          }
        }
      }
      for (int i = 0; i < interfaceNamedParameters.length; i++) {
  