public override bool Equals(double?x, double?y)
 {
     return
         (x == null && y == null ? true
       : x == null || y == null ? false
       : BitwiseDoubleEqualityComparer.Equals(x.Value, y.Value));
 }
 // The hash code for null is just a constant which is at least *unlikely* to be used
 // elsewhere. (Compared with 0, say.)
 public override int GetHashCode(double?obj)
 {
     return(obj == null ? 293864 : BitwiseDoubleEqualityComparer.GetHashCode(obj.Value));
 }