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


// MARK: - Internals

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

        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
