If copyfmt() is used, the callbacks are called twice for the object on which copyfmt() is called.
First, before anything is copied, the callbacks are invoked with the argument erase_event to do all
the cleanup necessary, such as deleting objects stored in the pword() array. The callbacks called are
those registered for the object. After the format flags are copied, which includes the list of callbacks
from the argument stream, the callbacks are called again, this time with the argument copy_event.
This pass can, for example, be used to arrange for deep copying of objects stored in the pword()
array. Note that the callbacks are also copied and the original list of callbacks is removed. Thus, the
callbacks invoked for the second pass are the callbacks just copied.