/** Commits all buffered replace commands. */
  private void commit() {

    if (fReplaceList.size() == 0) return;

    StringBuffer buffer = new StringBuffer();

    int delta = 0;
    for (Iterator i = fReplaceList.iterator(); i.hasNext(); ) {
      Replace replace = (Replace) i.next();

      int offset = buffer.length() - delta;
      buffer.append(fSource.get(offset, replace.offset - offset));
      buffer.append(replace.text);
      delta = getDelta(replace);
    }

    int offset = buffer.length() - delta;
    buffer.append(fSource.get(offset, fSource.getLength() - offset));

    fSource.set(buffer.toString());
    fReplaceList.clear();
  }
  /*
   * @see org.eclipse.jface.text.ITextStore#getLength()
   */
  public int getLength() {
    if (fReplaceList.size() == 0) return fSource.getLength();

    Replace lastReplace = (Replace) fReplaceList.get(fReplaceList.size() - 1);
    return fSource.getLength() + getDelta(lastReplace);
  }