Returns a new set with the elements of this that are not in other.
That is, the returned set contains all the elements of this Set that
are not elements of other according to other.contains.
Set<E> difference(Set<Object> other) {
Set<E> result = toSet();
for (E element in this) {
if (other.contains(element)) result.remove(element);
}
return result;
}