https://github.com/apache/incubator-dubbo/blob/04c93e8b98250230c4d22423372acd1c29e2c770/dubbo-remoting/dubbo-remoting-zookeeper/src/main/java/com/alibaba/dubbo/remoting/zookeeper/curator/CuratorZookeeperClient.java#L49

rt
private volatile ChildListener listener;
        public CuratorWatcherImpl(ChildListener listener) {
            this.listener = listener;
        }
        public void unwatch() {
            this.listener = null;
        }
        @Override
        public void process(WatchedEvent event) throws Exception {
            if (listener != null) {
                String path = event.getPath() == null ? "" : event.getPath();
                listener.childChanged(path,
                        
                        
                        
                        StringUtils.isNotEmpty(path)
                                ? client.getChildren().usingWatcher(this).forPath(path)
                                : Collections.<String>emptyList());
            }
        }
    }
}