code: public static <E> Iterator<E> takeWhile(E[] array, Predicate<E> predicate) {
          return new TakeWhileIterator<E>(new ArrayIterator<E>(array), predicate);
      }
docs: Creates an iterator yielding values from the source array up until the
  passed predicate matches. E.g:
  <code>takeWhile([2, 4, 3, 6], isEven) -> [2, 4]</code>
  
  @param <E> the array element type
  @param array the source iterable
  @param predicate the predicate to be evaluated
  @return the resulting iterator