/**
  * Generate slug on objects being updated during flush
  * if they require changing
  *
  * @param EventArgs $args
  * @return void
  */
 public function onFlush(EventArgs $args)
 {
     $this->persisted = array();
     $ea = $this->getEventAdapter($args);
     $om = $ea->getObjectManager();
     $uow = $om->getUnitOfWork();
     $this->manageFiltersBeforeGeneration($om);
     // process all objects being inserted, using scheduled insertions instead
     // of prePersist in case if record will be changed before flushing this will
     // ensure correct result. No additional overhead is encountered
     foreach ($ea->getScheduledObjectInsertions($uow) as $object) {
         $meta = $om->getClassMetadata(get_class($object));
         if ($config = $this->getConfiguration($om, $meta->name)) {
             // generate first to exclude this object from similar persisted slugs result
             $this->generateSlug($ea, $object);
             $this->persisted[$ea->getRootObjectClass($meta)][] = $object;
         }
     }
     // we use onFlush and not preUpdate event to let other
     // event listeners be nested together
     foreach ($ea->getScheduledObjectUpdates($uow) as $object) {
         $meta = $om->getClassMetadata(get_class($object));
         if (($config = $this->getConfiguration($om, $meta->name)) && !$uow->isScheduledForInsert($object)) {
             $this->generateSlug($ea, $object);
             $this->persisted[$ea->getRootObjectClass($meta)][] = $object;
         }
     }
     $this->manageFiltersAfterGeneration($om);
     AbstractWrapper::clear();
 }