private FilteringCollectionWrapper(
     final Collection<T> backingCollection, final Predicate<T> filter) {
   Validate.notNull(backingCollection);
   Validate.notNull(filter);
   this.backingCollection = backingCollection;
   this.filter = filter;
 }
 @Override
 public FilteringCollectionWrapper<T> withFilter(final Predicate<T> filter) {
   Validate.notNull(filter);
   return new FilteringCollectionWrapper<T>(backingCollection, filter);
 }