public static @NotNull RecursionGuard.StackStamp markStack() {
    int stamp = ourStack.get().reentrancyCount;
    return new RecursionGuard.StackStamp() {
      @Override
      public boolean mayCacheNow() {
        CalculationStack stack = ourStack.get();
        boolean result = stamp == stack.reentrancyCount;
        if (!result && ourAssertOnMissedCache.get() && !stack.isCurrentNonCachingStillTolerated()) {
          throw new CachingPreventedException(stack.preventions);
        }
        return result;
      }
    };
  }
public static @NotNull RecursionGuard.StackStamp markStack()