anchor.diff:      void visitImmediateSuper(InterfaceType type) {
         // For members of mixins/supertypes, check them against new interfaces,
         // and also record any existing checks they already had.
  -      var oldCovariant = _findAllGenericInterfaces(type);
  +      var oldCovariant = _findAllGenericInterfaces(type.element);
         var newCovariant = allCovariant.difference(oldCovariant);
         if (newCovariant.isEmpty) return;
   
  
positive.code:     // Find all generic interfaces that could be used to call into members of
      // this class. This will help us identify which parameters need checks
      // for soundness.
      var allCovariant = _findAllGenericInterfaces(element.type);
      if (allCovariant.isEmpty) return;
  
      var seenConcreteMembers = new HashSet<String>();
      var members = _getConcreteMembers(element.type, seenConcreteMembers);
  
      // For members on this class, check them against all generic interfaces.
      var checks = _findCovariantChecks(members, allCovariant);
  
negative.code: 
        // The member may be from a superclass, so we need to ensure the type
        // parameters are properly substituted.
        var classElement = targetType.element;
        var classLowerBound = classElement.instantiate(
          typeArguments: List.filled(
            classElement.typeParameters.length,
            BottomTypeImpl.instance,
          ),
          nullabilitySuffix: NullabilitySuffix.none,
        );
        var memberLowerBound = inheritance.getMember(
          classLowerBound,
          Name(element.librarySource.uri, element.name),
        );
        if (memberLowerBound == null &&
            element.enclosingElement is ExtensionElement) {
          return;
  