code: public function doDownload(PackageInterface $package, $path, $url)
      {
          $hgUtils = new HgUtils($this->io, $this->config, $this->process);
  
          $cloneCommand = function ($url) use ($path) {
              return sprintf('hg clone %s %s', ProcessExecutor::escape($url), ProcessExecutor::escape($path));
          };
  
          $hgUtils->runCommand($cloneCommand, $url, $path);
  
          $ref = ProcessExecutor::escape($package->getSourceReference());
          $command = sprintf('hg up %s', $ref);
          if (0 !== $this->process->execute($command, $ignoredOutput, realpath($path))) {
              throw new \RuntimeException('Failed to execute ' . $command . "\n\n" . $this->process->getErrorOutput());
          }
      }
docs: {@inheritDoc}