public function getDispatcher()
    {
        if (!$this->dispatcher && class_exists('Windwalker\Event\Dispatcher')) {
            $this->dispatcher = new Dispatcher();

            if (is_subclass_of($this, 'Windwalker\Evebt\DispatcherAwareInterface')) {
                ListenerMapper::add($this);
            }
        }

        return $this->dispatcher;
    }