docs: @Override
      public void run() {
          Object captured = capturedRef.get();
          if (captured == null || releaseTtlValueReferenceAfterRun && !capturedRef.compareAndSet(captured, null)) {
              throw new IllegalStateException("TTL value reference is released after run!");
          }
  
          Object backup = replay(captured);
          try {
              runnable.run();
          } finally {
              restore(backup);
          }
      }