original_string: public function update(PackageInterface $initial, PackageInterface $target, $targetDir)
      {
          $downloader = $this->getDownloaderForInstalledPackage($initial);
          if (!$downloader) {
              return;
          }
  
          $installationSource = $initial->getInstallationSource();
  
          if ('dist' === $installationSource) {
              $initialType = $initial->getDistType();
              $targetType  = $target->getDistType();
          } else {
              $initialType = $initial->getSourceType();
              $targetType  = $target->getSourceType();
          }
  
          // upgrading from a dist stable package to a dev package, force source reinstall
          if ($target->isDev() && 'dist' === $installationSource) {
              $downloader->remove($initial, $targetDir);
              $this->download($target, $targetDir);
  
              return;
          }
  
          if ($initialType === $targetType) {
              $target->setInstallationSource($installationSource);
              $downloader->update($initial, $target, $targetDir);
          } else {
              $downloader->remove($initial, $targetDir);
              $this->download($target, $targetDir, 'source' === $installationSource);
          }
      }
code: public function update(PackageInterface $initial, PackageInterface $target, $targetDir)
      {
          $downloader = $this->getDownloaderForInstalledPackage($initial);
          if (!$downloader) {
              return;
          }
  
          $installationSource = $initial->getInstallationSource();
  
          if ('dist' === $installationSource) {
              $initialType = $initial->getDistType();
              $targetType  = $target->getDistType();
          } else {
              $initialType = $initial->getSourceType();
              $targetType  = $target->getSourceType();
          }
  
          // upgrading from a dist stable package to a dev package, force source reinstall
          if ($target->isDev() && 'dist' === $installationSource) {
              $downloader->remove($initial, $targetDir);
              $this->download($target, $targetDir);
  
              return;
          }
  
          if ($initialType === $targetType) {
              $target->setInstallationSource($installationSource);
              $downloader->update($initial, $target, $targetDir);
          } else {
              $downloader->remove($initial, $targetDir);
              $this->download($target, $targetDir, 'source' === $installationSource);
          }
      }
code_tokens: public function update ( PackageInterface $ initial , PackageInterface $ target , $ targetDir ) { $ downloader = $ this -> getDownloaderForInstalledPackage ( $ initial ) ; if ( ! $ downloader ) { return ; } $ installationSource = $ initial -> getInstallationSource ( ) ; if ( 'dist' === $ installationSource ) { $ initialType = $ initial -> getDistType ( ) ; $ targetType = $ target -> getDistType ( ) ; } else { $ initialType = $ initial -> getSourceType ( ) ; $ targetType = $ target -> getSourceType ( ) ; } // upgrading from a dist stable package to a dev package, force source reinstall if ( $ target -> isDev ( ) && 'dist' === $ installationSource ) { $ downloader -> remove ( $ initial , $ targetDir ) ; $ this -> download ( $ target , $ targetDir ) ; return ; } if ( $ initialType === $ targetType ) { $ target -> setInstallationSource ( $ installationSource ) ; $ downloader -> update ( $ initial , $ target , $ targetDir ) ; } else { $ downloader -> remove ( $ initial , $ targetDir ) ; $ this -> download ( $ target , $ targetDir , 'source' === $ installationSource ) ; } }
docstring: Updates package from initial to target version.
  
  @param PackageInterface $initial   initial package version
  @param PackageInterface $target    target package version
  @param string           $targetDir target dir
  
  @throws \InvalidArgumentException if initial package is not installed
docstring_tokens: Updates package from initial to target version .