private static AnnotatedValueResolver ofQueryParam(String name,
                                                       AnnotatedElement annotatedElement,
                                                       AnnotatedElement typeElement, Class<?> type,
                                                       DescriptionInfo description,
                                                       @Nullable String serviceQueryDelimiter) {
        String queryDelimiter = serviceQueryDelimiter;
        final Delimiter delimiter = annotatedElement.getAnnotation(Delimiter.class);
        if (delimiter != null) {
            if (DefaultValues.isSpecified(delimiter.value())) {
                queryDelimiter = delimiter.value();
            }
        }
        return new Builder(annotatedElement, type, name)
                .annotationType(Param.class)
                .typeElement(typeElement)
                .supportDefault(true)
                .supportContainer(true)
                .description(description)
                .aggregation(AggregationStrategy.FOR_FORM_DATA)
                .resolver(resolver(ctx -> ctx.queryParams().getAll(name),
                                   () -> "Cannot resolve a value from a query parameter: " + name,
                                   queryDelimiter))
                .build();
    }
Creates a new {@link AnnotatedValueResolver} instance if the specified {@code annotatedElement} is
a component of {@link AnnotatedService}.

@param annotatedElement an element which is annotated with a value specifier such as {@link Param} and
                        {@link Header}.
@param typeElement      an element which is used for retrieving its type and name.
@param type             a type of the given {@link Parameter} or {@link Field}. It is a type of
                        the specified {@code typeElement} parameter.
@param pathParams       a set of path variables.
@param objectResolvers  a list of {@link RequestObjectResolver} to be evaluated for the objects which
                        are annotated with {@link RequestObject} annotation.
@param implicitRequestObjectAnnotation {@code true} if an element is always treated like it is annotated
                                       with {@link RequestObject} so that conversion is always done.
                                       {@code false} if an element has to be annotated with
                                       {@link RequestObject} explicitly to get converted.
@param useBlockingExecutor whether to use blocking task executor
core/src/main/java/com/linecorp/armeria/internal/server/annotation/AnnotatedValueResolver.java