code: public ReadRecordStatus readRecord(byte[] hostBytes, int processed) throws IOException {
          int bytesRead = 0;
          if (getBytesPrefetched() == 0) {
              bytesRead = readFully(hostBytes, 0, RDW_LEN);
              if (bytesRead < RDW_LEN) {
                  throw new IOException(
                          "Not enough bytes left for a record descriptor word");
              }
              setBytesPrefetched(RDW_LEN);
          }
          int recordLen = getRecordLen(hostBytes);
          bytesRead += readFully(hostBytes, getBytesPrefetched(), recordLen
                  - getBytesPrefetched() + RDW_LEN);
  
          setBytesPrefetched(0);
          return new ReadRecordStatus(recordLen, bytesRead);
      }
docs: Reads a full record from the stream.
  <p/>
  A positive bytesPrefetched signals that part of the record was already
  read previously in which case we just read the complement.
  <p/>
  Otherwise we start by reading the rdw and the actual record.
  
  @param hostBytes a buffer where to read the record
  @return the status of the read operation, including the number of bytes read from the stream
  @throws IOException