txn.serialize(buf);
assertEquals(buf.position(), size);
// deserialize transaction from buffer
buf.position(0);
TransactionInternal txn2 = TransactionInternal.deserialize(buf);
assertEquals(buf.position(), size);
// compare original transaction with deserialized transaction
assertEquals(txn.getSize(), txn2.getSize());
assertEquals(txn.getOperations().size(), txn2.getOperations().size());
for (int i = 0; i < txn.getOperations().size(); i++) {
Operation op1 = txn.getOperations().get(i);
Operation op2 = txn2.getOperations().get(i);
// count legal parameters
int count = 0;
if (op1.getParams() != null) {
for (Object obj : op1.getParams()) {