### Question:
OmMultipartKeyInfo extends WithObjectID { public OmMultipartKeyInfo copyObject() { return new OmMultipartKeyInfo(uploadID, creationTime, replicationType, replicationFactor, new TreeMap<>(partKeyInfoList), objectID, updateID); } OmMultipartKeyInfo(String id, long creationTime,
      ReplicationType replicationType, ReplicationFactor replicationFactor,
      Map<Integer, PartKeyInfo> list, long objectID, long updateID); String getUploadID(); long getCreationTime(); TreeMap<Integer, PartKeyInfo> getPartKeyInfoMap(); void addPartKeyInfo(int partNumber, PartKeyInfo partKeyInfo); PartKeyInfo getPartKeyInfo(int partNumber); ReplicationType getReplicationType(); ReplicationFactor getReplicationFactor(); static OmMultipartKeyInfo getFromProto(
      MultipartKeyInfo multipartKeyInfo); MultipartKeyInfo getProto(); @Override String getObjectInfo(); @Override boolean equals(Object other); @Override int hashCode(); OmMultipartKeyInfo copyObject();  }### Answer:
@Test public void testCopyObject() { OmMultipartKeyInfo omMultipartKeyInfo = new OmMultipartKeyInfo.Builder() .setUploadID(UUID.randomUUID().toString()) .setCreationTime(Time.now()) .setReplicationType(HddsProtos.ReplicationType.RATIS) .setReplicationFactor(HddsProtos.ReplicationFactor.THREE) .build(); OmMultipartKeyInfo cloneMultipartKeyInfo = omMultipartKeyInfo.copyObject(); Assert.assertEquals(cloneMultipartKeyInfo, omMultipartKeyInfo); omMultipartKeyInfo.addPartKeyInfo(1, PartKeyInfo.newBuilder().setPartNumber(1).setPartName("/path") .setPartKeyInfo(KeyInfo.newBuilder() .setVolumeName(UUID.randomUUID().toString()) .setBucketName(UUID.randomUUID().toString()) .setKeyName(UUID.randomUUID().toString()) .setDataSize(100L) .setCreationTime(Time.now()) .setModificationTime(Time.now()) .setType(HddsProtos.ReplicationType.RATIS) .setFactor(HddsProtos.ReplicationFactor.ONE).build()).build()); Assert.assertEquals(0, cloneMultipartKeyInfo.getPartKeyInfoMap().size()); Assert.assertEquals(1, omMultipartKeyInfo.getPartKeyInfoMap().size()); }