code: public CompletableFuture<Void> process(Operation operation) {
          CompletableFuture<Void> result = new CompletableFuture<>();
          if (!isRunning()) {
              result.completeExceptionally(new IllegalContainerStateException("OperationProcessor is not running."));
          } else {
              log.debug("{}: process {}.", this.traceObjectId, operation);
              try {
                  this.operationQueue.add(new CompletableOperation(operation, result));
              } catch (Throwable e) {
                  if (Exceptions.mustRethrow(e)) {
                      throw e;
                  }
  
                  result.completeExceptionally(e);
              }
          }
  
          return result;
      }
docs: Processes the given Operation. This method returns when the given Operation has been added to the internal queue.
  
  @param operation The Operation to process.
  @return A CompletableFuture that, when completed, will indicate the Operation has finished processing. If the
  Operation completed successfully, the Future will contain the Sequence Number of the Operation. If the Operation
  failed, it will contain the exception that caused the failure.
  @throws IllegalContainerStateException If the OperationProcessor is not running.