 
 
 
-	//MARK: - Fetch objects
+	//	MARK: - Fetch objects
 
 	/// Creates `NSFetchRequest` for the type of the current object
 	///

	///   - predicate: (optional) `NSPredicate` condition to apply to the fetch
	/// - Returns: a `Set` of values with appropriate type
	public static func fetch<T>(property: String, context: NSManagedObjectContext, predicate: NSPredicate? = nil) -> Set<T> {
		let entity = Self.entity(managedObjectContext: context)

		let fetchRequest = NSFetchRequest<NSDictionary>(entityName: Self.entityName)
		fetchRequest.predicate = predicate

	}


	/// Looks for an object matching given predicate in the given context.
	///	Only returns the object if it's not a fault. This methods does not access persistent store (no Fetch)
	///
	/// - Parameters:
	///   - context: `NSManagedObjectContext` in which to perform the fetch
	///   - predicate: (optional) `NSPredicate` condition to apply to the fetch
	/// - Returns: Non-faulted object or nil
	public static func find(in context: NSManagedObjectContext, predicate: NSPredicate) -> Self? {
		for obj in context.registeredObjects where !obj.isFault {
			guard let res = obj as? Self, predicate.evaluate(with: res) else { continue }
			return res
		}
		return nil
	}


	/// First looks for an object matching given predicate in the given context.
	///	Only returns the object if it's not a fault.
	///	If not found, then goes to the persistent store (makes a Fetch).
	///
	///	If it returns an object, it's guaranteed it‘s not a fault.
	///
	/// - Parameters:
	///   - context: `NSManagedObjectContext` in which to perform the fetch
	///   - predicate: (optional) `NSPredicate` condition to apply to the fetch
	/// - Returns: Non-faulted object or nil
	public static func findOrFetch(in context: NSManagedObjectContext, predicate: NSPredicate) -> Self? {
		if let obj = find(in: context, predicate: predicate) { return obj }

		let fr = fetchRequest(in: context, predicate: predicate)
		fr.returnsObjectsAsFaults = false
		fr.fetchLimit = 1
		guard let objects = try? context.fetch(fr) else { return nil }
		return objects.first
	}


	//	MARK:	- NSFetchedResultsController

	/// Creates Fetched Results Controller for the current object’s type.
	///	If you supply the `sectionNameKeyPath`, make sure that same keypath is set as first in the `sortDescriptors`
