code: public Row addBefore()
  	{
  		assert (this.treeTable.m_nbColumns > 0);
  
  		// which is the parent ? => same parent as item
  		Row parentItem = m_parent;
  		if( parentItem == null )
  			parentItem = this.treeTable.m_rootItem;
  
  		Row newItem = new Row( this.treeTable );
  		newItem.m_tr = Document.get().createTRElement();
  		newItem.m_tr.setPropertyObject( "linkedItem", newItem );
  
  		newItem.m_tr.setInnerHTML( this.treeTable.m_rowTemplate );
  
  		// DOM add
  		this.treeTable.m_body.insertBefore( newItem.m_tr, m_tr );
  
  		// logical add
  		newItem.m_parent = parentItem;
  		int itemPos = parentItem.getChilds().indexOf( this );
  		parentItem.getChilds().add( itemPos, newItem );
  		parentItem.signalStateChange();
  
  		// take care of the left padding
  		Element firstTd = DOM.getChild( newItem.m_tr, 0 );
  		firstTd.getStyle().setPaddingLeft( newItem.getLevel() * this.treeTable.treePadding, Unit.PX );
  
  		return newItem;
  	}
docs: adds a new sibling item, just below (with same parent)