/// <summary>
        /// Sets an event definition for the given signal name. If already a signal
        /// with this name exists it will be used, otherwise a new signal is created.
        /// </summary>
        /// <param name="signalName"> the name of the signal </param>
        /// <returns> the builder object </returns>
        public virtual ICatchEventBuilder <TE> Signal(string signalName)
        {
            ISignalEventDefinition signalEventDefinition = CreateSignalEventDefinition(signalName);

            element.EventDefinitions.Add(signalEventDefinition);

            return(this);
        }
        protected internal virtual ISignalEventDefinition CreateSignalEventDefinition(string signalName)
        {
            ISignal signal = FindSignalForName(signalName);
            ISignalEventDefinition signalEventDefinition = CreateInstance <ISignalEventDefinition>(typeof(ISignalEventDefinition));

            signalEventDefinition.Signal = signal;
            return(signalEventDefinition);
        }