anchor.diff:                     // Check that no available prior override implements this dispatch slot
                      not (DispatchSlotIsAlreadyImplemented g amap m availPriorOverridesKeyed dispatchSlot) 
                   then 
  -                    // error reporting path 
  -                    let (CompiledSig (vargtys,_vrty,fvmtps,_)) = CompiledSigOfMeth g amap m dispatchSlot
  +                    // error reporting path
  +                    let compiledSig = CompiledSigOfMeth g amap m dispatchSlot
  +                    
                       let noimpl() = 
                           if isReqdTyInterface then 
                               fail(Error(FSComp.SR.typrelNoImplementationGivenWithSuggestion(NicePrint.stringOfMethInfo amap m denv dispatchSlot), m))
                           else 
                               fail(Error(FSComp.SR.typrelNoImplementationGiven(NicePrint.stringOfMethInfo amap m denv dispatchSlot), m))
  -
  -                    match overrides |> List.filter (IsPartialMatch g amap m dispatchSlot) with 
  +                    
  +                    match overrides |> List.filter (IsPartialMatch g dispatchSlot compiledSig) with 
                       | [] -> 
                           let possibleOverrides =
                               overrides
  
positive.code:                                 fail(Error(FSComp.SR.typrelMemberDoesNotHaveCorrectNumberOfArguments(FormatOverride denv overrideBy, FormatMethInfoSig g amap m denv dispatchSlot), overrideBy.Range))
                              elif mtps.Length <> fvmtps.Length then
                                  fail(Error(FSComp.SR.typrelMemberDoesNotHaveCorrectNumberOfTypeParameters(FormatOverride denv overrideBy, FormatMethInfoSig g amap m denv dispatchSlot), overrideBy.Range))
                              elif not (IsTyparKindMatch g amap m dispatchSlot overrideBy) then
                                  fail(Error(FSComp.SR.typrelMemberDoesNotHaveCorrectKindsOfGenericParameters(FormatOverride denv overrideBy, FormatMethInfoSig g amap m denv dispatchSlot), overrideBy.Range))
                              else 
                                  fail(Error(FSComp.SR.typrelMemberCannotImplement(FormatOverride denv overrideBy, NicePrint.stringOfMethInfo amap m denv dispatchSlot, FormatMethInfoSig g amap m denv dispatchSlot), overrideBy.Range))
  
negative.code:      
      /// Check if an override exactly matches the requirements for a dispatch slot 
      let IsExactMatch g amap m dispatchSlot (Override(_,_,_,(mtps,mtpinst),argTys,retTy,_,_) as overrideBy) =
          let compiledSig = CompiledSigOfMeth g amap m dispatchSlot
          IsPartialMatch g dispatchSlot compiledSig overrideBy &&
          let (CompiledSig (vargtys,vrty,fvmtps,ttpinst)) = compiledSig
  
          // Compare the types. CompiledSigOfMeth, GetObjectExprOverrideInfo and GetTypeMemberOverrideInfo have already 
          // applied all relevant substitutions except the renamings from fvtmps <-> mtps 
  