boolean (@NotNull SuspendContextImpl suspendContext) { int delay = ApplicationManager.getApplication().isUnitTestMode() ? -1 : Registry.intValue("debugger.sync.commands.reschedule.delay"); if (delay < 0 || myRetries-- <= 0) { return false; } DebugProcess process = suspendContext.getDebugProcess(); DebuggerManagerThreadImpl managerThread = ((DebuggerManagerThreadImpl)process.getManagerThread()); VirtualMachine virtualMachine = ((VirtualMachineProxyImpl)process.getVirtualMachineProxy()).getVirtualMachine(); if (!(virtualMachine instanceof VirtualMachineImpl) || !managerThread.hasAsyncCommands() && ((VirtualMachineImpl)virtualMachine).isIdle()) { return false; } else { // reschedule with a small delay hold(); AppExecutorUtil.getAppScheduledExecutorService().schedule(() -> managerThread.schedule(this), delay, TimeUnit.MILLISECONDS); return true; } }