anchor.diff:                      if ty.IsGenericType then
                           let tyDef = ty.GetGenericTypeDefinition ()
                           let tyDefArgs = ty.GetGenericArguments ()
  -                        if tyDef.Equals typedefof<Tuple<_,_,_,_,_>>       then
  +                        if tyDef.Equals typedefof<Tuple<_>>       then
  +                            let t0 = (get tyDefArgs 0)
  +                            let ghc0 = (getEssenceOfEqualsObj t0).GetType ()
  +
  +                            let tt = typedefof<TupleEssenceOfEquals<int,tt>>
  +                            let zz = tt.MakeGenericType [| t0; ghc0 |] 
  +                            Activator.CreateInstance zz
  +                        elif tyDef.Equals typedefof<Tuple<_,_>>       then
  +                            let t0 = (get tyDefArgs 0)
  +                            let t1 = (get tyDefArgs 1)
  +                            let ghc0 = (getEssenceOfEqualsObj t0).GetType ()
  +                            let ghc1 = (getEssenceOfEqualsObj t1).GetType ()
  +
  +                            let tt = typedefof<TupleEssenceOfEquals<int,int,tt,tt>>
  +                            let zz = tt.MakeGenericType [| t0; t1; ghc0; ghc1 |] 
  +                            Activator.CreateInstance zz
  +                        elif tyDef.Equals typedefof<Tuple<_,_,_>>       then
  +                            let t0 = (get tyDefArgs 0)
  +                            let t1 = (get tyDefArgs 1)
  +                            let t2 = (get tyDefArgs 2)
  +                            let ghc0 = (getEssenceOfEqualsObj t0).GetType ()
  +                            let ghc1 = (getEssenceOfEqualsObj t1).GetType ()
  +                            let ghc2 = (getEssenceOfEqualsObj t2).GetType ()
  +
  +                            let tt = typedefof<TupleEssenceOfEquals<int,int,int,tt,tt,tt>>
  +                            let zz = tt.MakeGenericType [| t0; t1; t2; ghc0; ghc1; ghc2 |] 
  +                            Activator.CreateInstance zz
  +                        elif tyDef.Equals typedefof<Tuple<_,_,_,_>>       then
  +                            let t0 = (get tyDefArgs 0)
  +                            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 tt = typedefof<TupleEssenceOfEquals<int,int,int,int,tt,tt,tt,tt>>
  +                            let zz = tt.MakeGenericType [| t0; t1; t2; t3; ghc0; ghc1; ghc2; ghc3 |] 
  +                            Activator.CreateInstance zz
  +                        elif tyDef.Equals typedefof<Tuple<_,_,_,_,_>>       then
                               let t0 = (get tyDefArgs 0)
                               let t1 = (get tyDefArgs 1)
                               let t2 = (get tyDefArgs 2)
  
positive.code:                     if ty.IsGenericType then
                          let tyDef = ty.GetGenericTypeDefinition ()
                          let tyDefArgs = ty.GetGenericArguments ()
                          if tyDef.Equals typedefof<Tuple<_,_,_,_,_>>       then
                              let t0 = (get tyDefArgs 0)
                              let t1 = (get tyDefArgs 1)
                              let t2 = (get tyDefArgs 2)
  
negative.code:                                 | _ ->
                                  Specializations.FlaconOfEquals<'e, 'eq5>.Instance.Ensorcel (ec, x.Item5, y.Item5)
  
                  [<Struct; NoComparison; NoEquality>]
                  type TupleEssenceOfGetHashCode<'a,'b,'c,'d,'e,
                                                   'ghc1,'ghc2,'ghc3,'ghc4,'ghc5
                                                      when 'ghc1 :> Specializations.IEssenceOfGetHashCode<'a> and 'ghc1 : (new : unit -> 'ghc1)
                                                       and 'ghc2 :> Specializations.IEssenceOfGetHashCode<'b> and 'ghc2 : (new : unit -> 'ghc2)
                                                       and 'ghc3 :> Specializations.IEssenceOfGetHashCode<'c> and 'ghc3 : (new : unit -> 'ghc3)
                                                       and 'ghc4 :> Specializations.IEssenceOfGetHashCode<'d> and 'ghc4 : (new : unit -> 'ghc4)
                                                       and 'ghc5 :> Specializations.IEssenceOfGetHashCode<'e> and 'ghc5 : (new : unit -> 'ghc5)> =
                      interface Specializations.IEssenceOfGetHashCode<System.Tuple<'a,'b,'c,'d,'e>> with
                          member __.Ensorcel (iec:IEqualityComparer, x:System.Tuple<'a,'b,'c,'d,'e>) =
                              let a = Specializations.FlaconOfGetHashCode<'a,'ghc1>.Instance.Ensorcel (iec, x.Item1)
  