Set tasks = YOrJoinUtils.reduceToEnabled(currentlyConsideredMarking, orJoin);
while (tasks.size() > 0) {
YTask task = YOrJoinUtils.pickOptimalEnabledTask(
tasks, orJoin, currentlyConsideredMarking, markingsAlreadyConsidered);
tasks.remove(task);
YSetOfMarkings markingSet = currentlyConsideredMarking.reachableInOneStep(task, orJoin);
while (markingSet.size() > 0) {
YMarking aMarking = markingSet.removeAMarking();
if (aMarking.isBiggerEnablingMarkingThan(actualMarking, orJoin)) {
return false;
} else if (aMarking.deadLock(orJoin)) {
continue;
}