code: public static <T> Iterable<T> filter(
        final Iterable<T> unfiltered, final Predicate<? super T> predicate) {
      checkNotNull(unfiltered);
      checkNotNull(predicate);
      return new FluentIterable<T>() {
        @Override
        public Iterator<T> iterator() {
          return Iterators.filter(unfiltered.iterator(), predicate);
        }
      };
    }
docs: Returns the elements of {@code unfiltered} that satisfy a predicate. The
  resulting iterable's iterator does not support {@code remove()}.