     
     
     // MARK: -
-    // MARK: Lifecycle
-    
-    deinit {
-        self.draggingTimer?.invalidate()
-    }
-    
-    
-    
     // MARK: View Methods
     
     /// view name for VoiceOver


// MARK: - Line Selecting

private struct DraggingInfo {
    
    let index: Int
    let selectedRanges: [NSRange]
}


extension LineNumberView {
    
    // MARK: View Methods
    

        }
        
        // with Shift key (expand selection)
        if event.modifierFlags.contains(.shift) {
            let selectedRange = textView.selectedRange
            if selectedRange.contains(currentIndex) {  // reduce
                let inUpperSelection = (currentIndex - selectedRange.location) < selectedRange.length / 2
