# File lib/aws/sqs/queue.rb, line 639
      def batch_change_visibility *args

        args = args.flatten

        if args.first.is_a?(Integer)
          timeout = args.shift
          messages = args.collect{|m| [m, timeout] }
        else
          messages = args.collect{|m| [m[:message], m[:visibility_timeout]] }
        end

        entries = []
        messages.each do |msg,timeout|
          handle = msg.is_a?(ReceivedMessage) ? msg.handle : msg
          entries << {
            :id => entries.size.to_s,
            :receipt_handle => handle,
            :visibility_timeout => timeout,
          }
        end

        response = client.change_message_visibility_batch(
          :queue_url => url, :entries => entries)

        failures = batch_failures(entries, response)

        raise Errors::BatchChangeVisibilityError.new(failures) unless
          failures.empty?

        nil

      end