code: func (fw *Framework) NewRequestFromMessage(version string, msg *Message) (req protocol.Request, err error) {
  	if !(msg.Type() == "request" || msg.Type() == "direct_request") {
  		err = fmt.Errorf("Cannot use `%s` message to construct a Request", msg.Type())
  		return
  	}
  
  	req, err = fw.NewRequest(version, msg.Agent, msg.SenderID, msg.CallerID, msg.TTL, msg.RequestID, msg.Collective())
  	if err != nil {
  		return req, fmt.Errorf("Could not create a Request from a Message: %s", err)
  	}
  
  	req.SetMessage(msg.Payload)
  
  	if msg.Filter == nil || msg.Filter.Empty() {
  		req.NewFilter()
  	} else {
  		req.SetFilter(msg.Filter)
  	}
  
  	return
  }
docs: // NewRequestFromMessage creates a new Request with the Message settings preloaded complying with a specific protocol version like protocol.RequestV1