This function essentially limits the life time of the
the life time of the object. That is, when the object is finalized,
closure is invalidated by calling
it, in order to prevent invocations of the closure with a finalized
(nonexisting) object. Also,
added as marshal guards to the
closure, to ensure that an extra
reference count is held on
object during invocation of the
closure. Usually, this function will be called on closures that
object as closure data.
The data is owned by the caller of the function.