public function process(ContainerBuilder $container)
{
$tag = 'form_builder';
$interface = FormBuilderInterface::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('FormBuilder "%s" tagged with "%s" must implement interface "%s".', $id, $tag, $interface));
}
$definition->addArgument($id);
$definition->addArgument(new Reference('form.resolver.factory'));
$definition->addArgument(new Reference('form.handler'));
$definition->addArgument(new Reference('event_dispatcher'));
$definition->addMethodCall('setContainer', [new Reference('service_container')]);
}
}