anchor.diff:                          fun () -> standardTypes ty
                           fun () -> compilerGenerated tyRelation ty
                           fun () -> arrays tyRelation ty
  +                        fun () -> nullableType ty
                           fun () -> equalityInterfaces ty
                           fun () -> defaultEquality tyRelation ty
                       |]
  
positive.code:                             if x.HasValue then Calls.StructuralEqualityGetHashCode<'a> (ec, x.Value)
                              else 0
  
                      type Equatable<'a when 'a : struct and 'a : (new : unit ->  'a) and 'a :> ValueType and 'a :> IEquatable<'a> and 'a : equality>() =
                          member __.Equals (_:IEqualityComparer, x:Nullable<'a>, y:Nullable<'a>) =
                              match x.HasValue, y.HasValue with
                              | false, false -> true
                              | false, _ | _, false -> false
                              | _, _ -> Calls.EquatableEquals (x.Value, y.Value)
  
                          member __.GetHashCode (_:IEqualityComparer, x:Nullable<'a>) =
                              if x.HasValue then x.Value.GetHashCode ()
                              else 0
  
                      type Equality<'a when 'a : struct and 'a : (new : unit ->  'a) and 'a :> ValueType and 'a : equality>() =
                          member __.Equals (_:IEqualityComparer, x:Nullable<'a>, y:Nullable<'a>) =
  
negative.code:                     mos.takeFirstNonNull [|
                          fun () -> standardTypes t
                          fun () -> arrays t
                          fun () -> nullableType t
                          fun () -> structualEquatable t
                          fun () -> sealedTypes t
                          fun () -> defaultGetHashCode t
  