anchor.diff:                          let equatable = mos.makeEquatableType underlying
                           let make = mos.makeType underlying 
                           
  -                        if typeof<IStructuralEquatable>.IsAssignableFrom underlying then make Exemplars.nullableStructuralEquatable
  -                        elif equatable.IsAssignableFrom underlying                  then make Exemplars.nullableEquatable
  -                        else                                                             make Exemplars.nullableEquality
  +                        if typeof<IStructuralEquatable>.IsAssignableFrom underlying then make typedefof<CommonEqualityTypes.Nullable. StructuralEquatable<DummyValueType>>
  +                        elif equatable.IsAssignableFrom underlying                  then make typedefof<CommonEqualityTypes.Nullable.Equatable<int>>
  +                        else                                                             make typedefof<CommonEqualityTypes.Nullable.Equality<int>>
                       else null
   
                   let equalityInterfaces (t:Type) : Type =
                       let make = mos.makeType t
                       let equatable = mos.makeEquatableType t
   
  -                    if   t.IsValueType && typeof<IStructuralEquatable>.IsAssignableFrom t then make Exemplars.valueTypeStructuralEquatable
  -                    elif t.IsValueType && equatable.IsAssignableFrom t                    then make Exemplars.valueTypeEquatable
  -                    elif t.IsValueType                                                    then make Exemplars.valueTypeEquality
  -
  -                    elif typeof<IStructuralEquatable>.IsAssignableFrom t                  then make Exemplars.refTypeStructuralEquatable
  +                    if   t.IsValueType && typeof<IStructuralEquatable>.IsAssignableFrom t then make typedefof<CommonEqualityTypes.ValueType.StructuralEquatable<DummyValueType>>
  +                    elif t.IsValueType && equatable.IsAssignableFrom t                    then make typedefof<CommonEqualityTypes.ValueType.Equatable<int>>
  +                    elif t.IsValueType                                                    then make typedefof<CommonEqualityTypes.ValueType.Equality<int>>
  +
  +                    elif typeof<IStructuralEquatable>.IsAssignableFrom t                  then make typedefof<CommonEqualityTypes.RefType.StructuralEquatable<Tuple<int,int>>>
   
                       // only sealed as a derived class might inherit from IStructuralEquatable
  -                    elif t.IsSealed && equatable.IsAssignableFrom t                       then make Exemplars.refTypeEquatable
  -                    elif t.IsSealed                                                       then make Exemplars.refTypeEquality
  +                    elif t.IsSealed && equatable.IsAssignableFrom t                       then make typedefof<CommonEqualityTypes.RefType.Equatable<string>>
  +                    elif t.IsSealed                                                       then make typedefof<CommonEqualityTypes.RefType.Equality<string>>
   
                       else null
   
  
positive.code: 
                      [<Struct; NoComparison; NoEquality>]
                      type Comparable<'a when 'a : struct and 'a : (new : unit ->  'a) and 'a :> ValueType and 'a :> IComparable> =
                          interface Specializations.IEssenceOfCompareTo<Nullable<'a>> with
                              member __.Ensorcel (_:IComparer, x:Nullable<'a>, y:Nullable<'a>) =
                                  match x.HasValue, y.HasValue with
                                  | false, false -> 0
  
negative.code: 
                      [<Struct; NoComparison; NoEquality>]
                      type Comparable<'a when 'a : not struct and 'a : null and 'a :> IComparable> =
                          interface IEssenceOfCompareTo<'a> with
                              member __.Ensorcel (_:IComparer, x:'a, y:'a) =
                                  match x, y with
                                  | null, null -> 0
  