public static function _discoverObjectListeners( $object, $pattern = self::LISTENER_DISCOVERY_PATTERN, $rediscover = false )
    {
        static $_discovered = array();

        $_listeners = array();

        $_objectId = spl_object_hash( is_string( $object ) ? '_class.' . $object : $object );

        if ( false === $rediscover && isset( $_discovered[$_objectId] ) )
        {
            return true;
        }

        try
        {
            $_mirror = new \ReflectionClass( $object );
            $_methods = $_mirror->getMethods( \ReflectionMethod::IS_PUBLIC | \ReflectionMethod::IS_PROTECTED );

            //	Check each method for the event handler signature
            foreach ( $_methods as $_method )
            {
                //	Event handler?
                if ( 0 == preg_match( $pattern, $_method->name, $_matches ) || empty( $_matches[1] ) )
                {
                    continue;
                }

                //	Neutralize the name
                $_eventName = Inflector::neutralize( $_matches[1] );

                if ( !isset( $_listeners[$_eventName] ) )
                {
                    $_listeners[$_eventName] = array();
                }

                //	Save off a callable
                $_listeners[$_eventName][] = array($object, $_method->name);

                //	Clean up
                unset( $_matches, $_method );
            }

            unset( $_methods, $_mirror );

            $_discovered[$_objectId] = true;
        }
        catch ( \Exception $_ex )
        {
            return false;
        }

        //	Return the current map
        return $_listeners;
    }