         sectionItems.forEach { registerSectionItem($0) }
         
         tableView.update {
-            self._sectionItems.replace(sectionItems, at: indexes)
+            _sectionItems.replace(sectionItems, at: indexes)
             tableView.reloadSections(indexes, with: animation)
         }
     }

    open func insertSectionItems(_ sectionItems: [TableViewSectionItemProtocol],
                                 atIndexes indexes: IndexSet,
                                 withRowAnimation animation: UITableViewRowAnimation) {
        precondition(indexes.first! <= self._sectionItems.count, "It's impossible to insert item at index that is larger than count of section items")
        sectionItems.forEach { registerSectionItem($0) }
        
        tableView.update {
            self._sectionItems.insert(sectionItems, at: indexes)
            tableView.insertSections(indexes, with: animation)
        }
    }

                                 withRowAnimation animation: UITableViewRowAnimation) {
        var indexes = IndexSet()
        for sectionItem in sectionItems {
            let section = _sectionItems.index(where: {$0 === sectionItem})
            precondition(section != nil, "It's impossible to remove section items that are not contained in section items array")
            indexes.insert(section!)
        }
        
        tableView.update {
            _sectionItems.remove(at: indexes)
            tableView.deleteSections(indexes, with: animation)
        }
    }
