public function process(ContainerBuilder $container)
{
$factoryDefinition = new Definition(Factory::class);
$factoryDefinition->addArgument(new Parameter('sylius.model.product.class'));
$translatableFactoryDefinition = $container->getDefinition('sylius.factory.product');
$productFactoryClass = $translatableFactoryDefinition->getClass();
$translatableFactoryDefinition->setClass(TranslatableFactory::class);
$translatableFactoryDefinition->setArguments([$factoryDefinition, new Reference('sylius.translation_locale_provider')]);
$decoratedProductFactoryDefinition = new Definition($productFactoryClass);
$decoratedProductFactoryDefinition->setArguments([$translatableFactoryDefinition, new Reference('sylius.factory.product_variant')]);
$container->setDefinition('sylius.factory.product', $decoratedProductFactoryDefinition);
$variantFactoryDefinition = $container->getDefinition('sylius.factory.product_variant');
$variantFactoryClass = $variantFactoryDefinition->getClass();
$variantFactoryDefinition->setClass(Factory::class);
$decoratedProductVariantFactoryDefinition = new Definition($variantFactoryClass);
$decoratedProductVariantFactoryDefinition->addArgument($variantFactoryDefinition);
$container->setDefinition('sylius.factory.product_variant', $decoratedProductVariantFactoryDefinition);
}