code: public String create(final String path, Object data, final List<ACL> acl, final CreateMode mode) {
          if (path == null) {
              throw new NullPointerException("Missing value for path");
          }
          if (acl == null || acl.size() == 0) {
              throw new NullPointerException("Missing value for ACL");
          }
          final byte[] bytes = data == null ? null : serialize(data);
  
          return retryUntilConnected(new Callable<String>() {
              @Override
              public String call() throws Exception {
                  return _connection.create(path, bytes, acl, mode);
              }
          });
  
      }
docs: Create a node with ACL.
  
  @param path
  @param data
  @param acl
  @param mode
  @return create node's path
  @throws ZkInterruptedException
  if operation was interrupted, or a required reconnection got interrupted
  @throws IllegalArgumentException
  if called from anything except the ZooKeeper event thread
  @throws ZkException
  if any ZooKeeper exception occurred
  @throws RuntimeException
  if any other exception occurs