class Gem::Commands::UpdateCommand

def which_to_update highest_installed_gems, gem_names, system = false

def which_to_update highest_installed_gems, gem_names, system = false
  result = []
  highest_installed_gems.each do |l_name, l_spec|
    next if not gem_names.empty? and
            gem_names.all? { |name| /#{name}/ !~ l_spec.name }
    dependency = Gem::Dependency.new l_spec.name, "> #{l_spec.version}"
    dependency.prerelease = options[:prerelease]
    fetcher = Gem::SpecFetcher.fetcher
    spec_tuples, _ = fetcher.search_for_dependency dependency
    matching_gems = spec_tuples.select do |g,_|
      g.name == l_name and g.match_platform?
    end
    highest_remote_gem = matching_gems.sort_by { |g,_| g.version }.last
    highest_remote_gem ||= [Gem::NameTuple.null]
    highest_remote_ver = highest_remote_gem.first.version
    if system or (l_spec.version < highest_remote_ver) then
      result << [l_spec.name, [l_spec.version, highest_remote_ver].max]
    end
  end
  result
end