ancestors.add(getAllAncestors((FlatNode)sinksIt.next()));
FlatNode sink = (FlatNode)sinksIt.next(); ancestors.add(getAllAncestors(sink, true));
	private static FlatNode getLeastCommonAncestor() 	{	    //a vector of hashsets of all the ancestors of 	    //each sink	    Vector ancestors = new Vector();	    Iterator sinksIt = possibleSinks.iterator();	    //get all the ancestor for each sink	    while (sinksIt.hasNext()) {		ancestors.add(getAllAncestors((FlatNode)sinksIt.next()));	    }	    //get the set representing the intersection of all	    //the ancestor sets...this is the common ancestors	    HashSet commonAncestors = (HashSet)ancestors.get(0);	    for (int i = 1; i < ancestors.size(); i++)		commonAncestors = intersection(commonAncestors, (HashSet)ancestors.get(i));    	    	    //find the most downstream ancestor...	    FlatNode lca = null;	    Iterator bft = BreadthFirstTraversal.getTraversal(toplevel).listIterator();	    while (bft.hasNext()) {		FlatNode current = (FlatNode)bft.next();		if (commonAncestors.contains(current))		    lca = current;	    }		    //this is not the best way of doing it, but it was easy to code up!	    return lca;	}