protected function mergePackages(Package $oldPackage, Package $newPackage)
 {
     $oldPackage->setUpdatedAt(new \DateTime());
     $oldPackage->setDescription($newPackage->getDescription());
     // Remove all versions that do not exist anymore and update the existing versions:
     foreach ($oldPackage->getVersions() as $version) {
         $newVersion = $this->findVersion($newPackage, $version);
         if (!$newVersion) {
             $oldPackage->removeVersion($version);
         } else {
             $version->setReferenceHash($newVersion->getReferenceHash());
             $version->setLicense($newVersion->getLicense());
             $version->setUpdatedAt(new \DateTime());
             $this->mergeDependencies($version, $newVersion);
         }
     }
     // Add the new versions:
     foreach ($newPackage->getVersions() as $version) {
         $oldVersion = $this->findVersion($oldPackage, $version);
         if ($oldVersion === null) {
             $oldPackage->addVersion($version);
         }
     }
 }