     ///
     ///
     func merge(left: [Node], right: [Node]) -> Bool {
-        let left = paragraphStyleElements(from: left)
-        let right = paragraphStyleElements(from: right)
+        let left = rightMostParagraphStyleElements(from: left)
+        let right = leftMostParagraphStyleElements(from: right)
 
         guard let (target, source) = findLowestMergeableNodes(left: left, right: right) else {
             return false


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

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

            }

            elements.append(currentElement)
            nextElement = childPicker(currentElement.children) as? ElementNode
        }

        return elements
