 
 	private weak var object: NSObject?
 	private let keyPath: String
-	
-	private let willDeallocProducer: SignalProducer<(), NoError>
-	private let willDeallocObserver: Signal<(), NoError>.Observer
 
 	/// The current value of the property, as read and written using Key-Value
 	/// Coding.

	public init(object: NSObject?, keyPath: String) {
		self.object = object
		self.keyPath = keyPath
		(willDeallocProducer, willDeallocObserver) = SignalProducer<(), NoError>.buffer(1)
	}
	
	deinit {
		sendCompleted(willDeallocObserver)
	}
}


	/// KVO-compliant. Most UI controls are not!
	public var producer: SignalProducer<AnyObject?, NoError> {
		if let object = object {
			return object.rac_valuesForKeyPath(keyPath, observer: nil).toSignalProducer()
				// Errors aren't possible, but the compiler doesn't know that.
				|> catch { error in
					assert(false, "Received unexpected error from KVO signal: \(error)")
					return .empty
				}
		} else {
			return .empty
		}
