public function free($name, Listener $listener = null, $onlyClear = false) { if (null === $listener) { /** @var \Aurora\Event\Listener $listener */ foreach ($this->listeners->get($name) as $listener) { if (!$onlyClear) { $listener->delete(); } } $this->listeners->remove($name); } else { if (!$onlyClear) { $listener->delete(); } $this->listeners->removeSub($name, $listener); } }