code: @NotNull
      public Stream<T> takeWhile(@NotNull final Predicate<? super T> predicate) {
          return new Stream<T>(params, new ObjTakeWhile<T>(iterator, predicate));
      }
docs: Takes elements while the predicate returns {@code true}.
  
  <p>This is an intermediate operation.
  
  <p>Example:
  <pre>
  predicate: (a) -&gt; a &lt; 3
  stream: [1, 2, 3, 4, 1, 2, 3, 4]
  result: [1, 2]
  </pre>
  
  @param predicate  the predicate used to take elements
  @return the new stream