'(internal) Decrement the reference count of a cached object.
If the reference count is zero, free the reference, then send an
\'uncached\' directive.
@param objectID: The object ID.'

def proto_decache(self, objectID):

    refs = self.remotelyCachedObjects[objectID].decref()
    if (refs == 0):
        lobj = self.remotelyCachedObjects[objectID]
        cacheable = lobj.object
        perspective = lobj.perspective
        try:
            cacheable.stoppedObserving(perspective, RemoteCacheObserver(self, cacheable, perspective))
        except:
            log.deferr()
        puid = cacheable.processUniqueID()
        del self.remotelyCachedLUIDs[puid]
        del self.remotelyCachedObjects[objectID]
        self.sendCall('uncache', objectID)
