         NSLayoutConstraint.activate(constraints)
     }
     
+    private func addArrangedSubviewsForContainerStackView() {
+        var arrangedSubviews = [self.imageView, self.titlesStackView, self.chevronImageView]
+        
+        if let button = self.button {
+            arrangedSubviews.insert(button, at: arrangedSubviews.count - 1)
+        }
+        
+        containerStackView.arrangedSubviews.forEach { (view) in
+            containerStackView.removeArrangedSubview(view)
+        }
+        
+        arrangedSubviews.forEach { (view) in
+            containerStackView.addArrangedSubview(view)
+        }
+    }
+    
     @objc internal func handleTapGestureRecognizer() {
         guard let presenter = presenter, presenter.state == UINotificationPresenterState.presented else { return }
         notification.action?.execute()

        subviews.forEach { subview in
            subview.removeFromSuperview()
        }
        
        _containerStackView = nil
        setupView()
    }
    

    /// Saved to use for resetting the spacing after an image is shown or hidden.
    private let containerStackViewDefaultSpacing: CGFloat = 14
    
    private lazy var containerStackView: UIStackView = {
        let stackView = UIStackView()
        stackView.axis = .horizontal
        stackView.spacing = self.containerStackViewDefaultSpacing
        stackView.translatesAutoresizingMaskIntoConstraints = false
        stackView.alignment = .center
        
        return stackView
    }()
    
    open private(set) lazy var titlesStackView: UIStackView = {
        let stackView = UIStackView(arrangedSubviews: [self.titleLabel, self.subtitleLabel])
