void (@NotNull SuspendContextImpl suspendContext) { SuspendManager suspendManager = myDebuggerContext.getDebugProcess().getSuspendManager(); ThreadReferenceProxyImpl thread = getThread(); boolean isSuspendedByContext; try { isSuspendedByContext = suspendManager.isSuspended(thread); } catch (ObjectCollectedException ignored) { notifyCancelled(); return; } if (isSuspendedByContext) { if (LOG.isDebugEnabled()) { LOG.debug("Context thread " + suspendContext.getThread()); LOG.debug("Debug thread" + thread); } threadAction(suspendContext); } else { // no suspend context currently available SuspendContextImpl suspendContextForThread = myCustomThread != null ? suspendContext : SuspendManagerUtil.findContextByThread(suspendManager, thread); if (suspendContextForThread != null && thread.status() != ThreadReference.THREAD_STATUS_ZOMBIE) { suspendContextForThread.postponeCommand(this); } else { notifyCancelled(); } } }