### Question:
JavaArtifactImpl extends BaseArtifactImpl implements JavaArtifact, Serializable { @Override public boolean equals(Object o) { if (this == o) { return true; } if (o == null || getClass() != o.getClass()) { return false; } if (!super.equals(o)) { return false; } JavaArtifactImpl that = (JavaArtifactImpl) o; return Objects.equal(ideSetupTaskNames, that.ideSetupTaskNames) && Objects.equal(mockablePlatformJar, that.mockablePlatformJar); } JavaArtifactImpl(
            @NonNull String name,
            @NonNull String assembleTaskName,
            @NonNull String compileTaskName,
            @NonNull Iterable<String> ideSetupTaskNames,
            @NonNull Collection<File> generatedSourceFolders,
            @NonNull File classesFolder,
            @NonNull Set<File> additionalClassesFolders,
            @NonNull File javaResourcesFolder,
            @Nullable File mockablePlatformJar,
            @NonNull Dependencies compileDependencies,
            @NonNull DependencyGraphs dependencyGraphs,
            @Nullable SourceProvider variantSourceProvider,
            @Nullable SourceProvider multiFlavorSourceProviders); static JavaArtifactImpl clone(
            @NonNull JavaArtifact javaArtifact, int modelLevel, boolean modelWithFullDependency); @NonNull @Override Set<String> getIdeSetupTaskNames(); @Override @Nullable File getMockablePlatformJar(); @Override boolean equals(Object o); @Override int hashCode();  }### Answer:
@Test public void equals() throws Exception { EqualsVerifier.forClass(JavaArtifactImpl.class).withRedefinedSuperclass().verify(); }