Stack<IClusterLevel> toLookAt = new Stack<IClusterLevel>();
toLookAt.push(tree);
IClusterLevel deepest = tree;
while(!toLookAt.isEmpty()){
IClusterLevel current = toLookAt.pop();
if(!current.encapsulates()) continue;
ClusterNode cast = (ClusterNode)current;
if(current.contains(n1) && current.contains(n2)){
deepest = current;
for(IClusterLevel c : cast.getChildren())
toLookAt.push(c);