# File lib/bundler/resolver.rb, line 37
    def self.resolve(requirements, index, source_requirements = {})
      resolver = new(index, source_requirements)
      result = catch(:success) do
        resolver.resolve(requirements, {})
        output = resolver.errors.inject("") do |o, (conflict, (origin, requirement))|
          if origin
            o << "  Conflict on: #{conflict.inspect}:\n"
            o << "    * #{conflict} (#{origin.version}) activated by #{origin.required_by.first}\n"
            o << "    * #{requirement} required"
            if requirement.required_by.first
              o << " by #{requirement.required_by.first}\n"
            else
              o << " in Gemfile\n"
            end
          else
            o << "  #{requirement} not found in any of the sources\n"
            o << "      required by #{requirement.required_by.first}\n"
          end
          o << "    All possible versions of origin requirements conflict."
        end
        raise VersionConflict, "No compatible versions could be found for required dependencies:\n  #{output}"
        nil
      end
      SpecSet.new(result.values)
    end