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

        ExtendedSet<TestValue> emptyset = new ExtendedSet<>(Maps.newConcurrentMap());
        vals = new ArrayList<TestValue>();
        vals.add(val);
        vals.add(nextval);
        vals.add(finalval);
        assertTrue(emptyset.addAll(vals));
        assertTrue(emptyset.contains(val));
        assertTrue(emptyset.contains(nextval));
        assertTrue(emptyset.contains(finalval));
    }