public bool UnregisterHandler(GameEventHandler handler)
        {
            if (handler == null)
            {
                return(false);
            }

            UnregisterMethod(handler.OnEventRaised);

            if (verbose)
            {
                Debug.Log(string.Format("[{0}]: Unregistering handler: [{1}]", name, handler.Name));
            }

            return(true);
        }
        //=====================================================================================================================//
        //=================================================== Public Methods ==================================================//
        //=====================================================================================================================//

        #region Public Methods

        public static GameEventHandler Clone(GameEventHandler original)
        {
            if (original == null)
            {
                return(null);
            }

            var newHandler = new GameEventHandler {
                Event              = GameEventReference.Clone(original.Event),
                isMuted            = original.isMuted,
                hasBeenInitialized = false,
                _targets           = GameEventTargetSet.Clone(original._targets)
            };

            return(newHandler);
        }
        //----------------------------------------------------- For Handlers --------------------------------------------------//

        public bool RegisterHandler(GameEventHandler handler)
        {
            if (handler == null)
            {
                return(false);
            }

            if (verbose)
            {
                Debug.Log(string.Format("[{0} EventHandler]: Registering with [{1}] event...", name, handler.Name));
            }

            RegisterMethod(handler.OnEventRaised);

            if (verbose)
            {
                Debug.Log(string.Format("[{0}]: Registration successful: [{1}]", name, handler.Name));
            }

            return(true);
        }