int len = array.count();
switch (((DynamicSubscript)name).getFlag()) {
case DynamicSubscript.FIRST: return len > 0 ? array.objectAtIndex(0) : null;
case DynamicSubscript.MID: return len > 0 ? array.objectAtIndex(len/2) : null;
case DynamicSubscript.LAST: return len > 0 ? array.lastObject() : null;
case DynamicSubscript.ALL: return array.clone();
}
}
throw new NoSuchPropertyException(target, name);
}