@Override
    public boolean removeAll(Collection<?> c) {
        return c.stream()
                .map(e -> map.remove(e) != null)
                .reduce(Boolean::logicalOr)
                .orElse(false);
    }
@Test
    public void testRemoveAll() {
        ExtendedSet<TestValue> set = new ExtendedSet<>(Maps.newConcurrentMap());
        TestValue val = new TestValue("foo", 1);
        assertTrue(set.add(val));
        TestValue nextval = new TestValue("goo", 2);
        assertTrue(set.add(nextval));
        TestValue finalval = new TestValue("shoo", 3);
        assertTrue(set.add(finalval));
        ArrayList<TestValue> vals = new ArrayList<TestValue>();
        vals.add(nextval);
        vals.add(finalval);
        vals.add(new TestValue("who", 4));
        assertTrue(set.removeAll(vals));
        assertFalse(set.contains(nextval));
        assertFalse(set.contains(finalval));
    }