de> must define a stable equivalence relation, and
<code>hashCode</code> must be consistent with <code>equals</code>. If the <code>equals</code> or <code>hashCode</code>
methods won't work on all objects, but only on some instances of E, the
<code>isValidKey</code> predicate can be used to restrict the keys that the functions
are applied to.
Any key for which <code>isValidKey</code> returns false is automatically assumed
to not be in the set when asking <code>contains</code>.</p>
<p>If <code>equals</code> o