@Override
  public void invokeLater(@NotNull Runnable runnable, @NotNull ModalityState state, @NotNull Condition<?> expired) {
    if (!isNewLockEnabled && myLock == null) {
      getLogger().error("Do not call invokeLater when app is not yet fully initialized");
    }

    if (propagateContext()) {
      Pair<Runnable, Condition<?>> captured = Propagation.capturePropagationContext(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));
  }
@Override
  public void invokeLater(@NotNull Runnable runnable, @NotNull ModalityState state, @NotNull Condition<?> expired)