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;
}
boolean skip = false;
for (Iterator markingsIterator = markingsAlreadyConsidered.getMarkings().iterator();
markingsIterator.hasNext() && !skip;) {
YMarking consideredMarking = (YMarking) markingsIterator.next();
if (aMarking.strictlyGreaterThanOrEqualWithSupports(consideredMarking)) {
skip = true;
}
if (aMarking.strictlyLessThanWithSupports(consideredMarking)) {
skip = true;