code: public static void main(String[] args) {
          CitrusRemoteServer server = new CitrusRemoteServer(args);
  
          if (server.configuration.getTimeToLive() > 0) {
              CompletableFuture.runAsync(() -> {
                  try {
                      new CompletableFuture<Void>().get(server.configuration.getTimeToLive(), TimeUnit.MILLISECONDS);
                  } catch (InterruptedException | ExecutionException | TimeoutException e) {
                      server.stop();
                  }
              });
          }
  
          server.start();
  
          if (server.configuration.isSystemExit()) {
              if (server.waitForCompletion()) {
                  System.exit(0);
              } else {
                  System.exit(-1);
              }
          } else {
              server.waitForCompletion();
          }
      }
docs: Main method
  @param args