# File lib/Borges/Utilities/WeakIdentityKeyHash.rb, line 17
    def self.make_finalizer(internal_id, hash)
      return proc do |id|
        Thread.exclusive do
          rids = ID_MAP[id]
          if rids then
            for rid in rids
              ID_REV_MAP.delete(rid)
            end

            ID_MAP.delete(id)
          end

          rid = ID_REV_MAP[id]

          if rid then
            ID_REV_MAP.delete(id)
            ID_MAP[rid].delete(id)
            ID_MAP.delete(rid) if ID_MAP[rid].empty?
          end
        end

        hash.delete(internal_id) unless hash.nil?
      end
    end