All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.apache.maven.model.v4.MavenTransformer Maven / Gradle / Ivy

// =================== DO NOT EDIT THIS FILE ====================
//  Generated by Modello Velocity from transformer.vm
//  template, any modifications will be overwritten.
// ==============================================================
package org.apache.maven.model.v4;

import java.io.ObjectStreamException;
import java.util.AbstractList;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.Objects;
import java.util.function.BinaryOperator;
import java.util.function.Function;
import java.util.function.Supplier;
import java.util.stream.Collectors;

import org.apache.maven.api.annotations.Generated;
import org.apache.maven.api.xml.XmlNode;
import org.apache.maven.api.model.Model;
import org.apache.maven.api.model.ModelBase;
import org.apache.maven.api.model.PluginContainer;
import org.apache.maven.api.model.PluginConfiguration;
import org.apache.maven.api.model.BuildBase;
import org.apache.maven.api.model.Build;
import org.apache.maven.api.model.CiManagement;
import org.apache.maven.api.model.Notifier;
import org.apache.maven.api.model.Contributor;
import org.apache.maven.api.model.Dependency;
import org.apache.maven.api.model.Developer;
import org.apache.maven.api.model.Exclusion;
import org.apache.maven.api.model.IssueManagement;
import org.apache.maven.api.model.DistributionManagement;
import org.apache.maven.api.model.License;
import org.apache.maven.api.model.MailingList;
import org.apache.maven.api.model.Organization;
import org.apache.maven.api.model.PatternSet;
import org.apache.maven.api.model.Parent;
import org.apache.maven.api.model.Scm;
import org.apache.maven.api.model.FileSet;
import org.apache.maven.api.model.Resource;
import org.apache.maven.api.model.RepositoryBase;
import org.apache.maven.api.model.Repository;
import org.apache.maven.api.model.DeploymentRepository;
import org.apache.maven.api.model.RepositoryPolicy;
import org.apache.maven.api.model.Site;
import org.apache.maven.api.model.ConfigurationContainer;
import org.apache.maven.api.model.Plugin;
import org.apache.maven.api.model.PluginExecution;
import org.apache.maven.api.model.DependencyManagement;
import org.apache.maven.api.model.PluginManagement;
import org.apache.maven.api.model.Reporting;
import org.apache.maven.api.model.Profile;
import org.apache.maven.api.model.Activation;
import org.apache.maven.api.model.ActivationProperty;
import org.apache.maven.api.model.ActivationOS;
import org.apache.maven.api.model.ActivationFile;
import org.apache.maven.api.model.ReportPlugin;
import org.apache.maven.api.model.ReportSet;
import org.apache.maven.api.model.Prerequisites;
import org.apache.maven.api.model.Relocation;
import org.apache.maven.api.model.Extension;
import org.apache.maven.api.model.InputLocation;
import org.apache.maven.api.model.InputSource;
import org.apache.maven.internal.xml.XmlNodeImpl;

@Generated
public class MavenTransformer {

    private final Function transformer;

    public MavenTransformer(Function transformer) {
        this.transformer = transformer;
    }

    /**
     * Transforms the given model
     */
    public Model visit(Model target) {
        Objects.requireNonNull(target, "target cannot be null");
        return transformModel(target);
    }

    /**
     * The transformation function.
     */
    protected String transform(String value) {
        return transformer.apply(value);
    }

    protected Model transformModel(Model target) {
        if (target == null) {
            return null;
        }
        Supplier creator = () -> Model.newBuilder(target);
        Model.Builder builder = null;
        builder = (Model.Builder) transformModel_ModelVersion(creator, builder, target);
        builder = (Model.Builder) transformModel_Parent(creator, builder, target);
        builder = (Model.Builder) transformModel_GroupId(creator, builder, target);
        builder = (Model.Builder) transformModel_ArtifactId(creator, builder, target);
        builder = (Model.Builder) transformModel_Version(creator, builder, target);
        builder = (Model.Builder) transformModel_Packaging(creator, builder, target);
        builder = (Model.Builder) transformModel_Name(creator, builder, target);
        builder = (Model.Builder) transformModel_Description(creator, builder, target);
        builder = (Model.Builder) transformModel_Url(creator, builder, target);
        builder = (Model.Builder) transformModel_ChildProjectUrlInheritAppendPath(creator, builder, target);
        builder = (Model.Builder) transformModel_Root(creator, builder, target);
        builder = (Model.Builder) transformModel_PreserveModelVersion(creator, builder, target);
        builder = (Model.Builder) transformModel_InceptionYear(creator, builder, target);
        builder = (Model.Builder) transformModel_Organization(creator, builder, target);
        builder = (Model.Builder) transformModel_Licenses(creator, builder, target);
        builder = (Model.Builder) transformModel_Developers(creator, builder, target);
        builder = (Model.Builder) transformModel_Contributors(creator, builder, target);
        builder = (Model.Builder) transformModel_MailingLists(creator, builder, target);
        builder = (Model.Builder) transformModel_Prerequisites(creator, builder, target);
        builder = (Model.Builder) transformModelBase_Modules(creator, builder, target);
        builder = (Model.Builder) transformModelBase_Subprojects(creator, builder, target);
        builder = (Model.Builder) transformModel_Scm(creator, builder, target);
        builder = (Model.Builder) transformModel_IssueManagement(creator, builder, target);
        builder = (Model.Builder) transformModel_CiManagement(creator, builder, target);
        builder = (Model.Builder) transformModelBase_DistributionManagement(creator, builder, target);
        builder = (Model.Builder) transformModelBase_Properties(creator, builder, target);
        builder = (Model.Builder) transformModelBase_DependencyManagement(creator, builder, target);
        builder = (Model.Builder) transformModelBase_Dependencies(creator, builder, target);
        builder = (Model.Builder) transformModelBase_Repositories(creator, builder, target);
        builder = (Model.Builder) transformModelBase_PluginRepositories(creator, builder, target);
        builder = (Model.Builder) transformModel_Build(creator, builder, target);
        builder = (Model.Builder) transformModelBase_Reporting(creator, builder, target);
        builder = (Model.Builder) transformModel_Profiles(creator, builder, target);
        return builder != null ? builder.build() : target;
    }

    protected Model.Builder transformModel_ModelVersion(Supplier creator, Model.Builder builder, Model target) {
        String oldVal = target.getModelVersion();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).modelVersion(newVal) : builder;
    }
    protected Model.Builder transformModel_Parent(Supplier creator, Model.Builder builder, Model target) {
        Parent oldVal = target.getParent();
        Parent newVal = transformParent(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).parent(newVal) : builder;
    }
    protected Model.Builder transformModel_GroupId(Supplier creator, Model.Builder builder, Model target) {
        String oldVal = target.getGroupId();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).groupId(newVal) : builder;
    }
    protected Model.Builder transformModel_ArtifactId(Supplier creator, Model.Builder builder, Model target) {
        String oldVal = target.getArtifactId();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).artifactId(newVal) : builder;
    }
    protected Model.Builder transformModel_Version(Supplier creator, Model.Builder builder, Model target) {
        String oldVal = target.getVersion();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).version(newVal) : builder;
    }
    protected Model.Builder transformModel_Packaging(Supplier creator, Model.Builder builder, Model target) {
        String oldVal = target.getPackaging();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).packaging(newVal) : builder;
    }
    protected Model.Builder transformModel_Name(Supplier creator, Model.Builder builder, Model target) {
        String oldVal = target.getName();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).name(newVal) : builder;
    }
    protected Model.Builder transformModel_Description(Supplier creator, Model.Builder builder, Model target) {
        String oldVal = target.getDescription();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).description(newVal) : builder;
    }
    protected Model.Builder transformModel_Url(Supplier creator, Model.Builder builder, Model target) {
        String oldVal = target.getUrl();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).url(newVal) : builder;
    }
    protected Model.Builder transformModel_ChildProjectUrlInheritAppendPath(Supplier creator, Model.Builder builder, Model target) {
        String oldVal = target.getChildProjectUrlInheritAppendPath();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).childProjectUrlInheritAppendPath(newVal) : builder;
    }
    protected Model.Builder transformModel_Root(Supplier creator, Model.Builder builder, Model target) {
        // nothing to do, the transformer only handles strings
        return builder;
    }
    protected Model.Builder transformModel_PreserveModelVersion(Supplier creator, Model.Builder builder, Model target) {
        // nothing to do, the transformer only handles strings
        return builder;
    }
    protected Model.Builder transformModel_InceptionYear(Supplier creator, Model.Builder builder, Model target) {
        String oldVal = target.getInceptionYear();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).inceptionYear(newVal) : builder;
    }
    protected Model.Builder transformModel_Organization(Supplier creator, Model.Builder builder, Model target) {
        Organization oldVal = target.getOrganization();
        Organization newVal = transformOrganization(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).organization(newVal) : builder;
    }
    protected Model.Builder transformModel_Licenses(Supplier creator, Model.Builder builder, Model target) {
        List oldVal = target.getLicenses();
        List newVal = transform(oldVal, this::transformLicense);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).licenses(newVal) : builder;
    }
    protected Model.Builder transformModel_Developers(Supplier creator, Model.Builder builder, Model target) {
        List oldVal = target.getDevelopers();
        List newVal = transform(oldVal, this::transformDeveloper);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).developers(newVal) : builder;
    }
    protected Model.Builder transformModel_Contributors(Supplier creator, Model.Builder builder, Model target) {
        List oldVal = target.getContributors();
        List newVal = transform(oldVal, this::transformContributor);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).contributors(newVal) : builder;
    }
    protected Model.Builder transformModel_MailingLists(Supplier creator, Model.Builder builder, Model target) {
        List oldVal = target.getMailingLists();
        List newVal = transform(oldVal, this::transformMailingList);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).mailingLists(newVal) : builder;
    }
    protected Model.Builder transformModel_Prerequisites(Supplier creator, Model.Builder builder, Model target) {
        Prerequisites oldVal = target.getPrerequisites();
        Prerequisites newVal = transformPrerequisites(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).prerequisites(newVal) : builder;
    }
    protected Model.Builder transformModel_Modules(Supplier creator, Model.Builder builder, Model target) {
        List oldVal = target.getModules();
        List newVal = transform(oldVal, this::transform);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).modules(newVal) : builder;
    }
    protected Model.Builder transformModel_Subprojects(Supplier creator, Model.Builder builder, Model target) {
        List oldVal = target.getSubprojects();
        List newVal = transform(oldVal, this::transform);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).subprojects(newVal) : builder;
    }
    protected Model.Builder transformModel_Scm(Supplier creator, Model.Builder builder, Model target) {
        Scm oldVal = target.getScm();
        Scm newVal = transformScm(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).scm(newVal) : builder;
    }
    protected Model.Builder transformModel_IssueManagement(Supplier creator, Model.Builder builder, Model target) {
        IssueManagement oldVal = target.getIssueManagement();
        IssueManagement newVal = transformIssueManagement(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).issueManagement(newVal) : builder;
    }
    protected Model.Builder transformModel_CiManagement(Supplier creator, Model.Builder builder, Model target) {
        CiManagement oldVal = target.getCiManagement();
        CiManagement newVal = transformCiManagement(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).ciManagement(newVal) : builder;
    }
    protected Model.Builder transformModel_DistributionManagement(Supplier creator, Model.Builder builder, Model target) {
        DistributionManagement oldVal = target.getDistributionManagement();
        DistributionManagement newVal = transformDistributionManagement(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).distributionManagement(newVal) : builder;
    }
    protected Model.Builder transformModel_Properties(Supplier creator, Model.Builder builder, Model target) {
        Map props = target.getProperties();
        Map newProps = null;
        for (Map.Entry entry : props.entrySet()) {
            String newVal = transform(entry.getValue());
            if (newVal != null && newVal != entry.getValue()) {
                if (newProps == null) {
                    newProps = new HashMap<>();
                    newProps.putAll(props);
                    builder = builder != null ? builder : creator.get();
                    builder.properties(newProps);
                }
                newProps.put(entry.getKey(), newVal);
            }
        }
        return builder;
    }
    protected Model.Builder transformModel_DependencyManagement(Supplier creator, Model.Builder builder, Model target) {
        DependencyManagement oldVal = target.getDependencyManagement();
        DependencyManagement newVal = transformDependencyManagement(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).dependencyManagement(newVal) : builder;
    }
    protected Model.Builder transformModel_Dependencies(Supplier creator, Model.Builder builder, Model target) {
        List oldVal = target.getDependencies();
        List newVal = transform(oldVal, this::transformDependency);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).dependencies(newVal) : builder;
    }
    protected Model.Builder transformModel_Repositories(Supplier creator, Model.Builder builder, Model target) {
        List oldVal = target.getRepositories();
        List newVal = transform(oldVal, this::transformRepository);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).repositories(newVal) : builder;
    }
    protected Model.Builder transformModel_PluginRepositories(Supplier creator, Model.Builder builder, Model target) {
        List oldVal = target.getPluginRepositories();
        List newVal = transform(oldVal, this::transformRepository);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).pluginRepositories(newVal) : builder;
    }
    protected Model.Builder transformModel_Build(Supplier creator, Model.Builder builder, Model target) {
        Build oldVal = target.getBuild();
        Build newVal = transformBuild(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).build(newVal) : builder;
    }
    protected Model.Builder transformModel_Reporting(Supplier creator, Model.Builder builder, Model target) {
        Reporting oldVal = target.getReporting();
        Reporting newVal = transformReporting(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).reporting(newVal) : builder;
    }
    protected Model.Builder transformModel_Profiles(Supplier creator, Model.Builder builder, Model target) {
        List oldVal = target.getProfiles();
        List newVal = transform(oldVal, this::transformProfile);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).profiles(newVal) : builder;
    }

    protected ModelBase transformModelBase(ModelBase target) {
        if (target == null) {
            return null;
        }
        Supplier creator = () -> ModelBase.newBuilder(target);
        ModelBase.Builder builder = null;
        builder = (ModelBase.Builder) transformModelBase_Modules(creator, builder, target);
        builder = (ModelBase.Builder) transformModelBase_Subprojects(creator, builder, target);
        builder = (ModelBase.Builder) transformModelBase_DistributionManagement(creator, builder, target);
        builder = (ModelBase.Builder) transformModelBase_Properties(creator, builder, target);
        builder = (ModelBase.Builder) transformModelBase_DependencyManagement(creator, builder, target);
        builder = (ModelBase.Builder) transformModelBase_Dependencies(creator, builder, target);
        builder = (ModelBase.Builder) transformModelBase_Repositories(creator, builder, target);
        builder = (ModelBase.Builder) transformModelBase_PluginRepositories(creator, builder, target);
        builder = (ModelBase.Builder) transformModelBase_Reporting(creator, builder, target);
        return builder != null ? builder.build() : target;
    }

    protected ModelBase.Builder transformModelBase_Modules(Supplier creator, ModelBase.Builder builder, ModelBase target) {
        List oldVal = target.getModules();
        List newVal = transform(oldVal, this::transform);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).modules(newVal) : builder;
    }
    protected ModelBase.Builder transformModelBase_Subprojects(Supplier creator, ModelBase.Builder builder, ModelBase target) {
        List oldVal = target.getSubprojects();
        List newVal = transform(oldVal, this::transform);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).subprojects(newVal) : builder;
    }
    protected ModelBase.Builder transformModelBase_DistributionManagement(Supplier creator, ModelBase.Builder builder, ModelBase target) {
        DistributionManagement oldVal = target.getDistributionManagement();
        DistributionManagement newVal = transformDistributionManagement(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).distributionManagement(newVal) : builder;
    }
    protected ModelBase.Builder transformModelBase_Properties(Supplier creator, ModelBase.Builder builder, ModelBase target) {
        Map props = target.getProperties();
        Map newProps = null;
        for (Map.Entry entry : props.entrySet()) {
            String newVal = transform(entry.getValue());
            if (newVal != null && newVal != entry.getValue()) {
                if (newProps == null) {
                    newProps = new HashMap<>();
                    newProps.putAll(props);
                    builder = builder != null ? builder : creator.get();
                    builder.properties(newProps);
                }
                newProps.put(entry.getKey(), newVal);
            }
        }
        return builder;
    }
    protected ModelBase.Builder transformModelBase_DependencyManagement(Supplier creator, ModelBase.Builder builder, ModelBase target) {
        DependencyManagement oldVal = target.getDependencyManagement();
        DependencyManagement newVal = transformDependencyManagement(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).dependencyManagement(newVal) : builder;
    }
    protected ModelBase.Builder transformModelBase_Dependencies(Supplier creator, ModelBase.Builder builder, ModelBase target) {
        List oldVal = target.getDependencies();
        List newVal = transform(oldVal, this::transformDependency);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).dependencies(newVal) : builder;
    }
    protected ModelBase.Builder transformModelBase_Repositories(Supplier creator, ModelBase.Builder builder, ModelBase target) {
        List oldVal = target.getRepositories();
        List newVal = transform(oldVal, this::transformRepository);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).repositories(newVal) : builder;
    }
    protected ModelBase.Builder transformModelBase_PluginRepositories(Supplier creator, ModelBase.Builder builder, ModelBase target) {
        List oldVal = target.getPluginRepositories();
        List newVal = transform(oldVal, this::transformRepository);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).pluginRepositories(newVal) : builder;
    }
    protected ModelBase.Builder transformModelBase_Reporting(Supplier creator, ModelBase.Builder builder, ModelBase target) {
        Reporting oldVal = target.getReporting();
        Reporting newVal = transformReporting(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).reporting(newVal) : builder;
    }

    protected PluginContainer transformPluginContainer(PluginContainer target) {
        if (target == null) {
            return null;
        }
        Supplier creator = () -> PluginContainer.newBuilder(target);
        PluginContainer.Builder builder = null;
        builder = (PluginContainer.Builder) transformPluginContainer_Plugins(creator, builder, target);
        return builder != null ? builder.build() : target;
    }

    protected PluginContainer.Builder transformPluginContainer_Plugins(Supplier creator, PluginContainer.Builder builder, PluginContainer target) {
        List oldVal = target.getPlugins();
        List newVal = transform(oldVal, this::transformPlugin);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).plugins(newVal) : builder;
    }

    protected PluginConfiguration transformPluginConfiguration(PluginConfiguration target) {
        if (target == null) {
            return null;
        }
        Supplier creator = () -> PluginConfiguration.newBuilder(target);
        PluginConfiguration.Builder builder = null;
        builder = (PluginConfiguration.Builder) transformPluginConfiguration_PluginManagement(creator, builder, target);
        builder = (PluginConfiguration.Builder) transformPluginContainer_Plugins(creator, builder, target);
        return builder != null ? builder.build() : target;
    }

    protected PluginConfiguration.Builder transformPluginConfiguration_PluginManagement(Supplier creator, PluginConfiguration.Builder builder, PluginConfiguration target) {
        PluginManagement oldVal = target.getPluginManagement();
        PluginManagement newVal = transformPluginManagement(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).pluginManagement(newVal) : builder;
    }
    protected PluginConfiguration.Builder transformPluginConfiguration_Plugins(Supplier creator, PluginConfiguration.Builder builder, PluginConfiguration target) {
        List oldVal = target.getPlugins();
        List newVal = transform(oldVal, this::transformPlugin);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).plugins(newVal) : builder;
    }

    protected BuildBase transformBuildBase(BuildBase target) {
        if (target == null) {
            return null;
        }
        Supplier creator = () -> BuildBase.newBuilder(target);
        BuildBase.Builder builder = null;
        builder = (BuildBase.Builder) transformBuildBase_DefaultGoal(creator, builder, target);
        builder = (BuildBase.Builder) transformBuildBase_Resources(creator, builder, target);
        builder = (BuildBase.Builder) transformBuildBase_TestResources(creator, builder, target);
        builder = (BuildBase.Builder) transformBuildBase_Directory(creator, builder, target);
        builder = (BuildBase.Builder) transformBuildBase_FinalName(creator, builder, target);
        builder = (BuildBase.Builder) transformBuildBase_Filters(creator, builder, target);
        builder = (BuildBase.Builder) transformPluginConfiguration_PluginManagement(creator, builder, target);
        builder = (BuildBase.Builder) transformPluginContainer_Plugins(creator, builder, target);
        return builder != null ? builder.build() : target;
    }

    protected BuildBase.Builder transformBuildBase_DefaultGoal(Supplier creator, BuildBase.Builder builder, BuildBase target) {
        String oldVal = target.getDefaultGoal();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).defaultGoal(newVal) : builder;
    }
    protected BuildBase.Builder transformBuildBase_Resources(Supplier creator, BuildBase.Builder builder, BuildBase target) {
        List oldVal = target.getResources();
        List newVal = transform(oldVal, this::transformResource);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).resources(newVal) : builder;
    }
    protected BuildBase.Builder transformBuildBase_TestResources(Supplier creator, BuildBase.Builder builder, BuildBase target) {
        List oldVal = target.getTestResources();
        List newVal = transform(oldVal, this::transformResource);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).testResources(newVal) : builder;
    }
    protected BuildBase.Builder transformBuildBase_Directory(Supplier creator, BuildBase.Builder builder, BuildBase target) {
        String oldVal = target.getDirectory();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).directory(newVal) : builder;
    }
    protected BuildBase.Builder transformBuildBase_FinalName(Supplier creator, BuildBase.Builder builder, BuildBase target) {
        String oldVal = target.getFinalName();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).finalName(newVal) : builder;
    }
    protected BuildBase.Builder transformBuildBase_Filters(Supplier creator, BuildBase.Builder builder, BuildBase target) {
        List oldVal = target.getFilters();
        List newVal = transform(oldVal, this::transform);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).filters(newVal) : builder;
    }
    protected BuildBase.Builder transformBuildBase_PluginManagement(Supplier creator, BuildBase.Builder builder, BuildBase target) {
        PluginManagement oldVal = target.getPluginManagement();
        PluginManagement newVal = transformPluginManagement(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).pluginManagement(newVal) : builder;
    }
    protected BuildBase.Builder transformBuildBase_Plugins(Supplier creator, BuildBase.Builder builder, BuildBase target) {
        List oldVal = target.getPlugins();
        List newVal = transform(oldVal, this::transformPlugin);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).plugins(newVal) : builder;
    }

    protected Build transformBuild(Build target) {
        if (target == null) {
            return null;
        }
        Supplier creator = () -> Build.newBuilder(target);
        Build.Builder builder = null;
        builder = (Build.Builder) transformBuild_SourceDirectory(creator, builder, target);
        builder = (Build.Builder) transformBuild_ScriptSourceDirectory(creator, builder, target);
        builder = (Build.Builder) transformBuild_TestSourceDirectory(creator, builder, target);
        builder = (Build.Builder) transformBuild_OutputDirectory(creator, builder, target);
        builder = (Build.Builder) transformBuild_TestOutputDirectory(creator, builder, target);
        builder = (Build.Builder) transformBuild_Extensions(creator, builder, target);
        builder = (Build.Builder) transformBuildBase_DefaultGoal(creator, builder, target);
        builder = (Build.Builder) transformBuildBase_Resources(creator, builder, target);
        builder = (Build.Builder) transformBuildBase_TestResources(creator, builder, target);
        builder = (Build.Builder) transformBuildBase_Directory(creator, builder, target);
        builder = (Build.Builder) transformBuildBase_FinalName(creator, builder, target);
        builder = (Build.Builder) transformBuildBase_Filters(creator, builder, target);
        builder = (Build.Builder) transformPluginConfiguration_PluginManagement(creator, builder, target);
        builder = (Build.Builder) transformPluginContainer_Plugins(creator, builder, target);
        return builder != null ? builder.build() : target;
    }

    protected Build.Builder transformBuild_SourceDirectory(Supplier creator, Build.Builder builder, Build target) {
        String oldVal = target.getSourceDirectory();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).sourceDirectory(newVal) : builder;
    }
    protected Build.Builder transformBuild_ScriptSourceDirectory(Supplier creator, Build.Builder builder, Build target) {
        String oldVal = target.getScriptSourceDirectory();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).scriptSourceDirectory(newVal) : builder;
    }
    protected Build.Builder transformBuild_TestSourceDirectory(Supplier creator, Build.Builder builder, Build target) {
        String oldVal = target.getTestSourceDirectory();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).testSourceDirectory(newVal) : builder;
    }
    protected Build.Builder transformBuild_OutputDirectory(Supplier creator, Build.Builder builder, Build target) {
        String oldVal = target.getOutputDirectory();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).outputDirectory(newVal) : builder;
    }
    protected Build.Builder transformBuild_TestOutputDirectory(Supplier creator, Build.Builder builder, Build target) {
        String oldVal = target.getTestOutputDirectory();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).testOutputDirectory(newVal) : builder;
    }
    protected Build.Builder transformBuild_Extensions(Supplier creator, Build.Builder builder, Build target) {
        List oldVal = target.getExtensions();
        List newVal = transform(oldVal, this::transformExtension);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).extensions(newVal) : builder;
    }
    protected Build.Builder transformBuild_DefaultGoal(Supplier creator, Build.Builder builder, Build target) {
        String oldVal = target.getDefaultGoal();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).defaultGoal(newVal) : builder;
    }
    protected Build.Builder transformBuild_Resources(Supplier creator, Build.Builder builder, Build target) {
        List oldVal = target.getResources();
        List newVal = transform(oldVal, this::transformResource);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).resources(newVal) : builder;
    }
    protected Build.Builder transformBuild_TestResources(Supplier creator, Build.Builder builder, Build target) {
        List oldVal = target.getTestResources();
        List newVal = transform(oldVal, this::transformResource);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).testResources(newVal) : builder;
    }
    protected Build.Builder transformBuild_Directory(Supplier creator, Build.Builder builder, Build target) {
        String oldVal = target.getDirectory();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).directory(newVal) : builder;
    }
    protected Build.Builder transformBuild_FinalName(Supplier creator, Build.Builder builder, Build target) {
        String oldVal = target.getFinalName();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).finalName(newVal) : builder;
    }
    protected Build.Builder transformBuild_Filters(Supplier creator, Build.Builder builder, Build target) {
        List oldVal = target.getFilters();
        List newVal = transform(oldVal, this::transform);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).filters(newVal) : builder;
    }
    protected Build.Builder transformBuild_PluginManagement(Supplier creator, Build.Builder builder, Build target) {
        PluginManagement oldVal = target.getPluginManagement();
        PluginManagement newVal = transformPluginManagement(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).pluginManagement(newVal) : builder;
    }
    protected Build.Builder transformBuild_Plugins(Supplier creator, Build.Builder builder, Build target) {
        List oldVal = target.getPlugins();
        List newVal = transform(oldVal, this::transformPlugin);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).plugins(newVal) : builder;
    }

    protected CiManagement transformCiManagement(CiManagement target) {
        if (target == null) {
            return null;
        }
        Supplier creator = () -> CiManagement.newBuilder(target);
        CiManagement.Builder builder = null;
        builder = (CiManagement.Builder) transformCiManagement_System(creator, builder, target);
        builder = (CiManagement.Builder) transformCiManagement_Url(creator, builder, target);
        builder = (CiManagement.Builder) transformCiManagement_Notifiers(creator, builder, target);
        return builder != null ? builder.build() : target;
    }

    protected CiManagement.Builder transformCiManagement_System(Supplier creator, CiManagement.Builder builder, CiManagement target) {
        String oldVal = target.getSystem();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).system(newVal) : builder;
    }
    protected CiManagement.Builder transformCiManagement_Url(Supplier creator, CiManagement.Builder builder, CiManagement target) {
        String oldVal = target.getUrl();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).url(newVal) : builder;
    }
    protected CiManagement.Builder transformCiManagement_Notifiers(Supplier creator, CiManagement.Builder builder, CiManagement target) {
        List oldVal = target.getNotifiers();
        List newVal = transform(oldVal, this::transformNotifier);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).notifiers(newVal) : builder;
    }

    protected Notifier transformNotifier(Notifier target) {
        if (target == null) {
            return null;
        }
        Supplier creator = () -> Notifier.newBuilder(target);
        Notifier.Builder builder = null;
        builder = (Notifier.Builder) transformNotifier_Type(creator, builder, target);
        builder = (Notifier.Builder) transformNotifier_SendOnError(creator, builder, target);
        builder = (Notifier.Builder) transformNotifier_SendOnFailure(creator, builder, target);
        builder = (Notifier.Builder) transformNotifier_SendOnSuccess(creator, builder, target);
        builder = (Notifier.Builder) transformNotifier_SendOnWarning(creator, builder, target);
        builder = (Notifier.Builder) transformNotifier_Address(creator, builder, target);
        builder = (Notifier.Builder) transformNotifier_Configuration(creator, builder, target);
        return builder != null ? builder.build() : target;
    }

    protected Notifier.Builder transformNotifier_Type(Supplier creator, Notifier.Builder builder, Notifier target) {
        String oldVal = target.getType();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).type(newVal) : builder;
    }
    protected Notifier.Builder transformNotifier_SendOnError(Supplier creator, Notifier.Builder builder, Notifier target) {
        // nothing to do, the transformer only handles strings
        return builder;
    }
    protected Notifier.Builder transformNotifier_SendOnFailure(Supplier creator, Notifier.Builder builder, Notifier target) {
        // nothing to do, the transformer only handles strings
        return builder;
    }
    protected Notifier.Builder transformNotifier_SendOnSuccess(Supplier creator, Notifier.Builder builder, Notifier target) {
        // nothing to do, the transformer only handles strings
        return builder;
    }
    protected Notifier.Builder transformNotifier_SendOnWarning(Supplier creator, Notifier.Builder builder, Notifier target) {
        // nothing to do, the transformer only handles strings
        return builder;
    }
    protected Notifier.Builder transformNotifier_Address(Supplier creator, Notifier.Builder builder, Notifier target) {
        String oldVal = target.getAddress();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).address(newVal) : builder;
    }
    protected Notifier.Builder transformNotifier_Configuration(Supplier creator, Notifier.Builder builder, Notifier target) {
        Map props = target.getConfiguration();
        Map newProps = null;
        for (Map.Entry entry : props.entrySet()) {
            String newVal = transform(entry.getValue());
            if (newVal != null && newVal != entry.getValue()) {
                if (newProps == null) {
                    newProps = new HashMap<>();
                    newProps.putAll(props);
                    builder = builder != null ? builder : creator.get();
                    builder.configuration(newProps);
                }
                newProps.put(entry.getKey(), newVal);
            }
        }
        return builder;
    }

    protected Contributor transformContributor(Contributor target) {
        if (target == null) {
            return null;
        }
        Supplier creator = () -> Contributor.newBuilder(target);
        Contributor.Builder builder = null;
        builder = (Contributor.Builder) transformContributor_Name(creator, builder, target);
        builder = (Contributor.Builder) transformContributor_Email(creator, builder, target);
        builder = (Contributor.Builder) transformContributor_Url(creator, builder, target);
        builder = (Contributor.Builder) transformContributor_Organization(creator, builder, target);
        builder = (Contributor.Builder) transformContributor_OrganizationUrl(creator, builder, target);
        builder = (Contributor.Builder) transformContributor_Roles(creator, builder, target);
        builder = (Contributor.Builder) transformContributor_Timezone(creator, builder, target);
        builder = (Contributor.Builder) transformContributor_Properties(creator, builder, target);
        return builder != null ? builder.build() : target;
    }

    protected Contributor.Builder transformContributor_Name(Supplier creator, Contributor.Builder builder, Contributor target) {
        String oldVal = target.getName();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).name(newVal) : builder;
    }
    protected Contributor.Builder transformContributor_Email(Supplier creator, Contributor.Builder builder, Contributor target) {
        String oldVal = target.getEmail();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).email(newVal) : builder;
    }
    protected Contributor.Builder transformContributor_Url(Supplier creator, Contributor.Builder builder, Contributor target) {
        String oldVal = target.getUrl();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).url(newVal) : builder;
    }
    protected Contributor.Builder transformContributor_Organization(Supplier creator, Contributor.Builder builder, Contributor target) {
        String oldVal = target.getOrganization();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).organization(newVal) : builder;
    }
    protected Contributor.Builder transformContributor_OrganizationUrl(Supplier creator, Contributor.Builder builder, Contributor target) {
        String oldVal = target.getOrganizationUrl();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).organizationUrl(newVal) : builder;
    }
    protected Contributor.Builder transformContributor_Roles(Supplier creator, Contributor.Builder builder, Contributor target) {
        List oldVal = target.getRoles();
        List newVal = transform(oldVal, this::transform);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).roles(newVal) : builder;
    }
    protected Contributor.Builder transformContributor_Timezone(Supplier creator, Contributor.Builder builder, Contributor target) {
        String oldVal = target.getTimezone();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).timezone(newVal) : builder;
    }
    protected Contributor.Builder transformContributor_Properties(Supplier creator, Contributor.Builder builder, Contributor target) {
        Map props = target.getProperties();
        Map newProps = null;
        for (Map.Entry entry : props.entrySet()) {
            String newVal = transform(entry.getValue());
            if (newVal != null && newVal != entry.getValue()) {
                if (newProps == null) {
                    newProps = new HashMap<>();
                    newProps.putAll(props);
                    builder = builder != null ? builder : creator.get();
                    builder.properties(newProps);
                }
                newProps.put(entry.getKey(), newVal);
            }
        }
        return builder;
    }

    protected Dependency transformDependency(Dependency target) {
        if (target == null) {
            return null;
        }
        Supplier creator = () -> Dependency.newBuilder(target);
        Dependency.Builder builder = null;
        builder = (Dependency.Builder) transformDependency_GroupId(creator, builder, target);
        builder = (Dependency.Builder) transformDependency_ArtifactId(creator, builder, target);
        builder = (Dependency.Builder) transformDependency_Version(creator, builder, target);
        builder = (Dependency.Builder) transformDependency_Type(creator, builder, target);
        builder = (Dependency.Builder) transformDependency_Classifier(creator, builder, target);
        builder = (Dependency.Builder) transformDependency_Scope(creator, builder, target);
        builder = (Dependency.Builder) transformDependency_SystemPath(creator, builder, target);
        builder = (Dependency.Builder) transformDependency_Exclusions(creator, builder, target);
        builder = (Dependency.Builder) transformDependency_Optional(creator, builder, target);
        return builder != null ? builder.build() : target;
    }

    protected Dependency.Builder transformDependency_GroupId(Supplier creator, Dependency.Builder builder, Dependency target) {
        String oldVal = target.getGroupId();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).groupId(newVal) : builder;
    }
    protected Dependency.Builder transformDependency_ArtifactId(Supplier creator, Dependency.Builder builder, Dependency target) {
        String oldVal = target.getArtifactId();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).artifactId(newVal) : builder;
    }
    protected Dependency.Builder transformDependency_Version(Supplier creator, Dependency.Builder builder, Dependency target) {
        String oldVal = target.getVersion();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).version(newVal) : builder;
    }
    protected Dependency.Builder transformDependency_Type(Supplier creator, Dependency.Builder builder, Dependency target) {
        String oldVal = target.getType();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).type(newVal) : builder;
    }
    protected Dependency.Builder transformDependency_Classifier(Supplier creator, Dependency.Builder builder, Dependency target) {
        String oldVal = target.getClassifier();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).classifier(newVal) : builder;
    }
    protected Dependency.Builder transformDependency_Scope(Supplier creator, Dependency.Builder builder, Dependency target) {
        String oldVal = target.getScope();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).scope(newVal) : builder;
    }
    protected Dependency.Builder transformDependency_SystemPath(Supplier creator, Dependency.Builder builder, Dependency target) {
        String oldVal = target.getSystemPath();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).systemPath(newVal) : builder;
    }
    protected Dependency.Builder transformDependency_Exclusions(Supplier creator, Dependency.Builder builder, Dependency target) {
        List oldVal = target.getExclusions();
        List newVal = transform(oldVal, this::transformExclusion);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).exclusions(newVal) : builder;
    }
    protected Dependency.Builder transformDependency_Optional(Supplier creator, Dependency.Builder builder, Dependency target) {
        String oldVal = target.getOptional();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).optional(newVal) : builder;
    }

    protected Developer transformDeveloper(Developer target) {
        if (target == null) {
            return null;
        }
        Supplier creator = () -> Developer.newBuilder(target);
        Developer.Builder builder = null;
        builder = (Developer.Builder) transformDeveloper_Id(creator, builder, target);
        builder = (Developer.Builder) transformContributor_Name(creator, builder, target);
        builder = (Developer.Builder) transformContributor_Email(creator, builder, target);
        builder = (Developer.Builder) transformContributor_Url(creator, builder, target);
        builder = (Developer.Builder) transformContributor_Organization(creator, builder, target);
        builder = (Developer.Builder) transformContributor_OrganizationUrl(creator, builder, target);
        builder = (Developer.Builder) transformContributor_Roles(creator, builder, target);
        builder = (Developer.Builder) transformContributor_Timezone(creator, builder, target);
        builder = (Developer.Builder) transformContributor_Properties(creator, builder, target);
        return builder != null ? builder.build() : target;
    }

    protected Developer.Builder transformDeveloper_Id(Supplier creator, Developer.Builder builder, Developer target) {
        String oldVal = target.getId();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).id(newVal) : builder;
    }
    protected Developer.Builder transformDeveloper_Name(Supplier creator, Developer.Builder builder, Developer target) {
        String oldVal = target.getName();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).name(newVal) : builder;
    }
    protected Developer.Builder transformDeveloper_Email(Supplier creator, Developer.Builder builder, Developer target) {
        String oldVal = target.getEmail();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).email(newVal) : builder;
    }
    protected Developer.Builder transformDeveloper_Url(Supplier creator, Developer.Builder builder, Developer target) {
        String oldVal = target.getUrl();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).url(newVal) : builder;
    }
    protected Developer.Builder transformDeveloper_Organization(Supplier creator, Developer.Builder builder, Developer target) {
        String oldVal = target.getOrganization();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).organization(newVal) : builder;
    }
    protected Developer.Builder transformDeveloper_OrganizationUrl(Supplier creator, Developer.Builder builder, Developer target) {
        String oldVal = target.getOrganizationUrl();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).organizationUrl(newVal) : builder;
    }
    protected Developer.Builder transformDeveloper_Roles(Supplier creator, Developer.Builder builder, Developer target) {
        List oldVal = target.getRoles();
        List newVal = transform(oldVal, this::transform);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).roles(newVal) : builder;
    }
    protected Developer.Builder transformDeveloper_Timezone(Supplier creator, Developer.Builder builder, Developer target) {
        String oldVal = target.getTimezone();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).timezone(newVal) : builder;
    }
    protected Developer.Builder transformDeveloper_Properties(Supplier creator, Developer.Builder builder, Developer target) {
        Map props = target.getProperties();
        Map newProps = null;
        for (Map.Entry entry : props.entrySet()) {
            String newVal = transform(entry.getValue());
            if (newVal != null && newVal != entry.getValue()) {
                if (newProps == null) {
                    newProps = new HashMap<>();
                    newProps.putAll(props);
                    builder = builder != null ? builder : creator.get();
                    builder.properties(newProps);
                }
                newProps.put(entry.getKey(), newVal);
            }
        }
        return builder;
    }

    protected Exclusion transformExclusion(Exclusion target) {
        if (target == null) {
            return null;
        }
        Supplier creator = () -> Exclusion.newBuilder(target);
        Exclusion.Builder builder = null;
        builder = (Exclusion.Builder) transformExclusion_GroupId(creator, builder, target);
        builder = (Exclusion.Builder) transformExclusion_ArtifactId(creator, builder, target);
        return builder != null ? builder.build() : target;
    }

    protected Exclusion.Builder transformExclusion_GroupId(Supplier creator, Exclusion.Builder builder, Exclusion target) {
        String oldVal = target.getGroupId();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).groupId(newVal) : builder;
    }
    protected Exclusion.Builder transformExclusion_ArtifactId(Supplier creator, Exclusion.Builder builder, Exclusion target) {
        String oldVal = target.getArtifactId();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).artifactId(newVal) : builder;
    }

    protected IssueManagement transformIssueManagement(IssueManagement target) {
        if (target == null) {
            return null;
        }
        Supplier creator = () -> IssueManagement.newBuilder(target);
        IssueManagement.Builder builder = null;
        builder = (IssueManagement.Builder) transformIssueManagement_System(creator, builder, target);
        builder = (IssueManagement.Builder) transformIssueManagement_Url(creator, builder, target);
        return builder != null ? builder.build() : target;
    }

    protected IssueManagement.Builder transformIssueManagement_System(Supplier creator, IssueManagement.Builder builder, IssueManagement target) {
        String oldVal = target.getSystem();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).system(newVal) : builder;
    }
    protected IssueManagement.Builder transformIssueManagement_Url(Supplier creator, IssueManagement.Builder builder, IssueManagement target) {
        String oldVal = target.getUrl();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).url(newVal) : builder;
    }

    protected DistributionManagement transformDistributionManagement(DistributionManagement target) {
        if (target == null) {
            return null;
        }
        Supplier creator = () -> DistributionManagement.newBuilder(target);
        DistributionManagement.Builder builder = null;
        builder = (DistributionManagement.Builder) transformDistributionManagement_Repository(creator, builder, target);
        builder = (DistributionManagement.Builder) transformDistributionManagement_SnapshotRepository(creator, builder, target);
        builder = (DistributionManagement.Builder) transformDistributionManagement_Site(creator, builder, target);
        builder = (DistributionManagement.Builder) transformDistributionManagement_DownloadUrl(creator, builder, target);
        builder = (DistributionManagement.Builder) transformDistributionManagement_Relocation(creator, builder, target);
        builder = (DistributionManagement.Builder) transformDistributionManagement_Status(creator, builder, target);
        return builder != null ? builder.build() : target;
    }

    protected DistributionManagement.Builder transformDistributionManagement_Repository(Supplier creator, DistributionManagement.Builder builder, DistributionManagement target) {
        DeploymentRepository oldVal = target.getRepository();
        DeploymentRepository newVal = transformDeploymentRepository(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).repository(newVal) : builder;
    }
    protected DistributionManagement.Builder transformDistributionManagement_SnapshotRepository(Supplier creator, DistributionManagement.Builder builder, DistributionManagement target) {
        DeploymentRepository oldVal = target.getSnapshotRepository();
        DeploymentRepository newVal = transformDeploymentRepository(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).snapshotRepository(newVal) : builder;
    }
    protected DistributionManagement.Builder transformDistributionManagement_Site(Supplier creator, DistributionManagement.Builder builder, DistributionManagement target) {
        Site oldVal = target.getSite();
        Site newVal = transformSite(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).site(newVal) : builder;
    }
    protected DistributionManagement.Builder transformDistributionManagement_DownloadUrl(Supplier creator, DistributionManagement.Builder builder, DistributionManagement target) {
        String oldVal = target.getDownloadUrl();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).downloadUrl(newVal) : builder;
    }
    protected DistributionManagement.Builder transformDistributionManagement_Relocation(Supplier creator, DistributionManagement.Builder builder, DistributionManagement target) {
        Relocation oldVal = target.getRelocation();
        Relocation newVal = transformRelocation(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).relocation(newVal) : builder;
    }
    protected DistributionManagement.Builder transformDistributionManagement_Status(Supplier creator, DistributionManagement.Builder builder, DistributionManagement target) {
        String oldVal = target.getStatus();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).status(newVal) : builder;
    }

    protected License transformLicense(License target) {
        if (target == null) {
            return null;
        }
        Supplier creator = () -> License.newBuilder(target);
        License.Builder builder = null;
        builder = (License.Builder) transformLicense_Name(creator, builder, target);
        builder = (License.Builder) transformLicense_Url(creator, builder, target);
        builder = (License.Builder) transformLicense_Distribution(creator, builder, target);
        builder = (License.Builder) transformLicense_Comments(creator, builder, target);
        return builder != null ? builder.build() : target;
    }

    protected License.Builder transformLicense_Name(Supplier creator, License.Builder builder, License target) {
        String oldVal = target.getName();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).name(newVal) : builder;
    }
    protected License.Builder transformLicense_Url(Supplier creator, License.Builder builder, License target) {
        String oldVal = target.getUrl();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).url(newVal) : builder;
    }
    protected License.Builder transformLicense_Distribution(Supplier creator, License.Builder builder, License target) {
        String oldVal = target.getDistribution();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).distribution(newVal) : builder;
    }
    protected License.Builder transformLicense_Comments(Supplier creator, License.Builder builder, License target) {
        String oldVal = target.getComments();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).comments(newVal) : builder;
    }

    protected MailingList transformMailingList(MailingList target) {
        if (target == null) {
            return null;
        }
        Supplier creator = () -> MailingList.newBuilder(target);
        MailingList.Builder builder = null;
        builder = (MailingList.Builder) transformMailingList_Name(creator, builder, target);
        builder = (MailingList.Builder) transformMailingList_Subscribe(creator, builder, target);
        builder = (MailingList.Builder) transformMailingList_Unsubscribe(creator, builder, target);
        builder = (MailingList.Builder) transformMailingList_Post(creator, builder, target);
        builder = (MailingList.Builder) transformMailingList_Archive(creator, builder, target);
        builder = (MailingList.Builder) transformMailingList_OtherArchives(creator, builder, target);
        return builder != null ? builder.build() : target;
    }

    protected MailingList.Builder transformMailingList_Name(Supplier creator, MailingList.Builder builder, MailingList target) {
        String oldVal = target.getName();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).name(newVal) : builder;
    }
    protected MailingList.Builder transformMailingList_Subscribe(Supplier creator, MailingList.Builder builder, MailingList target) {
        String oldVal = target.getSubscribe();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).subscribe(newVal) : builder;
    }
    protected MailingList.Builder transformMailingList_Unsubscribe(Supplier creator, MailingList.Builder builder, MailingList target) {
        String oldVal = target.getUnsubscribe();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).unsubscribe(newVal) : builder;
    }
    protected MailingList.Builder transformMailingList_Post(Supplier creator, MailingList.Builder builder, MailingList target) {
        String oldVal = target.getPost();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).post(newVal) : builder;
    }
    protected MailingList.Builder transformMailingList_Archive(Supplier creator, MailingList.Builder builder, MailingList target) {
        String oldVal = target.getArchive();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).archive(newVal) : builder;
    }
    protected MailingList.Builder transformMailingList_OtherArchives(Supplier creator, MailingList.Builder builder, MailingList target) {
        List oldVal = target.getOtherArchives();
        List newVal = transform(oldVal, this::transform);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).otherArchives(newVal) : builder;
    }

    protected Organization transformOrganization(Organization target) {
        if (target == null) {
            return null;
        }
        Supplier creator = () -> Organization.newBuilder(target);
        Organization.Builder builder = null;
        builder = (Organization.Builder) transformOrganization_Name(creator, builder, target);
        builder = (Organization.Builder) transformOrganization_Url(creator, builder, target);
        return builder != null ? builder.build() : target;
    }

    protected Organization.Builder transformOrganization_Name(Supplier creator, Organization.Builder builder, Organization target) {
        String oldVal = target.getName();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).name(newVal) : builder;
    }
    protected Organization.Builder transformOrganization_Url(Supplier creator, Organization.Builder builder, Organization target) {
        String oldVal = target.getUrl();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).url(newVal) : builder;
    }

    protected PatternSet transformPatternSet(PatternSet target) {
        if (target == null) {
            return null;
        }
        Supplier creator = () -> PatternSet.newBuilder(target);
        PatternSet.Builder builder = null;
        builder = (PatternSet.Builder) transformPatternSet_Includes(creator, builder, target);
        builder = (PatternSet.Builder) transformPatternSet_Excludes(creator, builder, target);
        return builder != null ? builder.build() : target;
    }

    protected PatternSet.Builder transformPatternSet_Includes(Supplier creator, PatternSet.Builder builder, PatternSet target) {
        List oldVal = target.getIncludes();
        List newVal = transform(oldVal, this::transform);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).includes(newVal) : builder;
    }
    protected PatternSet.Builder transformPatternSet_Excludes(Supplier creator, PatternSet.Builder builder, PatternSet target) {
        List oldVal = target.getExcludes();
        List newVal = transform(oldVal, this::transform);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).excludes(newVal) : builder;
    }

    protected Parent transformParent(Parent target) {
        if (target == null) {
            return null;
        }
        Supplier creator = () -> Parent.newBuilder(target);
        Parent.Builder builder = null;
        builder = (Parent.Builder) transformParent_GroupId(creator, builder, target);
        builder = (Parent.Builder) transformParent_ArtifactId(creator, builder, target);
        builder = (Parent.Builder) transformParent_Version(creator, builder, target);
        builder = (Parent.Builder) transformParent_RelativePath(creator, builder, target);
        return builder != null ? builder.build() : target;
    }

    protected Parent.Builder transformParent_GroupId(Supplier creator, Parent.Builder builder, Parent target) {
        String oldVal = target.getGroupId();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).groupId(newVal) : builder;
    }
    protected Parent.Builder transformParent_ArtifactId(Supplier creator, Parent.Builder builder, Parent target) {
        String oldVal = target.getArtifactId();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).artifactId(newVal) : builder;
    }
    protected Parent.Builder transformParent_Version(Supplier creator, Parent.Builder builder, Parent target) {
        String oldVal = target.getVersion();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).version(newVal) : builder;
    }
    protected Parent.Builder transformParent_RelativePath(Supplier creator, Parent.Builder builder, Parent target) {
        String oldVal = target.getRelativePath();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).relativePath(newVal) : builder;
    }

    protected Scm transformScm(Scm target) {
        if (target == null) {
            return null;
        }
        Supplier creator = () -> Scm.newBuilder(target);
        Scm.Builder builder = null;
        builder = (Scm.Builder) transformScm_Connection(creator, builder, target);
        builder = (Scm.Builder) transformScm_DeveloperConnection(creator, builder, target);
        builder = (Scm.Builder) transformScm_Tag(creator, builder, target);
        builder = (Scm.Builder) transformScm_Url(creator, builder, target);
        builder = (Scm.Builder) transformScm_ChildScmConnectionInheritAppendPath(creator, builder, target);
        builder = (Scm.Builder) transformScm_ChildScmDeveloperConnectionInheritAppendPath(creator, builder, target);
        builder = (Scm.Builder) transformScm_ChildScmUrlInheritAppendPath(creator, builder, target);
        return builder != null ? builder.build() : target;
    }

    protected Scm.Builder transformScm_Connection(Supplier creator, Scm.Builder builder, Scm target) {
        String oldVal = target.getConnection();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).connection(newVal) : builder;
    }
    protected Scm.Builder transformScm_DeveloperConnection(Supplier creator, Scm.Builder builder, Scm target) {
        String oldVal = target.getDeveloperConnection();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).developerConnection(newVal) : builder;
    }
    protected Scm.Builder transformScm_Tag(Supplier creator, Scm.Builder builder, Scm target) {
        String oldVal = target.getTag();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).tag(newVal) : builder;
    }
    protected Scm.Builder transformScm_Url(Supplier creator, Scm.Builder builder, Scm target) {
        String oldVal = target.getUrl();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).url(newVal) : builder;
    }
    protected Scm.Builder transformScm_ChildScmConnectionInheritAppendPath(Supplier creator, Scm.Builder builder, Scm target) {
        String oldVal = target.getChildScmConnectionInheritAppendPath();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).childScmConnectionInheritAppendPath(newVal) : builder;
    }
    protected Scm.Builder transformScm_ChildScmDeveloperConnectionInheritAppendPath(Supplier creator, Scm.Builder builder, Scm target) {
        String oldVal = target.getChildScmDeveloperConnectionInheritAppendPath();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).childScmDeveloperConnectionInheritAppendPath(newVal) : builder;
    }
    protected Scm.Builder transformScm_ChildScmUrlInheritAppendPath(Supplier creator, Scm.Builder builder, Scm target) {
        String oldVal = target.getChildScmUrlInheritAppendPath();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).childScmUrlInheritAppendPath(newVal) : builder;
    }

    protected FileSet transformFileSet(FileSet target) {
        if (target == null) {
            return null;
        }
        Supplier creator = () -> FileSet.newBuilder(target);
        FileSet.Builder builder = null;
        builder = (FileSet.Builder) transformFileSet_Directory(creator, builder, target);
        builder = (FileSet.Builder) transformPatternSet_Includes(creator, builder, target);
        builder = (FileSet.Builder) transformPatternSet_Excludes(creator, builder, target);
        return builder != null ? builder.build() : target;
    }

    protected FileSet.Builder transformFileSet_Directory(Supplier creator, FileSet.Builder builder, FileSet target) {
        String oldVal = target.getDirectory();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).directory(newVal) : builder;
    }
    protected FileSet.Builder transformFileSet_Includes(Supplier creator, FileSet.Builder builder, FileSet target) {
        List oldVal = target.getIncludes();
        List newVal = transform(oldVal, this::transform);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).includes(newVal) : builder;
    }
    protected FileSet.Builder transformFileSet_Excludes(Supplier creator, FileSet.Builder builder, FileSet target) {
        List oldVal = target.getExcludes();
        List newVal = transform(oldVal, this::transform);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).excludes(newVal) : builder;
    }

    protected Resource transformResource(Resource target) {
        if (target == null) {
            return null;
        }
        Supplier creator = () -> Resource.newBuilder(target);
        Resource.Builder builder = null;
        builder = (Resource.Builder) transformResource_TargetPath(creator, builder, target);
        builder = (Resource.Builder) transformResource_Filtering(creator, builder, target);
        builder = (Resource.Builder) transformFileSet_Directory(creator, builder, target);
        builder = (Resource.Builder) transformPatternSet_Includes(creator, builder, target);
        builder = (Resource.Builder) transformPatternSet_Excludes(creator, builder, target);
        return builder != null ? builder.build() : target;
    }

    protected Resource.Builder transformResource_TargetPath(Supplier creator, Resource.Builder builder, Resource target) {
        String oldVal = target.getTargetPath();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).targetPath(newVal) : builder;
    }
    protected Resource.Builder transformResource_Filtering(Supplier creator, Resource.Builder builder, Resource target) {
        String oldVal = target.getFiltering();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).filtering(newVal) : builder;
    }
    protected Resource.Builder transformResource_Directory(Supplier creator, Resource.Builder builder, Resource target) {
        String oldVal = target.getDirectory();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).directory(newVal) : builder;
    }
    protected Resource.Builder transformResource_Includes(Supplier creator, Resource.Builder builder, Resource target) {
        List oldVal = target.getIncludes();
        List newVal = transform(oldVal, this::transform);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).includes(newVal) : builder;
    }
    protected Resource.Builder transformResource_Excludes(Supplier creator, Resource.Builder builder, Resource target) {
        List oldVal = target.getExcludes();
        List newVal = transform(oldVal, this::transform);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).excludes(newVal) : builder;
    }

    protected RepositoryBase transformRepositoryBase(RepositoryBase target) {
        if (target == null) {
            return null;
        }
        Supplier creator = () -> RepositoryBase.newBuilder(target);
        RepositoryBase.Builder builder = null;
        builder = (RepositoryBase.Builder) transformRepositoryBase_Id(creator, builder, target);
        builder = (RepositoryBase.Builder) transformRepositoryBase_Name(creator, builder, target);
        builder = (RepositoryBase.Builder) transformRepositoryBase_Url(creator, builder, target);
        builder = (RepositoryBase.Builder) transformRepositoryBase_Layout(creator, builder, target);
        return builder != null ? builder.build() : target;
    }

    protected RepositoryBase.Builder transformRepositoryBase_Id(Supplier creator, RepositoryBase.Builder builder, RepositoryBase target) {
        String oldVal = target.getId();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).id(newVal) : builder;
    }
    protected RepositoryBase.Builder transformRepositoryBase_Name(Supplier creator, RepositoryBase.Builder builder, RepositoryBase target) {
        String oldVal = target.getName();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).name(newVal) : builder;
    }
    protected RepositoryBase.Builder transformRepositoryBase_Url(Supplier creator, RepositoryBase.Builder builder, RepositoryBase target) {
        String oldVal = target.getUrl();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).url(newVal) : builder;
    }
    protected RepositoryBase.Builder transformRepositoryBase_Layout(Supplier creator, RepositoryBase.Builder builder, RepositoryBase target) {
        String oldVal = target.getLayout();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).layout(newVal) : builder;
    }

    protected Repository transformRepository(Repository target) {
        if (target == null) {
            return null;
        }
        Supplier creator = () -> Repository.newBuilder(target);
        Repository.Builder builder = null;
        builder = (Repository.Builder) transformRepository_Releases(creator, builder, target);
        builder = (Repository.Builder) transformRepository_Snapshots(creator, builder, target);
        builder = (Repository.Builder) transformRepositoryBase_Id(creator, builder, target);
        builder = (Repository.Builder) transformRepositoryBase_Name(creator, builder, target);
        builder = (Repository.Builder) transformRepositoryBase_Url(creator, builder, target);
        builder = (Repository.Builder) transformRepositoryBase_Layout(creator, builder, target);
        return builder != null ? builder.build() : target;
    }

    protected Repository.Builder transformRepository_Releases(Supplier creator, Repository.Builder builder, Repository target) {
        RepositoryPolicy oldVal = target.getReleases();
        RepositoryPolicy newVal = transformRepositoryPolicy(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).releases(newVal) : builder;
    }
    protected Repository.Builder transformRepository_Snapshots(Supplier creator, Repository.Builder builder, Repository target) {
        RepositoryPolicy oldVal = target.getSnapshots();
        RepositoryPolicy newVal = transformRepositoryPolicy(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).snapshots(newVal) : builder;
    }
    protected Repository.Builder transformRepository_Id(Supplier creator, Repository.Builder builder, Repository target) {
        String oldVal = target.getId();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).id(newVal) : builder;
    }
    protected Repository.Builder transformRepository_Name(Supplier creator, Repository.Builder builder, Repository target) {
        String oldVal = target.getName();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).name(newVal) : builder;
    }
    protected Repository.Builder transformRepository_Url(Supplier creator, Repository.Builder builder, Repository target) {
        String oldVal = target.getUrl();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).url(newVal) : builder;
    }
    protected Repository.Builder transformRepository_Layout(Supplier creator, Repository.Builder builder, Repository target) {
        String oldVal = target.getLayout();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).layout(newVal) : builder;
    }

    protected DeploymentRepository transformDeploymentRepository(DeploymentRepository target) {
        if (target == null) {
            return null;
        }
        Supplier creator = () -> DeploymentRepository.newBuilder(target);
        DeploymentRepository.Builder builder = null;
        builder = (DeploymentRepository.Builder) transformDeploymentRepository_UniqueVersion(creator, builder, target);
        builder = (DeploymentRepository.Builder) transformRepository_Releases(creator, builder, target);
        builder = (DeploymentRepository.Builder) transformRepository_Snapshots(creator, builder, target);
        builder = (DeploymentRepository.Builder) transformRepositoryBase_Id(creator, builder, target);
        builder = (DeploymentRepository.Builder) transformRepositoryBase_Name(creator, builder, target);
        builder = (DeploymentRepository.Builder) transformRepositoryBase_Url(creator, builder, target);
        builder = (DeploymentRepository.Builder) transformRepositoryBase_Layout(creator, builder, target);
        return builder != null ? builder.build() : target;
    }

    protected DeploymentRepository.Builder transformDeploymentRepository_UniqueVersion(Supplier creator, DeploymentRepository.Builder builder, DeploymentRepository target) {
        // nothing to do, the transformer only handles strings
        return builder;
    }
    protected DeploymentRepository.Builder transformDeploymentRepository_Releases(Supplier creator, DeploymentRepository.Builder builder, DeploymentRepository target) {
        RepositoryPolicy oldVal = target.getReleases();
        RepositoryPolicy newVal = transformRepositoryPolicy(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).releases(newVal) : builder;
    }
    protected DeploymentRepository.Builder transformDeploymentRepository_Snapshots(Supplier creator, DeploymentRepository.Builder builder, DeploymentRepository target) {
        RepositoryPolicy oldVal = target.getSnapshots();
        RepositoryPolicy newVal = transformRepositoryPolicy(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).snapshots(newVal) : builder;
    }
    protected DeploymentRepository.Builder transformDeploymentRepository_Id(Supplier creator, DeploymentRepository.Builder builder, DeploymentRepository target) {
        String oldVal = target.getId();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).id(newVal) : builder;
    }
    protected DeploymentRepository.Builder transformDeploymentRepository_Name(Supplier creator, DeploymentRepository.Builder builder, DeploymentRepository target) {
        String oldVal = target.getName();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).name(newVal) : builder;
    }
    protected DeploymentRepository.Builder transformDeploymentRepository_Url(Supplier creator, DeploymentRepository.Builder builder, DeploymentRepository target) {
        String oldVal = target.getUrl();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).url(newVal) : builder;
    }
    protected DeploymentRepository.Builder transformDeploymentRepository_Layout(Supplier creator, DeploymentRepository.Builder builder, DeploymentRepository target) {
        String oldVal = target.getLayout();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).layout(newVal) : builder;
    }

    protected RepositoryPolicy transformRepositoryPolicy(RepositoryPolicy target) {
        if (target == null) {
            return null;
        }
        Supplier creator = () -> RepositoryPolicy.newBuilder(target);
        RepositoryPolicy.Builder builder = null;
        builder = (RepositoryPolicy.Builder) transformRepositoryPolicy_Enabled(creator, builder, target);
        builder = (RepositoryPolicy.Builder) transformRepositoryPolicy_UpdatePolicy(creator, builder, target);
        builder = (RepositoryPolicy.Builder) transformRepositoryPolicy_ChecksumPolicy(creator, builder, target);
        return builder != null ? builder.build() : target;
    }

    protected RepositoryPolicy.Builder transformRepositoryPolicy_Enabled(Supplier creator, RepositoryPolicy.Builder builder, RepositoryPolicy target) {
        String oldVal = target.getEnabled();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).enabled(newVal) : builder;
    }
    protected RepositoryPolicy.Builder transformRepositoryPolicy_UpdatePolicy(Supplier creator, RepositoryPolicy.Builder builder, RepositoryPolicy target) {
        String oldVal = target.getUpdatePolicy();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).updatePolicy(newVal) : builder;
    }
    protected RepositoryPolicy.Builder transformRepositoryPolicy_ChecksumPolicy(Supplier creator, RepositoryPolicy.Builder builder, RepositoryPolicy target) {
        String oldVal = target.getChecksumPolicy();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).checksumPolicy(newVal) : builder;
    }

    protected Site transformSite(Site target) {
        if (target == null) {
            return null;
        }
        Supplier creator = () -> Site.newBuilder(target);
        Site.Builder builder = null;
        builder = (Site.Builder) transformSite_Id(creator, builder, target);
        builder = (Site.Builder) transformSite_Name(creator, builder, target);
        builder = (Site.Builder) transformSite_Url(creator, builder, target);
        builder = (Site.Builder) transformSite_ChildSiteUrlInheritAppendPath(creator, builder, target);
        return builder != null ? builder.build() : target;
    }

    protected Site.Builder transformSite_Id(Supplier creator, Site.Builder builder, Site target) {
        String oldVal = target.getId();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).id(newVal) : builder;
    }
    protected Site.Builder transformSite_Name(Supplier creator, Site.Builder builder, Site target) {
        String oldVal = target.getName();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).name(newVal) : builder;
    }
    protected Site.Builder transformSite_Url(Supplier creator, Site.Builder builder, Site target) {
        String oldVal = target.getUrl();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).url(newVal) : builder;
    }
    protected Site.Builder transformSite_ChildSiteUrlInheritAppendPath(Supplier creator, Site.Builder builder, Site target) {
        String oldVal = target.getChildSiteUrlInheritAppendPath();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).childSiteUrlInheritAppendPath(newVal) : builder;
    }

    protected ConfigurationContainer transformConfigurationContainer(ConfigurationContainer target) {
        if (target == null) {
            return null;
        }
        Supplier creator = () -> ConfigurationContainer.newBuilder(target);
        ConfigurationContainer.Builder builder = null;
        builder = (ConfigurationContainer.Builder) transformConfigurationContainer_Inherited(creator, builder, target);
        builder = (ConfigurationContainer.Builder) transformConfigurationContainer_Configuration(creator, builder, target);
        return builder != null ? builder.build() : target;
    }

    protected ConfigurationContainer.Builder transformConfigurationContainer_Inherited(Supplier creator, ConfigurationContainer.Builder builder, ConfigurationContainer target) {
        String oldVal = target.getInherited();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).inherited(newVal) : builder;
    }
    protected ConfigurationContainer.Builder transformConfigurationContainer_Configuration(Supplier creator, ConfigurationContainer.Builder builder, ConfigurationContainer target) {
        XmlNode oldVal = target.getConfiguration();
        XmlNode newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).configuration(newVal) : builder;
    }

    protected Plugin transformPlugin(Plugin target) {
        if (target == null) {
            return null;
        }
        Supplier creator = () -> Plugin.newBuilder(target);
        Plugin.Builder builder = null;
        builder = (Plugin.Builder) transformPlugin_GroupId(creator, builder, target);
        builder = (Plugin.Builder) transformPlugin_ArtifactId(creator, builder, target);
        builder = (Plugin.Builder) transformPlugin_Version(creator, builder, target);
        builder = (Plugin.Builder) transformPlugin_Extensions(creator, builder, target);
        builder = (Plugin.Builder) transformPlugin_Executions(creator, builder, target);
        builder = (Plugin.Builder) transformPlugin_Dependencies(creator, builder, target);
        builder = (Plugin.Builder) transformConfigurationContainer_Inherited(creator, builder, target);
        builder = (Plugin.Builder) transformConfigurationContainer_Configuration(creator, builder, target);
        return builder != null ? builder.build() : target;
    }

    protected Plugin.Builder transformPlugin_GroupId(Supplier creator, Plugin.Builder builder, Plugin target) {
        String oldVal = target.getGroupId();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).groupId(newVal) : builder;
    }
    protected Plugin.Builder transformPlugin_ArtifactId(Supplier creator, Plugin.Builder builder, Plugin target) {
        String oldVal = target.getArtifactId();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).artifactId(newVal) : builder;
    }
    protected Plugin.Builder transformPlugin_Version(Supplier creator, Plugin.Builder builder, Plugin target) {
        String oldVal = target.getVersion();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).version(newVal) : builder;
    }
    protected Plugin.Builder transformPlugin_Extensions(Supplier creator, Plugin.Builder builder, Plugin target) {
        String oldVal = target.getExtensions();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).extensions(newVal) : builder;
    }
    protected Plugin.Builder transformPlugin_Executions(Supplier creator, Plugin.Builder builder, Plugin target) {
        List oldVal = target.getExecutions();
        List newVal = transform(oldVal, this::transformPluginExecution);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).executions(newVal) : builder;
    }
    protected Plugin.Builder transformPlugin_Dependencies(Supplier creator, Plugin.Builder builder, Plugin target) {
        List oldVal = target.getDependencies();
        List newVal = transform(oldVal, this::transformDependency);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).dependencies(newVal) : builder;
    }
    protected Plugin.Builder transformPlugin_Inherited(Supplier creator, Plugin.Builder builder, Plugin target) {
        String oldVal = target.getInherited();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).inherited(newVal) : builder;
    }
    protected Plugin.Builder transformPlugin_Configuration(Supplier creator, Plugin.Builder builder, Plugin target) {
        XmlNode oldVal = target.getConfiguration();
        XmlNode newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).configuration(newVal) : builder;
    }

    protected PluginExecution transformPluginExecution(PluginExecution target) {
        if (target == null) {
            return null;
        }
        Supplier creator = () -> PluginExecution.newBuilder(target);
        PluginExecution.Builder builder = null;
        builder = (PluginExecution.Builder) transformPluginExecution_Id(creator, builder, target);
        builder = (PluginExecution.Builder) transformPluginExecution_Phase(creator, builder, target);
        builder = (PluginExecution.Builder) transformPluginExecution_Goals(creator, builder, target);
        builder = (PluginExecution.Builder) transformConfigurationContainer_Inherited(creator, builder, target);
        builder = (PluginExecution.Builder) transformConfigurationContainer_Configuration(creator, builder, target);
        return builder != null ? builder.build() : target;
    }

    protected PluginExecution.Builder transformPluginExecution_Id(Supplier creator, PluginExecution.Builder builder, PluginExecution target) {
        String oldVal = target.getId();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).id(newVal) : builder;
    }
    protected PluginExecution.Builder transformPluginExecution_Phase(Supplier creator, PluginExecution.Builder builder, PluginExecution target) {
        String oldVal = target.getPhase();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).phase(newVal) : builder;
    }
    protected PluginExecution.Builder transformPluginExecution_Goals(Supplier creator, PluginExecution.Builder builder, PluginExecution target) {
        List oldVal = target.getGoals();
        List newVal = transform(oldVal, this::transform);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).goals(newVal) : builder;
    }
    protected PluginExecution.Builder transformPluginExecution_Inherited(Supplier creator, PluginExecution.Builder builder, PluginExecution target) {
        String oldVal = target.getInherited();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).inherited(newVal) : builder;
    }
    protected PluginExecution.Builder transformPluginExecution_Configuration(Supplier creator, PluginExecution.Builder builder, PluginExecution target) {
        XmlNode oldVal = target.getConfiguration();
        XmlNode newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).configuration(newVal) : builder;
    }

    protected DependencyManagement transformDependencyManagement(DependencyManagement target) {
        if (target == null) {
            return null;
        }
        Supplier creator = () -> DependencyManagement.newBuilder(target);
        DependencyManagement.Builder builder = null;
        builder = (DependencyManagement.Builder) transformDependencyManagement_Dependencies(creator, builder, target);
        return builder != null ? builder.build() : target;
    }

    protected DependencyManagement.Builder transformDependencyManagement_Dependencies(Supplier creator, DependencyManagement.Builder builder, DependencyManagement target) {
        List oldVal = target.getDependencies();
        List newVal = transform(oldVal, this::transformDependency);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).dependencies(newVal) : builder;
    }

    protected PluginManagement transformPluginManagement(PluginManagement target) {
        if (target == null) {
            return null;
        }
        Supplier creator = () -> PluginManagement.newBuilder(target);
        PluginManagement.Builder builder = null;
        builder = (PluginManagement.Builder) transformPluginContainer_Plugins(creator, builder, target);
        return builder != null ? builder.build() : target;
    }

    protected PluginManagement.Builder transformPluginManagement_Plugins(Supplier creator, PluginManagement.Builder builder, PluginManagement target) {
        List oldVal = target.getPlugins();
        List newVal = transform(oldVal, this::transformPlugin);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).plugins(newVal) : builder;
    }

    protected Reporting transformReporting(Reporting target) {
        if (target == null) {
            return null;
        }
        Supplier creator = () -> Reporting.newBuilder(target);
        Reporting.Builder builder = null;
        builder = (Reporting.Builder) transformReporting_ExcludeDefaults(creator, builder, target);
        builder = (Reporting.Builder) transformReporting_OutputDirectory(creator, builder, target);
        builder = (Reporting.Builder) transformReporting_Plugins(creator, builder, target);
        return builder != null ? builder.build() : target;
    }

    protected Reporting.Builder transformReporting_ExcludeDefaults(Supplier creator, Reporting.Builder builder, Reporting target) {
        String oldVal = target.getExcludeDefaults();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).excludeDefaults(newVal) : builder;
    }
    protected Reporting.Builder transformReporting_OutputDirectory(Supplier creator, Reporting.Builder builder, Reporting target) {
        String oldVal = target.getOutputDirectory();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).outputDirectory(newVal) : builder;
    }
    protected Reporting.Builder transformReporting_Plugins(Supplier creator, Reporting.Builder builder, Reporting target) {
        List oldVal = target.getPlugins();
        List newVal = transform(oldVal, this::transformReportPlugin);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).plugins(newVal) : builder;
    }

    protected Profile transformProfile(Profile target) {
        if (target == null) {
            return null;
        }
        Supplier creator = () -> Profile.newBuilder(target);
        Profile.Builder builder = null;
        builder = (Profile.Builder) transformProfile_Id(creator, builder, target);
        builder = (Profile.Builder) transformProfile_Activation(creator, builder, target);
        builder = (Profile.Builder) transformProfile_Build(creator, builder, target);
        builder = (Profile.Builder) transformModelBase_Modules(creator, builder, target);
        builder = (Profile.Builder) transformModelBase_Subprojects(creator, builder, target);
        builder = (Profile.Builder) transformModelBase_DistributionManagement(creator, builder, target);
        builder = (Profile.Builder) transformModelBase_Properties(creator, builder, target);
        builder = (Profile.Builder) transformModelBase_DependencyManagement(creator, builder, target);
        builder = (Profile.Builder) transformModelBase_Dependencies(creator, builder, target);
        builder = (Profile.Builder) transformModelBase_Repositories(creator, builder, target);
        builder = (Profile.Builder) transformModelBase_PluginRepositories(creator, builder, target);
        builder = (Profile.Builder) transformModelBase_Reporting(creator, builder, target);
        return builder != null ? builder.build() : target;
    }

    protected Profile.Builder transformProfile_Id(Supplier creator, Profile.Builder builder, Profile target) {
        String oldVal = target.getId();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).id(newVal) : builder;
    }
    protected Profile.Builder transformProfile_Activation(Supplier creator, Profile.Builder builder, Profile target) {
        Activation oldVal = target.getActivation();
        Activation newVal = transformActivation(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).activation(newVal) : builder;
    }
    protected Profile.Builder transformProfile_Build(Supplier creator, Profile.Builder builder, Profile target) {
        BuildBase oldVal = target.getBuild();
        BuildBase newVal = transformBuildBase(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).build(newVal) : builder;
    }
    protected Profile.Builder transformProfile_Modules(Supplier creator, Profile.Builder builder, Profile target) {
        List oldVal = target.getModules();
        List newVal = transform(oldVal, this::transform);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).modules(newVal) : builder;
    }
    protected Profile.Builder transformProfile_Subprojects(Supplier creator, Profile.Builder builder, Profile target) {
        List oldVal = target.getSubprojects();
        List newVal = transform(oldVal, this::transform);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).subprojects(newVal) : builder;
    }
    protected Profile.Builder transformProfile_DistributionManagement(Supplier creator, Profile.Builder builder, Profile target) {
        DistributionManagement oldVal = target.getDistributionManagement();
        DistributionManagement newVal = transformDistributionManagement(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).distributionManagement(newVal) : builder;
    }
    protected Profile.Builder transformProfile_Properties(Supplier creator, Profile.Builder builder, Profile target) {
        Map props = target.getProperties();
        Map newProps = null;
        for (Map.Entry entry : props.entrySet()) {
            String newVal = transform(entry.getValue());
            if (newVal != null && newVal != entry.getValue()) {
                if (newProps == null) {
                    newProps = new HashMap<>();
                    newProps.putAll(props);
                    builder = builder != null ? builder : creator.get();
                    builder.properties(newProps);
                }
                newProps.put(entry.getKey(), newVal);
            }
        }
        return builder;
    }
    protected Profile.Builder transformProfile_DependencyManagement(Supplier creator, Profile.Builder builder, Profile target) {
        DependencyManagement oldVal = target.getDependencyManagement();
        DependencyManagement newVal = transformDependencyManagement(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).dependencyManagement(newVal) : builder;
    }
    protected Profile.Builder transformProfile_Dependencies(Supplier creator, Profile.Builder builder, Profile target) {
        List oldVal = target.getDependencies();
        List newVal = transform(oldVal, this::transformDependency);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).dependencies(newVal) : builder;
    }
    protected Profile.Builder transformProfile_Repositories(Supplier creator, Profile.Builder builder, Profile target) {
        List oldVal = target.getRepositories();
        List newVal = transform(oldVal, this::transformRepository);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).repositories(newVal) : builder;
    }
    protected Profile.Builder transformProfile_PluginRepositories(Supplier creator, Profile.Builder builder, Profile target) {
        List oldVal = target.getPluginRepositories();
        List newVal = transform(oldVal, this::transformRepository);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).pluginRepositories(newVal) : builder;
    }
    protected Profile.Builder transformProfile_Reporting(Supplier creator, Profile.Builder builder, Profile target) {
        Reporting oldVal = target.getReporting();
        Reporting newVal = transformReporting(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).reporting(newVal) : builder;
    }

    protected Activation transformActivation(Activation target) {
        if (target == null) {
            return null;
        }
        Supplier creator = () -> Activation.newBuilder(target);
        Activation.Builder builder = null;
        builder = (Activation.Builder) transformActivation_ActiveByDefault(creator, builder, target);
        builder = (Activation.Builder) transformActivation_Jdk(creator, builder, target);
        builder = (Activation.Builder) transformActivation_Os(creator, builder, target);
        builder = (Activation.Builder) transformActivation_Property(creator, builder, target);
        builder = (Activation.Builder) transformActivation_File(creator, builder, target);
        builder = (Activation.Builder) transformActivation_Packaging(creator, builder, target);
        builder = (Activation.Builder) transformActivation_Condition(creator, builder, target);
        return builder != null ? builder.build() : target;
    }

    protected Activation.Builder transformActivation_ActiveByDefault(Supplier creator, Activation.Builder builder, Activation target) {
        // nothing to do, the transformer only handles strings
        return builder;
    }
    protected Activation.Builder transformActivation_Jdk(Supplier creator, Activation.Builder builder, Activation target) {
        String oldVal = target.getJdk();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).jdk(newVal) : builder;
    }
    protected Activation.Builder transformActivation_Os(Supplier creator, Activation.Builder builder, Activation target) {
        ActivationOS oldVal = target.getOs();
        ActivationOS newVal = transformActivationOS(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).os(newVal) : builder;
    }
    protected Activation.Builder transformActivation_Property(Supplier creator, Activation.Builder builder, Activation target) {
        ActivationProperty oldVal = target.getProperty();
        ActivationProperty newVal = transformActivationProperty(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).property(newVal) : builder;
    }
    protected Activation.Builder transformActivation_File(Supplier creator, Activation.Builder builder, Activation target) {
        ActivationFile oldVal = target.getFile();
        ActivationFile newVal = transformActivationFile(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).file(newVal) : builder;
    }
    protected Activation.Builder transformActivation_Packaging(Supplier creator, Activation.Builder builder, Activation target) {
        String oldVal = target.getPackaging();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).packaging(newVal) : builder;
    }
    protected Activation.Builder transformActivation_Condition(Supplier creator, Activation.Builder builder, Activation target) {
        String oldVal = target.getCondition();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).condition(newVal) : builder;
    }

    protected ActivationProperty transformActivationProperty(ActivationProperty target) {
        if (target == null) {
            return null;
        }
        Supplier creator = () -> ActivationProperty.newBuilder(target);
        ActivationProperty.Builder builder = null;
        builder = (ActivationProperty.Builder) transformActivationProperty_Name(creator, builder, target);
        builder = (ActivationProperty.Builder) transformActivationProperty_Value(creator, builder, target);
        return builder != null ? builder.build() : target;
    }

    protected ActivationProperty.Builder transformActivationProperty_Name(Supplier creator, ActivationProperty.Builder builder, ActivationProperty target) {
        String oldVal = target.getName();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).name(newVal) : builder;
    }
    protected ActivationProperty.Builder transformActivationProperty_Value(Supplier creator, ActivationProperty.Builder builder, ActivationProperty target) {
        String oldVal = target.getValue();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).value(newVal) : builder;
    }

    protected ActivationOS transformActivationOS(ActivationOS target) {
        if (target == null) {
            return null;
        }
        Supplier creator = () -> ActivationOS.newBuilder(target);
        ActivationOS.Builder builder = null;
        builder = (ActivationOS.Builder) transformActivationOS_Name(creator, builder, target);
        builder = (ActivationOS.Builder) transformActivationOS_Family(creator, builder, target);
        builder = (ActivationOS.Builder) transformActivationOS_Arch(creator, builder, target);
        builder = (ActivationOS.Builder) transformActivationOS_Version(creator, builder, target);
        return builder != null ? builder.build() : target;
    }

    protected ActivationOS.Builder transformActivationOS_Name(Supplier creator, ActivationOS.Builder builder, ActivationOS target) {
        String oldVal = target.getName();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).name(newVal) : builder;
    }
    protected ActivationOS.Builder transformActivationOS_Family(Supplier creator, ActivationOS.Builder builder, ActivationOS target) {
        String oldVal = target.getFamily();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).family(newVal) : builder;
    }
    protected ActivationOS.Builder transformActivationOS_Arch(Supplier creator, ActivationOS.Builder builder, ActivationOS target) {
        String oldVal = target.getArch();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).arch(newVal) : builder;
    }
    protected ActivationOS.Builder transformActivationOS_Version(Supplier creator, ActivationOS.Builder builder, ActivationOS target) {
        String oldVal = target.getVersion();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).version(newVal) : builder;
    }

    protected ActivationFile transformActivationFile(ActivationFile target) {
        if (target == null) {
            return null;
        }
        Supplier creator = () -> ActivationFile.newBuilder(target);
        ActivationFile.Builder builder = null;
        builder = (ActivationFile.Builder) transformActivationFile_Missing(creator, builder, target);
        builder = (ActivationFile.Builder) transformActivationFile_Exists(creator, builder, target);
        return builder != null ? builder.build() : target;
    }

    protected ActivationFile.Builder transformActivationFile_Missing(Supplier creator, ActivationFile.Builder builder, ActivationFile target) {
        String oldVal = target.getMissing();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).missing(newVal) : builder;
    }
    protected ActivationFile.Builder transformActivationFile_Exists(Supplier creator, ActivationFile.Builder builder, ActivationFile target) {
        String oldVal = target.getExists();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).exists(newVal) : builder;
    }

    protected ReportPlugin transformReportPlugin(ReportPlugin target) {
        if (target == null) {
            return null;
        }
        Supplier creator = () -> ReportPlugin.newBuilder(target);
        ReportPlugin.Builder builder = null;
        builder = (ReportPlugin.Builder) transformReportPlugin_GroupId(creator, builder, target);
        builder = (ReportPlugin.Builder) transformReportPlugin_ArtifactId(creator, builder, target);
        builder = (ReportPlugin.Builder) transformReportPlugin_Version(creator, builder, target);
        builder = (ReportPlugin.Builder) transformReportPlugin_ReportSets(creator, builder, target);
        builder = (ReportPlugin.Builder) transformConfigurationContainer_Inherited(creator, builder, target);
        builder = (ReportPlugin.Builder) transformConfigurationContainer_Configuration(creator, builder, target);
        return builder != null ? builder.build() : target;
    }

    protected ReportPlugin.Builder transformReportPlugin_GroupId(Supplier creator, ReportPlugin.Builder builder, ReportPlugin target) {
        String oldVal = target.getGroupId();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).groupId(newVal) : builder;
    }
    protected ReportPlugin.Builder transformReportPlugin_ArtifactId(Supplier creator, ReportPlugin.Builder builder, ReportPlugin target) {
        String oldVal = target.getArtifactId();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).artifactId(newVal) : builder;
    }
    protected ReportPlugin.Builder transformReportPlugin_Version(Supplier creator, ReportPlugin.Builder builder, ReportPlugin target) {
        String oldVal = target.getVersion();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).version(newVal) : builder;
    }
    protected ReportPlugin.Builder transformReportPlugin_ReportSets(Supplier creator, ReportPlugin.Builder builder, ReportPlugin target) {
        List oldVal = target.getReportSets();
        List newVal = transform(oldVal, this::transformReportSet);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).reportSets(newVal) : builder;
    }
    protected ReportPlugin.Builder transformReportPlugin_Inherited(Supplier creator, ReportPlugin.Builder builder, ReportPlugin target) {
        String oldVal = target.getInherited();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).inherited(newVal) : builder;
    }
    protected ReportPlugin.Builder transformReportPlugin_Configuration(Supplier creator, ReportPlugin.Builder builder, ReportPlugin target) {
        XmlNode oldVal = target.getConfiguration();
        XmlNode newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).configuration(newVal) : builder;
    }

    protected ReportSet transformReportSet(ReportSet target) {
        if (target == null) {
            return null;
        }
        Supplier creator = () -> ReportSet.newBuilder(target);
        ReportSet.Builder builder = null;
        builder = (ReportSet.Builder) transformReportSet_Id(creator, builder, target);
        builder = (ReportSet.Builder) transformReportSet_Reports(creator, builder, target);
        builder = (ReportSet.Builder) transformConfigurationContainer_Inherited(creator, builder, target);
        builder = (ReportSet.Builder) transformConfigurationContainer_Configuration(creator, builder, target);
        return builder != null ? builder.build() : target;
    }

    protected ReportSet.Builder transformReportSet_Id(Supplier creator, ReportSet.Builder builder, ReportSet target) {
        String oldVal = target.getId();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).id(newVal) : builder;
    }
    protected ReportSet.Builder transformReportSet_Reports(Supplier creator, ReportSet.Builder builder, ReportSet target) {
        List oldVal = target.getReports();
        List newVal = transform(oldVal, this::transform);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).reports(newVal) : builder;
    }
    protected ReportSet.Builder transformReportSet_Inherited(Supplier creator, ReportSet.Builder builder, ReportSet target) {
        String oldVal = target.getInherited();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).inherited(newVal) : builder;
    }
    protected ReportSet.Builder transformReportSet_Configuration(Supplier creator, ReportSet.Builder builder, ReportSet target) {
        XmlNode oldVal = target.getConfiguration();
        XmlNode newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).configuration(newVal) : builder;
    }

    protected Prerequisites transformPrerequisites(Prerequisites target) {
        if (target == null) {
            return null;
        }
        Supplier creator = () -> Prerequisites.newBuilder(target);
        Prerequisites.Builder builder = null;
        builder = (Prerequisites.Builder) transformPrerequisites_Maven(creator, builder, target);
        return builder != null ? builder.build() : target;
    }

    protected Prerequisites.Builder transformPrerequisites_Maven(Supplier creator, Prerequisites.Builder builder, Prerequisites target) {
        String oldVal = target.getMaven();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).maven(newVal) : builder;
    }

    protected Relocation transformRelocation(Relocation target) {
        if (target == null) {
            return null;
        }
        Supplier creator = () -> Relocation.newBuilder(target);
        Relocation.Builder builder = null;
        builder = (Relocation.Builder) transformRelocation_GroupId(creator, builder, target);
        builder = (Relocation.Builder) transformRelocation_ArtifactId(creator, builder, target);
        builder = (Relocation.Builder) transformRelocation_Version(creator, builder, target);
        builder = (Relocation.Builder) transformRelocation_Message(creator, builder, target);
        return builder != null ? builder.build() : target;
    }

    protected Relocation.Builder transformRelocation_GroupId(Supplier creator, Relocation.Builder builder, Relocation target) {
        String oldVal = target.getGroupId();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).groupId(newVal) : builder;
    }
    protected Relocation.Builder transformRelocation_ArtifactId(Supplier creator, Relocation.Builder builder, Relocation target) {
        String oldVal = target.getArtifactId();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).artifactId(newVal) : builder;
    }
    protected Relocation.Builder transformRelocation_Version(Supplier creator, Relocation.Builder builder, Relocation target) {
        String oldVal = target.getVersion();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).version(newVal) : builder;
    }
    protected Relocation.Builder transformRelocation_Message(Supplier creator, Relocation.Builder builder, Relocation target) {
        String oldVal = target.getMessage();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).message(newVal) : builder;
    }

    protected Extension transformExtension(Extension target) {
        if (target == null) {
            return null;
        }
        Supplier creator = () -> Extension.newBuilder(target);
        Extension.Builder builder = null;
        builder = (Extension.Builder) transformExtension_GroupId(creator, builder, target);
        builder = (Extension.Builder) transformExtension_ArtifactId(creator, builder, target);
        builder = (Extension.Builder) transformExtension_Version(creator, builder, target);
        builder = (Extension.Builder) transformExtension_Configuration(creator, builder, target);
        return builder != null ? builder.build() : target;
    }

    protected Extension.Builder transformExtension_GroupId(Supplier creator, Extension.Builder builder, Extension target) {
        String oldVal = target.getGroupId();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).groupId(newVal) : builder;
    }
    protected Extension.Builder transformExtension_ArtifactId(Supplier creator, Extension.Builder builder, Extension target) {
        String oldVal = target.getArtifactId();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).artifactId(newVal) : builder;
    }
    protected Extension.Builder transformExtension_Version(Supplier creator, Extension.Builder builder, Extension target) {
        String oldVal = target.getVersion();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).version(newVal) : builder;
    }
    protected Extension.Builder transformExtension_Configuration(Supplier creator, Extension.Builder builder, Extension target) {
        XmlNode oldVal = target.getConfiguration();
        XmlNode newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).configuration(newVal) : builder;
    }

    protected  List transform(List list, Function transformer) {
        List newList = list;
        for (int i = 0; i < list.size(); i++) {
            T oldVal = list.get(i);
            T newVal = transformer.apply(oldVal);
            if (newVal != oldVal) {
                if (newList == list) {
                    newList = new ArrayList<>(list);
                }
                newList.set(i, newVal);
            }
        }
        return newList;
    }

    protected  Map transform(Map map, Function transformer) {
        Map newMap = map;
        for (String key : map.keySet()) {
            T oldVal = map.get(key);
            T newVal = transformer.apply(oldVal);
            if (newVal != oldVal) {
                if (newMap == map) {
                    newMap = new HashMap<>(map);
                }
                newMap.put(key, newVal);
            }
        }
        return newMap;
    }

    protected XmlNode transform(XmlNode node) {
        if (node != null) {
            String oldValue = node.getValue();
            String newValue = transform(oldValue);
            Map oldAttrs = node.getAttributes();
            Map newAttrs = transform(oldAttrs, this::transform);
            List oldChildren = node.getChildren();
            List newChildren = transform(oldChildren, this::transform);
            if (oldValue != newValue || oldAttrs != newAttrs || oldChildren != newChildren) {
                return new XmlNodeImpl(node.getPrefix(), node.getNamespaceUri(), node.getName(),
                        newValue, newAttrs, newChildren, node.getInputLocation());
            }
        }
        return node;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy