code: public static Object toWrapperArray(Object array) {
      if (!array.getClass().isArray()) {
        throw new IllegalArgumentException("Must give array object.");
      }
      if (isPrimitiveArray(array.getClass())) {
        int length = Array.getLength(array);
        Object newArray = Array.newInstance(toWrapper(array.getClass().getComponentType()), length);
        for (int i = 0; i < length; i++) {
          Array.set(newArray, i, toWrapper(Array.get(array, i)));
        }
        return newArray;
      } else if (array.getClass().getComponentType().isArray()) {
        int length = Array.getLength(array);
        Object newArray = Array.newInstance(toWrapperArray(array.getClass().getComponentType()), length);
        for (int i = 0; i < length; i++) {
          Array.set(newArray, i, toWrapperArray(Array.get(array, i)));
        }
        return newArray;
      }
      return array;
    }
docs: Convert a primitive type array(any dimension) to wrapper type array.<br>
  If not primitive array, return itself.<br>
  If not array, throw IllegalArgumentException.
  
  @param array
  @return