code: @Override
    public SeekableByteChannel position(long newPosition) throws IOException {
      throwIfNotOpen();
  
      if (newPosition == currentPosition) {
        return this;
      }
  
      validatePosition(newPosition);
      logger.atFine().log(
          "Seek from %s to %s position for '%s'", currentPosition, newPosition, resourceIdString);
      currentPosition = newPosition;
      return this;
    }
docs: Sets this channel's position.
  
  <p>This method will throw an exception if {@code newPosition} is greater than object size,
  which contradicts {@link SeekableByteChannel#position(long) SeekableByteChannel} contract.
  TODO(user): decide if this needs to be fixed.
  
  @param newPosition the new position, counting the number of bytes from the beginning.
  @return this channel instance
  @throws java.io.FileNotFoundException if the underlying object does not exist.
  @throws IOException on IO error