# File lib/rubygems/dependency_list.rb, line 81
    def dependency_order
      result = []
      disabled = {}
      predecessors = build_predecessors
      while disabled.size < @specs.size
        candidate = @specs.find { |spec|
          ! disabled[spec.full_name] &&
            active_count(predecessors[spec.full_name], disabled) == 0
        }
        if candidate
          disabled[candidate.full_name] = true
          result << candidate
        elsif candidate = @specs.find { |spec| ! disabled[spec.full_name] }
          # This case handles circular dependencies.  Just choose a
          # candidate and move on.
          disabled[candidate.full_name] = true
          result << candidate
        else
          # We should never get here, but just in case we will terminate 
          # the loop.
          break
        end
      end
      result
    end