class Gem::Commands::UninstallCommand

def uninstall_specific

def uninstall_specific
  deplist = Gem::DependencyList.new
  original_gem_version = {}
  get_all_gem_names_and_versions.each do |name, version|
    original_gem_version[name] = version || options[:version]
    gem_specs = Gem::Specification.find_all_by_name(name, original_gem_version[name])
    if gem_specs.empty?
      say("Gem '#{name}' is not installed")
    else
      gem_specs.reject!(&:default_gem?) if gem_specs.size > 1
      gem_specs.each do |spec|
        deplist.add spec
      end
    end
  end
  deps = deplist.strongly_connected_components.flatten.reverse
  gems_to_uninstall = {}
  deps.each do |dep|
    if original_gem_version[dep.name] == Gem::Requirement.default
      next if gems_to_uninstall[dep.name]
      gems_to_uninstall[dep.name] = true
    else
      options[:version] = dep.version
    end
    uninstall_gem(dep.name)
  end
end