code: func (s *Serf) decodeTags(buf []byte) map[string]string {
  	tags := make(map[string]string)
  
  	// Backwards compatibility mode
  	if len(buf) == 0 || buf[0] != tagMagicByte {
  		tags["role"] = string(buf)
  		return tags
  	}
  
  	// Decode the tags
  	r := bytes.NewReader(buf[1:])
  	dec := codec.NewDecoder(r, &codec.MsgpackHandle{})
  	if err := dec.Decode(&tags); err != nil {
  		s.logger.Printf("[ERR] serf: Failed to decode tags: %v", err)
  	}
  	return tags
  }
docs: // decodeTags is used to decode a tag map