anchor.diff:  
                   static let pass0 =
                       match typeof<'relation> with
  -                    | r when r.Equals typeof<UnknownEquivalenceRelation> -> null
                       | r when r.Equals typeof<PartialEquivalenceRelation> ->
                           match typeof<'a> with
                           | t when t.Equals typeof<float>   -> generalize (Func<_,_,_,_>(fun _ (x:float)   y -> (# "ceq" x y : bool #)))
  
positive.code:                         | _ -> raise (Exception "invalid logic")                    
                      | f -> f
                              
                  static member Func = pass4
  
              /// Implements generic equality between two values, with PER semantics for NaN (so equality on two NaN values returns false)
              //
  
negative.code:                     | f -> f
  
                  static let pass2 =
                      match pass1 with
                      | null -> GenericSpecializeEquals_Pass3<'a>.Func
                      | f -> f
  
                  static let pass3 =
                      match pass2 with
                      | null ->
                          match typeof<'relation> with
                          | r when r.Equals typeof<PartialEquivalenceRelation> -> Func<_,_,_,_>(fun (comp:IEqualityComparer) x y -> GenericEqualityObj false comp ((box x), (box y)))
  