protected void execute() {
    int last1 = 0;
    int last2 = 0;

    for (Range ch : myChanges.iterateUnchanged()) {
      int count = ch.end1 - ch.start1;
      for (int i = 0; i < count; i++) {
        IntPair range1 = getOriginalRange1(ch.start1 + i);
        IntPair range2 = getOriginalRange2(ch.start2 + i);

        int start1 = range1.first;
        int start2 = range2.first;
        int end1 = range1.second;
        int end2 = range2.second;

        matchGap(last1, start1, last2, start2);
        myBuilder.markEqual(start1, start2, end1, end2);

        last1 = end1;
        last2 = end2;
      }
    }
    matchGap(last1, myLength1, last2, myLength2);
  }
protected void execute()