code: func decodeCompoundMessage(buf []byte) ([][]byte, error) {
  	var cMsg CompoundMessage
  	if err := proto.Unmarshal(buf, &cMsg); err != nil {
  		return nil, err
  	}
  
  	parts := make([][]byte, 0, len(cMsg.Messages))
  	for _, m := range cMsg.Messages {
  		parts = append(parts, m.Payload)
  	}
  
  	return parts, nil
  }
docs: // decodeCompoundMessage splits a compound message and returns
  // the slices of individual messages. Returns any potential error.