// TF:8/8/07:Made a shallow clone in case there is a really big object attached to the list element
Array_Of_ListElement<ListElement> clonedList = CloneHelper.clone(les, false);
Object currentValue = this.list.getValue();
ListElement valueToReselect = null;
if (currentValue instanceof ListElement && clonedList != null && this.list.getSelectionHolder() instanceof TypeAwareValueModel) {
TypeAwareValueModel tavm = (TypeAwareValueModel)this.list.getSelectionHolder();
// We need to find an item in the new list which is the same as an item in the old list,
// depending on the type being considered. For example, if the list is mapped to an int,
// we need to find an element in the new list with the same IntegerValue.
Class<?> clazz = tavm.getValueType();
ListElement currentSelection = (ListElement)currentValue;
for (ListElement item : clonedList) {
if (clazz.equals(Integer.TYPE) ||
clazz.equals(Short.TYPE) ||
NumericData.class.isAssignableFrom(clazz) ||