protected function _hydrateEntities(CollectionInterface $entities, array $args)
    {
        $values = $this->_prepareSetValues($entities, $args);

        return $entities->map(function ($entity) use ($values) {
            if ($entity instanceof EntityInterface) {
                $entity = $this->_prepareCachedColumns($entity);
                $entityId = $this->_toolbox->getEntityId($entity);
                $entityValues = isset($values[$entityId]) ? $values[$entityId] : [];
                $hydrator = $this->config('hydrator');
                $entity = $hydrator($entity, $entityValues);

                if ($entity === null) {
                    // mark as NULL_ENTITY
                    $entity = self::NULL_ENTITY;
                }
            }

            return $entity;
        })
        ->filter(function ($entity) {
            // remove all entities marked as NULL_ENTITY
            return $entity !== self::NULL_ENTITY;
        });
    }