private GrpcServiceBuilder addProtoReflectionService(boolean hasDecorators,
                                                         BindableService protoReflectionService,
                                                         @Nullable String path,
                                                         @Nullable MethodDescriptor<?, ?> methodDescriptor) {
        if (hasDecorators) {
            throw new IllegalArgumentException("ProtoReflectionService should not be used with decorators.");
        }
        checkState(protoReflectionServiceInterceptor == null,
                   "Attempting to add a ProtoReflectionService but one is already present. " +
                   "ProtoReflectionService must only be added once.");
        protoReflectionServiceInterceptor = new ProtoReflectionServiceInterceptor();
        if (protoReflectionService instanceof ProtoReflectionService) {
            logger.warn("Use {} instead of {}.", ProtoReflectionServiceV1.class.getSimpleName(),
                        protoReflectionService);
        }
        final ServerServiceDefinition intercept =
                ServerInterceptors.intercept(protoReflectionService, protoReflectionServiceInterceptor);
        return addProtoReflectionIntercept(intercept, path, methodDescriptor);
    }
Decorates a {@linkplain MethodDescriptor method} of gRPC {@link BindableService}
with the given decorators, in the order of iteration.
For more details on decorator behavior, please refer to the following document.

@see <a href="https://armeria.dev/docs/server-grpc#decorating-a-grpcservice">Decorating a GrpcService</a>
grpc/src/main/java/com/linecorp/armeria/server/grpc/GrpcServiceBuilder.java