code: func (msg *Message) String() string {
  	if msg == nil {
  		return ""
  	}
  
  	tags, err := msg.TypeTags()
  	if err != nil {
  		return ""
  	}
  
  	formatString := "%s %s"
  	var args []interface{}
  	args = append(args, msg.Address)
  	args = append(args, tags)
  
  	for _, arg := range msg.Arguments {
  		switch arg.(type) {
  		case bool, int32, int64, float32, float64, string:
  			formatString += " %v"
  			args = append(args, arg)
  
  		case nil:
  			formatString += " %s"
  			args = append(args, "Nil")
  
  		case []byte:
  			formatString += " %s"
  			args = append(args, "blob")
  
  		case Timetag:
  			formatString += " %d"
  			timeTag := arg.(Timetag)
  			args = append(args, timeTag.TimeTag())
  		}
  	}
  
  	return fmt.Sprintf(formatString, args...)
  }
docs: // String implements the fmt.Stringer interface.