def build(self, cdata, destructor):
        # make a new cdata of the same type as the original one
        new_cdata = self.ffi.cast(self.ffi._backend.typeof(cdata), cdata)
        #
        def remove(key):
            # careful, this function is not protected by any lock
            old_key = self.data.pop(index)
            assert old_key is key
            destructor(cdata)
        #
        key = ref(new_cdata, remove)
        index = object()
        self.data[index] = key
        return new_cdata
dataset/ETHPy150Open cloudera/hue/desktop/core/ext-py/cffi-1.5.2/cffi/gc_weakref.py/GcWeakrefs.build/original