docs: def _convert_xml_to_queue_messages(response, decode_function):
      '''
      <?xml version="1.0" encoding="utf-8"?>
      <QueueMessagesList>
          <QueueMessage>
            <MessageId>string-message-id</MessageId>
            <InsertionTime>insertion-time</InsertionTime>
            <ExpirationTime>expiration-time</ExpirationTime>
            <PopReceipt>opaque-string-receipt-data</PopReceipt>
            <TimeNextVisible>time-next-visible</TimeNextVisible>
            <DequeueCount>integer</DequeueCount>
            <MessageText>message-body</MessageText>
          </QueueMessage>
      </QueueMessagesList>
      '''
      if response is None or response.body is None:
          return response
  
      messages = list()
      list_element = ETree.fromstring(response.body)
  
      for message_element in list_element.findall('QueueMessage'):
          message = QueueMessage()
  
          message.id = message_element.findtext('MessageId')
          message.dequeue_count = message_element.findtext('DequeueCount')
  
          message.content = decode_function(message_element.findtext('MessageText'))
  
          message.insertion_time = parser.parse(message_element.findtext('InsertionTime'))
          message.expiration_time = parser.parse(message_element.findtext('ExpirationTime'))
          
          message.pop_receipt = message_element.findtext('PopReceipt')
  
          time_next_visible = message_element.find('TimeNextVisible')
          if time_next_visible is not None:
              message.time_next_visible = parser.parse(time_next_visible.text)
  
          # Add message to list
          messages.append(message)
  
      return messages