/**
  * {@inheritdoc}
  */
 public function removeExtraKeys(Expression $expr)
 {
     $previousValues = $this->rootPackageFile->getExtraKeys();
     $save = false;
     foreach ($this->rootPackageFile->getExtraKeys() as $key => $value) {
         if ($expr->evaluate($key)) {
             $this->rootPackageFile->removeExtraKey($key);
             $save = true;
         }
     }
     if (!$save) {
         return;
     }
     try {
         $this->packageFileStorage->saveRootPackageFile($this->rootPackageFile);
     } catch (Exception $e) {
         $this->rootPackageFile->setExtraKeys($previousValues);
         throw $e;
     }
 }