anchor.diff:          // LanguagePrimitives: PUBLISH IEqualityComparer AND IComparer OBJECTS
           //------------------------------------------------------------------------- 
   
  -
           let inline MakeGenericEqualityComparer<'T>() = 
               // type-specialize some common cases to generate more efficient functions 
               { new System.Collections.Generic.IEqualityComparer<'T> with 
                     member self.GetHashCode(x) = GenericHash x 
                     member self.Equals(x,y) = GenericEquality x y }
  +
  +        let inline MakeGenericEqualityComparerWithEssence<'T>() : IEqualityComparer<'T> =
  +#if FX_ATLEAST_40 // should probably create some compilation flag for this stuff
  +            unboxPrim (HashCompare.makeEqualityComparer typeof<'T>)
  +#else
  +            MakeGenericEqualityComparer<'T> ()
  +#endif
   
           let inline MakeGenericLimitedEqualityComparer<'T>(limit:int) = 
               // type-specialize some common cases to generate more efficient functions 
  
positive.code:                 GenericSpecializeEquals.addTupleHandler (box tuplesEquals)
                  GenericSpecializeHash.addTupleHandler (box tuplesGetHashCode)
  
  #else
  
              /// Intrinsic for calls to depth-unlimited structural hashing that were not optimized by static conditionals.
  
negative.code:                 | ty when ty.Equals(typeof<float32>)    -> unboxPrim (box Float32IEquality)
                  | ty when ty.Equals(typeof<decimal>)    -> unboxPrim (box DecimalIEquality)
                  | ty when ty.Equals(typeof<string>)     -> unboxPrim (box StringIEquality)
                  | _ -> MakeGenericEqualityComparerWithEssence<'T>()
              static member Function : System.Collections.Generic.IEqualityComparer<'T> = f
  
          let FastGenericEqualityComparerFromTable<'T> = FastGenericEqualityComparerTable<'T>.Function
  