code: func NewMessage(hdr *Header, msg []byte) *Message {
  	var h Header
  	if hdr != nil {
  		h = *hdr
  	}
  
  	if h.Timestamp.IsZero() {
  		h.Timestamp = time.Now().UTC()
  	}
  
  	if h.Version == 0 {
  		h.Version = 1
  	}
  
  	if msg != nil {
  		m := make([]byte, len(msg))
  		copy(m, msg)
  		msg = m
  	}
  
  	return &Message{Header: h, Msg: msg}
  }
docs: // NewMessage builds a new message from a copy of the header and message.