elementStack.push(root); elementStack.push(root.getElement(root.getElementIndex(offset)));
Element current = root; int index; while (!current.isLeaf()) { index = current.getElementIndex(offset); elementStack.push(current); current = current.getElement(index); }
    public void insert(int offset, int length, ElementSpec[] data,                       DefaultDocumentEvent ev)    {      if (length == 0)        return;      this.offset = offset;      this.length = length;      this.endOffset = offset + length;      documentEvent = ev;      // Push the root and the paragraph at offset onto the element stack.      edits.clear();      elementStack.clear();      elementStack.push(root);      elementStack.push(root.getElement(root.getElementIndex(offset)));      insertUpdate(data);            int size = edits.size();      for (int i = 0; i < size; i++)        {          Edit curr = (Edit) edits.get(i);          addEdit(curr.e, curr.index, curr.removed, curr.added);        }    }