docs: public <T> T get(final String param, final StringConverter<T> converter,
        final Validator<T> validator,
        final String expectation) {
      checkNotNull(param);
      checkNotNull(converter);
      checkNotNull(validator);
      checkNotNull(expectation);
  
      final String value = getString(param);
  
      T ret;
  
      try {
        ret = converter.decode(value);
      } catch (final Exception e) {
        throw new ParameterConversionException(fullString(param), value, e, expectation);
      }
  
      try {
        validator.validate(ret);
      } catch (final ValidationException e) {
        throw new ParameterValidationException(fullString(param), value, e);
      }
  
      if (ret == null) {
        throw new RuntimeException(
            "Parameter converters not allowed to return null for non-null input.");
      }
  
      return ret;
    }