@ApiStatus.Internal
  public static void scheduleWithCorrectPausedDebuggerContext(@NotNull DebugProcessImpl debugProcess,
                                                              @NotNull ThreadReferenceProxyImpl thread,
                                                              @Nullable StackFrameProxyImpl frameProxy,
                                                              @NotNull Consumer<@NotNull DebuggerContextImpl> action) {
    SuspendContextImpl pausedContext = SuspendManagerUtil.getPausedSuspendingContext(debugProcess.getSuspendManager(), thread);
    DebuggerContextImpl defaultDebuggerContext = debugProcess.getDebuggerContext();
    if (pausedContext == defaultDebuggerContext.getSuspendContext() || pausedContext == null) {
      action.accept(defaultDebuggerContext);
    }
    else {
      debugProcess.getManagerThread().schedule(new SuspendContextCommandImpl(pausedContext) {
        @Override
        public void contextAction(@NotNull SuspendContextImpl suspendContext) {
          DebuggerContextImpl debuggerContext = DebuggerContextImpl.createDebuggerContext(
            debugProcess.getSession(), pausedContext, thread, frameProxy
          );
          debuggerContext.initCaches();
          action.accept(debuggerContext);
        }
      });
    }
  }
@ApiStatus.Internal
  public static void scheduleWithCorrectPausedDebuggerContext(@NotNull DebugProcessImpl debugProcess,
                                                              @NotNull ThreadReferenceProxyImpl thread,
                                                              @Nullable StackFrameProxyImpl frameProxy,
                                                              @NotNull Consumer<@NotNull DebuggerContextImpl> action)