Index: trunk/autoquest-core-tasktrees/src/main/java/de/ugoe/cs/autoquest/tasktrees/temporalrelation/utils/SimilarTasks.java
===================================================================
--- trunk/autoquest-core-tasktrees/src/main/java/de/ugoe/cs/autoquest/tasktrees/temporalrelation/utils/SimilarTasks.java	(revision 1971)
+++ trunk/autoquest-core-tasktrees/src/main/java/de/ugoe/cs/autoquest/tasktrees/temporalrelation/utils/SimilarTasks.java	(revision 1972)
@@ -983,15 +983,57 @@
         
         for (Delta delta : deltas) {
-            if (delta.getOriginal().getPosition() < originalIndexes[0]) {
-                originalStartUpdate += delta.getRevised().size();
-            }
-            if (delta.getOriginal().getPosition() <= originalIndexes[1]) {
-                originalEndUpdate += delta.getRevised().size();
-            }
-            if (delta.getRevised().getPosition() < revisedIndexes[0]) {
-                revisedStartUpdate += delta.getOriginal().size();
-            }
-            if (delta.getRevised().getPosition() <= revisedIndexes[1]) {
-                revisedEndUpdate += delta.getOriginal().size();
+            if (delta.getType() == Delta.TYPE.INSERT) {
+                // for insert deltas only the original indexes must be adapted
+                if (delta.getOriginal().getPosition() <= originalIndexes[0]) {
+                    originalStartUpdate += delta.getRevised().size();
+                }
+                if (delta.getOriginal().getPosition() <= originalIndexes[1]) {
+                    originalEndUpdate += delta.getRevised().size();
+                }
+            }
+            else if (delta.getType() == Delta.TYPE.DELETE) {
+                // for delete deltas only the revised indexes must be adapted
+                if (delta.getRevised().getPosition() <= revisedIndexes[0]) {
+                    revisedStartUpdate += delta.getOriginal().size();
+                }
+                if (delta.getRevised().getPosition() <= revisedIndexes[1]) {
+                    revisedEndUpdate += delta.getOriginal().size();
+                }
+            }
+            else if (delta.getType() == Delta.TYPE.CHANGE) {
+                // for change deltas we adapt only the revision indexes.
+                // If the revised variant is longer than the original, the indexes become smaller.
+                // else, the other way around
+                int lengthDiff = delta.getOriginal().size() - delta.getRevised().size();
+                
+                if (lengthDiff < 0) {
+                    // the revised variant is longer --> adapt indexes of original
+                    lengthDiff = 0 - lengthDiff;
+                    int start = delta.getOriginal().getPosition();
+                    int end = start + delta.getOriginal().size() - 1;
+                    
+                    if (end < originalIndexes[0]) {
+                        // delta is before indexes
+                        originalStartUpdate += lengthDiff;
+                    }
+                    if ((end <= originalIndexes[1]) || (start <= originalIndexes[1])) {
+                        // delta and indexes overlap
+                        originalEndUpdate += lengthDiff;
+                    }
+                }
+                else if (lengthDiff > 0) {
+                    // the original variant is longer --> adapt indexes of revised
+                    int start = delta.getRevised().getPosition();
+                    int end = start + delta.getRevised().size() - 1;
+                    
+                    if (end < revisedIndexes[0]) {
+                        // delta is before indexes
+                        revisedStartUpdate += lengthDiff;
+                    }
+                    if ((end <= revisedIndexes[1]) || (start <= revisedIndexes[1])) {
+                        // delta and indexes overlap
+                        revisedEndUpdate += lengthDiff;
+                    }
+                }
             }
         }
