public Element insertChildren(int index, Node... children) {
        Validate.notNull(children, "Children collection to be inserted must not be null.");
        int currentSize = childNodeSize();
        if (index < 0) index += currentSize +1; // roll around
        Validate.isTrue(index >= 0 && index <= currentSize, "Insert position out of bounds.");

        addChildren(index, children);
        return this;
    }
public Element insertChildren ( int index , Node ... children ) { Validate . notNull ( children , "Children collection to be inserted must not be null." ) ; int currentSize = childNodeSize ( ) ; if ( index < 0 ) index += currentSize + 1 ; Validate . isTrue ( index >= 0 && index <= currentSize , "Insert position out of bounds." ) ; addChildren ( index , children ) ; return this ; }
Inserts the given child nodes into this element at the specified index. Current nodes will be shifted to the
right. The inserted nodes will be moved from their current parent. To prevent moving, copy the nodes first.

@param index 0-based index to insert children at. Specify {@code 0} to insert at the start, {@code -1} at the
end
@param children child nodes to insert
@return this element, for chaining.