/**
  * @see PropertyLookup::getPropertyForId
  */
 public function getPropertyForId(PropertyId $propertyId)
 {
     try {
         return $this->entityDocumentLookup->getEntityDocumentForId($propertyId);
     } catch (EntityNotFoundException $e) {
         throw new PropertyNotFoundException($e->getEntityId());
     }
 }
 /**
  * @see EntityDocumentLookup::getEntityDocumentsForIds
  */
 public function getEntityDocumentsForIds(array $entityIds)
 {
     $entities = array();
     $entityIdsToRetrieve = array();
     foreach ($entityIds as $entityId) {
         try {
             $entities[] = $this->entityCache->fetch($entityId);
         } catch (EntityNotFoundException $e) {
             $entityIdsToRetrieve[] = $entityId;
         }
     }
     $additionalEntities = array();
     if (!empty($entityIdsToRetrieve)) {
         $additionalEntities = $this->entityLookup->getEntityDocumentsForIds($entityIdsToRetrieve);
     }
     foreach ($additionalEntities as $entity) {
         $this->entityCache->save($entity);
     }
     return array_merge($entities, $additionalEntities);
 }
 /**
  * @see EntityDocumentLookup::getEntityDocumentsForIds
  */
 public function getEntityDocumentsForIds(array $entityIds)
 {
     $entities = [];
     $entityIdsToRetrieve = [];
     foreach ($entityIds as $entityId) {
         $entity = $this->entityCache->fetch($entityId);
         if ($entity === null) {
             $entityIdsToRetrieve[] = $entityId;
         } else {
             $entities[] = $entity;
         }
     }
     $additionalEntities = [];
     if (!empty($entityIdsToRetrieve)) {
         $additionalEntities = $this->entityLookup->getEntityDocumentsForIds($entityIdsToRetrieve);
     }
     foreach ($additionalEntities as $entity) {
         $this->entityCache->save($entity);
     }
     return array_merge($entities, $additionalEntities);
 }