public function process(ContainerBuilder $container)
{
$tag = 'dataset';
$interface = DataSetInterface::class;
foreach ($container->findTaggedServiceIds($tag) as $id => $attributes) {
$definition = $container->getDefinition($id);
$refClass = new \ReflectionClass($definition->getClass());
if (!$refClass->implementsInterface($interface)) {
throw new \InvalidArgumentException(sprintf('DataSet "%s" tagged with "%s" must implement interface "%s".', $id, $tag, $interface));
}
$definition->addArgument(new Reference('dataset.manager'));
$definition->addArgument(new Reference('event_dispatcher'));
$definition->setConfigurator([new Reference('dataset.configurator'), 'configure']);
}
}