docs: public static <T> T invokeConstructor(final Class<T> cls, Object[] args, Class<?>[] parameterTypes)
              throws NoSuchMethodException, IllegalAccessException, InvocationTargetException,
              InstantiationException {
          args = ArrayUtils.nullToEmpty(args);
          parameterTypes = ArrayUtils.nullToEmpty(parameterTypes);
          final Constructor<T> ctor = getMatchingAccessibleConstructor(cls, parameterTypes);
          if (ctor == null) {
              throw new NoSuchMethodException(
                  "No such accessible constructor on object: " + cls.getName());
          }
          if (ctor.isVarArgs()) {
              final Class<?>[] methodParameterTypes = ctor.getParameterTypes();
              args = MethodUtils.getVarArgs(args, methodParameterTypes);
          }
          return ctor.newInstance(args);
      }