/**
* Unregisters a package from the list of available packages
*
* @param PackageInterface $package The package to be unregistered
* @return void
* @throws Exception\InvalidPackageStateException
*/
protected function unregisterPackage(PackageInterface $package)
{
$packageKey = $package->getPackageKey();
if (!$this->isPackageAvailable($packageKey)) {
throw new Exception\InvalidPackageStateException('Package "' . $packageKey . '" is not registered.', 1338996142);
}
if (!isset($this->packages[$packageKey])) {
return;
}
$composerName = $package->getComposerName();
unset($this->packages[$packageKey], $this->packageKeys[strtolower($packageKey)], $this->packageStatesConfiguration['packages'][$composerName]);
$this->sortAndSavePackageStates($this->packageStatesConfiguration);
}