class NativeAndroidProjectImpl implements NativeAndroidProject, Serializable {

    @Override
    public boolean equals(Object o) {
        if (this == o) {
            return true;
        }
        if (o == null || getClass() != o.getClass()) {
            return false;
        }
        NativeAndroidProjectImpl that = (NativeAndroidProjectImpl) o;
        return apiVersion == that.apiVersion
                && Objects.equals(modelVersion, that.modelVersion)
                && Objects.equals(name, that.name)
                && Objects.equals(variantInfos, that.variantInfos)
                && Objects.equals(buildFiles, that.buildFiles)
                && Objects.equals(artifacts, that.artifacts)
                && Objects.equals(toolChains, that.toolChains)
                && Objects.equals(settings, that.settings)
                && Objects.equals(fileExtensions, that.fileExtensions)
                && Objects.equals(buildSystems, that.buildSystems);
    }

    public  NativeAndroidProjectImpl(
            @NonNull String modelVersion,
            @NonNull String name,
            @NonNull Collection<File> buildFiles,
            @NonNull Map<String, NativeVariantInfo> variantInfos,
            @NonNull Collection<NativeArtifact> artifacts,
            @NonNull Collection<NativeToolchain> toolChains,
            @NonNull Collection<NativeSettings> settings,
            @NonNull Map<String, String> fileExtensions,
            @NonNull Collection<String> buildSystems,
            int apiVersion);

}