@Override
    public void setState(@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);
          }
        });
      }
    }
@Override
    public void setState(@NotNull final DebuggerContextImpl context,
                         final State state,
                         final Event event,
                         final @NlsContexts.Label String description)