code: public static <T, V> LazyIterable<V> collectIf(
              Iterable<T> iterable,
              Predicate<? super T> predicate,
              Function<? super T, ? extends V> function)
      {
          return LazyIterate.select(iterable, predicate).collect(function);
      }
docs: Creates a deferred filtering and transforming iterable for the specified iterable