public function process(ContainerBuilder $container)
    {
        if (!$container->hasDefinition('drupal.drupal')) {
            return;
        }

        $drupalDefinition = $container->getDefinition('drupal.drupal');
        foreach ($container->findTaggedServiceIds('drupal.driver') as $id => $attributes) {
            foreach ($attributes as $attribute) {
                if (isset($attribute['alias']) && $name = $attribute['alias']) {
                    $drupalDefinition->addMethodCall(
                        'registerDriver',
                        array($name, new Reference($id))
                    );
                }
            }

            // If this is Drupal Driver, then a core controller needs to be
            // instantiated as well.
            if ('drupal.driver.drupal' === $id) {
                $drupalDriverDefinition = $container->getDefinition($id);
                $availableCores = array();
                foreach ($container->findTaggedServiceIds('drupal.core') as $coreId => $coreAttributes) {
                    foreach ($coreAttributes as $attribute) {
                        if (isset($attribute['alias']) && $name = $attribute['alias']) {
                            $availableCores[$name] = $container->getDefinition($coreId);
                        }
                    }
                }
                $drupalDriverDefinition->addMethodCall(
                    'setCore',
                    array($availableCores)
                );
            }
        }

        $drupalDefinition->addMethodCall(
            'setDefaultDriverName',
            array($container->getParameter('drupal.drupal.default_driver'))
        );
    }