             return nil
         }
     }
-
+    
     fileprivate func estimatedHeight(atIndexPath indexPath: IndexPath) -> CGFloat? {
         guard let height = item(forIndexPath: indexPath).height else { return nil }
         return estimatedHeight(height)
-}
-
+    }
+    
     fileprivate func estimatedHeight(_ height: ImmutableMutableHeight) -> CGFloat {
         switch height {
         case .immutable(_):

            return value
        }
    }

    fileprivate func height(forKey key: (Section) -> HeaderFooterView, inSection section: Int) -> CGFloat? {
        guard case .view(let view) = key(sections[section]), let value = view.height
            else { return nil }
        return height(value)
    }

    fileprivate func height(atIndexPath indexPath: IndexPath) -> CGFloat? {
        guard let value = item(forIndexPath: indexPath).height else { return nil }
        return height(value)
    }

    fileprivate func height(_ height: ImmutableMutableHeight) -> CGFloat {
        switch height {
        case .immutable(let value):

        self.setupSections()
        
    }
    
    public convenience init(tableView: UITableView, sections: [Section]) {
        self.init(tableView: tableView)
        self.sections.replace(with: sections)
    }
    
