void (@NotNull ProcessEvent event) { final long buildTime = System.currentTimeMillis() - startTime; checkCancelTask.cancel(); parser.setStopped(true); final OutputPacketProcessor dispatcher = handler.getErr().getEventsDispatcher(); try { if (event.getExitCode() != 0) { // in case process exits abnormally, provide all unprocessed stderr content final String unprocessed; synchronized (myUnprocessedStdErr) { unprocessed = myUnprocessedStdErr.toString(); myUnprocessedStdErr.setLength(0); } if (!unprocessed.isEmpty()) { dispatcher.processOutput(new Printable() { @Override public void printOn(Printer printer) { errorView.outputError(unprocessed, AntBuildMessageView.PRIORITY_ERR); } }); } } else { synchronized (myUnprocessedStdErr) { myUnprocessedStdErr.setLength(0); } } } finally { errorView.buildFinished(progress != null && progress.isCanceled(), buildTime, antBuildListener, dispatcher); } }