private NotificationMessageHolderType[] ExtractNotificationMessages(EventStream ev) {
			  var messages = new List<NotificationMessageHolderType>();
			  if (ev == null) {
				  return new NotificationMessageHolderType[0];
			  }
			  var items = ev.items;
			  if (items == null) {
				  return new NotificationMessageHolderType[0];
			  }
			  return items.OfType<NotificationMessageHolderType>().ToArray();
		  }
 public void Process(EventStream eventStream)
 {
     try
     {
         var messages = ExtractNotificationMessages(eventStream);
         foreach (var message in messages)
             foreach (var p in Processors)
                 try
                 {
                     p.Process(message);
                 }
                 catch (Exception ex) 
                 {
                     Trace.WriteLine(string.Format("metadata processor {0} failed for message {1}: {2}", p.GetType(), message.Message.InnerText,ex));
                     //dbg.Error(ex);
                 }
     }
     catch (Exception ex)
     {
         dbg.Error(ex);
     }
 }