         target.children += source.children
 
         return true
+    }
+
+
+    ///
+    ///
+    func rightMostParagraphStyleElements(from nodes: [Node]) -> [ElementNode] {
+        return paragraphStyleElements(from: nodes) { children in
+            return children.last
+        }
+    }
+
+
+    ///
+    ///
+    func leftMostParagraphStyleElements(from nodes: [Node]) -> [ElementNode] {
+        return paragraphStyleElements(from: nodes) { children in
+            return children.first
+        }
     }
 
 


    ///
    ///
    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
        }

        }
        
        return match
    }


