docs: public static Converter getConverter(FacesContext context, UIComponent component) {
          if (!(component instanceof ValueHolder)) {
              return null;
          }
  
          Converter converter = ((ValueHolder) component).getConverter();
          if (converter != null) {
              return converter;
          }
  
          ValueExpression valueExpression = component.getValueExpression("value");
          if (valueExpression == null) {
              return null;
          }
  
          Class<?> converterType = valueExpression.getType(context.getELContext());
          if (converterType == null || converterType == Object.class) {
              // no conversion is needed
              return null;
          }
  
          if (converterType == String.class
                  && !PrimeApplicationContext.getCurrentInstance(context).getConfig().isStringConverterAvailable()) {
              return null;
          }
  
          return context.getApplication().createConverter(converterType);
      }