docs: public static <T> byte[] writeVersionAndSerialize(SimpleVersionedSerializer<T> serializer, T datum) throws IOException {
  		checkNotNull(serializer, "serializer");
  		checkNotNull(datum, "datum");
  
  		final byte[] data = serializer.serialize(datum);
  		final byte[] versionAndData = new byte[data.length + 8];
  
  		final int version = serializer.getVersion();
  		versionAndData[0] = (byte) (version >> 24);
  		versionAndData[1] = (byte) (version >> 16);
  		versionAndData[2] = (byte) (version >>  8);
  		versionAndData[3] = (byte)  version;
  
  		final int length = data.length;
  		versionAndData[4] = (byte) (length >> 24);
  		versionAndData[5] = (byte) (length >> 16);
  		versionAndData[6] = (byte) (length >>  8);
  		versionAndData[7] = (byte)  length;
  
  		// move the data to the array
  		System.arraycopy(data, 0, versionAndData, 8, data.length);
  
  		return versionAndData;
  	}