public ErrorHandlerFor(IEnumerable <KeyValuePair <T, SingleErrorHandlerDelegate <T> > > handlers, SingleErrorHandlerDelegate <T> fallbackHandler)
 {
     this.handlers = new Dictionary <T, SingleErrorHandlerDelegate <T> >();
     foreach (var handler in handlers)
     {
         Debug.Assert(handler.Value != null);
         this.handlers.Add(handler.Key, handler.Value);
     }
     foreach (var enumValue in enumValues)
     {
         if (this.handlers.ContainsKey(enumValue) == false)
         {
             this.handlers.Add(enumValue, fallbackHandler);
         }
     }
     checkHandlers();
 }
 public ErrorHandlerFor(IEnumerable <KeyValuePair <IEnumerable <T>, SingleErrorHandlerDelegate <T> > > handlers, SingleErrorHandlerDelegate <T> fallbackHandler)
     : this(handlers.SelectMany(h => h.Key.Select(key => new KeyValuePair <T, SingleErrorHandlerDelegate <T> >(key, h.Value))), fallbackHandler)
 {
 }