void (@NotNull ProcessHandler processHandler) { DebugProcess debugProcess = DebuggerManager.getInstance(myProject).getDebugProcess(processHandler); if (debugProcess != null) { debugProcess.getManagerThread().invokeCommand(new DebuggerCommand() { @Override public void action() { VirtualMachineProxy virtualMachineProxy = debugProcess.getVirtualMachineProxy(); if (virtualMachineProxy instanceof VirtualMachineProxyImpl && ((VirtualMachineProxyImpl)virtualMachineProxy).canBeModified()) { // use success exit code here to avoid the main process interruption ((VirtualMachineProxyImpl)virtualMachineProxy).exit(0); } else { debugProcess.stop(true); } } @Override public void commandCancelled() { debugProcess.stop(true); } }); } else { processHandler.destroyProcess(); } }