class NativeArtifactImpl implements NativeArtifact, Serializable {

    @Override
    public boolean equals(Object o) {
        if (this == o) {
            return true;
        }
        if (o == null || getClass() != o.getClass()) {
            return false;
        }
        NativeArtifactImpl that = (NativeArtifactImpl) o;
        return Objects.equals(name, that.name) &&
                Objects.equals(toolChain, that.toolChain) &&
                Objects.equals(groupName, that.groupName) &&
                Objects.equals(assembleTaskName, that.assembleTaskName) &&
                Objects.equals(sourceFiles, that.sourceFiles) &&
                Objects.equals(exportedHeaders, that.exportedHeaders) &&
                Objects.equals(outputFile, that.outputFile) &&
                Objects.equals(runtimeFiles, that.runtimeFiles) &&
                Objects.equals(abi, that.abi) &&
                Objects.equals(targetName, that.targetName);
    }

    public  NativeArtifactImpl(
            @NonNull String name,
            @NonNull String toolChain,
            @NonNull String groupName,
            @NonNull String assembleTaskName,
            @NonNull Collection<NativeFile> sourceFiles,
            @NonNull Collection<File> exportedHeaders,
            @NonNull File outputFile,
            @NonNull Collection<File> runtimeFiles,
            @NonNull String abi,
            @NonNull String targetName);

}