 
 			var token: RemovalToken?
 			observers.modify { (var observers) in
+				ReactiveCocoa.println("\(ObjectIdentifier(lock).hashValue) producer() modify()")
 				token = observers?.insert(observer)
 				return observers
 			}
 
+			ReactiveCocoa.println("\(ObjectIdentifier(lock).hashValue) producer() put()")
 			for event in events {
 				observer.put(event)
 			}

import Result

/// A SignalProducer creates Signals that can produce values of type `T` and/or
/// error out with errors of type `E`. If no errors should be possible, NoError

			if let liveObservers = oldObservers {
				lock.lock()

				ReactiveCocoa.println("\(ObjectIdentifier(lock).hashValue) bufferingObserver() put()")
				if event.isTerminating {
					terminationEvent = event
				} else {
