AttachmentUploadResult { @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; AttachmentUploadResult<?> result = (AttachmentUploadResult<?>) o; return Objects.equals(getTarget(), result.getTarget()) && successfulUploads.equals(result.successfulUploads) && failedUploads.equals(result.failedUploads); } AttachmentUploadResult(T target); private  AttachmentUploadResult(T target,
                                   Set<AttachmentUploadRequest.Item> successfulUploads,
                                   Map<AttachmentUploadRequest.Item, Throwable> failedUploads); static AttachmentUploadResult<T> newResult(T target,
                                        Set<AttachmentUploadRequest.Item> successfulUploads,
                                        Map<AttachmentUploadRequest.Item, Throwable> failedUploads); T getTarget(); boolean isSuccess(); Set<AttachmentUploadRequest.Item> successfulUploads(); Map<AttachmentUploadRequest.Item, Throwable> failedUploads(); @Override boolean equals(Object o); @Override int hashCode(); @Override String toString();  }
@Test public void testEquals() { SW360Release release1 = new SW360Release(); release1.setName("release1"); SW360Release release2 = new SW360Release(); release2.setName("release2"); EqualsVerifier.forClass(AttachmentUploadResult.class) .withNonnullFields("successfulUploads", "failedUploads") .withPrefabValues(SW360HalResource.class, release1, release2) .verify(); }