code: public static Object instantiateWrapperArray(Class<?> type, String[] values) {
          logger.entering(new Object[] { type, values });
          validateParams(type, values);
          boolean condition = (isWrapperArray(type) || hasOneArgStringConstructor(type.getComponentType()));
          checkArgument(condition, type.getName()
                  + " is neither awrapper type nor has a 1 arg String constructor defined.");
          Class<?> componentType = type.getComponentType();
          Object arrayToReturn = Array.newInstance(componentType, values.length);
          for (int i = 0; i < values.length; i++) {
              try {
                  Array.set(arrayToReturn, i, componentType.getConstructor(String.class).newInstance(values[i]));
              } catch (ArrayIndexOutOfBoundsException | IllegalArgumentException | InstantiationException
                      | IllegalAccessException | InvocationTargetException | NoSuchMethodException | SecurityException e) {
                  throw new ReflectionException(e);
              }
          }
          logger.exiting(arrayToReturn);
          return arrayToReturn;
      }
docs: This helper method facilitates creation of wrapper arrays and pre-populates them with the set of String values
  provided. E.g., of wrapper arrays include Integer[], Character[], Boolean[] and so on. This method can also be
  used to create arrays of types which has a 1 argument String constructor defined.
  
  @param type
  The type of the desired array.
  @param values
  A {@link String} array that represents the set of values that should be used to pre-populate the
  newly constructed array.
  
  @return An array of the type that was specified.