code: public final Stream<T> slice(final long offset, final long limit) {
          synchronized (this.state) {
              checkState();
              return new SliceStream<T>(this, offset, limit);
          }
      }
docs: Intermediate operation returning a Stream with max {@code limit} elements with index
  starting at {@code offset} taken from this Stream. After those elements are returned, the
  wrapped Stream is automatically closed.
  
  @param offset
  the offset where to start returning elements from, not negative
  @param limit
  the maximum number of elements to return (starting from offset), not negative
  @return a Stream wrapping this Stream and limiting the number of returned elements