Response (final Request request) { final boolean alive = !myProcessHandler.isProcessTerminating() && !myProcessHandler.isProcessTerminated(); if (alive) { // consume evaluation classpath, if any final Collection<String> cp = myEvalClasspathRef.getAndSet(null); if (cp != null) { for (String path : cp) { request.addClasspathItem(path); } } UIUtil.invokeLaterIfNeeded(() -> myConsoleView.performWhenNoDeferredOutput(() -> { try { myMessageWriter.send(request); } catch (IOException e) { LOG.info(e); } })); } final StringBuilder stdOut = new StringBuilder(); Response response = null; try { response = myMessageReader.receive(unparsedText -> stdOut.append(unparsedText)); return response; } catch (IOException e) { LOG.info(e); } finally { renderResponse(request, response, stdOut.toString()); } return null; }