public @Nullable <T> T doPreventingRecursion(@NotNull Key key, boolean memoize, @NotNull Computable<T> computation) {
    return computePreventingRecursion(key, memoize, computation::compute);
  }
public @Nullable <T> T doPreventingRecursion(@NotNull Key key, boolean memoize, @NotNull Computable<T> computation)