code: func CanServersUnderstandProtocol(members []serf.Member, version uint8) (bool, error) {
  	numServers, numWhoGrok := 0, 0
  	for _, m := range members {
  		if m.Tags["role"] != "consul" {
  			continue
  		}
  		numServers++
  
  		vsnMin, err := strconv.Atoi(m.Tags["vsn_min"])
  		if err != nil {
  			return false, err
  		}
  
  		vsnMax, err := strconv.Atoi(m.Tags["vsn_max"])
  		if err != nil {
  			return false, err
  		}
  
  		v := int(version)
  		if (v >= vsnMin) && (v <= vsnMax) {
  			numWhoGrok++
  		}
  	}
  	return (numServers > 0) && (numWhoGrok == numServers), nil
  }
docs: // CanServersUnderstandProtocol checks to see if all the servers in the given
  // list understand the given protocol version. If there are no servers in the
  // list then this will return false.