code: public void insertChild(int i, Object t) {
  		if (i < 0 || i > getChildCount()) {
  			throw new IndexOutOfBoundsException(i+" out or range");
  		}
  
  		if (children == null) {
  			children = createChildrenList();
  		}
  
  		children.add(i, t);
  		// walk others to increment their child indexes
  		// set index, parent of this one too
  		this.freshenParentAndChildIndexes(i);
  	}
docs: Insert child t at child position i (0..n-1) by shifting children
  i+1..n-1 to the right one position. Set parent / indexes properly
  but does NOT collapse nil-rooted t's that come in here like addChild.