@Override
    public boolean removeAll(java.util.Collection<?> c) {
        if(super.removeAll(c)) {
            for(Object item : c) {
                this.collectionItemRemoved((E) item);
            }
            return true;
        }
        return false;
    }
@Test
    public void testRemoveAll() {
        Collection<Object> collection = new Collection<>();
        final Object a = new Object();
        collection.add(a);
        final Object b = new Object();
        collection.add(b);
        final Object c = new Object();
        collection.add(c);
        collection.removeAll(Arrays.asList(a, b));
        assertFalse(collection.contains(a));
        assertFalse(collection.contains(b));
        assertTrue(collection.contains(c));
    }