code: @Override
      public V call() throws Exception {
          Object captured = capturedRef.get();
          if (captured == null || releaseTtlValueReferenceAfterCall && !capturedRef.compareAndSet(captured, null)) {
              throw new IllegalStateException("TTL value reference is released after call!");
          }
  
          Object backup = replay(captured);
          try {
              return callable.call();
          } finally {
              restore(backup);
          }
      }
docs: wrap method {@link Callable#call()}.