code: public synchronized int read(long position, byte[] buffer, int offset, int length)
        throws IOException {
      long oldPos = getPos();
      int nread = -1;
      try {
        seek(position);
        nread = read(buffer, offset, length);
      } finally {
        seek(oldPos);
      }
      return nread;
    }
docs: {@inheritDoc}