Contains classes and interfaces related to making 'deep clone' duplicates of objects, especially collections..

Java defines a clone method of the Object class that can make a deep clone, but most collections implement this in a way that makes a 'shallow' clone; to make a branching point in an ABCM simulation requires making a 'deep' clone.

The distinction is subtle but not difficult. Suppose you have a list of three objects: A1, B1, and C1. The list itself is another object, L1. Making a copy of 'L1' using the normal 'clone' method allows you to create a new list, L2. This list is a duplicate of L1 in the sense that it lists the same original three objects- A1, B1, and C1. This is a 'shallow' clone. A 'deep clone' makes duplicates of the objects contained in the list as well as the list. A deep clone of the list is made and becomes L3; it contains new copies of the original elements, hence A2, B2, and C2. If the original list contents were themselves lists, the new, deep copy should include new instances of all elements, recursively down to the fundamental layer.

The interface and classes in this package facilitate the creation of objects from which a deep clone can be easily created.