code: public Object setObjectValue(StringToObjectConverter pConverter, Object pInner, String pIndex, Object  pValue)
              throws IllegalAccessException, InvocationTargetException {
          Class clazz = pInner.getClass();
          if (!clazz.isArray()) {
              throw new IllegalArgumentException("Not an array to set a value, but " + clazz +
                      ". (index = " + pIndex + ", value = " +  pValue + ")");
          }
          int idx;
          try {
              idx = Integer.parseInt(pIndex);
          } catch (NumberFormatException exp) {
              throw new IllegalArgumentException("Non-numeric index for accessing array " + pInner +
                      ". (index = " + pIndex + ", value to set = " +  pValue + ")",exp);
          }
          Class type = clazz.getComponentType();
          Object value = pConverter.prepareValue(type.getName(), pValue);
          Object oldValue = Array.get(pInner, idx);
          Array.set(pInner, idx, value);
          return oldValue;
      }
docs: Set a value in an array
  
  @param pConverter the global converter in order to be able do dispatch for
  serializing inner data types
  @param pInner object on which to set the value (which must be a {@link List})
  @param pIndex index (as string) where to set the value within the array
  @param pValue the new value to set
  
  @return the old value at this index
  @throws IllegalAccessException
  @throws InvocationTargetException