### Question:
PbftMessage implements ConsensusMessage<PbftMessage> { public PbftMessage clone() { return new PbftMessage(toJsonObject()); } PbftMessage(String type,
                       long viewNumber,
                       long seqNumber,
                       Sha3Hash hash,
                       byte[] result,
                       byte[] signature,
                       Block block);  PbftMessage(String type,
                       long viewNumber,
                       long seqNumber,
                       Sha3Hash hash,
                       byte[] result,
                       Wallet wallet,
                       Block block);  PbftMessage(byte[] bytes);  PbftMessage(PbftProto.PbftMessage protoPbftMessage);  PbftMessage(JsonObject jsonObject); @Override String getType(); @Override long getViewNumber(); @Override long getSeqNumber(); @Override byte[] getHash(); @Override String getHashHex(); @Override byte[] getHashForSigning(); @Override byte[] getResult(); @Override byte[] getSignature(); @Override String getSignatureHex(); @Override @JsonIgnore byte[] getAddress(); @Override @JsonIgnore String getAddressHex(); @Override @JsonIgnore Block getBlock(); @Override byte[] toBinary(); @Override byte[] sign(Wallet wallet); @Override JsonObject toJsonObject(); static List<PbftMessage> toPbftMessageList(
            PbftProto.PbftMessageList protoPbftMessageList); static PbftProto.PbftMessage toProto(PbftMessage pbftMessage); static PbftProto.PbftMessageList toProtoList(Collection<PbftMessage> pbftMessageList); @Override boolean equals(Object o); @Override int hashCode(); void clear(); PbftMessage clone();  }### Answer:
@Test public void cloneTest() { PbftMessage newPbftMessage = this.prePrepare.clone(); assertEquals(newPbftMessage, this.prePrepare); newPbftMessage.clear(); assertTrue(PbftVerifier.INSTANCE.verify(this.prePrepare)); newPbftMessage = this.prepare.clone(); assertEquals(newPbftMessage, this.prepare); newPbftMessage.clear(); assertTrue(PbftVerifier.INSTANCE.verify(this.prepare)); newPbftMessage = this.commit.clone(); assertEquals(newPbftMessage, this.commit); newPbftMessage.clear(); assertTrue(PbftVerifier.INSTANCE.verify(this.commit)); newPbftMessage = this.viewChange.clone(); assertEquals(newPbftMessage, this.viewChange); newPbftMessage.clear(); assertTrue(PbftVerifier.INSTANCE.verify(this.viewChange)); }