public static TEventEmitter RemoveListener <TEventEmitter, T1, T2>(
            [DisallowNull] this TEventEmitter eventEmitter,
            [DisallowNull] string eventName,
            [DisallowNull] Action <T1, T2> listener)
            where TEventEmitter : IEventEmitter <TEventEmitter>
        {
            var wrapper = ListenerWrapper.GetListenerWrapper(listener);

            wrapper.Decrement();
            return(eventEmitter.RemoveListener(eventName, wrapper.Process));
        }
 public static TEventEmitter Once <TEventEmitter, T1, T2, T3, T4, T5, T6, T7, T8>(
     [DisallowNull] this TEventEmitter eventEmitter,
     [DisallowNull] string eventName,
     [DisallowNull] Action <T1, T2, T3, T4, T5, T6, T7, T8> listener)
     where TEventEmitter : IEventEmitter <TEventEmitter> => eventEmitter.Once(eventName, ListenerWrapper.GetListenerWrapper(listener).Increment().Process);
 public static TEventEmitter Once <TEventEmitter>(
     [DisallowNull] this TEventEmitter eventEmitter,
     [DisallowNull] string eventName,
     [DisallowNull] Delegate listener)
     where TEventEmitter : IEventEmitter <TEventEmitter> => eventEmitter.Once(eventName, ListenerWrapper.GetListenerWrapper(listener).Increment().Process);