@NotNull
  private static <T> BiConsumer<T, Runnable> wrappingProcessor(@NotNull Consumer<? super T> processor) {
    return (item, continuation) -> {
      try {
        runSafely(() -> processor.consume(item));
      }
      finally {
        continuation.run();
      }
    };
  }
@NotNull
  private static <T> BiConsumer<T, Runnable> wrappingProcessor(@NotNull Consumer<? super T> processor)