void (@Nls String msg) { Stack<@NlsContexts.ProgressText String> textStack = getTextStack(); if (!textStack.isEmpty() && msg.equals(textStack.peek())) { textStack.pop(); return; } if (isEmptyOrSpaces(msg) || msg.equals(lastMessage)) return; lastMessage = msg; int start = msg.indexOf("["); if (start >= 1) { int end = msg.indexOf(']', start + 1); if (end != -1) { String buildTargetNameCandidate = msg.substring(start + 1, end); Set<String> targets = mySeenMessages.computeIfAbsent(buildTargetNameCandidate, unused -> new HashSet<>()); boolean isSeenMessage = !targets.add(msg.substring(0, start)); if (isSeenMessage) return; } } myConsolePrinter.print(msg, MessageEvent.Kind.SIMPLE); }