code: function updateDirtyRange( bookmark, dirtyRange, checkEnd ) {
  		var serializable = bookmark.serializable,
  			container = dirtyRange[ checkEnd ? 'endContainer' : 'startContainer' ],
  			offset = checkEnd ? 'endOffset' : 'startOffset';
  
  		var bookmarkStart = serializable ? dirtyRange.document.getById( bookmark.startNode ) : bookmark.startNode;
  
  		var bookmarkEnd = serializable ? dirtyRange.document.getById( bookmark.endNode ) : bookmark.endNode;
  
  		if ( container.equals( bookmarkStart.getPrevious() ) ) {
  			dirtyRange.startOffset = dirtyRange.startOffset - container.getLength() - bookmarkEnd.getPrevious().getLength();
  			container = bookmarkEnd.getNext();
  		} else if ( container.equals( bookmarkEnd.getPrevious() ) ) {
  			dirtyRange.startOffset = dirtyRange.startOffset - container.getLength();
  			container = bookmarkEnd.getNext();
  		}
  
  		container.equals( bookmarkStart.getParent() ) && dirtyRange[ offset ]++;
  		container.equals( bookmarkEnd.getParent() ) && dirtyRange[ offset ]++;
  
  		// Update and return this range.
  		dirtyRange[ checkEnd ? 'endContainer' : 'startContainer' ] = container;
  		return dirtyRange;
  	}
docs: Update the specified range which has been mangled by previous insertion of range bookmark nodes.(#3256)