/**
   * @param ref The ref.
   * @return The offset to list record pointer; list record is created if it doesn't exist.
   */
  private long createOrGetListRecord(long ref) {
    if (Ref.hasList(ref)) {
      // LOG.info("Found list record at " + writeBuffers.getReadPoint());
      return writeBuffers.getReadPoint(); // Assumes we are here after key compare.
    }
    long firstTailOffset = Ref.getOffset(ref);
    // LOG.info("First tail offset to create list record is " + firstTailOffset);

    // Determine the length of storage for value and key lengths of the first record.
    writeBuffers.setReadPoint(firstTailOffset);
    writeBuffers.skipVLong();
    writeBuffers.skipVLong();
    int lengthsLength = (int) (writeBuffers.getReadPoint() - firstTailOffset);

    // Create the list record, copy first record value/key lengths there.
    writeBuffers.writeBytes(firstTailOffset, lengthsLength);
    long lrPtrOffset = writeBuffers.getWritePoint();
    // LOG.info("Creating list record: copying " + lengthsLength + ", lrPtrOffset " + lrPtrOffset);

    // Reserve 5 bytes for writeValueRecord to fill. There might be junk there so null them.
    writeBuffers.write(FIVE_ZEROES);
    // Link the list record to the first element.
    writeBuffers.writeFiveByteULong(firstTailOffset, lrPtrOffset - lengthsLength - firstTailOffset);
    return lrPtrOffset;
  }
 /**
  * Adds a newly-written record to existing list.
  *
  * @param lrPtrOffset List record pointer offset.
  * @param tailOffset New record offset.
  */
 private void addRecordToList(long lrPtrOffset, long tailOffset) {
   // Now, insert this record into the list.
   long prevHeadOffset = writeBuffers.readNByteLong(lrPtrOffset, 5);
   // LOG.info("Reading offset " + prevHeadOffset + " at " + lrPtrOffset);
   assert prevHeadOffset < tailOffset; // We replace an earlier element, must have lower offset.
   writeBuffers.writeFiveByteULong(lrPtrOffset, tailOffset);
   // LOG.info("Writing offset " + tailOffset + " at " + lrPtrOffset);
   writeBuffers.writeVLong(prevHeadOffset == 0 ? 0 : (tailOffset - prevHeadOffset));
 }