code: func (m *Memberlist) getNextMessage() (msgHandoff, bool) {
  	m.msgQueueLock.Lock()
  	defer m.msgQueueLock.Unlock()
  
  	if el := m.highPriorityMsgQueue.Back(); el != nil {
  		m.highPriorityMsgQueue.Remove(el)
  		msg := el.Value.(msgHandoff)
  		return msg, true
  	} else if el := m.lowPriorityMsgQueue.Back(); el != nil {
  		m.lowPriorityMsgQueue.Remove(el)
  		msg := el.Value.(msgHandoff)
  		return msg, true
  	}
  	return msgHandoff{}, false
  }
docs: // getNextMessage returns the next message to process in priority order, using LIFO