protected TResult OnEventFired()
        {
            var args = new EventFunctionInterceptionArgsImpl <TInstance, TResult>();

            args.Event       = @event;
            args.EventBroker = this;

            for (var i = linkedHandlers.First; i != null; i = i.Next)
            {
                args.Handler     = i.Value;
                args.ReturnValue = argsHandler(args);
            }

            return(args.ReturnValue);
        }
        protected TResult OnEventFired(TArg1 arg1, TArg2 arg2, TArg3 arg3, TArg4 arg4)
        {
            var args = new EventFunctionInterceptionArgsImpl <TInstance, TArg1, TArg2, TArg3, TArg4, TResult>();

            args.Arg1        = arg1;
            args.Arg2        = arg2;
            args.Arg3        = arg3;
            args.Arg4        = arg4;
            args.Event       = @event;
            args.EventBroker = this;

            for (var i = linkedHandlers.First; i != null; i = i.Next)
            {
                args.Handler     = i.Value;
                args.ReturnValue = argsHanlder(args);
            }

            return(args.ReturnValue);
        }