anchor.diff:                                  | null, _ | _, null -> false
                                   | _, _ -> x.Equals y
   
  -                    type Equality<'a when 'a : not struct and 'a : null and 'a : equality>() =
  +                    [<Struct; NoComparison; NoEquality>]
  +                    type Equality<'a when 'a : not struct and 'a : null and 'a : equality> =
                           interface Specializations.IEssenceOfEquals<'a> with
                               member __.Ensorcel (_:IEqualityComparer, x:'a, y:'a) =
                                   match x, y with
  
positive.code:                             member __.Ensorcel (ec:IEqualityComparer, x:'a) =
                                  x.GetHashCode (ec) 
  
                      type Equatable<'a when 'a : struct and 'a :> IEquatable<'a>>() =
                          interface Specializations.IEssenceOfEquals<'a> with
                              member __.Ensorcel (_:IEqualityComparer, x:'a, y:'a) =
                                  x.Equals y
  
                      type Equality<'a when 'a : struct and 'a : equality>() =
                          interface Specializations.IEssenceOfEquals<'a> with
                              member __.Ensorcel (_:IEqualityComparer, x:'a, y:'a) =
                                  x.Equals y
  
negative.code:                                 | _, false -> +1
                                  | _, _ -> x.Value.CompareTo (box y.Value)
  
                      [<Struct; NoComparison; NoEquality>]
                      type StructuralEquatable<'a when 'a : struct and 'a : (new : unit ->  'a) and 'a :> ValueType and 'a :> IStructuralEquatable> =
                          interface Specializations.IEssenceOfEquals<Nullable<'a>> with
                              member __.Ensorcel (ec:IEqualityComparer, x:Nullable<'a>, y:Nullable<'a>) =
                                  match x.HasValue, y.HasValue with
  