/**
  * {@inheritdoc}
  */
 public function initializeType($type)
 {
     $language = NULL;
     if ($this->currentUser) {
         // Execute the language negotiation methods in the order they were set up
         // and return the first valid language found.
         foreach ($this->getEnabledNegotiators($type) as $method_id => $info) {
             if (!isset($this->negotiatedLanguages[$method_id])) {
                 $this->negotiatedLanguages[$method_id] = $this->negotiateLanguage($type, $method_id);
             }
             // Since objects are references, we need to return a clone to prevent
             // the language negotiation method cache from being unintentionally
             // altered. The same methods might be used with different language types
             // based on configuration.
             $language = !empty($this->negotiatedLanguages[$method_id]) ? clone $this->negotiatedLanguages[$method_id] : NULL;
             if ($language) {
                 $this->getNegotiationMethodInstance($method_id)->persist($language);
                 break;
             }
         }
     }
     if (!$language) {
         // If no other language was found use the default one.
         $language = $this->languageManager->getDefaultLanguage();
         $method_id = static::METHOD_ID;
     }
     return array($method_id => $language);
 }