public void enqueue(ExplodedGraph.ProgramPoint programPoint, ProgramState programState, boolean exitPath) { int nbOfExecution = programState.numberOfTimeVisited(programPoint); if (nbOfExecution > MAX_EXEC_PROGRAM_POINT) { debugPrint(programState); return; } checkExplodedGraphTooBig(programState); ExplodedGraph.Node cachedNode = explodedGraph.getNode(programPoint, programState.visitedPoint(programPoint, nbOfExecution + 1)); if (!cachedNode.isNew && exitPath == cachedNode.exitPath) { // has been enqueued earlier return; } cachedNode.exitPath = exitPath; workList.addFirst(cachedNode); }