class Gem::Resolver

def amount_constrained(dependency)

before dependencies that are unconstrained
are given very negative values, so they _always_ sort first,
dependencies w/ 0 or 1 possibilities (ignoring version requirements)

a number closer to 0 means the dependency is less constraining
returns an integer \in (-\infty, 0]
def amount_constrained(dependency)
  @amount_constrained ||= {}
  @amount_constrained[dependency.name] ||= begin
    name_dependency = Gem::Dependency.new(dependency.name)
    dependency_request_for_name = Gem::Resolver::DependencyRequest.new(name_dependency, dependency.requester)
    all = @set.find_all(dependency_request_for_name).size
    if all <= 1
      all - SINGLE_POSSIBILITY_CONSTRAINT_PENALTY
    else
      search = search_for(dependency).size
      search - all
    end
  end
end