class Gem::Resolver
def amount_constrained(dependency)
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