protected void Trigger(EventType triggerEvent) { triggerTargets.ForEach(triggerTarget => { if (triggerTarget == null) { return; } if (!(triggerTarget is ITriggerTarget <EventType> convertedTriggerTarget)) { triggerTarget.TriggerUnhandled(triggerEvent); return; } convertedTriggerTarget.Trigger(triggerEvent); }); }