anchor.diff:                      | r when r.Equals typeof<PartialEquivalenceRelation> -> null
                       | _ -> raise (Exception "invalid logic")
   
  +                type GenericComparerObj<'a>() =
  +                    member __.CompareTo (comp:IComparer, x:'a, y:'a) = comp.Compare (box x, box y)
  +
  +                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.IsArray || typeof<System.Array>.IsAssignableFrom t then
  -                        // TODO: Future
  -                        null
  -
  -                    elif t.IsGenericType && ((t.GetGenericTypeDefinition ()).Equals typedefof<System.Nullable<_>>) then
  +                    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
  
positive.code: 
                      else null
  
                  type GenericEqualityObj_ER<'a>() =
                      member __.Equals (comp:IEqualityComparer, x:'a, y:'a) = GenericEqualityObj true comp (box x, box y)
                          
                  type GenericEqualityObj_PER<'a>() =
                      member __.Equals (comp:IEqualityComparer, x:'a, y:'a) = GenericEqualityObj false comp (box x, box y)
  
                  let defaultEquality tyRelation ty =
                      match tyRelation with
                      | r when r.Equals typeof<PartialEquivalenceRelation> -> makeEquatableDelegate ty ty typedefof<GenericEqualityObj_PER<_>>
  
negative.code:                     | r when r.Equals typeof<PartialEquivalenceRelation> -> null
                      | _ -> raise (Exception "invalid logic")
  
                  type GenericEqualityObj_ER<'a>() =
                      member __.Equals (comp:IEqualityComparer, x:'a, y:'a) = GenericEqualityObj true comp (box x, box y)
                          
                  type GenericEqualityObj_PER<'a>() =
                      member __.Equals (comp:IEqualityComparer, x:'a, y:'a) = GenericEqualityObj false comp (box x, box y)
  
                  let arrays (tyRelation:Type) (t:Type) : obj =
                      if t.IsArray || typeof<System.Array>.IsAssignableFrom t then
                          // TODO: Future; currently just returns default
                          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 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 
                          
  