slice(start, end) {
    /** @type {number} */
    const stop =
      end === null || end === undefined ? Number.POSITIVE_INFINITY : end

    if (stop < this.left.length) {
      return this.left.slice(start, stop)
    }

    if (start > this.left.length) {
      return this.right
        .slice(
          this.right.length - stop + this.left.length,
          this.right.length - start + this.left.length
        )
        .reverse()
    }

    return this.left
      .slice(start)
      .concat(
        this.right.slice(this.right.length - stop + this.left.length).reverse()
      )
  }
Slice the buffer to get an array;
does not move the cursor.

@param {number} start
  Start.
@param {number | null | undefined} [end]
  End (optional).
@returns {Array<T>}
  Array of items.