Index: trunk/autoquest-core-tasktrees/src/main/java/de/ugoe/cs/autoquest/tasktrees/temporalrelation/SequenceForTaskDetectionRule.java
===================================================================
--- trunk/autoquest-core-tasktrees/src/main/java/de/ugoe/cs/autoquest/tasktrees/temporalrelation/SequenceForTaskDetectionRule.java	(revision 1957)
+++ trunk/autoquest-core-tasktrees/src/main/java/de/ugoe/cs/autoquest/tasktrees/temporalrelation/SequenceForTaskDetectionRule.java	(revision 1958)
@@ -1028,6 +1028,6 @@
                 int overallMinSumOfCollisionIndexes = Integer.MAX_VALUE;
                 int overallMinimalCollisionIndex = Integer.MAX_VALUE;
-                InterleavingSubsequence interleavingWithMinSum = null;
-                InterleavingSubsequence interleavingWithMinIndex = null;
+                List<InterleavingSubsequence> interleavingsWithMinSum = new LinkedList<>();
+                List<InterleavingSubsequence> interleavingsWithMinIndex = new LinkedList<>();
                 
                 for (InterleavingSubsequence interleaving : interleavings) {
@@ -1048,25 +1048,33 @@
                     
                     if (overallMinSumOfCollisionIndexes > sumOfCollisionIndexes) {
-                        interleavingWithMinSum = interleaving;
+                        interleavingsWithMinSum.clear();
+                        interleavingsWithMinSum.add(interleaving);
                         overallMinSumOfCollisionIndexes = sumOfCollisionIndexes;
                     }
                     else if (overallMinSumOfCollisionIndexes == sumOfCollisionIndexes) {
-                        // cannot decide between already found and new one
-                        interleavingWithMinSum = null;
+                        interleavingsWithMinSum.add(interleaving);
                     }
                     
                     if (overallMinimalCollisionIndex > minimalCollisionIndex) {
-                        interleavingWithMinIndex = interleaving;
+                        interleavingsWithMinIndex.clear();
+                        interleavingsWithMinIndex.add(interleaving);
                         overallMinimalCollisionIndex = minimalCollisionIndex;
                     }
                     else if (overallMinimalCollisionIndex == minimalCollisionIndex) {
-                        // cannot decide between already found and new one
-                        interleavingWithMinIndex = null;
-                    }
-                }
-                
-                if (interleavingWithMinSum != null) {
+                        interleavingsWithMinIndex.add(interleaving);
+                    }
+                }
+                
+                if (interleavingsWithMinSum.size() < appData.getLastFoundSubsequences().size()) {
                     for (InterleavingSubsequence interleaving : interleavings) {
-                        if (interleaving != interleavingWithMinSum) {
+                        boolean found = false;
+                        for (InterleavingSubsequence candidate : interleavingsWithMinSum) {
+                            if (candidate == interleaving) {
+                                found = true;
+                                break;
+                            }
+                        }
+                        
+                        if (!found) {
                             appData.getLastFoundSubsequences().remove(interleaving.getSubsequence());
                         }
@@ -1076,7 +1084,15 @@
                 }
                 
-                if (interleavingWithMinIndex != null) {
+                if (interleavingsWithMinIndex.size() < appData.getLastFoundSubsequences().size()) {
                     for (InterleavingSubsequence interleaving : interleavings) {
-                        if (interleaving != interleavingWithMinIndex) {
+                        boolean found = false;
+                        for (InterleavingSubsequence candidate : interleavingsWithMinIndex) {
+                            if (candidate == interleaving) {
+                                found = true;
+                                break;
+                            }
+                        }
+                        
+                        if (!found) {
                             appData.getLastFoundSubsequences().remove(interleaving.getSubsequence());
                         }
