void (@NotNull Runnable runnable, @NotNull ModalityState state, @NotNull Condition<?> expired) { if (myLock == null) { getLogger().error("Do not call invokeLater when app is not yet fully initialized"); } if (propagateContextOrCancellation()) { Pair<Runnable, Condition<?>> captured = Propagation.capturePropagationAndCancellationContext(runnable, expired); runnable = captured.getFirst(); expired = captured.getSecond(); } Runnable r = myTransactionGuard.wrapLaterInvocation(runnable, state); // Don't need to enable implicit read, as Write Intent lock includes Explicit Read LaterInvocator.invokeLater(state, expired, wrapWithRunIntendedWriteAction(r)); }