# File lib/aws/dynamo_db/batch_get.rb, line 66
      def table table, attributes, items

        table = table.is_a?(Table) ? table.name : table.to_s

        attributes = attributes == :all ? nil : [attributes].flatten

        keys = items.collect do |item|
          case item
          when Item then item_key_hash(item)
          when Array 
            {
              :hash_key_element => format_attribute_value(item[0]),
              :range_key_element => format_attribute_value(item[1]),
            }
          else
            { :hash_key_element => format_attribute_value(item) }
          end
        end

        ## ensure we don't receive 2 different lists of attributes for
        ## the same table

        if 
          @request_items.has_key?(table) and 
          @request_items[table][:attributes_to_get] != attributes
        then
          msg = "When batch getting attributes, you may only provide " +
            "1 list of attributes per table, but the `#{table}` table " +
            "has received reqeusts for 2 different sets of attributes"
          raise ArgumentError, msg
        end

        ## merge attributes and items with the request items

        @request_items[table] ||= { :keys => [] } 
        @request_items[table][:attributes_to_get] = attributes if attributes
        @request_items[table][:keys] += keys

        nil

      end