// Path: src/main/java/co/aurasphere/botmill/core/BotDefinition.java
// public interface BotDefinition {
// 
// 	/**
// 	 * Method used for the configuration of the bot.
// 	 */
// 	void defineBehaviour();
// 
// }
// 
// Path: src/main/java/co/aurasphere/botmill/core/internal/exception/BotMillConfigurationException.java
// public class BotMillConfigurationException extends RuntimeException {
// 
// 	/**
// 	 * The serial version UID.
// 	 */
// 	private static final long serialVersionUID = 1L;
// 
// 	/**
// 	 * Instantiates a new BotMillConfigurationException.
// 	 */
// 	public BotMillConfigurationException() {
// 		super();
// 	}
// 
// 	/**
// 	 * Instantiates a new BotMillConfigurationException.
// 	 *
// 	 * @param message
// 	 *            the message.
// 	 * @param cause
// 	 *            the cause.
// 	 */
// 	public BotMillConfigurationException(String message, Throwable cause) {
// 		super(message, cause);
// 	}
// 
// 	/**
// 	 * Instantiates a new BotMillConfigurationException.
// 	 *
// 	 * @param message
// 	 *            the message.
// 	 */
// 	public BotMillConfigurationException(String message) {
// 		super(message);
// 	}
// 
// 	/**
// 	 * Instantiates a new BotMillConfigurationException.
// 	 *
// 	 * @param cause
// 	 *            the cause.
// 	 */
// 	public BotMillConfigurationException(Throwable cause) {
// 		super(cause);
// 	}
// 
// 	/*
// 	 * (non-Javadoc)
// 	 * 
// 	 * @see java.lang.Throwable#toString()
// 	 */
// 	@Override
// 	public String toString() {
// 		return "BotMillConfigurationException []";
// 	}
// 
// }


import org.reflections.Reflections;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import co.aurasphere.botmill.core.BotDefinition;
import co.aurasphere.botmill.core.annotation.Bot;
import co.aurasphere.botmill.core.annotation.BotConfiguration;
import co.aurasphere.botmill.core.annotation.BotEncryption;
import co.aurasphere.botmill.core.internal.exception.BotMillConfigurationException;
import java.lang.reflect.Modifier;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
import java.util.Set;
import org.jasypt.encryption.pbe.PBEStringCleanablePasswordEncryptor;
import org.jasypt.properties.EncryptableProperties;
	 */
	public static void setConfiguration(Properties configuration) {
		ConfigurationUtils.configuration = configuration;
	}

	/**
	 * Sets the {@link #encryptedConfiguration}.
	 *
	 * @param encryptedConfiguration
	 *            the new encrypted configuration
	 */
	public static void setEncryptedConfiguration(EncryptableProperties encryptedConfiguration) {
		ConfigurationUtils.encryptedConfiguration = encryptedConfiguration;
	}

	/**
	 * Gets the bot definitions.
	 *
	 * @return the bot definitions
	 */
	public static List<BotDefinition> getBotDefinitionInstances() {
		return botDefinitionInstances;
	}

	/**
	 * Sets the Bot Definition Instances
	 * 
	 * @param botDefinitionInstances
	 *            the list of bot definition instances
	 */
// Path: src/main/java/co/aurasphere/botmill/core/BotDefinition.java
// public interface BotDefinition {
// 
// 	/**
// 	 * Method used for the configuration of the bot.
// 	 */
// 	void defineBehaviour();
// 
// }
// 
// Path: src/main/java/co/aurasphere/botmill/core/internal/exception/BotMillConfigurationException.java
// public class BotMillConfigurationException extends RuntimeException {
// 
// 	/**
// 	 * The serial version UID.
// 	 */
// 	private static final long serialVersionUID = 1L;
// 
// 	/**
// 	 * Instantiates a new BotMillConfigurationException.
// 	 */
// 	public BotMillConfigurationException() {
// 		super();
// 	}
// 
// 	/**
// 	 * Instantiates a new BotMillConfigurationException.
// 	 *
// 	 * @param message
// 	 *            the message.
// 	 * @param cause
// 	 *            the cause.
// 	 */
// 	public BotMillConfigurationException(String message, Throwable cause) {
// 		super(message, cause);
// 	}
// 
// 	/**
// 	 * Instantiates a new BotMillConfigurationException.
// 	 *
// 	 * @param message
// 	 *            the message.
// 	 */
// 	public BotMillConfigurationException(String message) {
// 		super(message);
// 	}
// 
// 	/**
// 	 * Instantiates a new BotMillConfigurationException.
// 	 *
// 	 * @param cause
// 	 *            the cause.
// 	 */
// 	public BotMillConfigurationException(Throwable cause) {
// 		super(cause);
// 	}
// 
// 	/*
// 	 * (non-Javadoc)
// 	 * 
// 	 * @see java.lang.Throwable#toString()
// 	 */
// 	@Override
// 	public String toString() {
// 		return "BotMillConfigurationException []";
// 	}
// 
// }


// Path: src/main/java/co/aurasphere/botmill/core/internal/util/ConfigurationUtils.java
import org.reflections.Reflections;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import co.aurasphere.botmill.core.BotDefinition;
import co.aurasphere.botmill.core.annotation.Bot;
import co.aurasphere.botmill.core.annotation.BotConfiguration;
import co.aurasphere.botmill.core.annotation.BotEncryption;
import co.aurasphere.botmill.core.internal.exception.BotMillConfigurationException;
import java.lang.reflect.Modifier;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
import java.util.Set;
import org.jasypt.encryption.pbe.PBEStringCleanablePasswordEncryptor;
import org.jasypt.properties.EncryptableProperties;

	 */
	public static void setConfiguration(Properties configuration) {
		ConfigurationUtils.configuration = configuration;
	}

	/**
	 * Sets the {@link #encryptedConfiguration}.
	 *
	 * @param encryptedConfiguration
	 *            the new encrypted configuration
	 */
	public static void setEncryptedConfiguration(EncryptableProperties encryptedConfiguration) {
		ConfigurationUtils.encryptedConfiguration = encryptedConfiguration;
	}

	/**
	 * Gets the bot definitions.
	 *
	 * @return the bot definitions
	 */
	public static List<BotDefinition> getBotDefinitionInstances() {
		return botDefinitionInstances;
	}

	/**
	 * Sets the Bot Definition Instances
	 * 
	 * @param botDefinitionInstances
	 *            the list of bot definition instances
	 */
	public static void setBotDefinitionInstance(List<BotDefinition> botDefinitionInstances) {