code: public void delete(final String path, int version)
              throws InterruptedException, KeeperException {
          verbotenThreadCheck();
          final String clientPath = path;
          PathUtils.validatePath(clientPath);
  
          final String serverPath;
  
          // maintain semantics even in chroot case
          // specifically - root cannot be deleted
          // I think this makes sense even in chroot case.
          if (clientPath.equals("/")) {
              // a bit of a hack, but delete(/) will never succeed and ensures
              // that the same semantics are maintained
              serverPath = clientPath;
          } else {
              serverPath = prependChroot(clientPath);
          }
  
          RequestHeader h = new RequestHeader();
          h.setType(ZooDefs.OpCode.delete);
          DeleteRequest request = new DeleteRequest();
          request.setPath(serverPath);
          request.setVersion(version);
          ReplyHeader r = cnxn.submitRequest(h, request, null, null);
          if (r.getErr() != 0) {
              throw KeeperException.create(KeeperException.Code.get(r.getErr()),
                      clientPath);
          }
      }
docs: Delete the node with the given path. The call will succeed if such a node
  exists, and the given version matches the node's version (if the given
  version is -1, it matches any node's versions).
  <p>
  A KeeperException with error code KeeperException.NoNode will be thrown
  if the nodes does not exist.
  <p>
  A KeeperException with error code KeeperException.BadVersion will be
  thrown if the given version does not match the node's version.
  <p>
  A KeeperException with error code KeeperException.NotEmpty will be thrown
  if the node has children.
  <p>
  This operation, if successful, will trigger all the watches on the node
  of the given path left by exists API calls, and the watches on the parent
  node left by getChildren API calls.
  
  @param path
  the path of the node to be deleted.
  @param version
  the expected node version.
  @throws InterruptedException
  IF the server transaction is interrupted
  @throws KeeperException
  If the server signals an error with a non-zero return code.
  @throws IllegalArgumentException
  if an invalid path is specified