public void Destroy()
		{
			_localToChannelRelay.Stop();
			_localToChannelRelay = null;
			_channelToLocalRelay.Stop();
			_channelToLocalRelay = null;
		}
		/*============================================================================*/
		/* Constructor                                                                */
		/*============================================================================*/

		public ModuleConnectionConfigurator(
			IEventDispatcher localDispatcher,
			IEventDispatcher channelDispatcher)
		{
			_localToChannelRelay = new EventRelay(localDispatcher, channelDispatcher).Start();
			_channelToLocalRelay = new EventRelay(channelDispatcher, localDispatcher).Start();
		}
        /*============================================================================*/
        /* Private Functions                                                          */
        /*============================================================================*/

        private EventRelay CreateRelayFor(params Enum[] types)
        {
            subject = new EventRelay(source, destination, new List <Enum>(types));
            foreach (Enum type in types)
            {
                destination.AddEventListener(type, CatchEvent);
            }
            return(subject);
        }
		/*============================================================================*/
		/* Private Functions                                                          */
		/*============================================================================*/

		private EventRelay CreateRelayFor(params Enum[] types)
		{
			subject = new EventRelay(source, destination, new List<Enum>(types));
			foreach (Enum type in types)
			{
				destination.AddEventListener(type, CatchEvent);
			}
			return subject;
		}