Classes that want to be fast-copied through a cross-task
call should implement FastCopyGraph or FastCopyTree.
FastCopyGraph objects are kept in a hash table so that
a FastCopyGraph object will be copied exactly once
during a single switch from one task to another. FastCopyTree objects,
on the other hand, may get more than once (even
an infinite number of times, if there is a circularity).
If a class implements both Serializable and FastCopyGraph
or FastCopyTree, FastCopyGraph or FastCopyTree will be
used to copy an object in a cross-task call, rather than
serialization. If a class implements both FastCopyGraph
and FastCopyTree, FastCopyGraph will be used.
Fast-copy classes must be shared between the tasks that
exchange fast-copy objects.
Fast-copy classes need not be public. However, a fast-copy
class must extend a class with a constructor
taking no arguments, and that constructor must be
accessible to the fast-copy class.