code: @NotNull
      public static LongStream iterate(final long seed,
                                       @NotNull final LongUnaryOperator f) {
          Objects.requireNonNull(f);
          return new LongStream(new LongIterate(seed, f));
      }
docs: Creates a {@code LongStream} by iterative application {@code LongUnaryOperator} function
  to an initial element {@code seed}. Produces {@code LongStream} consisting of
  {@code seed}, {@code f(seed)}, {@code f(f(seed))}, etc.
  
  <p> The first element (position {@code 0}) in the {@code LongStream} will be
  the provided {@code seed}. For {@code n > 0}, the element at position
  {@code n}, will be the result of applying the function {@code f} to the
  element at position {@code n - 1}.
  
  <p>Example:
  <pre>
  seed: 1
  f: (a) -&gt; a + 5
  result: [1, 6, 11, 16, ...]
  </pre>
  
  @param seed the initial element
  @param f  a function to be applied to the previous element to produce a new element
  @return a new sequential {@code LongStream}
  @throws NullPointerException if {@code f} is null