find_matching (Gem::SpecFetcher)

    # File lib/rubygems/spec_fetcher.rb, line 120
      def find_matching(dependency, all = false, matching_platform = true, prerelease = false)
        found = {}

        list(all, prerelease).each do |source_uri, specs|
          found[source_uri] = specs.select do |spec_name, version, spec_platform|
            dependency =~ Gem::Dependency.new(spec_name, version) and
              (not matching_platform or Gem::Platform.match(spec_platform))
          end
        end

        specs_and_sources = []

        found.each do |source_uri, specs|
          uri_str = source_uri.to_s
          specs_and_sources.push(*specs.map { |spec| [spec, uri_str] })
        end

        specs_and_sources
      end