code: func (c *cluster) addNode(node *Node) error {
  	// If the node being added is the coordinator, set it for this node.
  	if node.IsCoordinator {
  		c.Coordinator = node.ID
  	}
  
  	// add to cluster
  	if !c.addNodeBasicSorted(node) {
  		return nil
  	}
  
  	// add to topology
  	if c.Topology == nil {
  		return fmt.Errorf("Cluster.Topology is nil")
  	}
  	if !c.Topology.addID(node.ID) {
  		return nil
  	}
  	c.Topology.nodeStates[node.ID] = node.State
  
  	// save topology
  	return c.saveTopology()
  }
docs: // addNode adds a node to the Cluster and updates and saves the
  // new topology. unprotected.