public IEnumerable <Interval> TransformWithCustomTransformer(IEnumerable <IDEEvent> events,
                                                                     IEventToIntervalTransformer <Interval> transformer)
        {
            events = _fixer.FixAndFilter(events);

            _logger.Info(@"Transforming event stream with {0} ...", transformer.GetType().Name);

            var currentEventTime = DateTimeOffset.MinValue;
            var i = 0;

            foreach (var e in events)
            {
                i++;
                if (i % 500 == 0)
                {
                    Console.Write('.');
                }
                if (i % 50000 == 0)
                {
                    Console.WriteLine();
                }

                if (TransformerUtils.EventHasNoTimeData(e))
                {
                    continue;
                }

                var version = new KaVEVersion(e.KaVEVersion);
                if (version.ReleaseNumber < _firstVersionToInclude)
                {
                    continue;
                }

                Asserts.IsLessOrEqual(currentEventTime, e.TriggeredAt.GetValueOrDefault());

                currentEventTime = e.TriggeredAt.GetValueOrDefault();

                transformer.ProcessEvent(e);
            }
            Console.WriteLine();
            _logger.Info("--> Done processing {0} events...", i);

            return(transformer.SignalEndOfEventStream());
        }
 public void ProcessEvent(IDEEvent @event)
 {
     _subTransformer.ProcessEvent(@event);
 }