private function collectListenersByProviderKey(ContainerBuilder $container)
{
$providerKeys = [];
$taggedListeners = $container->findTaggedServiceIds($this->tagName);
foreach ($taggedListeners as $listenerId => $tags) {
foreach ($tags as $tag) {
$providerKey = $this->getProviderKey($container, $tag, $listenerId);
$priority = isset($tag['priority']) ? $tag['priority'] : 0;
if (isset($tag['event'])) {
$listener = $this->processEvent($container, $listenerId, $tag, $priority);
$providerKeys[$providerKey]['event'][] = $listener;
} elseif (isset($tag['method'])) {
throw new \InvalidArgumentException(sprintf('The "method" attribute does nothing in "%s" tags if "event" is not set in "%s" definition.', $this->tagName, $listenerId));
} else {
$providerKeys[$providerKey]['firewall'][$priority][] = new Reference($listenerId);
}
}
}
return $providerKeys;
}