code: func (n *Node) CanRemoveMember(id uint64) bool {
  	members := n.cluster.Members()
  	nreachable := 0 // reachable managers after removal
  
  	for _, m := range members {
  		if m.RaftID == id {
  			continue
  		}
  
  		// Local node from where the remove is issued
  		if m.RaftID == n.Config.ID {
  			nreachable++
  			continue
  		}
  
  		if n.transport.Active(m.RaftID) {
  			nreachable++
  		}
  	}
  
  	nquorum := (len(members)-1)/2 + 1
  
  	return nreachable >= nquorum
  }
docs: // CanRemoveMember checks if a member can be removed from
  // the context of the current node.