public static List<String> listChildrenAndWatchForNewChildren(ZKWatcher zkw, String znode)
    throws KeeperException {
    try {
      return zkw.getRecoverableZooKeeper().getChildren(znode, zkw);
    } catch (KeeperException.NoNodeException ke) {
      LOG.debug(zkw.prefix("Unable to list children of znode " + znode + " "
        + "because node does not exist (not an error)"));
    } catch (KeeperException e) {
      LOG.warn(zkw.prefix("Unable to list children of znode " + znode + " "), e);
      zkw.keeperException(e);
    } catch (InterruptedException e) {
      LOG.warn(zkw.prefix("Unable to list children of znode " + znode + " "), e);
      zkw.interruptedException(e);
    }

    return null;
  }
Lists the children znodes of the specified znode. Also sets a watch on the specified znode
which will capture a NodeDeleted event on the specified znode as well as NodeChildrenChanged if
any children of the specified znode are created or deleted. Returns null if the specified node
does not exist. Otherwise returns a list of children of the specified node. If the node exists
but it has no children, an empty list will be returned.
@param zkw   zk reference
@param znode path of node to list and watch children of
@return list of children of the specified node, an empty list if the node exists but has no
        children, and null if the node does not exist
@throws KeeperException if unexpected zookeeper exception
hbase-zookeeper/src/main/java/org/apache/hadoop/hbase/zookeeper/ZKUtil.java