# File lib/dnstraverse/referral.rb, line 189
    def resolve_calculate
      Log.debug { "Calculating resolution: #{self}" }
      # create stats_resolve containing all the statistics of the resolution
      @stats_resolve = Hash.new
      if noglue? then # in-bailiwick referral without glue
        r = DNSTraverse::Response::NoGlue.new(:qname => @qname,
                                              :qclass => @qclass,
                                              :qtype => @qtype,
                                              :server => @server,
                                              :ip => @parent_ip,
                                              :bailiwick => @bailiwick)
        @stats_resolve[r.stats_key] = { :prob => 1.0, :response => r,
          :referral => self }
      else
        # normal resolve - combine children's statistics in to @stats_resolve
        stats_calculate_children(@stats_resolve, @resolves, 1.0)
      end
      # now use this data to work out %age of each IP address returned
      @serverweights = Hash.new
      @stats_resolve.each_pair do |key, data|
        # key = IP or key:blah, data is hash containing :prob, etc.
        if data[:response].status == :answered then # RR records
          # there were some answers - so add the probabilities in
          answers = data[:response].answers # weight RRs evenly
          for rr in answers do
            @serverweights[rr.address.to_s]||= 0
            @serverweights[rr.address.to_s]+= data[:prob] / answers.length
          end
        else
          # there were no answers - use the special key and record probabilities
          @serverweights[key]||= 0
          @serverweights[key]+= data[:prob]
        end
      end
      @serverips = @serverweights.keys
      Log.debug { "Calculating resolution (answer): #{@serverips.join(',')}" }
    end