def METHOD_NAME(self, distObj):
    # Only distributed objects are allowed in the cache
    assert isinstance(distObj, DistributedObject.DistributedObject)
    assert self.checkCache()
    # Get the doId
    doId = distObj.getDoId()
    # Error check
    success = False
    if doId in self.dict:
        CRCache.notify.warning("Double cache attempted for distObj "
                               + str(doId))
    else:
        # Call disable on the distObj
        distObj.disableAndAnnounce()
        # Put the distObj in the fifo and the dict
        self.fifo.append(distObj)
        self.dict[doId] = distObj
        success = True
        if len(self.fifo) > self.maxCacheItems:
            # if the cache is full, pop the oldest item
            oldestDistObj = self.fifo.pop(0)
            # and remove it from the dictionary
            del self.dict[oldestDistObj.getDoId()]
            # and delete it
            oldestDistObj.deleteOrDelay()
            if oldestDistObj.getDelayDeleteCount() <= 0:
                # make sure we're not leaking
                oldestDistObj.detectLeaks()
    # Make sure that the fifo and the dictionary are sane
    assert len(self.dict) == len(self.fifo)
    return success