 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 _getItem(atIndexPath _: [Int]) throws -> Any
+    func _removeItem(atIndexPath _: [Int]) throws -> Any
     func addParent(_: MutableCollectionSectionProtocol)
     func _handleChange(_: MutableCollectionChange)
-    func _insert<Z>(_: Z, atIndexPath _: [Int]) throws
+    func _insert(_: Any, atIndexPath _: [Int]) throws
 }
 
 public enum MutableCollectionSectionError: ErrorType {

        return self[index]
    }
    
    public func objectAtIndexPath<Z>(indexPath: [Int]) -> Z {
        return try! self._getItem(atIndexPath: indexPath)
    }
    
    public func objectAtIndexPath<Z>(indexPath: NSIndexPath) -> Z {
        return self.objectAtIndexPath(indexPath.asArray)
    }
    

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