     removeObservers()
   }
 
-  // MARK: - Private implementation
+  // MARK: - Private Implementation
 
   /// Removes all the observers.
   private func removeObservers() {


import CoreData

public final class ManagedObjectContextChangesObserver {
  public typealias Handler = (ManagedObjectContextChange<NSManagedObject>, ObservedEvent, NSManagedObjectContext) -> Void

  public enum Kind {
    case all(matching: (NSManagedObjectContext) -> Bool)
    case one(context: NSManagedObjectContext)


  let notificationCenter: NotificationCenter
  private let handler: Handler
  private var tokens = [NSObjectProtocol]()

   // MARK: - Initializers

  public init(kind: Kind, event: ObservedEvent, notificationCenter: NotificationCenter = .default, notificationQueue: OperationQueue? = nil, handler: @escaping Handler) {
    self.kind = kind
