public function processEvent(
        Interfaces\EventInterface $event,
        callable $callback = null
    )/*# : EventManagerInterface */ {
        $eventName = $event->getName();

        // check self's queue
        $queue = $this->matchEventQueue($eventName, $this);

        // merge with other managers' queue
        $managers = $this->getOtherManagers();
        foreach ($managers as $mgr) {
            // other manager's own queue
            $q = $this->matchEventQueue($eventName, $mgr);
            if ($q->count()) {
                $queue = $queue->combine($q);
            }
        }

        // run thru the queue
        return $this->runEventQueue($event, $queue, $callback);
    }