Sometimes objects are registered for finalization more than once. The effects of multiple registration are defined as follows:
finalize-when-unreachable on an object n times causes that object to be added to the finalization queue up to n times, where n is greater than or equal to zero. There is no guarantee that the object will be added exactly n times.
Note that this definition so general that it does not guarantee that any object will ever be added to be finalization queue. In practice, Common Dylan's implementation guarantees that an object is added to the queue at least once whenever an object has ben determined to be unreachable by the garbage collector.
To remain robust under multiple registration, finalizers should be idempotent: that is, the effect of multiple finalize calls on an object should is the same as the effect of a single call.