// Sets of variables used to track the fixed point iteration.
LinkedList workList = new LinkedList(_variableToChangeContext.keySet());
while (!workList.isEmpty()) {
Variable variable = (Variable) workList.removeFirst();
Node node = _dependencyGraph.node(variable);
Entity changeContext = (Entity) _variableToChangeContext
.get(variable);
for (Iterator outputEdges = _dependencyGraph.outputEdges(node)
.iterator(); outputEdges.hasNext();) {
Node sinkNode = ((Edge) outputEdges.next()).sink();
Variable targetVariable = (Variable) sinkNode.getWeight();
if (_updateChangeContext(targetVariable, changeContext)
&& !workList.contains(targetVariable)) {
workList.addLast(targetVariable);
}