anchor.diff:              let fsComparerPER_lt = GenericComparer ComparerType.PER_lt
   
               /// The unique object for comparing values in ER mode (where "0" is returned when NaNs are compared)
  -            let fsComparerER = GenericComparer ComparerType.ER
  +            let fsComparerER = GenericComparer ComparerType.ER :> System.Collections.IComparer
   
               // eliminate_tail_call_xxx are to elimate tail calls which are a problem with value types > 64 bits
               // and the 64-bit JIT due to the amd64 calling convention which needs to do some magic.
  
positive.code:         let inline PhysicalEquality x y     = HashCompare.PhysicalEqualityFast x y
          let inline PhysicalHash x           = HashCompare.PhysicalHashFast x
          
          let GenericComparer = HashCompare.fsComparerER :> System.Collections.IComparer
          let GenericEqualityComparer = HashCompare.fsEqualityComparerUnlimitedHashingPER
          let GenericEqualityERComparer = HashCompare.fsEqualityComparerUnlimitedHashingER
  
  
negative.code:                     let concrete = def.MakeGenericType [|ct|]
                      let instance = Activator.CreateInstance concrete
                      upcast Delegate.CreateDelegate (makeCompareReturnType ty, instance, "CompareTo")
  
                  let mutable private tupleHandler = null
                  let addTupleHandler f =
                      match box tupleHandler with
                      | null -> tupleHandler <- f
                      | _ -> raise (Exception "invalid logic")
  
                  let tuples tyRelation ty =
                      match box tupleHandler with
                      | :? (Type -> Type -> obj) as handler -> handler tyRelation ty
                      | _ -> null
  
                  let floatingPointTypes (tyRelation:Type) (ty:Type) =
                      match tyRelation with
  