Interface used to control copyobject behavior.
The preCopy method is invoked on the original object BEFORE that
copy is constructed, allowing the original to be prepared for
copying. The postCopy method is invoked on the copy
AFTER the copy is completed, allowing the copy to be completed
as needed.