anchor.diff:  
                   let arrays (tyRelation:Type) (t:Type) : obj =
                       if t.IsArray || typeof<System.Array>.IsAssignableFrom t then
  -                        // TODO: Future; currently just returns default
  +                        // TODO: Future; for now just default back to previous functionality
                           match tyRelation with
                           | r when r.Equals typeof<PartialEquivalenceRelation> -> makeEquatableDelegate t t typedefof<GenericEqualityObj_PER<_>>
                           | r when r.Equals typeof<EquivalenceRelation>        -> makeEquatableDelegate t t typedefof<GenericEqualityObj_ER<_>>
                           | _ -> raise (Exception "invalid logic")
                       else null
   
  +                let nullableType (t:Type) : obj =
  +                    if t.IsGenericType && ((t.GetGenericTypeDefinition ()).Equals typedefof<System.Nullable<_>>) then
  +                        let underlying = get (t.GetGenericArguments()) 0
  +                        let equatable = mos.makeEquatableType underlying
  +                        let make = makeEquatableDelegate t underlying 
  +                        
  +                        if typeof<IStructuralEquatable>.IsAssignableFrom underlying then make Exemplars.nullableStructuralEquatable
  +                        elif equatable.IsAssignableFrom underlying                  then make Exemplars.nullableEquatable
  +                        else                                                             make Exemplars.nullableEquality
  +                    else null
  +
                   let equalityInterfaces (t:Type) : obj =
                       let make = makeEquatableDelegate t t
  -
                       let equatable = mos.makeEquatableType t
   
  -                    if t.IsGenericType && ((t.GetGenericTypeDefinition ()).Equals typedefof<System.Nullable<_>>) then
  -                        let nt = get (t.GetGenericArguments()) 0
  -                        let make = makeEquatableDelegate t nt 
  -                        
  -                        if typeof<IStructuralEquatable>.IsAssignableFrom nt               then make Exemplars.nullableStructuralEquatable
  -                        elif (mos.makeEquatableType nt).IsAssignableFrom nt               then make Exemplars.nullableEquatable
  -                        else                                                                   make Exemplars.nullableEquality
  -
  -                    elif t.IsValueType && typeof<IStructuralEquatable>.IsAssignableFrom t then make Exemplars.valueTypeStructuralEquatable
  +                    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
   
  
positive.code: 
                  let arrays (t:Type) : obj =
                      if t.IsArray || typeof<System.Array>.IsAssignableFrom t then
                          // TODO: Future
                          makeCompareDelegate t t typedefof<GenericComparerObj<_>>
                      else null
  
                  let comparisonInterfaces (t:Type) : obj =
                      let make = makeCompareDelegate t t
  
                      let comparableGeneric = mos.makeComparableType t
  
                      if t.IsGenericType && ((t.GetGenericTypeDefinition ()).Equals typedefof<System.Nullable<_>>) then
                          let underlyingType = get (t.GetGenericArguments()) 0
                          let make = makeCompareDelegate t underlyingType 
                          let underlyingComparableGeneric = mos.makeComparableType underlyingType
                          
                          if typeof<IStructuralComparable>.IsAssignableFrom underlyingType   then make Exemplars.nullableStructuralComparable
                          elif underlyingComparableGeneric.IsAssignableFrom underlyingType   then make Exemplars.nullableComparableGeneric
                          else                                                                    make Exemplars.nullableComparable
  
                      elif t.IsValueType && typeof<IStructuralComparable>.IsAssignableFrom t then make Exemplars.valueTypeStructuralComparable
                      elif t.IsValueType && comparableGeneric.IsAssignableFrom t             then make Exemplars.valueTypeComparableGeneric
                      elif t.IsValueType && typeof<IComparable>.IsAssignableFrom t           then make Exemplars.valueTypeComparable
  
  
negative.code:                         fun () -> standardTypes ty
                          fun () -> compilerGenerated tyRelation ty
                          fun () -> arrays tyRelation ty
                          fun () -> nullableType ty
                          fun () -> equalityInterfaces ty
                          fun () -> defaultEquality tyRelation ty
                      |]
  