 
 public extension Collection where Iterator.Element: Hashable & Comparable, IndexDistance == Int {
 
+    /// Allows the enumeration on the results of Paul Heckel's isolating differences between files technique.
+    ///
+    /// - Parameters:
+    ///     - other: a collection to compare with.
+    ///     - block: a block to apply diffing result with.
+    /// - See Also: [Paul Heckel's paper](http://documents.scribd.com/docs/10ro9oowpo1h81pgh1as.pdf)
+    /// - Note: the return results can apply directly to the colelction interfaces.
+    /// - Warning: there is no guarantee that the elements' order is reserved.
     func enumerateDiffStepsUsingHeckel<C>(byComparing other: C, block: (Heckel.Step<Index>) -> Void) where
         C: Collection,
         C.Index == Index,

        return compareOptimallyUsingLCS(other, in: range, transformer: Int.init(integerLiteral:))
    }

    func compareThoroughlyUsingLCS<C, T>(_ other: C, in range: Range<Index>? = nil, transformer: IndexTransformer<T>) -> (updates: [T], deletes: [T], inserts: [T]) where
        T: Comparable,
        C: Collection,

        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,
