### Question:
TransactionReceipt { public static TransactionReceipt fromBytes(Bytes bytes) { return RLP.decode(bytes, TransactionReceipt::readFrom); } TransactionReceipt(Bytes32 stateRoot, long cumulativeGasUsed, LogsBloomFilter bloomFilter, List<Log> logs);  TransactionReceipt(int status, long cumulativeGasUsed, LogsBloomFilter bloomFilter, List<Log> logs); private  TransactionReceipt(
      @Nullable Bytes32 stateRoot,
      @Nullable Integer status,
      long cumulativeGasUsed,
      LogsBloomFilter bloomFilter,
      List<Log> logs); static TransactionReceipt fromBytes(Bytes bytes); static TransactionReceipt readFrom(final RLPReader reader); Bytes toBytes(); void writeTo(final RLPWriter writer); Bytes32 stateRoot(); long cumulativeGasUsed(); List<Log> logs(); LogsBloomFilter bloomFilter(); boolean isValid(); Integer status(); @Override boolean equals(final Object obj); @Override int hashCode(); @Override String toString();  }### Answer:
@Test void testRLPRoundtrip() { List<Log> logs = Collections.singletonList( new Log( Address.fromBytes(Bytes.random(20)), Bytes.of(1, 2, 3), Arrays.asList(Bytes32.random(), Bytes32.random()))); LogsBloomFilter filter = LogsBloomFilter.compute(logs); TransactionReceipt transactionReceipt = new TransactionReceipt(Bytes32.random(), 2, filter, logs); Bytes rlp = RLP.encode(transactionReceipt::writeTo); TransactionReceipt read = RLP.decode(rlp, TransactionReceipt::readFrom); assertEquals(transactionReceipt, read); }
@Test void testRLPRoundtripWithStatus() { List<Log> logs = Arrays.asList( new Log( Address.fromBytes(Bytes.random(20)), Bytes.of(1, 2, 3), Arrays.asList(Bytes32.random(), Bytes32.random()))); LogsBloomFilter filter = LogsBloomFilter.compute(logs); TransactionReceipt transactionReceipt = new TransactionReceipt(1, 2, filter, logs); Bytes rlp = RLP.encode(transactionReceipt::writeTo); TransactionReceipt read = RLP.decode(rlp, TransactionReceipt::readFrom); assertEquals(transactionReceipt, read); }