Object array = source;
int len = listProto.size(array);
switch (((DynamicSubscript)index).getFlag()) {
case DynamicSubscript.ALL:
return listProto.copy(array);
case DynamicSubscript.FIRST:
index = new Integer((len > 0) ? 0 : -1);
break;
case DynamicSubscript.MID:
index = new Integer((len > 0) ? (len / 2) : -1);