code: func New(logger *log.Logger, shutdownCh chan struct{}, clusterInfo ManagerSerfCluster, connPoolPinger Pinger) (m *Manager) {
  	m = new(Manager)
  	m.logger = logger
  	m.clusterInfo = clusterInfo       // can't pass *consul.Client: import cycle
  	m.connPoolPinger = connPoolPinger // can't pass *consul.ConnPool: import cycle
  	m.rebalanceTimer = time.NewTimer(clientRPCMinReuseDuration)
  	m.shutdownCh = shutdownCh
  	atomic.StoreInt32(&m.offline, 1)
  
  	l := serverList{}
  	l.servers = make([]*metadata.Server, 0)
  	m.saveServerList(l)
  	return m
  }
docs: // New is the only way to safely create a new Manager struct.