docs: public <T> List<T> getList(final String param, final StringConverter<T> converter,
        final Validator<T> validator,
        final String expectation) {
      checkNotNull(param);
      checkNotNull(converter);
      checkNotNull(validator);
      checkNotNull(expectation);
  
      final List<String> values = getStringList(param);
  
      final ImmutableList.Builder<T> retList = ImmutableList.builder();
  
      for (final String value : values) {
        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.");
        }
  
        retList.add(ret);
      }
      return retList.build();
    }