 
 extension DelayedDeletable where Self: NSManagedObject {
 
+  /// **Mechanica**
+  ///
+  /// Protocol `DelayedDeletable`.
+  ///
+  /// Returns true if `self` has been marked for deletion.
   public var hasChangedForDelayedDeletion: Bool {
     return changedValue(forKey: markedForDeletionKey) as? Date != nil
   }


extension NSFetchRequestResult where Self: NSManagedObject, Self: DelayedDeletable {

  // TODO: work in progress
  /// **Mechanica**
  ///
  /// Makes a batch delete for object conforming to `DelayedDeletable` older than the `cutOffDate` date.


extension RemoteDeletable where Self: DelayedDeletable {

  /// **Mechanica**
  ///
  /// Protocol `RemoteDeletable`.
  ///
  /// Predicate to filter for objects that are marked for remote deletion.
  public static var notMarkedForDeletionPredicate: NSPredicate {
    return NSCompoundPredicate(andPredicateWithSubpredicates: [notMarkedForLocalDeletionPredicate, notMarkedForRemoteDeletionPredicate])
  }
