Array arr = Caster.toArray(o,null);
if(arr!=null){
// convert the values
Iterator<Entry<Key, Object>> it = arr.entryIterator();
Array _arr=new ArrayImpl();
Entry<Key, Object> e;
Object src,trg;
boolean hasChanged=false;
while(it.hasNext()){
e = it.next();
src=e.getValue();
trg=castTo(pc, _type, _strType, src);
_arr.setEL(e.getKey(), trg);
if(src!=trg) hasChanged=true;
}
if(!hasChanged) return arr;
return _arr;
}