    # File lib/amqp/channel.rb, line 811
        def queue(name = AMQ::Protocol::EMPTY_STRING, opts = {}, &block)
          raise ArgumentError.new("queue name must not be nil; if you want broker to generate queue name for you, pass an empty string") if name.nil?

          if name && !name.empty? && (queue = find_queue(name))
            extended_opts = Queue.add_default_options(name, opts, block)

            validate_parameters_match!(queue, extended_opts, :queue)

            block.call(queue) if block
            queue
          else
            self.queue!(name, opts, &block)
          end
        end