/**
  * {@inheritDoc}
  */
 public function process(ContainerBuilder $container)
 {
     if (!$this->integrationExtension->isModelTransformerEnabled()) {
         if (count($container->findTaggedServiceIds('model_transformer'))) {
             throw new \RuntimeException('Could not compile model transformer, because system is not enabled.');
         }
         return;
     }
     $transformerManagerDefinition = $container->getDefinition('model_transformer');
     foreach ($container->findTaggedServiceIds('model_transformer') as $id => $tags) {
         $attributes = $this->fixAttributes($tags);
         $attributes += ['priority' => 0];
         $definition = $container->getDefinition($id);
         $class = $definition->getClass();
         try {
             $class = $container->getParameterBag()->resolveValue($class);
             $refClass = new \ReflectionClass($class);
             $requiredInterface = 'FivePercent\\Component\\ModelTransformer\\ModelTransformerInterface';
             if (!$refClass->implementsInterface($requiredInterface)) {
                 throw new \RuntimeException(sprintf('The model transformer should implement "%s" interface.', $requiredInterface));
             }
         } catch (\Exception $e) {
             throw new \RuntimeException(sprintf('Could not compile model transformer with service id "%s".', $id), 0, $e);
         }
         $transformerManagerDefinition->addMethodCall('addTransformer', [new Reference($id), $attributes['priority']]);
     }
 }