/**
  * @param string[] $terms
  * @param string[] $fetchLanguages
  *
  * @return TermFallback|null
  */
 private function getTermFallback(array $terms, array $fetchLanguages)
 {
     $extractedData = $this->languageFallbackChain->extractPreferredValue($terms);
     if ($extractedData === null) {
         return null;
     }
     // $fetchLanguages are in order of preference
     $requestLanguage = reset($fetchLanguages);
     // see extractPreferredValue for array keys
     return new TermFallback($requestLanguage, $extractedData['value'], $extractedData['language'], $extractedData['source']);
 }
 /**
  * @param ParserOutput $parserOutput
  * @param EntityDocument $entity
  */
 private function addTitleTextToParserOutput(ParserOutput $parserOutput, EntityDocument $entity)
 {
     $titleText = null;
     if ($entity instanceof FingerprintProvider) {
         $labels = $entity->getFingerprint()->getLabels()->toTextArray();
         $preferred = $this->languageFallbackChain->extractPreferredValue($labels);
         if (is_array($preferred)) {
             $titleText = $preferred['value'];
         }
     }
     if (!is_string($titleText)) {
         $entityId = $entity->getId();
         if ($entityId instanceof EntityId) {
             $titleText = $entityId->getSerialization();
         }
     }
     $parserOutput->setExtensionData('wikibase-titletext', $titleText);
 }