docs: public static <T> T createInstance(Class<T> pClass, Object... pParams)
              throws InvocationTargetException {
          T value;
  
          try {
              // Create param and argument arrays
              Class[] paramTypes = null;
              if (pParams != null && pParams.length > 0) {
                  paramTypes = new Class[pParams.length];
                  for (int i = 0; i < pParams.length; i++) {
                      paramTypes[i] = pParams[i].getClass();
                  }
              }
  
              // Get constructor
              Constructor<T> constructor = pClass.getConstructor(paramTypes);
  
              // Invoke and create instance
              value = constructor.newInstance(pParams);
          }
          /* All this to let InvocationTargetException pass on */
          catch (NoSuchMethodException nsme) {
              return null;
          }
          catch (IllegalAccessException iae) {
              return null;
          }
          catch (IllegalArgumentException iarge) {
              return null;
          }
          catch (InstantiationException ie) {
              return null;
          }
          catch (ExceptionInInitializerError err) {
              return null;
          }
  
          return value;
      }