docs: public ByteBuffer saveToBuffer(InstanceId instId)
              throws IOException
      {
          if (instId == null) {
              throw new IOException("Null instance ID.");
          }
          if (m_serData == null) {
              throw new IOException("Uninitialized hashinator snapshot data.");
          }
  
          // Assume config data is the last field.
          ByteBuffer buf = ByteBuffer.allocate(m_serData.length + OFFSET_DATA);
  
          // Make sure the CRC starts at zero since those bytes figure into the CRC calculation.
          buf.putLong(OFFSET_CRC, 0);
          buf.putInt(OFFSET_INSTID_COORD, instId.getCoord());
          buf.putLong(OFFSET_INSTID_TIMESTAMP, instId.getTimestamp());
          buf.putLong(OFFSET_VERSION, m_version);
          buf.position(OFFSET_DATA);
          buf.put(m_serData);
  
          // Finalize the CRC based on the entire buffer and reset the current position.
          final PureJavaCrc32 crc = new PureJavaCrc32();
          crc.update(buf.array());
          buf.putLong(OFFSET_CRC, crc.getValue());
          buf.rewind();
          return buf;
      }