Map<ServerMethodDefinition<?, ?>, HttpService> applyDecorators(
            HttpService delegate, DependencyInjector dependencyInjector) {
        final Map<ServerMethodDefinition<?, ?>, HttpService> decorated = new HashMap<>();

        for (Map.Entry<ServerMethodDefinition<?, ?>, List<DecoratorAndOrder>> entry
                : annotationDecorators.entrySet()) {
            final List<? extends Function<? super HttpService, ? extends HttpService>> decorators =
                    entry.getValue()
                         .stream()
                         .map(decoratorAndOrder -> decoratorAndOrder.decorator(dependencyInjector))
                         .collect(toImmutableList());
            decorated.put(entry.getKey(), applyDecorators(decorators, delegate));
        }

        for (Map.Entry<ServerMethodDefinition<?, ?>, List<? extends Function<? super HttpService,
                ? extends HttpService>>> entry : additionalDecorators.entrySet()) {
            final HttpService service = decorated.getOrDefault(entry.getKey(), delegate);
            decorated.put(entry.getKey(), applyDecorators(entry.getValue(), service));
        }

        return ImmutableMap.copyOf(decorated);
    }
A registry of the implementation methods bound to a {@link GrpcService}. Used for method dispatch and
documentation generation.
grpc/src/main/java/com/linecorp/armeria/server/grpc/HandlerRegistry.java