//private bool spent = false;

        internal TriggerManager(Trigger trigger, IMastAdapter mastInterface)
        {
            if (trigger == null)
            {
                throw new NullReferenceException("Trigger must not be null.");
            }
            if (mastInterface == null)
            {
                throw new NullReferenceException("IMastAdapter must not be null.");
            }

            Trigger = trigger;
            MastInterface = mastInterface;

            foreach (Condition c in trigger.startConditions)
            {
                ConditionManager cm = new ConditionManager(c, MastInterface);
                //We need to wire up events, for event type conditions, and this is also used for some property calculations around time
                //if (c.type == ConditionType.@event) {
                cm.EventFired += new EventHandler(OnConditionEventFired);
                //}
                StartConditions.Add(cm);
            }

            foreach (Condition c in trigger.endConditions)
            {
                ConditionManager cm = new ConditionManager(c, MastInterface) { IsEndCondition = true };
                //if (c.type == ConditionType.@event) {
                cm.EventFired += new EventHandler(OnConditionEventFired);
                //}
                EndConditions.Add(cm);
            }

            //we just need this for 'per clip' events, to reset the flag
            //ReflectionHelper.AttachEvent(MastInterface, "OnItemEnd", this, "OnItemEnd");
        }
 /// <summary>
 /// Deserializes workflow markup into an Trigger object
 /// </summary>
 // <param name="xml">string workflow markup to deserialize</param>
 // <param name="obj">Output Trigger object</param>
 // <param name="exception">output Exception value if deserialize failed</param>
 // <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
 public static bool Deserialize(string xml, out Trigger obj, out System.Exception exception)
 {
     exception = null;
     obj = null;
     try
     {
         System.IO.StringReader stringReader = new System.IO.StringReader(xml);
         System.Xml.XmlReader xmlTextReader = System.Xml.XmlReader.Create(stringReader);
         System.Xml.Serialization.XmlSerializer xmlSerializer = new System.Xml.Serialization.XmlSerializer(typeof(Trigger));
         obj = ((Trigger)(xmlSerializer.Deserialize(xmlTextReader)));
         return true;
     }
     catch (System.Exception e)
     {
         exception = e;
         return false;
     }
 }
 internal TriggerFailureEventArgs(Trigger Trigger, Exception Exception)
     : base(Trigger)
 {
     exception = Exception;
 }
 internal TriggerEventArgs(Trigger Trigger)
 {
     trigger = Trigger;
 }