# File lib/memcache.rb, line 253
  def get_some(keys, opts = {})
    keys = keys.collect {|key| key.to_s}
    records = opts[:disable] ? {} : self.multi_get(keys, opts)
    if opts[:validation]
      records.delete_if do |key, value|
        not opts[:validation].call(key, value)
      end
    end

    keys_to_fetch = keys - records.keys
    method = opts[:overwrite] ? :set : :add
    if keys_to_fetch.any?
      yield(keys_to_fetch).each do |key, value|
        begin
          self.send(method, key, value, opts) unless opts[:disable] or opts[:disable_write]
        rescue Memcache::Error => e
          raise if opts[:strict_write]
          $stderr.puts "Memcache error in get_some: #{e.class} #{e.to_s} on key '#{key}' while storing value: #{value}"
        end
        records[key] = value
      end
    end
    records
  end