       return control
    }()
    
+   fileprivate var _footerViewTopSpaceConstraint: NSLayoutConstraint!
+   fileprivate var _footerViewBottomSpaceConstraint: NSLayoutConstraint!
+   
    fileprivate lazy var _footerContainerView: UIView = {
       let footerView = UIView(frame: .zero)
       footerView.translatesAutoresizingMaskIntoConstraints = false

   fileprivate var _elements: [Elemental] = []
   
   // MARK: - Public Properties
   public var footerView: UIView? {
      didSet {
         switch footerView {

   
   private func _update(footerView: UIView) {
      _footerContainerView.subviews.forEach { $0.removeFromSuperview() }
      _footerContainerView.addSubview(footerView)
      
      if footerView.translatesAutoresizingMaskIntoConstraints {
         NSLayoutConstraint.activate([
            _footerContainerView.widthAnchor.constraint(equalTo: footerView.widthAnchor),
            _footerContainerView.heightAnchor.constraint(equalTo: footerView.heightAnchor),
            ])
      } else {
         NSLayoutConstraint.activate([
            footerView.centerYAnchor.constraint(equalTo: _footerContainerView.centerYAnchor),
            footerView.centerXAnchor.constraint(equalTo: _footerContainerView.centerXAnchor),
            _footerContainerView.widthAnchor.constraint(equalTo: footerView.widthAnchor),
            _footerContainerView.heightAnchor.constraint(equalTo: footerView.heightAnchor),
            ])
      }
   }
}

