code: public final Ix<List<T>> buffer(int size, int skip) {
          if (size == skip) {
              return buffer(size);
          }
          if (size < skip) {
              return new IxBufferSkip<T>(this, positive(size, "size"), positive(skip, "skip"));
          }
          return new IxBufferOverlap<T>(this, positive(size, "size"), positive(skip, "skip"));
      }
docs: Buffers the subsequent {@code size} elements into a sequence of
  potentially overlapping Lists.
  <p>
  The result's iterator() doesn't support remove().
  @param size the number of elements to group together, positive
  @param skip specifies how often to start a new list
  @return the new Ix instance
  @throws IllegalArgumentException if size or skip is non-positive
  @since 1.0