/// <summary>
        ///   Method invoked when (instead of) a new handler is removed from the target event.
        /// </summary>
        /// <param name="args">Context information.</param>
        public override void OnRemoveHandler(EventInterceptionArgs args)
        {
            // Remove the handler from our own list.
            if (RemoveHandler(args.Handler))
            {
                args.RemoveHandler(null);
            }

            // Remove the handler from the client.
            DelegateReferenceKeeper.RemoveReference(args.Handler);
        }
        /// <summary>
        ///     Method invoked when (instead of) a new handler is removed from the target event.
        /// </summary>
        /// <param name="args">Context information.</param>
        public override void OnRemoveHandler(EventInterceptionArgs args)
        {
            // Remove the handler from our own list.
            if (RemoveHandler(args.Handler))
            {
                // If this is the last handler, remove the fake handler to ourselves from the target event.
                args.RemoveHandler(null);
            }

            // Remove the handler from the client.
            DelegateReferenceKeeper.RemoveReference(args.Handler);
        }