class Gem::Resolver::ActivationRequest

def == other # :nodoc:

:nodoc:
def == other # :nodoc:
  case other
  when Gem::Specification
    @spec == other
  when Gem::Resolver::ActivationRequest
    @spec == other.spec && @request == other.request
  else
    false
  end
end

def development?

def development?
  @request.development?
end

def download path

def download path
  Gem.ensure_gem_subdirectories path
  if @spec.respond_to? :sources
    exception = nil
    path = @spec.sources.find{ |source|
      begin
        source.download full_spec, path
      rescue exception
      end
    }
    return path      if path
    raise  exception if exception
  elsif @spec.respond_to? :source
    source = @spec.source
    source.download full_spec, path
  else
    source = Gem.sources.first
    source.download full_spec, path
  end
end

def full_name

def full_name
  @spec.full_name
end

def full_spec

def full_spec
  Gem::Specification === @spec ? @spec : @spec.spec
end

def initialize spec, request, others_possible = true

def initialize spec, request, others_possible = true
  @spec = spec
  @request = request
  @others_possible = others_possible
end

def inspect # :nodoc:

:nodoc:
def inspect # :nodoc:
  others =
    case @others_possible
    when true then # TODO remove at RubyGems 3
      ' (others possible)'
    when false then # TODO remove at RubyGems 3
      nil
    else
      unless @others_possible.empty? then
        others = @others_possible.map { |s| s.full_name }
        " (others possible: #{others.join ', '})"
      end
    end
  '#<%s for %p from %s%s>' % [
    self.class, @spec, @request, others
  ]
end

def installed?

def installed?
  case @spec
  when Gem::Resolver::VendorSpecification then
    true
  else
    this_spec = full_spec
    Gem::Specification.any? do |s|
      s == this_spec
    end
  end
end

def name

def name
  @spec.name
end

def others_possible?

def others_possible?
  case @others_possible
  when true, false then
    @others_possible
  else
    not @others_possible.empty?
  end
end

def parent

def parent
  @request.requester
end

def pretty_print q # :nodoc:

:nodoc:
def pretty_print q # :nodoc:
  q.group 2, '[Activation request', ']' do
    q.breakable
    q.pp @spec
    q.breakable
    q.text ' for '
    q.pp @request
    case @others_possible
    when false then
    when true then
      q.breakable
      q.text 'others possible'
    else
      unless @others_possible.empty? then
        q.breakable
        q.text 'others '
        q.pp @others_possible.map { |s| s.full_name }
      end
    end
  end
end

def version

def version
  @spec.version
end