docs: public void start() throws IOException {
      lock.lock();
      try {
        if (process != null) {
          return;
        }
        process = new CommandLine(this.executable, args.toArray(new String[] {}));
        process.setEnvironmentVariables(environment);
        process.copyOutputTo(getOutputStream());
        process.executeAsync();
  
        waitUntilAvailable();
      } finally {
        lock.unlock();
      }
    }