original_string: public function uninstall(InstalledRepositoryInterface $repo, PackageInterface $package)
      {
          if (!$repo->hasPackage($package)) {
              throw new \InvalidArgumentException('Package is not installed: '.$package);
          }
  
          $this->logVerbose(sprintf('Removing Contao sources for %s', $package->getName()));
  
          $this->removeSymlinks($package, $this->getContaoRoot(), $this->getSources($package));
  
          parent::uninstall($repo, $package);
  
          $this->logVerbose('');
      }
code: public function uninstall(InstalledRepositoryInterface $repo, PackageInterface $package)
      {
          if (!$repo->hasPackage($package)) {
              throw new \InvalidArgumentException('Package is not installed: '.$package);
          }
  
          $this->logVerbose(sprintf('Removing Contao sources for %s', $package->getName()));
  
          $this->removeSymlinks($package, $this->getContaoRoot(), $this->getSources($package));
  
          parent::uninstall($repo, $package);
  
          $this->logVerbose('');
      }
code_tokens: public function uninstall ( InstalledRepositoryInterface $ repo , PackageInterface $ package ) { if ( ! $ repo -> hasPackage ( $ package ) ) { throw new \ InvalidArgumentException ( 'Package is not installed: ' . $ package ) ; } $ this -> logVerbose ( sprintf ( 'Removing Contao sources for %s' , $ package -> getName ( ) ) ) ; $ this -> removeSymlinks ( $ package , $ this -> getContaoRoot ( ) , $ this -> getSources ( $ package ) ) ; parent :: uninstall ( $ repo , $ package ) ; $ this -> logVerbose ( '' ) ; }
docstring: Remove symlinks for Contao sources before uninstalling a package.
  
  {@inheritdoc}
  
  @throws \InvalidArgumentException When the requested package is not installed.
docstring_tokens: Remove symlinks for Contao sources before uninstalling a package .