code: public List<String> getChildren(final String path, Watcher watcher,
              Stat stat) throws KeeperException, InterruptedException {
          verbotenThreadCheck();
          final String clientPath = path;
          PathUtils.validatePath(clientPath);
  
          // the watch contains the un-chroot path
          WatchRegistration wcb = null;
          if (watcher != null) {
              wcb = new ChildWatchRegistration(watcher, clientPath);
          }
  
          final String serverPath = prependChroot(clientPath);
  
          RequestHeader h = new RequestHeader();
          h.setType(ZooDefs.OpCode.getChildren2);
          GetChildren2Request request = new GetChildren2Request();
          request.setPath(serverPath);
          request.setWatch(watcher != null);
          GetChildren2Response response = new GetChildren2Response();
          ReplyHeader r = cnxn.submitRequest(h, request, response, wcb);
          if (r.getErr() != 0) {
              throw KeeperException.create(KeeperException.Code.get(r.getErr()),
                      clientPath);
          }
          if (stat != null) {
              DataTree.copyStat(response.getStat(), stat);
          }
          return response.getChildren();
      }
docs: For the given znode path return the stat and children list.
  <p>
  If the watch is non-null and the call is successful (no exception is
  thrown), a watch will be left on the node with the given path. The watch
  willbe triggered by a successful operation that deletes the node of the
  given path or creates/delete a child under the node.
  <p>
  The list of children returned is not sorted and no guarantee is provided
  as to its natural or lexical order.
  <p>
  A KeeperException with error code KeeperException.NoNode will be thrown
  if no node with the given path exists.
  
  @since 3.3.0
  
  @param path
  @param watcher
  explicit watcher
  @param stat
  stat of the znode designated by path
  @return an unordered array of children of the node with the given path
  @throws InterruptedException
  If the server transaction is interrupted.
  @throws KeeperException
  If the server signals an error with a non-zero error code.
  @throws IllegalArgumentException
  if an invalid path is specified