                 frame.origin.x = collectionView.frame.width - buttonScrollToBottomSize - view.layoutMargins.right
                 frame.origin.y = collectionView.frame.origin.y + collectionView.frame.height
 
+//                animates({
+//                    self.buttonScrollToBottom.frame = frame
+//                    self.buttonScrollToBottom.alpha = 0
+//                })
                 animates({
                     self.buttonScrollToBottom.frame = frame
                     self.buttonScrollToBottom.alpha = 0
+                }, {
+                    self.buttonScrollToBottom.removeFromSuperview()
                 })
             }
         }

            var size = type(of: sizingCell).size(for: item, with: horizontalMargins)
            size = CGSize(width: screenSize.width - horizontalMargins, height: size.height)
            viewSizingModel.set(size: size, for: item.differenceIdentifier)

            return size
        }
    }

        didSet {
            guard oldValue != scrollToBottomButtonIsVisible
            else {
//                scrollToBottomButtonIsVisible = !scrollToBottomButtonIsVisible
                return
            }

            func animates(_ animations: @escaping VoidCompletion, _ completion: VoidCompletion? = nil) {
                UIView.animate(withDuration: 0.15, delay: 0, options: UIView.AnimationOptions(rawValue: 7 << 16), animations: {
                    animations()
                }, completion: nil)
            }

            if self.scrollToBottomButtonIsVisible {
//                if buttonScrollToBottom.superview == nil {
                    view.addSubview(buttonScrollToBottom)
//                }

                var frame = buttonScrollToBottom.frame
                frame.origin.x = collectionView.frame.width - buttonScrollToBottomSize - view.layoutMargins.right
