     }
     
     
+    
     // MARK: Private Methods
     
     /// Calculate and cache line ranges up to the line that contains the given character index, if it has not already done so.

        assert(endIndex <= self.string.length)
        assert(!self.lineStartIndexes.contains(self.firstLineUncoundedIndex + 1))
        
        let string = self.string
        
        guard
            endIndex >= self.firstLineUncoundedIndex,
            string.length > 0
            else { return }
        
        var index = self.firstLineUncoundedIndex
        while index <= min(endIndex, string.length - 1) {

    /// Because this method count up all the line ranges up to the given index when not cached yet,
    /// there is a large perormance disadbantage when just a single line range is needed.
    ///
    /// - Parameter index: The index of character for finding the line range.
    /// - Returns: The characer range of the line.
    func lineRange(at index: Int) -> NSRange {
        
