code: public static Object newInstance(Class<?> componentType, int... dimensions)
          throws IllegalArgumentException, NegativeArraySizeException {
          if (dimensions.length <= 0 || dimensions.length > 255) {
              throw new IllegalArgumentException("Bad number of dimensions: " + dimensions.length);
          }
          if (componentType == void.class) {
              throw new IllegalArgumentException("Can't allocate an array of void");
          }
          if (componentType == null) {
              throw new NullPointerException("componentType == null");
          }
          return createMultiArray(componentType, dimensions);
      }
docs: Creates a new array
  with the specified component type and dimensions.
  If {@code componentType}
  represents a non-array class or interface, the new array
  has {@code dimensions.length} dimensions and
  {@code componentType} as its component type. If
  {@code componentType} represents an array class, the
  number of dimensions of the new array is equal to the sum
  of {@code dimensions.length} and the number of
  dimensions of {@code componentType}. In this case, the
  component type of the new array is the component type of
  {@code componentType}.
  
  <p>The number of dimensions of the new array must not
  exceed 255.
  
  @param componentType the {@code Class} object representing the component
  type of the new array
  @param dimensions an array of {@code int} representing the dimensions of
  the new array
  @return the new array
  @exception NullPointerException if the specified
  {@code componentType} argument is null
  @exception IllegalArgumentException if the specified {@code dimensions}
  argument is a zero-dimensional array, if componentType is {@link
  Void#TYPE}, or if the number of dimensions of the requested array
  instance exceed 255.
  @exception NegativeArraySizeException if any of the components in
  the specified {@code dimensions} argument is negative.