private void execute() {
      clearLastRange();

      matchForward(-1, -1);

      for (Range ch : myChanges.iterateUnchanged()) {
        int count = ch.end1 - ch.start1;
        for (int i = 0; i < count; i++) {
          int index1 = ch.start1 + i;
          int index2 = ch.start2 + i;

          int start1 = getStartOffset1(index1);
          int start2 = getStartOffset2(index2);
          int end1 = getEndOffset1(index1);
          int end2 = getEndOffset2(index2);

          matchBackward(index1, index2);

          myBuilder.markEqual(start1, start2, end1, end2);

          matchForward(index1, index2);
        }
      }

      matchBackward(myWords1.size(), myWords2.size());
    }
private void execute()