code: func (s *Serf) handleNodeConflict(existing, other *memberlist.Node) {
  	// Log a basic warning if the node is not us...
  	if existing.Name != s.config.NodeName {
  		s.logger.Printf("[WARN] serf: Name conflict for '%s' both %s:%d and %s:%d are claiming",
  			existing.Name, existing.Addr, existing.Port, other.Addr, other.Port)
  		return
  	}
  
  	// The current node is conflicting! This is an error
  	s.logger.Printf("[ERR] serf: Node name conflicts with another node at %s:%d. Names must be unique! (Resolution enabled: %v)",
  		other.Addr, other.Port, s.config.EnableNameConflictResolution)
  
  	// If automatic resolution is enabled, kick off the resolution
  	if s.config.EnableNameConflictResolution {
  		go s.resolveNodeConflict()
  	}
  }
docs: // handleNodeConflict is invoked when a join detects a conflict over a name.
  // This means two different nodes (IP/Port) are claiming the same name. Memberlist
  // will reject the "new" node mapping, but we can still be notified.