 public class ObserverOf<T>: TypedObservable {
     // MARK: Public properties
     public typealias Value = T
+    public typealias Callback = (T, ReadTransaction?) -> Void
 
     public private(set) var value: T
 


    private func onValueSet(newValue: T, transaction: ReadTransaction?) {
        for (_, observer) in observers {
            observer(newValue, transaction)
        }
    }
}


    // MARK: Private properties

    private var observers: [UInt64: (thread: CallbackThread, callback: Callback)]
    private var nextObserverToken = UInt64(0)

    // MARK: Object lifecycle
