         /// - Parameters:
         ///     - children: the nodes to prepend.
         ///
-        func prepend(_ children: [Node]) {
+        func prepend(_ children: [Node], tryToMergeWithSiblings: Bool = true) {
             for index in stride(from: (children.count - 1), through: 0, by: -1) {
-                prepend(children[index])
+                prepend(children[index], tryToMergeWithSiblings: tryToMergeWithSiblings)
             }
         }
         

            var wrapperElement: ElementNode?
            
            if let sibling = rightSibling {
                sibling.prepend(childrenToWrap)
                childrenToWrap = sibling.children
                
                wrapperElement = sibling
            }
            
            if let sibling = leftSibling {
                sibling.append(childrenToWrap)
                childrenToWrap = sibling.children
                
                wrapperElement = sibling

        /// - Parameters:
        ///     - child: the node to append.
        ///
        func append(_ children: [Node], tryToMergeWithSiblings: Bool = true) {
            for child in children {
                append(child, tryToMergeWithSiblings: tryToMergeWithSiblings)
            }
        }

