/**
  * @param UncacherBaseDaoWorker $uncacher
  * @return UncacherBaseDaoWorker
  */
 private function mergeSelf(UncacherBaseDaoWorker $uncacher)
 {
     foreach ($uncacher->getClassNameMap() as $className => $idKeys) {
         if (isset($this->classNameMap[$className])) {
             $this->classNameMap[$className] = ArrayUtils::mergeUnique($this->classNameMap[$className], $idKeys);
         } else {
             $this->classNameMap[$className] = $idKeys;
         }
     }
     return $this;
 }
 private function mergeSelf(UncacherGenericDAO $uncacher)
 {
     foreach ($uncacher->getDaoMap() as $daoClass => $daoMap) {
         if (isset($this->daoMap[$daoClass])) {
             //merge identities
             $this->daoMap[$daoClass][0] = ArrayUtils::mergeUnique($this->daoMap[$daoClass][0], $daoMap[0]);
             //merge workers uncachers
             $this->daoMap[$daoClass][1]->merge($daoMap[1]);
         } else {
             $this->daoMap[$daoClass] = $daoMap;
         }
     }
     return $this;
 }
 private function mergeSelf(UncacherTaggableDaoWorker $uncacher)
 {
     foreach ($uncacher->getClassNameMap() as $className => $uncaches) {
         if (!isset($this->classNameMap[$className])) {
             $this->classNameMap[$className] = $uncaches;
         } else {
             //merging idkeys
             $this->classNameMap[$className][0] = ArrayUtils::mergeUnique($this->classNameMap[$className][0], $uncaches[0]);
             //merging tags
             $this->classNameMap[$className][1] = ArrayUtils::mergeUnique($this->classNameMap[$className][1], $uncaches[1]);
         }
     }
     return $this;
 }