# File lib/bundler/resolver.rb, line 77
    def initialize(sources, source_requirements)
      @errors = {}
      @stack  = []
      @specs  = Hash.new { |h,k| h[k] = [] }
      @by_gem = source_requirements
      @cache  = {}
      @index  = {}

      sources.each do |source|
        source.gems.each do |name, specs|
          # Hack to work with a regular Gem::SourceIndex
          specs = [specs] unless specs.is_a?(Array)
          specs.compact.each do |spec|
            next if @specs[spec.name].any? { |s| s.version == spec.version && s.platform == spec.platform }
            @specs[spec.name] << spec
          end
        end
      end
    end