code: func NewZookeeperTreeCache(conn *zk.Conn, path string, events chan ZookeeperTreeCacheEvent, logger log.Logger) *ZookeeperTreeCache {
  	tc := &ZookeeperTreeCache{
  		conn:   conn,
  		prefix: path,
  		events: events,
  		stop:   make(chan struct{}),
  
  		logger: logger,
  	}
  	tc.head = &zookeeperTreeCacheNode{
  		events:   make(chan zk.Event),
  		children: map[string]*zookeeperTreeCacheNode{},
  		stopped:  true,
  	}
  	go tc.loop(path)
  	return tc
  }
docs: // NewZookeeperTreeCache creates a new ZookeeperTreeCache for a given path.