code: func (m *Memberlist) getBroadcasts(overhead, limit int) [][]byte {
  	// Get memberlist messages first
  	toSend := m.broadcasts.GetBroadcasts(overhead, limit)
  
  	// Check if the user has anything to broadcast
  	d := m.config.Delegate
  	if d != nil {
  		// Determine the bytes used already
  		bytesUsed := 0
  		for _, msg := range toSend {
  			bytesUsed += len(msg) + overhead
  		}
  
  		// Check space remaining for user messages
  		avail := limit - bytesUsed
  		if avail > overhead+userMsgOverhead {
  			userMsgs := d.GetBroadcasts(overhead+userMsgOverhead, avail)
  
  			// Frame each user message
  			for _, msg := range userMsgs {
  				buf := make([]byte, 1, len(msg)+1)
  				buf[0] = byte(userMsg)
  				buf = append(buf, msg...)
  				toSend = append(toSend, buf)
  			}
  		}
  	}
  	return toSend
  }
docs: // getBroadcasts is used to return a slice of broadcasts to send up to
  // a maximum byte size, while imposing a per-broadcast overhead. This is used
  // to fill a UDP packet with piggybacked data