docs: def _get_persistent_id(self, o):
          """
          Determines a persistent ID for an object.
          Does NOT do stores.
          """
          if type(o) in self.hash_dedup:
              oid = o.__class__.__name__ + "-" + str(hash(o))
              self._object_cache[oid] = o
              return oid
  
          if any(isinstance(o,c) for c in self.unsafe_key_baseclasses):
              return None
  
          try:
              return self._uuid_cache[o]
          except KeyError:
              pass
          except TypeError:
              return None
  
          #if type(o) in self.uuid_dedup:
          #    return self._get_id(o)
          if o.__class__.__module__.split('.')[0] in self.module_dedup or o.__class__ in self.uuid_dedup:
              oid = o.__class__.__name__.split(".")[-1] + '-' + str(uuid.uuid4())
              self._object_cache[oid] = o
              self._uuid_cache[o] = oid
              return oid
  
          return None