code: public T create(ActionContext actionContext) {
  		try {
  			T action;
  			Class[] actionConstructorParams = actionConstructor.getParameterTypes();
  			switch (actionConstructorParams.length) {
  				case 0:
  					action = actionConstructor.newInstance();
  					break;
  				case 1:
  					if (actionConstructorParams[0].equals(ActionContext.class)) {
  						action = actionConstructor.newInstance(actionContext);
  					} else {
  						throw new IllegalStateException("Unknown argument type in action constructor " + actionConstructorParams[0].getName());
  					}
  					break;
  				default:
  					throw new IllegalStateException("Invalid argument number in action constructor: " + actionConstructorParams.length);
  			}
  			return action;
  		} catch (InstantiationException | InvocationTargetException | IllegalAccessException instantiationException) {
  			throw new IllegalStateException("Failed to create action", instantiationException);
  		}
  	}
docs: Create a new {@link Action} using {@link #actionConstructor}.