IGraphNode (IGraphNode node1, IGraphNode node2, VBStyleCollection<IGraphNode, IGraphNode> orderedIDoms) { IGraphNode nodeOld; if (node1 == null) { return node2; } else if (node2 == null) { return node1; } int index1 = orderedIDoms.getIndexByKey(node1); int index2 = orderedIDoms.getIndexByKey(node2); while (index1 != index2) { if (index1 > index2) { nodeOld = node1; node1 = orderedIDoms.getWithKey(node1); if (nodeOld == node1) { // no idom - root or merging point return null; } index1 = orderedIDoms.getIndexByKey(node1); } else { nodeOld = node2; node2 = orderedIDoms.getWithKey(node2); if (nodeOld == node2) { // no idom - root or merging point return null; } index2 = orderedIDoms.getIndexByKey(node2); } } return node1; }