docs: public TreeNode<T> replace(final int index, final TreeNode<T> child) {
  		requireNonNull(child);
  		if (_children == null) {
  			throw new ArrayIndexOutOfBoundsException(format(
  				"Child index is out of bounds: %s", index
  			));
  		}
  		if (isAncestor(child)) {
  			throw new IllegalArgumentException("The new child is an ancestor.");
  		}
  
  		final TreeNode<T> oldChild = _children.set(index, child);
  		assert oldChild != null;
  		assert oldChild._parent == this;
  
  		oldChild.setParent(null);
  		child.setParent(this);
  
  		return this;
  	}