     /// append inset only to the bottom for overscroll
     override var textContainerOrigin: NSPoint {
         
-        return NSPoint(x: super.textContainerOrigin.x, y: kTextContainerInset.height)
+        return NSPoint(x: super.textContainerOrigin.x, y: Self.textContainerInset.height)
     }
     
     

        let inset = rate * (scrollView.documentVisibleRect.height - layoutManager.lineHeight)
        
        // halve inset since the input value will be added to both top and bottom
        let height = max(floor(inset / 2), kTextContainerInset.height)
        
        // avoid high-loaded `sizeToFit()` if not required
        guard height != self.textContainerInset.height else { return }

    
    
    // MARK: Private Properties
    
    private static let textContainerInset = NSSize(width: 0, height: 4)
    
    private let matchingBracketPairs: [BracePair] = BracePair.braces + [.doubleQuotes]
    private lazy var braceHighlightTask = Debouncer(delay: .seconds(0)) { [unowned self] in self.highlightMatchingBrace() }  // NSTextView cannot be weak
