anchor.diff:                              let t1 = (get tyDefArgs 1)
                               let t2 = (get tyDefArgs 2)
                               let t3 = (get tyDefArgs 3)
  -                            let ghc0 = (getEssenceOfEqualsObj t0).GetType ()
  -                            let ghc1 = (getEssenceOfEqualsObj t1).GetType ()
  -                            let ghc2 = (getEssenceOfEqualsObj t2).GetType ()
  -                            let ghc3 = (getEssenceOfEqualsObj t3).GetType ()
  +                            let ghc0 = (getEssenceOfEqualsType t0)
  +                            let ghc1 = (getEssenceOfEqualsType t1)
  +                            let ghc2 = (getEssenceOfEqualsType t2)
  +                            let ghc3 = (getEssenceOfEqualsType t3)
   
                               let tt = typedefof<TupleEssenceOfEquals<int,int,int,int,tt,tt,tt,tt>>
                               let zz = tt.MakeGenericType [| t0; t1; t2; t3; ghc0; ghc1; ghc2; ghc3 |] 
  
positive.code:                             let t0 = (get tyDefArgs 0)
                              let t1 = (get tyDefArgs 1)
                              let t2 = (get tyDefArgs 2)
                              let ghc0 = (getEssenceOfGetHashCodeObj t0).GetType ()
                              let ghc1 = (getEssenceOfGetHashCodeObj t1).GetType ()
                              let ghc2 = (getEssenceOfGetHashCodeObj t2).GetType ()
  
                              let tt = typedefof<TupleEssenceOfGetHashCode<int,int,int,t,t,t>>
                              let zz = tt.MakeGenericType [| t0; t1; t2; ghc0; ghc1; ghc2 |] 
  
negative.code:                         fun () -> defaultEquality tyRelation ty
                      |]
  
                  type IGetEssenceOfEqualsType =
                      abstract Get : unit -> Type
                              
                  type Function<'relation, 'a>() =
                      static let func : Specializations.IEssenceOfEquals<'a> =
  