anchor.diff:                      elif t.Equals typeof<float32>    then typeof<GetHashCodeTypes.Float32>
                       else null
   
  -                let compilerGenerated (tyRelation:Type) ty =
  -                    match tyRelation with
  -                    | r when r.Equals typeof<EquivalenceRelation> || r.Equals typeof<PartialEquivalenceRelation> ->
  -                        if mos.hasFSharpCompilerGeneratedEquality ty then
  -                            if ty.IsValueType
  -                                then mos.makeType ty typedefof<CommonEqualityTypes.ValueType.Equality<int>>
  -                                else mos.makeType ty typedefof<CommonEqualityTypes.RefType.Equality<string>>
  -                        else null
  -                    | r when r.Equals typeof<UnknownRelation> -> null
  -                    | _ -> raise (Exception "invalid logic")
  -
                   [<Struct;NoComparison;NoEquality>]
                   type GenericHashParamObject<'a> =
                       interface IEssenceOfGetHashCode<'a> with
  
positive.code: 
              let makeEqualityComparer (ty:Type) =
                  let eq = GenericSpecializeEquals.Helpers.getEssenceOfEqualsType typeof<PartialEquivalenceRelation> ty
                  let ghc = GenericSpecializeHash.Helpers.getEssenceOfGetHashCodeType typeof<PartialEquivalenceRelation> ty
                  let equalityComparerDef = typedefof<EssenceOfEqualityComparer<int,EqualsTypes.Int32,GetHashCodeTypes.Int32>>
                  let equalityComparer = equalityComparerDef.MakeGenericType [| ty; eq; ghc |]
                  Activator.CreateInstance equalityComparer
  
negative.code: 
              type private EquivalenceRelation = class end
              type private PartialEquivalenceRelation = class end
  
              module mos =
                  type IGetType =
  