@Override
    public boolean removeAll(Collection<?> c) {
        boolean changed = false;
        for (Object item : c) {
            changed = items.remove(serializer.encode(item)) || changed;
        }
        return changed;
    }
@Test
    public void testRemoveAll() throws Exception {
        //Test for mass removal and change checking
        Set<Integer> removeSet = Sets.newHashSet();
        fillSet(10, set);
        Set<Integer> duplicateSet = Sets.newHashSet(set);
        assertFalse("No elements should change.", set.removeAll(removeSet));
        assertEquals("Set should not have diverged from the duplicate.", duplicateSet, set);
        fillSet(5, removeSet);
        assertTrue("Elements should have been removed.", set.removeAll(removeSet));
        assertNotEquals("Duplicate set should no longer be equivalent.", duplicateSet, set);
        assertEquals("Five elements should have been removed from set.", 5, set.size());
        for (Integer item : removeSet) {
            assertFalse("No element of remove set should remain.", set.contains(item));
        }
    }