public @NotNull Future<?> postShellTask(final @NotNull VoidShellTask shellTask) {
    final ShellContext ctx = new ShellContext(this);

    return bridge.comExecutor.submit(() -> {
      try {
        shellTask.run(ctx);
      }
      finally {
        // ensure a ShellContext instance will not be used outside the comExecutor's thread
        ctx.parent = null;
      }
    });
  }
public @NotNull Future<?> postShellTask(final @NotNull VoidShellTask shellTask)