// Path: src/main/java/com/edorasware/one/initializr/metadata/InitializrConfiguration.java
// public static class ParentPom {
// 
// 	/**
// 	 * Parent pom groupId.
// 	 */
// 	private String groupId;
// 
// 	/**
// 	 * Parent pom artifactId.
// 	 */
// 	private String artifactId;
// 
// 	/**
// 	 * Parent pom version.
// 	 */
// 	private String version;
// 
// 	public ParentPom(String groupId, String artifactId, String version) {
// 		this.groupId = groupId;
// 		this.artifactId = artifactId;
// 		this.version = version;
// 	}
// 
// 	public ParentPom() {
// 	}
// 
// 	public String getGroupId() {
// 		return groupId;
// 	}
// 
// 	public void setGroupId(String groupId) {
// 		this.groupId = groupId;
// 	}
// 
// 	public String getArtifactId() {
// 		return artifactId;
// 	}
// 
// 	public void setArtifactId(String artifactId) {
// 		this.artifactId = artifactId;
// 	}
// 
// 	public String getVersion() {
// 		return version;
// 	}
// 
// 	public void setVersion(String version) {
// 		this.version = version;
// 	}
// 
// 	public void validate() {
// 		if (!((!StringUtils.hasText(groupId)
// 				&& !StringUtils.hasText(artifactId)
// 				&& !StringUtils.hasText(version))
// 				|| (StringUtils.hasText(groupId)
// 				&& StringUtils.hasText(artifactId)
// 				&& StringUtils.hasText(version)))) {
// 			throw new InvalidInitializrMetadataException("Custom maven pom "
// 					+ "requires groupId, artifactId and version");
// 		}
// 	}
// 
// }


import com.edorasware.one.initializr.metadata.*;
import com.edorasware.one.initializr.metadata.InitializrConfiguration.Env.Maven.ParentPom;
import org.springframework.util.StringUtils;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Arrays;
                ;
    }

    public OfflineInitializrMetadataBuilder addBom(String id, String groupId,
                                                   String artifactId, String version) {
        BillOfMaterials bom = BillOfMaterials.create(groupId, artifactId, version);
        return addBom(id, bom);
    }

    public OfflineInitializrMetadataBuilder addBom(String id, BillOfMaterials bom) {
        builder.withCustomizer(it -> it.getConfiguration().getEnv()
                .getBoms().put(id, bom));
        return this;
    }

    public OfflineInitializrMetadataBuilder setGradleEnv(String dependencyManagementPluginVersion) {
        builder.withCustomizer(it -> it.getConfiguration().getEnv().getGradle().
                setDependencyManagementPluginVersion(dependencyManagementPluginVersion));
        return this;
    }

    public OfflineInitializrMetadataBuilder setKotlinEnv(String kotlinVersion) {
        builder.withCustomizer(it -> it.getConfiguration().getEnv()
                .getKotlin().setVersion(kotlinVersion));
        return this;
    }

    public OfflineInitializrMetadataBuilder setMavenParent(String groupId, String artifactId,
                                                           String version) {
        builder.withCustomizer(it -> {
// Path: src/main/java/com/edorasware/one/initializr/metadata/InitializrConfiguration.java
// public static class ParentPom {
// 
// 	/**
// 	 * Parent pom groupId.
// 	 */
// 	private String groupId;
// 
// 	/**
// 	 * Parent pom artifactId.
// 	 */
// 	private String artifactId;
// 
// 	/**
// 	 * Parent pom version.
// 	 */
// 	private String version;
// 
// 	public ParentPom(String groupId, String artifactId, String version) {
// 		this.groupId = groupId;
// 		this.artifactId = artifactId;
// 		this.version = version;
// 	}
// 
// 	public ParentPom() {
// 	}
// 
// 	public String getGroupId() {
// 		return groupId;
// 	}
// 
// 	public void setGroupId(String groupId) {
// 		this.groupId = groupId;
// 	}
// 
// 	public String getArtifactId() {
// 		return artifactId;
// 	}
// 
// 	public void setArtifactId(String artifactId) {
// 		this.artifactId = artifactId;
// 	}
// 
// 	public String getVersion() {
// 		return version;
// 	}
// 
// 	public void setVersion(String version) {
// 		this.version = version;
// 	}
// 
// 	public void validate() {
// 		if (!((!StringUtils.hasText(groupId)
// 				&& !StringUtils.hasText(artifactId)
// 				&& !StringUtils.hasText(version))
// 				|| (StringUtils.hasText(groupId)
// 				&& StringUtils.hasText(artifactId)
// 				&& StringUtils.hasText(version)))) {
// 			throw new InvalidInitializrMetadataException("Custom maven pom "
// 					+ "requires groupId, artifactId and version");
// 		}
// 	}
// 
// }


// Path: src/main/java/com/edorasware/one/initializr/web/support/OfflineInitializrMetadataBuilder.java
import com.edorasware.one.initializr.metadata.*;
import com.edorasware.one.initializr.metadata.InitializrConfiguration.Env.Maven.ParentPom;
import org.springframework.util.StringUtils;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Arrays;

                ;
    }

    public OfflineInitializrMetadataBuilder addBom(String id, String groupId,
                                                   String artifactId, String version) {
        BillOfMaterials bom = BillOfMaterials.create(groupId, artifactId, version);
        return addBom(id, bom);
    }

    public OfflineInitializrMetadataBuilder addBom(String id, BillOfMaterials bom) {
        builder.withCustomizer(it -> it.getConfiguration().getEnv()
                .getBoms().put(id, bom));
        return this;
    }

    public OfflineInitializrMetadataBuilder setGradleEnv(String dependencyManagementPluginVersion) {
        builder.withCustomizer(it -> it.getConfiguration().getEnv().getGradle().
                setDependencyManagementPluginVersion(dependencyManagementPluginVersion));
        return this;
    }

    public OfflineInitializrMetadataBuilder setKotlinEnv(String kotlinVersion) {
        builder.withCustomizer(it -> it.getConfiguration().getEnv()
                .getKotlin().setVersion(kotlinVersion));
        return this;
    }

    public OfflineInitializrMetadataBuilder setMavenParent(String groupId, String artifactId,
                                                           String version) {
        builder.withCustomizer(it -> {
            ParentPom parent = it.getConfiguration().getEnv().getMaven().getParent();