         return observers.isEmpty
     }
 
-    // MARK: Notify API
+    // MARK: - Notify API
 
     /// A boolean value to determine whether the notifications should be sent.
     /// This flag is checked before firing any notification calls to the registered

    }

    static func ==<T>(lhs: T, rhs: Observer) -> Bool where T: AnyObject, T: Equatable {
        return rhs.equals(lhs)
    }

    static func ==<T>(lhs: Observer, rhs: T) -> Bool where T: AnyObject, T: Equatable {
        return lhs.equals(rhs)
    }

    static func ==<T>(lhs: T?, rhs: Observer) -> Bool where T: AnyObject, T: Equatable {

    }
}

// MARK: - Observer

private final class Observer {
    fileprivate let equals: (AnyObject) -> Bool
    weak var owner: AnyObject?
    var handler: (() -> Void)?

    init<T>(owner: T, handler: @escaping () -> Void) where T: AnyObject, T: Equatable {
        self.owner = owner
        self.handler = handler
        self.equals = { [weak owner] otherOwner in
