/** Read raw bytes from a SequenceFile. */
 public synchronized boolean nextKeyValue() throws IOException, InterruptedException {
   if (done) {
     return false;
   }
   long pos = in.getPosition();
   key.set(pos);
   info.setPosition(pos);
   boolean eof = -1 == in.nextRawKey(buffer);
   if (!eof) {
     in.nextRawValue(vbytes);
     value.set(
         buffer.getLength(), vbytes.getSize(), (int) (in.getPosition() - pos), in.syncSeen());
   }
   buffer.reset();
   return !(done = (eof || (pos >= end && in.syncSeen())));
 }