 		 * This method needs to override if the mediator constructor
 		 * contains more than 2 required parameters that cannot take
 		 * explicit null values. The supported constructors are,
-		 * 
+		 *
 		 * <ul>
 		 * 	<li>Mediator(name:String, viewComponent:Object)</li>
 		 * 	<li>Mediator(viewComponent:Object)</li>

	import org.puremvc.as3.multicore.utilities.fabrication.patterns.mediator.resolver.Expression;
	import org.puremvc.as3.multicore.utilities.fabrication.patterns.mediator.resolver.MediatorRegistrar;
	import org.puremvc.as3.multicore.utilities.fabrication.utils.CloneUtils;

    use namespace fabrication_internal;

	import mx.core.UIComponent;
	
	import flash.utils.describeType;
	import flash.utils.getQualifiedClassName;	

	/**
	 * FlexMediator is the base mediator class for all Flex based application
	 * mediators. It provides automatic component resolution using the 
	 * flex component resolver. 
	 * 
	 * @author Darshan Sawardekar, Rafał Szemraj
	 */
	public class FlexMediator extends FabricationMediator implements ICloneable {

		public function clone():ICloneable {
			var classpath:String = getQualifiedClassName(this);
			classpath.replace("::", ".");

			var clazz:Class = fabrication.getClassByName(classpath);
			var clazzInfo:XML = describeType(clazz);
			var constructorNode:XMLList = clazzInfo..constructor as XMLList;
			var requiredParameters:XMLList = constructorNode.parameter.(@optional = "false");
			var requiredParametersCount:int = requiredParameters.length();
			var mediator:FlexMediator = CloneUtils.newInstance(clazz, requiredParametersCount) as FlexMediator;

			mediator.setMediatorName(getMediatorName());
			mediator.setViewComponent(getViewComponent());

			requiredParameters = null;
			constructorNode = null;
			clazzInfo = null;
			clazz = null;

			return mediator;
		}

		/**
		 * Changes the mediator name. This is done when RegExp
		 * component resolvers are used.
		 *
		 * @param name The name of the mediator
		 */
		fabrication_internal function setMediatorName(name:String):void {
			this.mediatorName = name;
		}

		/**
		 * Creates the base link of the component resolver chain. Additional
		 * link can be added to this to indicate the path to your viewComponent.
