public boolean startGroup() {
      // Define first change that increases or reduces text length.
      for (boolean first = true; myDiff == 0 && myChangeGroupStartIndex < myChanges.size(); myChangeGroupStartIndex++, first = false) {
        TextChangeImpl change = myChanges.get(myChangeGroupStartIndex);
        myDiff = change.getDiff();
        if (first) {
          myDiff += myFirstChangeShift;
        }
        if (myDiff == 0) {
          int offset = change.getStart() + (first ? myFirstChangeShift : 0);
          CharArrayUtil.getChars(change.getText(), myData, offset);
        }
        else {
          myDataStartOffset = change.getStart();
          if (first) {
            myDataStartOffset += myFirstChangeShift;
          }
          break;
        }
      }
      return myDiff != 0;
    }
public boolean startGroup()