docs: public void reset(long userOffset) throws IOException {
      if (closed) {
        throw new IllegalStateException("closed");
      }
  
      if (userOffset < mark // userOffset is before mark.
          || userOffset > limit // userOffset is beyond limit.
          || userOffset > mark + markBuffer.size() // userOffset is in the future.
          || offset - userBuffer.size() > limit) { // Stream advanced beyond limit.
        throw new IOException("cannot reset to " + userOffset + ": out of range");
      }
  
      // Clear userBuffer to cause data at 'offset' to be returned by the next read.
      offset = userOffset;
      userBuffer.clear();
    }