 		 * 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>

		 */
		public function FlexMediator(name:String = null, viewComponent:Object = null) {
			super(name, viewComponent);
			
			registrars = new Array();
		}

        /**
		 * Removes the registrars used by the mediator.
		 * 
		 * @see org.puremvc.as3.multicore.utilities.fabrication.interfaces.IDisposable#dispose()
		 */
		override public function dispose():void {
			if (disposed) {
				return;
			}
			
			disposed = true;
			var n:int = registrars.length;
			var registrar:MediatorRegistrar;
			
			for (var i:int = 0; i < n; i++) {
				registrar = registrars[i] as MediatorRegistrar;

				registrar.removeEventListener(MediatorRegistrarEvent.REGISTRATION_COMPLETED, registrationCompletedListener);
				registrar.removeEventListener(MediatorRegistrarEvent.REGISTRATION_CANCELED, registrationCanceledListener);
				
				registrar.dispose();
				registrars[i] = null;
			}
			
			registrars = null;
			routeMapper = null;

			super.dispose();
		}
		
		/**
		 * Overrides the initializeNotifier to initialize local references to the route mapper.
		 */
		override public function initializeNotifier(key:String):void {
			super.initializeNotifier(key);

			initializeRouteMapper();			
		}
		
		/**
		 * Creates the singleton route mapper for the current facade.
		 * @private

		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.
