         return section
     }
     
-    internal func _insert<Z>(el: Z, atIndexPath indexPath: [Int]) throws {
+    internal func _insert(el: Any, atIndexPath indexPath: [Int]) throws {
         let index = indexPath.first!
         let restIndexPath = Array(indexPath.dropFirst())
         if restIndexPath.count > 0 {

internal protocol MutableCollectionSectionProtocol: WithID {
    var _anyItems: [Any] { get }
    func _getSubsection(atIndex _: Int) throws -> MutableCollectionSectionProtocol
    func _getItem<Z>(atIndexPath _: [Int]) throws -> Z
    func _removeItem<Z>(atIndexPath _: [Int]) throws -> Z
    func addParent(_: MutableCollectionSectionProtocol)
    func _handleChange(_: MutableCollectionChange)
    func _insert<Z>(_: Z, atIndexPath _: [Int]) throws
}

public enum MutableCollectionSectionError: ErrorType {

    public func removeAtIndexPath(indexPath: [Int]) {
        self.assertIndexPathNotEmpty(indexPath)
        self._transition {
            try! self._removeItem(atIndexPath: indexPath)
        }
    }
    
