class Bundler::Resolver::Molinillo::VersionConflict

def message

def message
  conflicts.sort.reduce(String.new) do |o, (name, conflict)|
    o << %(Bundler could not find compatible versions for gem "#{name}":\n)
    if conflict.locked_requirement
      o << %(  In snapshot (#{Bundler.default_lockfile.basename}):\n)
      o << %(    #{printable_dep(conflict.locked_requirement)}\n)
      o << %(\n)
    end
    o << %(  In Gemfile:\n)
    o << conflict.requirement_trees.sort_by {|t| t.reverse.map(&:name) }.map do |tree|
      t = String.new
      depth = 2
      tree.each do |req|
        t << "  " * depth << req.to_s
        unless tree.last == req
          if spec = conflict.activated_by_name[req.name]
            t << %( was resolved to #{spec.version}, which)
          end
          t << %( depends on)
        end
        t << %(\n)
        depth += 1
      end
      t
    end.join("\n")
    if name == "bundler"
      o << %(\n  Current Bundler version:\n    bundler (#{Bundler::VERSION}))
      other_bundler_required = !conflict.requirement.requirement.satisfied_by?(Gem::Version.new Bundler::VERSION)
    end
    if name == "bundler" && other_bundler_required
      o << "\n"
      o << "This Gemfile requires a different version of Bundler.\n"
      o << "Perhaps you need to update Bundler by running `gem install bundler`?\n"
    end
    if conflict.locked_requirement
      o << "\n"
      o << %(Running `bundle update` will rebuild your snapshot from scratch, using only\n)
      o << %(the gems in your Gemfile, which may resolve the conflict.\n)
    elsif !conflict.existing
      o << "\n"
      if conflict.requirement_trees.first.size > 1
        o << "Could not find gem '#{conflict.requirement}', which is required by "
        o << "gem '#{conflict.requirement_trees.first[-2]}', in any of the sources."
      else
        o << "Could not find gem '#{conflict.requirement}' in any of the sources\n"
      end
    end
    o
  end
end

def printable_dep(dep)

def printable_dep(dep)
  if dep.is_a?(Bundler::Dependency)
    DepProxy.new(dep, dep.platforms.join(", ")).to_s.strip
  else
    dep.to_s
  end
end