     var footerBottomConstraint: Constraint?
     var headerTopConstraint: Constraint?
     var toolbarsShowing: Bool { return headerTopOffset == 0 }
-    fileprivate var suppressToolbarHiding: Bool = false
+
     fileprivate var isZoomedOut: Bool = false
     fileprivate var lastZoomedScale: CGFloat = 0
     fileprivate var isUserZoom: Bool = false

}

extension TabScrollingController: UIScrollViewDelegate {
    func scrollViewWillEndDragging(_ scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer<CGPoint>) {
        if targetContentOffset.pointee.y + scrollView.frame.size.height >= scrollView.contentSize.height {
            suppressToolbarHiding = true
            showToolbars(animated: true)
        }
    }

    func scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate decelerate: Bool) {
        if tabIsLoading() {
            return
        }

        if (decelerate || (toolbarState == .animating && !decelerate)) && checkScrollHeightIsLargeEnoughForScrolling() {
            if scrollDirection == .up {
                showToolbars(animated: true)
            } else if scrollDirection == .down && !suppressToolbarHiding {
                hideToolbars(animated: true)
            }
        }

        suppressToolbarHiding = false
    }

    func scrollViewDidZoom(_ scrollView: UIScrollView) {

        return tab?.loading ?? true
    }

    func isBouncingAtBottom() -> Bool {
        guard let scrollView = scrollView else { return false }
        return scrollView.contentOffset.y > (scrollView.contentSize.height - scrollView.frame.size.height) && scrollView.contentSize.height > scrollView.frame.size.height
    }

    @objc func handlePan(_ gesture: UIPanGestureRecognizer) {
        if tabIsLoading() {
            return
