docs: public void addConverterFactory(final IStringConverterFactory converterFactory) {
          addConverterInstanceFactory(new IStringConverterInstanceFactory() {
              @SuppressWarnings("unchecked")
              @Override
              public IStringConverter<?> getConverterInstance(Parameter parameter, Class<?> forType, String optionName) {
                  final Class<? extends IStringConverter<?>> converterClass = converterFactory.getConverter(forType);
                  try {
                      if(optionName == null) {
                          optionName = parameter.names().length > 0 ? parameter.names()[0] : "[Main class]";
                      }
                      return converterClass != null ? instantiateConverter(optionName, converterClass) : null;
                  } catch (InstantiationException | IllegalAccessException | InvocationTargetException e) {
                      throw new ParameterException(e);
                  }
              }
          });
      }