+ public void traversedependences(Termination termination) {
+ constructconjunctionnodes(termination);
+ constructconjunctionedges(termination);
+ Set removedset=termination.removedset;
+
+ for(int i=0;i<state.vConstraints.size();i++) {
+ Constraint c=(Constraint)state.vConstraints.get(i);
+ Set conjset=(Set)termination.conjunctionmap.get(c);
+ HashSet exploredset=new HashSet();
+
+ for(Iterator it=conjset.iterator();it.hasNext();) {
+ GraphNode gn=(GraphNode)it.next();
+ recursedependence(c,termination,exploredset,gn);
+ }
+ }
+ }
+
+ void recursedependence(Constraint c,Termination termination, HashSet exploredset, GraphNode gn) {
+ Set removedset=termination.removedset;
+ Set conjunctionset=termination.conjunctions;
+
+ if (removedset.contains(gn))
+ return;
+ exploredset.add(gn);
+ associateWithConstraint(gn,c);
+ for(Iterator it=gn.edges();it.hasNext();) {
+ GraphNode.Edge e=(GraphNode.Edge) it.next();
+ GraphNode gn2=e.getTarget();
+ if (!(exploredset.contains(gn2)||
+ conjunctionset.contains(gn2)))
+ recursedependence(c,termination,exploredset,gn2);
+ }
+ }
+