code: @Override
  	public boolean retainAll(Collection<?> collection) {
  		if (dao == null) {
  			return false;
  		}
  		boolean changed = false;
  		CloseableIterator<T> iterator = closeableIterator();
  		try {
  			while (iterator.hasNext()) {
  				T data = iterator.next();
  				if (!collection.contains(data)) {
  					iterator.remove();
  					changed = true;
  				}
  			}
  			return changed;
  		} finally {
  			IOUtils.closeQuietly(iterator);
  		}
  	}
docs: Uses the iterator to run through the dao and retain only the items that are in the passed in collection. This
  will remove the items from the associated database table as well.
  
  @return Returns true of the collection was changed at all otherwise false.