public function addListener($name, $listener, $priority = 0)
	{
		if (is_string($listener) && !is_callable($listener)) {
			$listener = [$listener, 'handle'];
		}

		if (is_array($listener) && is_string($listener[0])) {
			list($class, $method) = $listener;
			$listener = function($event) use($class, $method) {
				return $this->resolver->resolve($class)
					->$method($event);
			};
		}

		parent::addListener($name, $listener, $priority);
	}
public function addListener($name, $listener, $priority = 0)
	{
		if (is_string($listener) && !is_callable($listener)) {
			$listener = [$listener, 'handle'];
		}

		if (is_array($listener) && is_string($listener[0])) {
			list($class, $method) = $listener;
			$listener = function($event) use($class, $method) {
				return $this->resolver->resolve($class)
					->$method($event);
			};
		}

		parent::addListener($name, $listener, $priority);
	}
{@inheritdoc}

The listener can be a string of 'Class:method' or just 'Class'. If no
method is provided, the method 'handle' is used.