/**
  * Clear the Unit of Work of the manager(s) from the clearable entities
  * between batch writes
  *
  * @param bool $full True to clear all entities
  */
 public function clear($full = false)
 {
     $nonClearableEntities = $full ? [] : $this->nonClearableEntities;
     foreach ($this->managerRegistry->getManagers() as $objectManager) {
         $identityMap = $objectManager->getUnitOfWork()->getIdentityMap();
         $managedClasses = array_keys($identityMap);
         $nonClearableClasses = array_intersect($managedClasses, $nonClearableEntities);
         if (empty($nonClearableClasses)) {
             $objectManager->clear();
         } else {
             $clearableClasses = array_diff($managedClasses, $nonClearableEntities);
             foreach ($clearableClasses as $clearableClass) {
                 $objectManager->clear($clearableClass);
             }
         }
     }
     $this->doctrineCache->clear($nonClearableEntities);
 }