Object entry = i.next();
if ( entry instanceof AnyValue ) {
try {
array[counter] = entryValueDescriptor.valueOf(((AnyValue)entry).load(context), context);
} catch (Exception e) {
throw new ValueCastException(new ErrorMessage("uncastableArrayValue", new Object[] { entry }));
}
} else {
array[counter] = entryValueDescriptor.valueOf(entry, context);
}
counter++;
}
} else if ( value instanceof ArrayValue ) {
array = new Value[((ArrayValue)value).getArray().length];
for ( int i = 0; i < array.length; i++ ) {
Object entry = ((ArrayValue)value).getArray()[i];
if ( entry instanceof AnyValue ) {
try {
array[i] = entryValueDescriptor.valueOf(((AnyValue)entry).load(context), context);
} catch (Exception e) {
throw new ValueCastException(new ErrorMessage("uncastableArrayValue", new Object[] { value }));
}
} else {
array[i] = entryValueDescriptor.valueOf(entry, context);
}
}
} else {
throw new ValueCastException(new ErrorMessage("uncastableArrayValue", new Object[] { value }));
}
return new ArrayValue(array);
}