/**
  * {@inheritdoc}
  */
 public function loadMultiple(array $ids = NULL)
 {
     $entities = array();
     // Create a new variable which is either a prepared version of the $ids
     // array for later comparison with the entity cache, or FALSE if no $ids
     // were passed. The $ids array is reduced as items are loaded from cache,
     // and we need to know if it's empty for this reason to avoid querying the
     // database when all requested entities are loaded from cache.
     $passed_ids = !empty($ids) ? array_flip($ids) : FALSE;
     // Try to load entities from the static cache, if the entity type supports
     // static caching.
     if ($this->entityType->isStaticallyCacheable() && $ids) {
         $entities += $this->getFromStaticCache($ids);
         // If any entities were loaded, remove them from the ids still to load.
         if ($passed_ids) {
             $ids = array_keys(array_diff_key($passed_ids, $entities));
         }
     }
     // Load any remaining entities from the database. This is the case if $ids
     // is set to NULL (so we load all entities) or if there are any ids left to
     // load.
     if ($ids === NULL || $ids) {
         $queried_entities = $this->doLoadMultiple($ids);
     }
     // Pass all entities loaded from the database through $this->postLoad(),
     // which attaches fields (if supported by the entity type) and calls the
     // entity type specific load callback, for example hook_node_load().
     if (!empty($queried_entities)) {
         $this->postLoad($queried_entities);
         $entities += $queried_entities;
     }
     if ($this->entityType->isStaticallyCacheable()) {
         // Add entities to the cache.
         if (!empty($queried_entities)) {
             $this->setStaticCache($queried_entities);
         }
     }
     // Ensure that the returned array is ordered the same as the original
     // $ids array if this was passed in and remove any invalid ids.
     if ($passed_ids) {
         // Remove any invalid ids from the array.
         $passed_ids = array_intersect_key($passed_ids, $entities);
         foreach ($entities as $entity) {
             $passed_ids[$entity->id()] = $entity;
         }
         $entities = $passed_ids;
     }
     return $entities;
 }