class AndroidArtifactImpl extends BaseArtifactImpl implements AndroidArtifact, 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;
        }
        AndroidArtifactImpl that = (AndroidArtifactImpl) o;
        return isSigned == that.isSigned
                && Objects.equals(signingConfigName, that.signingConfigName)
                && Objects.equals(applicationId, that.applicationId)
                && Objects.equals(sourceGenTaskName, that.sourceGenTaskName)
                && Objects.equals(generatedResourceFolders, that.generatedResourceFolders)
                && Objects.equals(abiFilters, that.abiFilters)
                && Objects.equals(buildConfigFields, that.buildConfigFields)
                && Objects.equals(resValues, that.resValues)
                && Objects.equals(manifestSupplier, that.manifestSupplier)
                && Objects.equals(splitOutputsSupplier, that.splitOutputsSupplier)
                && Objects.equals(instantRun, that.instantRun)
                && Objects.equals(additionalRuntimeApks, that.additionalRuntimeApks)
                && Objects.equals(baseName, that.baseName)
                && Objects.equals(testOptions, that.testOptions)
                && Objects.equals(instrumentedTestTaskName, that.instrumentedTestTaskName)
                && Objects.equals(bundleTaskName, that.bundleTaskName)
                && Objects.equals(apkFromBundleTaskName, that.apkFromBundleTaskName);
    }

      AndroidArtifactImpl(
            @NonNull String name,
            @NonNull String baseName,
            @NonNull String assembleTaskName,
            boolean isSigned,
            @Nullable String signingConfigName,
            @NonNull String applicationId,
            @NonNull String sourceGenTaskName,
            @NonNull String compileTaskName,
            @NonNull List<File> generatedSourceFolders,
            @NonNull List<File> generatedResourceFolders,
            @NonNull File classesFolder,
            @NonNull Set<File> additionalClassFolders,
            @NonNull File javaResourcesFolder,
            @NonNull Dependencies compileDependencies,
            @NonNull DependencyGraphs dependencyGraphs,
            @NonNull List<File> additionalRuntimeApks,
            @Nullable SourceProvider variantSourceProvider,
            @Nullable SourceProvider multiFlavorSourceProviders,
            @Nullable Set<String> abiFilters,
            @NonNull Map<String, ClassField> buildConfigFields,
            @NonNull Map<String, ClassField> resValues,
            @NonNull InstantRun instantRun,
            @NonNull BuildOutputSupplier<Collection<EarlySyncBuildOutput>> splitOutputsSupplier,
            @NonNull BuildOutputSupplier<Collection<EarlySyncBuildOutput>> manifestSupplier,
            @Nullable TestOptions testOptions,
            @Nullable String instrumentedTestTaskName,
            @Nullable String bundleTaskName,
            @Nullable String apkFromBundleTaskName);

}