         return observer == nil
             || (!observerIsOwner && externalOwners.isEmpty)
         }
+    
+    private var originalObserverDescription: String
+    var description: String
+        {
+        if let observer = observer
+            { return debugStr(observer) }
+        else
+            { return "<deallocated: \(originalObserverDescription)>" }
+        }
     }
 
 private struct ClosureObserver: ResourceObserver


// MARK: - Internals

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

        {
        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)
