@VisibleForTesting
    static List<AnnotatedServiceElement> create(String pathPrefix, Object object, Method method,
                                                int overloadId, boolean useBlockingTaskExecutor,
                                                List<RequestConverterFunction> baseRequestConverters,
                                                List<ResponseConverterFunction> baseResponseConverters,
                                                List<ExceptionHandlerFunction> baseExceptionHandlers,
                                                DependencyInjector dependencyInjector,
                                                @Nullable String queryDelimiter) {
        if (KotlinUtil.getCallKotlinSuspendingMethod() == null && KotlinUtil.maybeSuspendingFunction(method)) {
            throw new IllegalArgumentException(
                    "Kotlin suspending functions are supported " +
                    "only when you added 'armeria-kotlin' as a dependency.\n" +
                    "See https://armeria.dev/docs/server-annotated-service#kotlin-coroutines-support " +
                    "for more information.");
        }

        final Class<?> clazz = object.getClass();
        final List<Route> routes = routes(method, clazz, pathPrefix);

        final List<RequestConverterFunction> req =
                getAnnotatedInstances(method, clazz, RequestConverter.class,
                                      RequestConverterFunction.class, dependencyInjector)
                        .addAll(baseRequestConverters).build();
        final List<ResponseConverterFunction> res =
                getAnnotatedInstances(method, clazz, ResponseConverter.class,
                                      ResponseConverterFunction.class, dependencyInjector)
                        .addAll(baseResponseConverters).build();
        final List<ExceptionHandlerFunction> eh =
                getAnnotatedInstances(method, clazz, ExceptionHandler.class,
                                      ExceptionHandlerFunction.class, dependencyInjector)
                        .addAll(baseExceptionHandlers).build();

        final String classAlias = clazz.getName();
        final String methodAlias = String.format("%s.%s()", classAlias, method.getName());
        final HttpHeaders responseHeaders = responseHeaders(method, clazz, classAlias, methodAlias);
        final HttpHeaders responseTrailers = responseTrailers(method, clazz, classAlias, methodAlias);

        final HttpStatus defaultStatus = defaultResponseStatus(method, clazz);
        if (defaultStatus.isContentAlwaysEmpty() && !responseTrailers.isEmpty()) {
            logger.warn("A response with HTTP status code '{}' cannot have a content. " +
                        "Trailers defined at '{}' might be ignored if HTTP/1.1 is used.",
                        defaultStatus.code(), methodAlias);
        }

        final boolean needToUseBlockingTaskExecutor =
                needToUseBlockingTaskExecutor(object, method, useBlockingTaskExecutor);

        return routes.stream().map(route -> {
            final List<AnnotatedValueResolver> resolvers =
                    getAnnotatedValueResolvers(req, route, method, clazz,
                                               needToUseBlockingTaskExecutor, dependencyInjector,
                                               queryDelimiter);
            return new AnnotatedServiceElement(
                    route,
                    new DefaultAnnotatedService(object, method, overloadId,
                                                resolvers, eh, res, route, defaultStatus,
                                                responseHeaders, responseTrailers,
                                                needToUseBlockingTaskExecutor),
                    decorator(method, clazz, dependencyInjector));
        }).collect(toImmutableList());
    }
Returns a list of {@link AnnotatedService} instances. A single {@link AnnotatedService} is
created per each {@link Route} associated with the {@code method}.
core/src/main/java/com/linecorp/armeria/internal/server/annotation/AnnotatedServiceFactory.java