code: @NotNull
      public Stream<T> takeWhileIndexed(@NotNull IndexedPredicate<? super T> predicate) {
          return takeWhileIndexed(0, 1, predicate);
      }
docs: Takes elements while the {@code IndexedPredicate} returns {@code true}.
  
  <p>This is an intermediate operation.
  
  <p>Example:
  <pre>
  predicate: (index, value) -&gt; (index + value) &lt; 5
  stream: [1, 2, 3,  4, -5, -6, -7]
  index:  [0, 1, 2,  3,  4,  5,  6]
  sum:    [1, 3, 5,  7, -1, -1, -1]
  result: [1, 2]
  </pre>
  
  @param predicate  the {@code IndexedPredicate} used to take elements
  @return the new stream
  @since 1.1.6