void (@NotNull CheckedTreeNode node) { if (myProcessingNodes) return; myProcessingNodes = true; try { if (!node.isChecked()) { String groupAndArtifact = getGroupAndArtifactId(node); /* exclusion works by groupId and artifactId, so if there are other nodes with same groupId and artifactId, we need to uncheck them to avoid confusion */ TreeUtil.treeNodeTraverser(myRootNode).filter(CheckedTreeNode.class).forEach((treeNode) -> { if (getGroupAndArtifactId(treeNode).equals(groupAndArtifact)) { myDependenciesTree.setNodeState(treeNode, false); } }); } } finally { myProcessingNodes = false; } }