After all the discussions about equals here, I can't remember if this suggestion percolated to the top...
I think there should be a System.equals() that is a symmetric operation. (Rather than everyone coding a utility class to do this) It should know about subclasses, and call the subclass' equals(), or if there is no super/sub class relationship it should return a.equals(b) && b.equals(a).
I think it should also know about primitive types. There is that weirdness in java that
2 == 2. is true
new Integer(2).equals(new Double(2)) is false.
I think System.equals(2,2.) should overload the primitive types and return true in this case.
IMHO, I think that the fact that the primitive and object versions are different is a bug now that we have autoboxing.