anchor.diff:                      | :? GenericSpecializeCompareTo.IGetEssenceOfComparerType as getter -> getter.Get ()
                       | _ -> raise (Exception "invalid logic")
   
  -                type tt = Specializations.ComparerTypes.Int32
  -
  +                type t = Specializations.ComparerTypes.Int32
                   let tuplesCompareTo (_relation:Type) (ty:Type) : obj =
                       if ty.IsGenericType && _relation.Equals typeof<EquivalenceRelation> then
                           let tyDef = ty.GetGenericTypeDefinition ()
                           let tyDefArgs = ty.GetGenericArguments ()
  -                        if tyDef.Equals typedefof<Tuple<_>>       then
  -                            let t0 = (get tyDefArgs 0)
  -                            let ghc0 = (getEssenceOfCompareToType t0)
  -
  -                            let tt = typedefof<TupleEssenceOfCompareTo<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 = (getEssenceOfCompareToType t0)
  -                            let ghc1 = (getEssenceOfCompareToType t1)
  -
  -                            let tt = typedefof<TupleEssenceOfCompareTo<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 = (getEssenceOfCompareToType t0)
  -                            let ghc1 = (getEssenceOfCompareToType t1)
  -                            let ghc2 = (getEssenceOfCompareToType t2)
  -
  -                            let tt = typedefof<TupleEssenceOfCompareTo<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 = (getEssenceOfCompareToType t0)
  -                            let ghc1 = (getEssenceOfCompareToType t1)
  -                            let ghc2 = (getEssenceOfCompareToType t2)
  -                            let ghc3 = (getEssenceOfCompareToType t3)
  -
  -                            let tt = typedefof<TupleEssenceOfCompareTo<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)
  -                            let t3 = (get tyDefArgs 3)
  -                            let t4 = (get tyDefArgs 4)
  -                            let ghc0 = (getEssenceOfCompareToType t0)
  -                            let ghc1 = (getEssenceOfCompareToType t1)
  -                            let ghc2 = (getEssenceOfCompareToType t2)
  -                            let ghc3 = (getEssenceOfCompareToType t3)
  -                            let ghc4 = (getEssenceOfCompareToType t4)
  -
  -                            let tt = typedefof<TupleEssenceOfCompareTo<int,int,int,int,int,tt,tt,tt,tt,tt>>
  -                            let zz = tt.MakeGenericType [| t0; t1; t2; t3; t4; ghc0; ghc1; ghc2; ghc3; ghc4 |] 
  -                            Activator.CreateInstance zz
  +                        let create = mos.compositeCreator getEssenceOfCompareToType tyDefArgs
  +                        if   tyDef.Equals typedefof<Tuple<_>>               then create typedefof<TupleEssenceOfCompareTo<int,t>> 
  +                        elif tyDef.Equals typedefof<Tuple<_,_>>             then create typedefof<TupleEssenceOfCompareTo<int,int,t,t>> 
  +                        elif tyDef.Equals typedefof<Tuple<_,_,_>>           then create typedefof<TupleEssenceOfCompareTo<int,int,int,t,t,t>> 
  +                        elif tyDef.Equals typedefof<Tuple<_,_,_,_>>         then create typedefof<TupleEssenceOfCompareTo<int,int,int,int,t,t,t,t>> 
  +                        elif tyDef.Equals typedefof<Tuple<_,_,_,_,_>>       then create typedefof<TupleEssenceOfCompareTo<int,int,int,int,int,t,t,t,t,t>> 
  +                        elif tyDef.Equals typedefof<Tuple<_,_,_,_,_,_>>     then create typedefof<TupleEssenceOfCompareTo<int,int,int,int,int,int,t,t,t,t,t,t>> 
  +                        elif tyDef.Equals typedefof<Tuple<_,_,_,_,_,_,_>>   then create typedefof<TupleEssenceOfCompareTo<int,int,int,int,int,int,int,t,t,t,t,t,t,t>> 
  +                        elif tyDef.Equals typedefof<Tuple<_,_,_,_,_,_,_,_>> then create typedefof<TupleEssenceOfCompareTo<int,int,int,int,int,int,int,int,t,t,t,t,t,t,t,t>> 
                           else null
                       else null
   
                   GenericSpecializeCompareTo.addTupleHandler (box tuplesCompareTo)
  -
  -//                let makeTupleComparerDelegate (ty:Type) (types:array<Type>) (def:Type) =
  -//                    let concrete = def.MakeGenericType types
  -//                    let instance = Activator.CreateInstance concrete
  -//                    box (Delegate.CreateDelegate (GenericSpecializeCompareTo.makeCompareReturnType ty, instance, "CompareTo"))
  -//
  -//                let tuples (tyRelation:Type) (ty:Type) : obj =
  -//                    match tyRelation with
  -//                    | r when r.Equals typeof<EquivalenceRelation> ->
  -//                        if ty.IsGenericType then
  -//                            let tyDef = ty.GetGenericTypeDefinition ()
  -//                            let tyDefArgs = ty.GetGenericArguments ()
  -//                            if   tyDef.Equals typedefof<Tuple<_>>               then makeTupleComparerDelegate ty tyDefArgs typedefof<TupleERComparer<_>>
  -//                            elif tyDef.Equals typedefof<Tuple<_,_>>             then makeTupleComparerDelegate ty tyDefArgs typedefof<TupleERComparer<_,_>>
  -//                            elif tyDef.Equals typedefof<Tuple<_,_,_>>           then makeTupleComparerDelegate ty tyDefArgs typedefof<TupleERComparer<_,_,_>>
  -//                            elif tyDef.Equals typedefof<Tuple<_,_,_,_>>         then makeTupleComparerDelegate ty tyDefArgs typedefof<TupleERComparer<_,_,_,_>>
  -//                            elif tyDef.Equals typedefof<Tuple<_,_,_,_,_>>       then makeTupleComparerDelegate ty tyDefArgs typedefof<TupleERComparer<_,_,_,_,_>>
  -//                            elif tyDef.Equals typedefof<Tuple<_,_,_,_,_,_>>     then makeTupleComparerDelegate ty tyDefArgs typedefof<TupleERComparer<_,_,_,_,_,_>>
  -//                            elif tyDef.Equals typedefof<Tuple<_,_,_,_,_,_,_>>   then makeTupleComparerDelegate ty tyDefArgs typedefof<TupleERComparer<_,_,_,_,_,_,_>>
  -//                            elif tyDef.Equals typedefof<Tuple<_,_,_,_,_,_,_,_>> then makeTupleComparerDelegate ty tyDefArgs typedefof<TupleERComparer<_,_,_,_,_,_,_,_>>
  -//                            else null
  -//                        else null
  -//                    | r when r.Equals typeof<PartialEquivalenceRelation> -> null
  -//                    | _ ->
  -//                        //System.Console.WriteLine ("{0}", tyRelation)
  -//                        raise (Exception "invalid logic")
  -//
  -//                GenericSpecializeCompareTo.addTupleHandler (box tuples)
  -                
   
               /// Generic comparison. Implements ER mode (where "0" is returned when NaNs are compared)
               //
  
positive.code:                                 | false -> false
                                  | _ ->
                                  Specializations.FlaconOfEquals<'b, 'eq2>.Instance.Ensorcel (ec, x.Item2, y.Item2)
  
                  [<Struct; NoComparison; NoEquality>]
                  type TupleEssenceOfGetHashCode<'a,'b,
                                                   'ghc1,'ghc2
                                                      when 'ghc1 :> Specializations.IEssenceOfGetHashCode<'a> and 'ghc1 : (new : unit -> 'ghc1)
                                                       and 'ghc2 :> Specializations.IEssenceOfGetHashCode<'b> and 'ghc2 : (new : unit -> 'ghc2)> =
                      interface Specializations.IEssenceOfGetHashCode<System.Tuple<'a,'b>> with
                          member __.Ensorcel (iec:IEqualityComparer, x:System.Tuple<'a,'b>) =
                              let a = Specializations.FlaconOfGetHashCode<'a,'ghc1>.Instance.Ensorcel (iec, x.Item1)
                              let b = Specializations.FlaconOfGetHashCode<'b,'ghc2>.Instance.Ensorcel (iec, x.Item2) 
                              eliminate_tail_call_int (cth a b)
  
                  [<Struct; NoComparison; NoEquality>]
                  type TupleEssenceOfEquals<'a,'b,'c,
  
negative.code:                                 | false -> false
                                  | _ ->
                                  Specializations.FlaconOfEquals<'c, 'eq3>.Instance.Ensorcel (ec, x.Item3, y.Item3)
  
                  [<Struct; NoComparison; NoEquality>]
                  type TupleEssenceOfEquals<'a,'b,'c,'d,
  