 
 extension NSString {
     /**
-    CacheContainer caches
-     - UTF16 based NSRange, UTF8 based NSRange and Line
+    CacheContainer caches:
+
+    - UTF16-based NSRange
+    - UTF8-based NSRange
+    - Line
     */
     @objc private class CacheContainer: NSObject {
         struct RangesAndLine {

    }

    /**
     CacheContainer instance is stored to instance of NSString as associated object.
    */
    private var cacheContainer: CacheContainer {
        if let cache = objc_getAssociatedObject(self, &keyCacheContainer) as? CacheContainer {

                return element.byteRange.location
            } else if element.range.length == diff {
                return NSMaxRange(element.byteRange)
            }
            let endUTF8index = element.line.content.utf16.startIndex.advancedBy(diff)
                                      .samePositionIn(element.line.content.utf8)!
            let byteDiff = element.line.content.utf8.startIndex.distanceTo(endUTF8index)
            return element.byteRange.location + byteDiff
        }

        var lines: [Line] {
