if(type.isAssignableFrom(List.class)){ ArrayList arr = New.arrayList(); tryIncreaseSize(arr,index); arr.set(index, Converts.convert(value, bp.getElementType())); bp.setValue(bean, arr); if(type.isAssignableFrom(List.class)){ List<Object> arr = (List<Object>)propertyVal; tryIncreaseSize(arr,index); arr.set(index, Converts.convert(value, bp.getElementType())); }else if(type.isArray()){ newArr.add(Array.get(arr,i)); tryIncreaseSize(newArr,index); newArr.set(index, Converts.convert(value, type.getComponentType())); bp.setValue(bean, newArr.toArray()); newArr.add(obj); tryIncreaseSize(newArr,index); newArr.set(index, Converts.convert(value, type.getComponentType())); bp.setValue(bean, newArr.toArray());