### Question:
TransactionStatement implements Stored { public String generateHash() { final byte[] versionByte = ByteUtils.shortToBytes( Short.reverseBytes((short) ReceiptVersion.TRANSACTION_STATEMENT.getValue())); final byte[] typeByte = ByteUtils.shortToBytes( Short.reverseBytes((short) ReceiptType.TRANSACTION_GROUP.getValue())); final byte[] sourceByte = getReceiptSource().serialize(); byte[] results = ArrayUtils.concat(versionByte, typeByte, sourceByte); for (final Receipt receipt : receipts) { results = ArrayUtils.concat(results, receipt.serialize()); } byte[] hash = Hashes.sha3_256(results); return ConvertUtils.toHex(hash); } TransactionStatement(
      String recordId, BigInteger height, ReceiptSource receiptSource, List<Receipt> receipts); ReceiptSource getReceiptSource(); BigInteger getHeight(); List<Receipt> getReceipts(); String generateHash(); @Override Optional<String> getRecordId();  }### Answer:
@Test void shouldGenerateHash() { TransactionStatement transactionStatement = new TransactionStatement("abc", BigInteger.TEN, receiptSource, receipts); String hash = transactionStatement.generateHash(); assertTrue(!hash.isEmpty()); assertEquals("E236746F9A803C764A115E9542DEB295D30E86B8ED62F5142B4F170B08BA22D5", hash); }