void (@NotNull final DebuggerContextImpl context, final State state, final Event event, final @NlsContexts.Label String description) { ThreadingAssertions.assertEventDispatchThread(); final DebuggerSession session = context.getDebuggerSession(); LOG.assertTrue(session == DebuggerSession.this || session == null); final Runnable setStateRunnable = () -> { LOG.assertTrue(myDebuggerContext.isInitialised()); myDebuggerContext = context; if (LOG.isDebugEnabled()) { LOG.debug("DebuggerSession state = " + state + ", event = " + event); } myState = new DebuggerSessionState(state, description); fireStateChanged(context, event); }; if (context.getSuspendContext() == null) { setStateRunnable.run(); } else { getProcess().getManagerThread().schedule(new SuspendContextCommandImpl(context.getSuspendContext()) { @Override public Priority getPriority() { return Priority.HIGH; } @Override public void contextAction(@NotNull SuspendContextImpl suspendContext) { context.initCaches(); DebuggerInvocationUtil.swingInvokeLater(getProject(), setStateRunnable); } }); } }