Creates a shallow clone of this collection.
constructClone is a utility for other generic collection methods, particularly
constructClone must invoke its own constructor with the same parameters as
were used to construct itself, so a
Set with a particular hash and
equality operator would produce a
Set with the same operators.
constructClone will populate the copy with the given values if provided.
Creates a deep replica of this collection.