code: public static <T> CloseableIterable<T> filter(final CloseableIterable<T> iterable, final Predicate<? super T> filter) {
          return wrap(Iterables.filter(iterable, filter::test), iterable);
      }
docs: Returns the elements of {@code unfiltered} that satisfy a predicate. The
  resulting closeable iterable's iterator does not support {@code remove()}.