 /**
 Delegate to pass along the changes identified by the FetchedResultsController.
 */
-public protocol FetchedResultsControllerDelegate {
+public protocol FetchedResultsControllerDelegate: class {
     
     /**
     Indicates that the controller has started identifying changes.

    
    // <RBQFetchedResultsControllerDelegate>
    @objc func controllerWillChangeContent(controller: RBQFetchedResultsController) {
        self.delegate.controllerWillChangeContent(controller)
    }
    
    @objc func controller(controller: RBQFetchedResultsController, didChangeObject anObject: RBQSafeRealmObject, atIndexPath indexPath: NSIndexPath?, forChangeType type: NSFetchedResultsChangeType, newIndexPath: NSIndexPath?) {
        
        self.delegate.controller(controller, didChangeObject: anObject, atIndexPath: indexPath, forChangeType: type, newIndexPath: newIndexPath)
    }
    
    @objc func controller(controller: RBQFetchedResultsController, didChangeSection section: RBQFetchedResultsSectionInfo, atIndex sectionIndex: UInt, forChangeType type: NSFetchedResultsChangeType) {
        
        self.delegate.controller(controller, didChangeSection: section, atIndex: sectionIndex, forChangeType: type)
    }
    
    @objc func controllerDidChangeContent(controller: RBQFetchedResultsController) {
        self.delegate.controllerDidChangeContent(controller)
    }
}
}

// Internal Proxy To Manage Converting The Objc Delegate
internal protocol DelegateProxyProtocol: class {
    func controllerWillChangeContent(controller: RBQFetchedResultsController!)
    
    func controller(controller: RBQFetchedResultsController!, didChangeObject anObject: RBQSafeRealmObject!, atIndexPath indexPath: NSIndexPath!, forChangeType type: NSFetchedResultsChangeType, newIndexPath: NSIndexPath!)
