    # File lib/rubygems/commands/unpack_command.rb, line 68
      def get_path(gemname, version_req)
        return gemname if gemname =~ /\.gem$/i

        specs = Gem::source_index.search(/\A#{gemname}\z/, version_req)

        selected = specs.sort_by { |s| s.version }.last

        return nil if selected.nil?

        # We expect to find (basename).gem in the 'cache' directory.
        # Furthermore, the name match must be exact (ignoring case).
        if gemname =~ /^#{selected.name}$/i
          filename = selected.full_name + '.gem'
          path = nil

          Gem.path.find do |gem_dir|
            path = File.join gem_dir, 'cache', filename
            File.exist? path
          end

          path
        else
          nil
        end
      end