code: func (z *Message) DecodeMsg(dc *msgp.Reader) (err error) {
  	var zb0001 uint32
  	zb0001, err = dc.ReadArrayHeader()
  	if err != nil {
  		err = msgp.WrapError(err)
  		return
  	}
  	if zb0001 != 4 {
  		err = msgp.ArrayError{Wanted: 4, Got: zb0001}
  		return
  	}
  	z.Tag, err = dc.ReadString()
  	if err != nil {
  		err = msgp.WrapError(err, "Tag")
  		return
  	}
  	z.Time, err = dc.ReadInt64()
  	if err != nil {
  		err = msgp.WrapError(err, "Time")
  		return
  	}
  	z.Record, err = dc.ReadIntf()
  	if err != nil {
  		err = msgp.WrapError(err, "Record")
  		return
  	}
  	var zb0002 uint32
  	zb0002, err = dc.ReadMapHeader()
  	if err != nil {
  		err = msgp.WrapError(err, "Option")
  		return
  	}
  	if z.Option == nil {
  		z.Option = make(map[string]string, zb0002)
  	} else if len(z.Option) > 0 {
  		for key := range z.Option {
  			delete(z.Option, key)
  		}
  	}
  	for zb0002 > 0 {
  		zb0002--
  		var za0001 string
  		var za0002 string
  		za0001, err = dc.ReadString()
  		if err != nil {
  			err = msgp.WrapError(err, "Option")
  			return
  		}
  		za0002, err = dc.ReadString()
  		if err != nil {
  			err = msgp.WrapError(err, "Option", za0001)
  			return
  		}
  		z.Option[za0001] = za0002
  	}
  	return
  }
docs: // DecodeMsg implements msgp.Decodable