 
 public extension Collection where SubSequence.Iterator.Element: Equatable, Index == Int {
 
+    /// Return deleting and inserting `U`-type indexes from Longest Common Subsequence
+    /// diffing that can be used to apply on collection interfaces such as `UICollectionView`,
+    /// `UITableView`, `NSTableView`, `NSCollectionView`.
+    ///
+    /// - Complexity: O(m * n)
+    /// - Parameters:
+    ///     - other: a collection to compare with.
+    ///     - range: a range for both collection to apply the algorithm on.
+    ///       If `range` is `nil`, the operation will perform on the entire collections.
+    ///     - transformer: a block to apply diffing indexes with.
+    /// - Note: the results have a guranteed order that can apply on `self` collection and 
+    ///         produce `other` collection.
     func compareOptimallyUsingLCS<C, T>(_ other: C, in range: Range<Index>? = nil, transformer: IndexTransformer<T>) -> (deletes: [T], inserts: [T]) where
         C: Collection,
         C.Index == Index,

        }
    }

    func compareUsingHeckel<C>(_ other: C) -> [Heckel.Step<Index>] where
        C: Collection,
        C.Index == Index,

        return compareThoroughlyUsingLCS(other, in: range, transformer: transformer)
    }

    /// Return updating, deleting, and inserting indexes from Longest Common Subsequence 
    /// diffing that can apply on collection interfaces such as `UICollectionView`, 
    /// `UITableView`, `NSTableView`, `NSCollectionView`.
    ///
    /// - Complexity: O(m * n)
    /// - Parameters:
    ///     - other: a collection to compare with.
    ///     - range: a range for both collection to apply the algorithm on.
    ///       If `range` is `nil`, the operation will perform on the entire collections.
    func compareThoroughlyUsingLCS<C>(_ other: C, in range: Range<Index>? = nil) -> (updates: [Int], deletes: [Int], inserts: [Int]) where
        C: Collection,
        C.Index == Index,
