class 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);
    }

    public  BuildOutput(
            @NonNull ArtifactType outputType, @NonNull ApkData apkData, @NonNull File outputFile);
    public  BuildOutput(
            @NonNull ArtifactType outputType,
            @NonNull ApkData apkData,
            @NonNull File outputFile,
            @NonNull Map<String, String> properties);
    public  BuildOutput(
            @NonNull ArtifactType outputType,
            @NonNull ApkData apkData,
            @NonNull Path outputPath,
            @NonNull Map<String, String> properties);

}