/// <summary>
 /// Processes all step events.
 /// <see cref="AllureCSharpCommons.Events.StepStartedEvent"/>
 /// <see cref="AllureCSharpCommons.Events.StepCanceledEvent"/>
 /// <see cref="AllureCSharpCommons.Events.StepFinishedEvent"/>
 /// </summary>
 /// <param name="evt">event to process</param>
 public void Fire(IStepEvent evt)
 {
     if (typeof(StepStartedEvent).IsAssignableFrom(evt.GetType()))
     {
         var step = new step();
         evt.Process(step);
         StepStorage.Put(step);
     }
     else if (typeof(StepFinishedEvent).IsAssignableFrom(evt.GetType()))
     {
         var step = StepStorage.PollLast();
         evt.Process(step);
         StepStorage.Last.steps = ArraysUtils.Add(StepStorage.Last.steps, step);
     }
     else
     {
         var step = StepStorage.Last;
         evt.Process(step);
     }
 }
 /// <summary>
 /// Processes all step events.
 /// <see cref="AllureCSharpCommons.Events.StepStartedEvent"/>
 /// <see cref="AllureCSharpCommons.Events.StepCanceledEvent"/>
 /// <see cref="AllureCSharpCommons.Events.StepFinishedEvent"/>
 /// </summary>
 /// <param name="evt">event to process</param>
 public void Fire(IStepEvent evt)
 {
     if (typeof (StepStartedEvent).IsAssignableFrom(evt.GetType()))
     {
         var step = new step();
         evt.Process(step);
         StepStorage.Put(step);
     }
     else if (typeof (StepFinishedEvent).IsAssignableFrom(evt.GetType()))
     {
         var step = StepStorage.PollLast();
         evt.Process(step);
         StepStorage.Last.steps = ArraysUtils.Add(StepStorage.Last.steps, step);
     }
     else
     {
         var step = StepStorage.Last;
         evt.Process(step);
     }
 }