public function once($event, callable $listener)
{
if (!isset($this->eventListeners[$event])) {
$this->eventPointers[$event] = 0;
$this->eventListeners[$event] = [];
}
$pointer =& $this->eventPointers[$event];
$eventListener = new EventListener($this, $event, $listener, $this->attachOnceListener($pointer, $event, $listener));
$this->eventListeners[$event][$pointer++] = $eventListener;
return $eventListener;
}