code: @Override
      public Object create(ActionParameter argument, Context context, ParameterFactories engine) {
          Object object = createNewInstance(argument.getRawType(), context, engine);
  
          for (Method method : argument.getRawType().getMethods()) {
              if (method.getName().startsWith(SETTER_PREFIX)) {
                  if (method.getParameterTypes().length != 1) {
                      LOGGER.warn("The class {} has a setter method called {} but with too many parameters to be " +
                                      "injected with the 'BeanParameter' annotation", argument.getRawType().getName(),
                              method.getName());
                      continue;
                  }
  
                  // Only 1 parameter
                  Annotation[] annotation = method.getParameterAnnotations()[0];
                  Class<?> typesOfParameter = method.getParameterTypes()[0];
                  Type genericTypeOfParameter = method.getGenericParameterTypes()[0];
                  ActionParameter parameter = ActionParameter.from(method, annotation, typesOfParameter,
                          genericTypeOfParameter);
                  // An exception is thrown if we can't build the parameter object.
                  Object value = Bindings.create(parameter, context, engine);
                  if (value != null) {
                      inject(object, method, value);
                  }
              }
          }
          return object;
      }
docs: Creates the parameter's value.
  
  @param argument the argument
  @param context  the current HTTP context
  @param engine   the converter
  @return the created object