     /// A Boolean value that determines whether bouncing always occurs when horizontal scrolling reaches the end of the content.
     public var isAlwaysBounceHorizontal: Bool = false
     
-    /// Returns whether to cancel touches related to the content subview and start dragging.
-    public func touchesShouldCancel(in view: UIView) -> Bool {
-        
-        return false
-    }
-    
     /// Overridden by subclasses to customize the default behavior when a finger touches down in displayed content.
     public func touchesShouldBegin(_ touches: Set<UITouch>,
                                    with event: UIEvent?,

        return contentOffset
    }
    
    private func setRestrainedContentOffset(_ offset: CGPoint) {
        
        let confinedOffset = confinedContentOffset(offset)
        let scrollerBounds = UIEdgeInsetsInsetRect(bounds, contentInset)
        /*
        if !isAlwaysBounceHorizontal && contentSize.width <= scrollerBounds.size.width {
            offset.x = confinedOffset.x
        }
        
        if !isAlwaysBounceVertical && contentSize.height <= scrollerBounds.size.height {
            offset.y = confinedOffset.y
        }
        */
        self.contentOffset = offset
    }
}


        
        if gesture === panGestureRecognizer {
            
            switch panGestureRecognizer.state {
                
            case .began:
                
                beginDragging()
                
            case .changed:
                
                let delta = panGestureRecognizer.translation(in: self)
                
                drag(by: delta)
                
            case .ended:
                
                break
                
            case .possible, .failed, .cancelled:
                
                break
            }
        }
    }
    
    private func beginDragging() {
        
        
    }
    
    private func drag(by delta: CGPoint) {
        
        let confinedDelta = confined(delta: delta, animated: false)
        
        scrollContent(confinedDelta, animated: false)
    }
    
    private func endDragging(velocity: CGPoint) {
        
        
    }
    
    private func confined(delta: CGPoint, animated: Bool) -> CGPoint {
        
        
    }
    
    private func scrollContent(_ delta: CGPoint, animated: Bool) {
        
        
    }
    
    private func updateBounds() {
