/**
  * Register package, calls block, removing the package before returning or throwing
  *
  * @param  string $package
  * @param  function(string): void $block
  */
 private static function withPackage($package, $block)
 {
     Commands::registerPackage($package);
     try {
         $block($package);
     } finally {
         Commands::removePackage($package);
     }
 }