### Question:
MemoryRowBlock implements RowBlock, Deallocatable { @Override public void release() { memory.release(); } MemoryRowBlock(DataType[] dataTypes, ResizableLimitSpec limitSpec, boolean isDirect);  MemoryRowBlock(DataType[] dataTypes, ResizableLimitSpec limitSpec, boolean isDirect, String dataFormat);  MemoryRowBlock(MemoryRowBlock rowBlock);  MemoryRowBlock(DataType[] dataTypes);  MemoryRowBlock(DataType[] dataTypes, int bytes);  MemoryRowBlock(DataType[] dataTypes, int bytes, boolean isDirect, String dataFormat); @Override String getDataFormat(); @Override void clear(); @Override int capacity(); @Override int usedMem(); @Override float usage(); int maxRowNum(); @Override int rows(); @Override void setRows(int rowNum); @Override DataType[] getDataTypes(); @Override boolean copyFromChannel(ScatteringByteChannel channel); @Override RowWriter getWriter(); @Override MemoryBlock getMemory(); @Override void release(); @Override RowBlockReader getReader(); static final int NULL_FIELD_OFFSET; }### Answer:
@Test public void testSerDerOfRowBlock() { int rowNum = 1000; MemoryRowBlock rowBlock = createRowBlock(rowNum); MemoryRowBlock restoredRowBlock = new MemoryRowBlock(rowBlock); validateResults(restoredRowBlock); rowBlock.release(); }