final int rowDataSize = size + RowData.ENVELOPE_SIZE;
final byte[] valueBytes = value.getEncodedBytes();
byte[] rowDataBytes = rowData.getBytes();
if (rowDataSize < RowData.MINIMUM_RECORD_LENGTH || rowDataSize > RowData.MAXIMUM_RECORD_LENGTH) {
throw new CorruptRowDataException("RowData is too short or too long: " + rowDataSize);
}
if (rowDataBytes == null || rowDataSize > rowDataBytes.length) {
rowDataBytes = new byte[rowDataSize + INITIAL_BUFFER_SIZE];
rowData.reset(rowDataBytes);