code: public void getChildren(final String path, Watcher watcher,
              ChildrenCallback cb, Object ctx) {
          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.getChildren);
          GetChildrenRequest request = new GetChildrenRequest();
          request.setPath(serverPath);
          request.setWatch(watcher != null);
          GetChildrenResponse response = new GetChildrenResponse();
          cnxn.queuePacket(h, new ReplyHeader(), request, response, cb,
                  clientPath, serverPath, ctx, wcb);
      }
docs: The Asynchronous version of getChildren. The request doesn't actually
  until the asynchronous callback is called.
  
  @see #getChildren(String, Watcher)