public function register(RegisteredListener $listener)
{
if ($listener->getPriority() < EventPriority::MONITOR or $listener->getPriority() > EventPriority::LOWEST) {
return;
}
if (isset($this->handlerSlots[$listener->getPriority()][spl_object_hash($listener)])) {
throw new \InvalidStateException("This listener is already registered to priority " . $listener->getPriority());
}
$this->handlers = null;
$this->handlerSlots[$listener->getPriority()][spl_object_hash($listener)] = $listener;
}