/**
  * Loads incoming redirects referring to the given entity ID.
  *
  * @param EntityId $id
  *
  * @return EntityId[]
  * @throws HttpError
  */
 private function getIncomingRedirects(EntityId $id)
 {
     try {
         return $this->entityRedirectLookup->getRedirectIds($id);
     } catch (EntityRedirectLookupException $ex) {
         $prefixedId = $id->getSerialization();
         wfDebugLog(__CLASS__, __FUNCTION__ . ": failed to load incoming redirects of {$prefixedId}: {$ex}");
         return array();
     }
 }
 /**
  * @param EntityId $entityId
  *
  * @throws RedirectCreationException
  */
 private function checkExistsNoRedirect(EntityId $entityId)
 {
     try {
         $redirect = $this->entityRedirectLookup->getRedirectForEntityId($entityId, 'for update');
     } catch (EntityRedirectLookupException $ex) {
         throw new RedirectCreationException($ex->getMessage(), 'no-such-entity', $ex);
     }
     if ($redirect !== null) {
         throw new RedirectCreationException("Entity {$entityId} is a redirect", 'target-is-redirect');
     }
 }
 /**
  * Load the sitelink using a SiteLinkLookup. Resolves item redirects, if needed.
  *
  * @param string $site
  * @param ItemId $itemId
  *
  * @return array[]
  */
 private function loadLinks($site, ItemId $itemId)
 {
     $links = $this->siteLinkLookup->getLinks(array($itemId->getNumericId()), array($site));
     if (isset($links[0])) {
         return $links;
     }
     // Maybe the item is a redirect: Try to resolve the redirect and load
     // the links from there.
     $redirectTarget = $this->redirectLookup->getRedirectForEntityId($itemId);
     if ($redirectTarget instanceof ItemId) {
         return $this->siteLinkLookup->getLinks(array($redirectTarget->getNumericId()), array($site));
     }
     return array();
 }