public function doCallback($name, array $values = array(), $getResult = false)
    {
        $values = array_merge(
            $values,
            array($name, $this)
        );

        if ($getResult) {
            $result = $values[0];
        }

        /*
         * Hook into Wordpress if wanted.
         */
        if ($this->getConfig('hookIntoWordpress') && class_exists('\WP')) {
            $result = call_user_func_array(
                ($getResult ? 'apply_filters' : 'do_action'),
                array_merge(
                    (array) sprintf('%s_%s', $this->_name, strtolower($name)),
                    $values
                )
            );
        }

        /*
         * Do own callbacks.
         */
        if (!empty($this->_callbacks[$name])) {
            foreach ($this->_callbacks[$name] as $prio => $callbacks) {
                foreach ($callbacks as $callbackKey) {
                    if (!empty(self::$_baseRealCallbacks[$callbackKey])) {
                        if ($getResult) {
                            $values[0] = $result;
                        }
                        $result = call_user_func_array(self::$_baseRealCallbacks[$callbackKey], $values);
                    }
                }
            }
        }

        return ($getResult ? $result : $this);
    }