boolean (Collection<?> c) { if (c == null) throw new NullPointerException(); boolean modified = false; // Use (c instanceof Set) as a hint that lookup in c is as // efficient as this view Node<V>[] t; if ((t = map.table) == null) { return false; } else if (c instanceof Set<?> && c.size() > t.length) { for (Iterator<?> it = iterator(); it.hasNext(); ) { if (c.contains(it.next())) { it.remove(); modified = true; } } } else { for (Object e : c) modified |= remove(e); } return modified; }