Algorithm description: if(node is marked as visited) -> stop process and ask for another from queue if(node has only one predecessor) { -> process node's element and mark it as visited } else { if(all node's predecessors are visited) { -> try to join all nodes with same CFGNode -> process actual node's element and mark it as visited } else { if(predecessor's is part of a cycle