         {
         self.observerRef = StrongOrWeakRef<ResourceObserver>(observer)
         self.resource = resource
+        originalObserverDescription = debugStr(observer)  // So we know what was deallocated if it gets logged
         }
 
     mutating func addOwner(owner: AnyObject)

        
        for entry in removed
            {
            debugLog(.Observers, [self, "removing observer whose owners are all gone:", entry.observer ?? "<observer deallocated>"])
            entry.observer?.stoppedObservingResource(self)
            }
        }


// MARK: - Internals

internal struct ObserverEntry: CustomStringConvertible
    {
    private let resource: Resource  // keeps resource around as long as it has observers
    
