docs: def update_message(self, queue_name, message_id, pop_receipt, visibility_timeout, 
                         content=None, timeout=None):
          '''
          Updates the visibility timeout of a message. You can also use this
          operation to update the contents of a message.
  
          This operation can be used to continually extend the invisibility of a 
          queue message. This functionality can be useful if you want a worker role 
          to “lease” a queue message. For example, if a worker role calls get_messages 
          and recognizes that it needs more time to process a message, it can 
          continually extend the message’s invisibility until it is processed. If 
          the worker role were to fail during processing, eventually the message 
          would become visible again and another worker role could process it.
  
          :param str queue_name:
              The name of the queue containing the message to update.
          :param str message_id:
              The message id identifying the message to update.
          :param str pop_receipt:
              A valid pop receipt value returned from an earlier call
              to the :func:`~get_messages` or :func:`~update_message` operation.
          :param int visibility_timeout:
              Specifies the new visibility timeout value, in seconds,
              relative to server time. The new value must be larger than or equal
              to 0, and cannot be larger than 7 days. The visibility timeout of a
              message cannot be set to a value later than the expiry time. A
              message can be updated until it has been deleted or has expired.
          :param obj content:
              Message content. Allowed type is determined by the encode_function 
              set on the service. Default is str.
          :param int timeout:
              The server timeout, expressed in seconds.
          :return: 
              A list of :class:`~azure.storage.queue.models.QueueMessage` objects. Note that 
              only time_next_visible and pop_receipt will be populated.
          :rtype: list of :class:`~azure.storage.queue.models.QueueMessage`
          '''
          _validate_not_none('queue_name', queue_name)
          _validate_not_none('message_id', message_id)
          _validate_not_none('pop_receipt', pop_receipt)
          _validate_not_none('visibility_timeout', visibility_timeout)
          request = HTTPRequest()
          request.method = 'PUT'
          request.host = self._get_host()
          request.path = _get_path(queue_name, True, message_id)
          request.query = [
              ('popreceipt', _to_str(pop_receipt)),
              ('visibilitytimeout', _int_to_str(visibility_timeout)),
              ('timeout', _int_to_str(timeout))
          ]
  
          if content is not None:
              request.body = _get_request_body(_convert_queue_message_xml(content, self.encode_function))
  
          response = self._perform_request(request)
          return _parse_queue_message_from_headers(response)