### Question:
BlockBody implements ProtoObject<Proto.TransactionList> { public BlockBody(byte[] bytes) { this(toProto(bytes)); } BlockBody(byte[] bytes);  BlockBody(Proto.TransactionList transactionList);  BlockBody(List<Transaction> transactionList);  BlockBody(JsonArray jsonArray); List<Transaction> getTransactionList(); int getCount(); long getLength(); byte[] getMerkleRoot(); byte[] getStateRoot(); @Override byte[] toBinary(); @Override Proto.TransactionList getInstance(); @Override boolean equals(Object o); @Override int hashCode(); @Override String toString();  }### Answer:
@Test public void testBlockBodyTest() { JsonObject jsonParam = new JsonObject(); jsonParam.addProperty("address", "5db10750e8caff27f906b41c71b3471057dd2000"); jsonParam.addProperty("amount", "10000000"); JsonObject jsonObject = new JsonObject(); jsonObject.addProperty("method", "transfer"); jsonObject.add("params", jsonParam); byte[] chain = Constants.EMPTY_BRANCH; byte[] version = Constants.EMPTY_BYTE8; byte[] type = Constants.EMPTY_BYTE8; long timestamp = TimeUtils.time(); TransactionBody txBody = new TransactionBody(jsonObject); TransactionHeader txHeader = new TransactionHeader(chain, version, type, timestamp, txBody); TransactionSignature txSig = new TransactionSignature(TestConstants.wallet(), txHeader.getHashForSigning()); Transaction tx1 = new TransactionImpl(txHeader, txSig.getSignature(), txBody); Transaction tx2 = new TransactionImpl(tx1.toBinary()); log.debug("tx1={}", tx1); log.debug("tx2={}", tx2); List<Transaction> txs1 = new ArrayList<>(); txs1.add(tx1); txs1.add(tx2); log.debug("txs={}", txs1); BlockBody bb1 = new BlockBody(txs1); BlockBody bb2 = new BlockBody(bb1.toBinary()); log.debug("bb1={}", bb1); log.debug("bb2={}", bb2); assertEquals(2, bb1.getCount()); assertEquals(bb1, bb2); log.debug("bb1.length={}", bb1.getLength()); log.debug("bb2.length={}", bb2.getLength()); assertEquals(bb1.getLength(), bb2.getLength()); log.debug("bb1.getBodyCount={}", bb1.getCount()); log.debug("bb2.getBodyCount={}", bb2.getCount()); assertEquals(bb1.getCount(), bb2.getCount()); log.debug("bb1.merkleRoot={}", Hex.toHexString(bb1.getMerkleRoot())); log.debug("bb2.merkleRoot={}", Hex.toHexString(bb2.getMerkleRoot())); assertArrayEquals(bb1.getMerkleRoot(), bb2.getMerkleRoot()); assertEquals(32, bb1.getMerkleRoot().length); }