A DataList is ordered list of Data objects.
When an value is being added or replaced on the list, the list will verify that the value is a Data object. If the value is not a Data object, then the list will throw an {@link IllegalArgumentException}.
Cloning via the {@link #clone()} method will shallow copy the {@link DataList}and will not deep copy contained complex objects. Copying via the {@link #copy()}method will deep copy the {@link DataList}, which includes deep copying the contained complex objects.
Instrumentation if enabled is only enabled for the {@link DataList} and notfor the underlying {@link CheckedList}. Furthermore, if a {@link DataList} is cloned,the clone will not have instrumentation enabled and the clone's instrumented data will be cleared.
Since {@link DataList} extends {@link CheckedList}, copying of the {@link DataList}is lazy and may be delayed until the {@link DataList} is about to be modified.
@author slim