         assert(endIndex <= self.string.length)
         assert(!self.lineStartIndexes.contains(self.firstLineUncoundedIndex + 1))
         
+        guard endIndex >= self.firstLineUncoundedIndex else { return }
+        
         let string = self.string
         
-        guard
-            endIndex >= self.firstLineUncoundedIndex,
-            string.length > 0
-            else { return }
+        guard 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 character index.
    /// - Returns: The characer range of the line.
    func lineRange(at index: Int) -> NSRange {
        

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