             }
 
             elements.append(currentElement)
-            nextElement = currentElement.children.first as? ElementNode
+            nextElement = childPicker(currentElement.children) as? ElementNode
         }
 
         return elements


    ///
    ///
    private func paragraphStyleElements(from nodes: [Node]) -> [ElementNode] {
        var elements = [ElementNode]()
        var nextElement = nodes.first as? ElementNode

        while let currentElement = nextElement {
            guard currentElement.isBlockLevelElement() else {

    ///
    ///
    func merge(left: [Node], right: [Node]) -> Bool {
        let left = rightMostParagraphStyleElements(from: left)
        let right = leftMostParagraphStyleElements(from: right)

        guard let (target, source) = findLowestMergeableNodes(left: left, right: right) else {
            return false
