What should IEquatable.Equals(T obj) do when this == null and obj == null?
IEquatable.Equals(T obj)
this == null
obj == null
1) This code is generated
I would definitelly go with option 1:
if (this == null) { return obj == null; } if (obj == null) { return false; }
null object always equals null object.