The containsAll() and equals() methods both use the membership contract of the
receiver, not the argument. Unfortunately, the equals() specification says,
Returns true if the specified object is also a set, the two sets have the
same size, and every member of the specified set is contained in this set
(or equivalently, every member of this set is contained in the specified
set).
As should be clear from this discussion, the "equivalently" clause is
incorrect -- another spec bug.
Changing Set.equals() in this way would make Set inconsistent with Object.
Do you really think that is a good idea?
[example of asymmetry of equals]
Your example illustrates that the "equivalently" clause is incorrect. I prefer
specifications to have fewer incorrect statements.
s'marks