### Question:
BuildOutput implements OutputFile, Serializable { @Override public boolean equals(Object o) { if (this == o) { return true; } if (o == null || getClass() != o.getClass()) { return false; } BuildOutput that = (BuildOutput) o; return outputType == that.outputType && Objects.equals(properties, that.properties) && Objects.equals(apkData, that.apkData) && Objects.equals(path, that.path); } BuildOutput(
            @NonNull ArtifactType outputType, @NonNull ApkData apkData, @NonNull File outputFile);  BuildOutput(
            @NonNull ArtifactType outputType,
            @NonNull ApkData apkData,
            @NonNull File outputFile,
            @NonNull Map<String, String> properties);  BuildOutput(
            @NonNull ArtifactType outputType,
            @NonNull ApkData apkData,
            @NonNull Path outputPath,
            @NonNull Map<String, String> properties); void save(File folder); @NonNull ApkData getApkData(); @NonNull @Override File getOutputFile(); @NonNull ArtifactType getType(); @NonNull @Override String getOutputType(); @NonNull @Override Collection<String> getFilterTypes(); @NonNull @Override Collection<FilterData> getFilters(); @Nullable String getFilter(String filterType); @NonNull @Deprecated @Override OutputFile getMainOutputFile(); @NonNull @Deprecated @Override Collection<? extends OutputFile> getOutputs(); @Override int getVersionCode(); @NonNull Map<String, String> getProperties(); @Override String toString(); @Override boolean equals(Object o); @Override int hashCode(); Path getOutputPath();  }### Answer:
@Test public void testEquals() { EqualsVerifier.forClass(BuildOutput.class) .withPrefabValues( ApkData.class, ApkData.of(VariantOutput.OutputType.MAIN, ImmutableList.of(), 0), ApkData.of(VariantOutput.OutputType.FULL_SPLIT, ImmutableList.of(), 1)) .verify(); }