// Path: switchyard/switchyard-component-common-knowledge/src/main/java/org/switchyard/component/common/knowledge/config/model/KnowledgeComponentImplementationModel.java
// public interface KnowledgeComponentImplementationModel extends ComponentImplementationModel {
// 
//     /** Gets the "persistent" attribute.
//      * 
//      * @return the "persistent" attribute */
//     public boolean isPersistent();
// 
//     /** Sets the "persistent" attribute.
//      * 
//      * @param persistent the "persistent" attribute
//      * @return this instance (useful for chaining) */
//     public KnowledgeComponentImplementationModel setPersistent(boolean persistent);
// 
//     /** Gets the "processId" attribute.
//      * 
//      * @return the "processId" attribute */
//     public String getProcessId();
// 
//     /** Sets the "processId" attribute.
//      * 
//      * @param processId the "processId" attribute
//      * @return this instance (useful for chaining) */
//     public KnowledgeComponentImplementationModel setProcessId(String processId);
// 
//     /** Gets the child channels model.
//      * 
//      * @return the child channels model */
//     public ChannelsModel getChannels();
// 
//     /** Sets the child channels model.
//      * 
//      * @param channels the child channels model
//      * @return this KnowledgeComponentImplementationModel (useful for chaining) */
//     public KnowledgeComponentImplementationModel setChannels(ChannelsModel channels);
// 
//     /** Gets the child listeners model.
//      * 
//      * @return the child listeners model */
//     public ListenersModel getListeners();
// 
//     /** Sets the child listeners model.
//      * 
//      * @param listeners the child listeners model
//      * @return this KnowledgeComponentImplementationModel (useful for chaining) */
//     public KnowledgeComponentImplementationModel setListeners(ListenersModel listeners);
// 
//     /** Gets the child loggers model.
//      * 
//      * @return the child loggers model */
//     public LoggersModel getLoggers();
// 
//     /** Sets the child loggers model.
//      * 
//      * @param loggers the child loggers model
//      * @return this KnowledgeComponentImplementationModel (useful for chaining) */
//     public KnowledgeComponentImplementationModel setLoggers(LoggersModel loggers);
// 
//     /** Gets the child manifest model.
//      * 
//      * @return the child manifest model */
//     public ManifestModel getManifest();
// 
//     /** Sets the child manifest model.
//      * 
//      * @param manifest the child manifest model
//      * @return this KnowledgeComponentImplementationModel (useful for chaining) */
//     public KnowledgeComponentImplementationModel setManifest(ManifestModel manifest);
// 
//     /** Gets the child operations model.
//      * 
//      * @return the child operations model */
//     public OperationsModel getOperations();
// 
//     /** Sets the child operations model.
//      * 
//      * @param operations the child operations model
//      * @return this KnowledgeComponentImplementationModel (useful for chaining) */
//     public KnowledgeComponentImplementationModel setOperations(OperationsModel operations);
// 
//     /** Gets the child properties model.
//      * 
//      * @return the child properties model */
//     public PropertiesModel getProperties();
// 
//     /** Sets the child properties model.
//      * 
//      * @param properties the child properties model
//      * @return this KnowledgeComponentImplementationModel (useful for chaining) */
//     public KnowledgeComponentImplementationModel setProperties(PropertiesModel properties);
// 
//     /** Gets the child userGroupCallback model.
//      * 
//      * @return the child userGroupCallback model */
//     public UserGroupCallbackModel getUserGroupCallback();
// 
//     /** Sets the child userGroupCallback model.
//      * 
//      * @param userGroupCallback the child userGroupCallback model
//      * @return this instance (useful for chaining) */
//     public KnowledgeComponentImplementationModel setUserGroupCallback(UserGroupCallbackModel userGroupCallback);
// 
//     /** Gets the child workItemHandlers model.
//      * 
//      * @return the child workItemHandlers model */
//     public WorkItemHandlersModel getWorkItemHandlers();
// 
//     /** Sets the child workItemHandlers model.
//      * 
//      * @param workItemHandlers the child workItemHandlers model
//      * @return this instance (useful for chaining) */
//     public KnowledgeComponentImplementationModel setWorkItemHandlers(WorkItemHandlersModel workItemHandlers);
// 
// }


import org.switchyard.component.common.knowledge.config.model.KnowledgeComponentImplementationModel;
import org.switchyard.config.model.property.PropertiesModel;
import java.util.Properties;
        return this;
    }

    /** Builds a Properties.
     * 
     * @return a Properties */
    public Properties build() {
        Properties buildProperties = new Properties();
        merge(_defaultProperties, buildProperties);
        merge(_modelProperties, buildProperties);
        merge(_overrideProperties, buildProperties);
        return buildProperties;
    }

    private void merge(Properties fromProperties, Properties toProperties) {
        if (fromProperties != null && toProperties != null) {
            for (Object key : fromProperties.keySet()) {
                String name = (String)key;
                String value = fromProperties.getProperty(name);
                if (value != null) {
                    toProperties.put(name, value);
                }
            }
        }
    }

    /** Creates a PropertiesBuilder.
     * 
     * @param implementationModel implementationModel
     * @return a PropertiesBuilder */
// Path: switchyard/switchyard-component-common-knowledge/src/main/java/org/switchyard/component/common/knowledge/config/model/KnowledgeComponentImplementationModel.java
// public interface KnowledgeComponentImplementationModel extends ComponentImplementationModel {
// 
//     /** Gets the "persistent" attribute.
//      * 
//      * @return the "persistent" attribute */
//     public boolean isPersistent();
// 
//     /** Sets the "persistent" attribute.
//      * 
//      * @param persistent the "persistent" attribute
//      * @return this instance (useful for chaining) */
//     public KnowledgeComponentImplementationModel setPersistent(boolean persistent);
// 
//     /** Gets the "processId" attribute.
//      * 
//      * @return the "processId" attribute */
//     public String getProcessId();
// 
//     /** Sets the "processId" attribute.
//      * 
//      * @param processId the "processId" attribute
//      * @return this instance (useful for chaining) */
//     public KnowledgeComponentImplementationModel setProcessId(String processId);
// 
//     /** Gets the child channels model.
//      * 
//      * @return the child channels model */
//     public ChannelsModel getChannels();
// 
//     /** Sets the child channels model.
//      * 
//      * @param channels the child channels model
//      * @return this KnowledgeComponentImplementationModel (useful for chaining) */
//     public KnowledgeComponentImplementationModel setChannels(ChannelsModel channels);
// 
//     /** Gets the child listeners model.
//      * 
//      * @return the child listeners model */
//     public ListenersModel getListeners();
// 
//     /** Sets the child listeners model.
//      * 
//      * @param listeners the child listeners model
//      * @return this KnowledgeComponentImplementationModel (useful for chaining) */
//     public KnowledgeComponentImplementationModel setListeners(ListenersModel listeners);
// 
//     /** Gets the child loggers model.
//      * 
//      * @return the child loggers model */
//     public LoggersModel getLoggers();
// 
//     /** Sets the child loggers model.
//      * 
//      * @param loggers the child loggers model
//      * @return this KnowledgeComponentImplementationModel (useful for chaining) */
//     public KnowledgeComponentImplementationModel setLoggers(LoggersModel loggers);
// 
//     /** Gets the child manifest model.
//      * 
//      * @return the child manifest model */
//     public ManifestModel getManifest();
// 
//     /** Sets the child manifest model.
//      * 
//      * @param manifest the child manifest model
//      * @return this KnowledgeComponentImplementationModel (useful for chaining) */
//     public KnowledgeComponentImplementationModel setManifest(ManifestModel manifest);
// 
//     /** Gets the child operations model.
//      * 
//      * @return the child operations model */
//     public OperationsModel getOperations();
// 
//     /** Sets the child operations model.
//      * 
//      * @param operations the child operations model
//      * @return this KnowledgeComponentImplementationModel (useful for chaining) */
//     public KnowledgeComponentImplementationModel setOperations(OperationsModel operations);
// 
//     /** Gets the child properties model.
//      * 
//      * @return the child properties model */
//     public PropertiesModel getProperties();
// 
//     /** Sets the child properties model.
//      * 
//      * @param properties the child properties model
//      * @return this KnowledgeComponentImplementationModel (useful for chaining) */
//     public KnowledgeComponentImplementationModel setProperties(PropertiesModel properties);
// 
//     /** Gets the child userGroupCallback model.
//      * 
//      * @return the child userGroupCallback model */
//     public UserGroupCallbackModel getUserGroupCallback();
// 
//     /** Sets the child userGroupCallback model.
//      * 
//      * @param userGroupCallback the child userGroupCallback model
//      * @return this instance (useful for chaining) */
//     public KnowledgeComponentImplementationModel setUserGroupCallback(UserGroupCallbackModel userGroupCallback);
// 
//     /** Gets the child workItemHandlers model.
//      * 
//      * @return the child workItemHandlers model */
//     public WorkItemHandlersModel getWorkItemHandlers();
// 
//     /** Sets the child workItemHandlers model.
//      * 
//      * @param workItemHandlers the child workItemHandlers model
//      * @return this instance (useful for chaining) */
//     public KnowledgeComponentImplementationModel setWorkItemHandlers(WorkItemHandlersModel workItemHandlers);
// 
// }


// Path: switchyard/switchyard-component-common-knowledge/src/main/java/org/switchyard/component/common/knowledge/config/builder/PropertiesBuilder.java
import org.switchyard.component.common.knowledge.config.model.KnowledgeComponentImplementationModel;
import org.switchyard.config.model.property.PropertiesModel;
import java.util.Properties;

        return this;
    }

    /** Builds a Properties.
     * 
     * @return a Properties */
    public Properties build() {
        Properties buildProperties = new Properties();
        merge(_defaultProperties, buildProperties);
        merge(_modelProperties, buildProperties);
        merge(_overrideProperties, buildProperties);
        return buildProperties;
    }

    private void merge(Properties fromProperties, Properties toProperties) {
        if (fromProperties != null && toProperties != null) {
            for (Object key : fromProperties.keySet()) {
                String name = (String)key;
                String value = fromProperties.getProperty(name);
                if (value != null) {
                    toProperties.put(name, value);
                }
            }
        }
    }

    /** Creates a PropertiesBuilder.
     * 
     * @param implementationModel implementationModel
     * @return a PropertiesBuilder */
    public static PropertiesBuilder builder(KnowledgeComponentImplementationModel implementationModel) {