code: public static <T> T invokeConstructor(Class<T> classThatContainsTheConstructorToTest, Class<?>[] parameterTypes,
                                            Object[] arguments) throws Exception {
          if (parameterTypes != null && arguments != null) {
              if (parameterTypes.length != arguments.length) {
                  throw new IllegalArgumentException("parameterTypes and arguments must have the same length");
              }
          }
  
          Constructor<T> constructor = null;
          try {
              constructor = classThatContainsTheConstructorToTest.getDeclaredConstructor(parameterTypes);
          } catch (Exception e) {
              throw new ConstructorNotFoundException("Could not lookup the constructor", e);
          }
  
          return createInstance(constructor, arguments);
      }
docs: Invoke a constructor. Useful for testing classes with a private
  constructor when PowerMock cannot determine which constructor to invoke.
  This only happens if you have two constructors with the same number of
  arguments where one is using primitive data types and the other is using
  the wrapped counter part. For example:
  
  <pre>
  public class MyClass {
  private MyClass(Integer i) {
  ...
  }
  
  private MyClass(int i) {
  ...
  }
  </pre>
  
  This ought to be a really rare case. So for most situation, use
  
  @param <T>                                   the generic type
  @param classThatContainsTheConstructorToTest the class that contains the constructor to test
  @param parameterTypes                        the parameter types
  @param arguments                             the arguments
  @return The object created after the constructor has been invoked.
  @throws Exception If an exception occur when invoking the constructor.
  {@link #invokeConstructor(Class, Object...)} instead.