class Bundler::Resolver

def find_names_to_relax(incompatibility)

def find_names_to_relax(incompatibility)
  names_to_unlock = []
  names_to_allow_prereleases_for = []
  extended_explanation = nil
  while incompatibility.conflict?
    cause = incompatibility.cause
    incompatibility = cause.incompatibility
    incompatibility.terms.each do |term|
      package = term.package
      name = package.name
      if base_requirements[name]
        names_to_unlock << name
      elsif package.ignores_prereleases?
        names_to_allow_prereleases_for << name
      end
      no_versions_incompat = [cause.incompatibility, cause.satisfier].find {|incompat| incompat.cause.is_a?(PubGrub::Incompatibility::NoVersions) }
      next unless no_versions_incompat
      extended_explanation = no_versions_incompat.extended_explanation
    end
  end
  [names_to_unlock.uniq, names_to_allow_prereleases_for.uniq, extended_explanation]
end