/**
  * Specific method to add a multisite route to the collection.
  *
  * Paths option should not be null.
  */
 protected function addMultisiteRoute(RouteCollection $collection, $annot, $globals, \ReflectionClass $class, \ReflectionMethod $method)
 {
     $paths = $this->siteContext->normalizePaths($annot->getPaths());
     foreach ($paths as $branding => $locales) {
         foreach ($locales as $locale => $path) {
             // this block of code is copied from Symfony\Component\Routing\Loader\AnnotationFileLoader
             $name = $annot->getName();
             if (null === $name) {
                 $name = $this->getDefaultRouteName($class, $method);
             }
             $name = MultisiteRouter::ROUTE_PREFIX . '_' . $branding . '_' . $locale . '__' . $name;
             $defaults = array_replace($globals['defaults'], $annot->getDefaults());
             foreach ($method->getParameters() as $param) {
                 if (!isset($defaults[$param->getName()]) && $param->isOptional()) {
                     $defaults[$param->getName()] = $param->getDefaultValue();
                 }
             }
             // +2 lines
             $defaults['_branding'] = $branding;
             $defaults['_locale'] = $locale;
             $requirements = array_replace($globals['requirements'], $annot->getRequirements());
             $options = array_replace($globals['options'], $annot->getOptions());
             $schemes = array_replace($globals['schemes'], $annot->getSchemes());
             $methods = array_replace($globals['methods'], $annot->getMethods());
             $host = $annot->getHost();
             if (null === $host) {
                 $host = $globals['host'];
             }
             // +3 lines
             if (!$host) {
                 $host = $this->siteContext->getBranding($branding)->getHost($locale);
             }
             $condition = $annot->getCondition();
             if (null === $condition) {
                 $condition = $globals['condition'];
             }
             $route = new Route($globals['path'] . $path, $defaults, $requirements, $options, $host, $schemes, $methods, $condition);
             $this->configureRoute($route, $class, $method, $annot);
             $collection->add($name, $route);
         }
     }
     // cache will refresh when file is modified
     $collection->addResource(new FileResource($class->getFileName()));
     return $collection;
 }
 /**
  * Changes router context and site context according to matched route.
  *
  * @param array $match
  */
 private function setMatchContext(array $match)
 {
     if (isset($match['_branding'])) {
         $this->context->setParameter('_branding', $match['_branding']);
         $this->siteContext->setCurrentBranding($this->siteContext->getBranding($match['_branding']));
     }
     if (isset($match['_locale'])) {
         $this->context->setParameter('_locale', $match['_locale']);
         $this->siteContext->setCurrentLocale($match['_locale']);
     }
 }