@Override
  public void suspendThread(@NotNull SuspendContextImpl context, @NotNull ThreadReferenceProxyImpl thread) {
    if (thread == context.getEventThread()) {
      logError("Thread " + thread + " is already suspended at the breakpoint for " + context);
    }

    if (LOG.isDebugEnabled()) {
      LOG.debug("Thread " + thread + " is going to be suspended in " + context);
    }

    if (context.isExplicitlyResumed(thread)) {
      context.myResumedThreads.remove(thread);
      context.myNotExecutableThreads.remove(thread);
      performIfNoNewInvocationWatcherTrackThisContext(context, () -> thread.suspend());
    }
    else {
      logError("Thread " + thread + " is trying to be suspended in " + context + " but it is not in explicitly resumed threads");
    }
  }
@Override
  public void suspendThread(@NotNull SuspendContextImpl context, @NotNull ThreadReferenceProxyImpl thread)