code: public static <E> Iterator<E> filter(E[] array, Predicate<E> predicate) {
          return filter(new ArrayIterator<E>(array), predicate);
      }
docs: Creates an iterator yielding elements from the source array matching the
  given predicate. This transformation is applied lazily and the predicate
  is applied while consuming returned iterator. E.g:
  <code>filter([1,2,3,4], isEven) -> [2,4]</code>
  
  @param <E> the array element type
  @param array the array where elements are fetched from
  @param predicate the predicate applied to each element
  @return an Iterator<E> containing the elements for which the predicate
  evaluates to true