Source:
public void processSimilarSet() { while (!receivedMsgList.isEmpty()) { updateStatsAndLogBubbleInfo(); String logInfo_remove = ""; int removedNum = 0; ArrayList<SimpleBubbleMergeMessage> originalMsgList = null; if (logBubbleInfo) originalMsgList = new ArrayList<SimpleBubbleMergeMessage>(receivedMsgList); Iterator<SimpleBubbleMergeMessage> it = receivedMsgList.iterator(); topMsg = it.next(); it.remove(); Node topNode = topMsg.getNode(); boolean topChanged = false; while (it.hasNext()) { curMsg = it.next(); if (!isValidMajorAndMinor(topMsg, curMsg)) continue; float fractionDissimilar = topMsg.computeDissimilar(curMsg); if (fractionDissimilar <= MAX_DISSIMILARITY) { topChanged = true; boolean sameOrientation = topMsg.sameOrientation(curMsg); topNode.addFromNode(!sameOrientation, curMsg.getNode()); outgoingMsg.reset(); outgoingMsg.setFlag(MESSAGETYPE.KILL_SELF.get()); sendMsg(curMsg.getSourceVertexId(), outgoingMsg); if (logBubbleInfo) { int i = 0; for (; i < originalMsgList.size(); i++) { if (originalMsgList.get(i).equals(curMsg)) break; } logInfo_remove += "No." + (i + 1) + " bubble - " + curMsg.getSourceVertexId() + "; "; } updateStats("removedPathsCoverage", Math.round(curMsg.getNode().getAverageCoverage())); it.remove(); removedNum++; } } updateStats("removedPaths", removedNum); if (logBubbleInfo) { logInfo += "Remove " + removedNum + " bubbles: "; logInfo += logInfo_remove; logInfo += "\n } if (topChanged) { outgoingMsg.reset(); outgoingMsg.setFlag(MESSAGETYPE.REPLACE_NODE.get()); outgoingMsg.setNode(topNode); sendMsg(topMsg.getSourceVertexId(), outgoingMsg); } } if (logBubbleInfo) { LOG.info(logInfo); } }

Target:
public void processSimilarSet() { while (!receivedMsgList.isEmpty()) { updateRelativeStats(); if (verbose) logBubbleInfo(); String logInfo_remove = ""; int removedNum = 0; ArrayList<SimpleBubbleMergeMessage> originalMsgList = null; if (verbose) originalMsgList = new ArrayList<SimpleBubbleMergeMessage>(receivedMsgList); Iterator<SimpleBubbleMergeMessage> it = receivedMsgList.iterator(); topMsg = it.next(); it.remove(); Node topNode = topMsg.getNode(); boolean topChanged = false; while (it.hasNext()) { curMsg = it.next(); if (!isValidMajorAndMinor(topMsg, curMsg)) continue; float fractionDissimilar = topMsg.computeDissimilar(curMsg); if (fractionDissimilar <= MAX_DISSIMILARITY) { topChanged = true; boolean sameOrientation = topMsg.sameOrientation(curMsg); topNode.addFromNode(!sameOrientation, curMsg.getNode()); outgoingMsg.reset(); outgoingMsg.setFlag(MESSAGETYPE.KILL_SELF.get()); sendMsg(curMsg.getSourceVertexId(), outgoingMsg); if (verbose) { int i = 0; for (; i < originalMsgList.size(); i++) { if (originalMsgList.get(i).equals(curMsg)) break; } logInfo_remove += "No." + (i + 1) + " bubble - " + curMsg.getSourceVertexId() + "; "; } updateStats("removedPathsCoverage", Math.round(curMsg.getNode().getAverageCoverage())); it.remove(); removedNum++; getCounters().findCounter(GraphMutations.Num_RemovedBubbles).increment(1); } } updateStats("removedPaths", removedNum); if (verbose) { logInfo += "Remove " + removedNum + " bubbles: "; logInfo += logInfo_remove; logInfo += "\n } if (topChanged) { outgoingMsg.reset(); outgoingMsg.setFlag(MESSAGETYPE.REPLACE_NODE.get()); outgoingMsg.setNode(topNode); sendMsg(topMsg.getSourceVertexId(), outgoingMsg); } } if (verbose) { LOG.info(logInfo); } }