Cloneable types
Since variables of reference types are bound to the runtime location of the value rather than the value itself, direct assignment of a variable of reference type copies the reference (that is, the value’s location) and not the value. To make a copy of the value, you must use the clone instance method instead of assignment. The types that have this property are called cloneable types.
The cloneable types are string, dictionary, event, location, and sequence.
For dictionary, event, and sequence types, the behavior of the clone() method varies according to whether or not the instance is potentially cyclic.
When the instance is potentially cyclic, the correlator preserves multiple references, if they exist, to the same object. That is, the correlator does not create a copy of the object to correspond to each reference. See also
Potentially cyclic types.
When the instance is not potentially cyclic, and there are multiple references to the same object, the correlator makes a copy of that object to correspond to each reference.
While you can call the clone() method on a stream value, or a value that indirectly contains a stream or listener value, cloning returns another reference to the original stream or listener and does not clone it.