public static ServerServiceDefinition intercept(ServerServiceDefinition serviceDef,
                                                  List<? extends ServerInterceptor> interceptors) {
    Preconditions.checkNotNull(serviceDef, "serviceDef");
    if (interceptors.isEmpty()) {
      return serviceDef;
    }
    ServerServiceDefinition.Builder serviceDefBuilder
        = ServerServiceDefinition.builder(serviceDef.getServiceDescriptor());
    for (ServerMethodDefinition<?, ?> method : serviceDef.getMethods()) {
      wrapAndAddMethod(serviceDefBuilder, method, interceptors);
    }
    return serviceDefBuilder.build();
  }
public static ServerServiceDefinition intercept ( ServerServiceDefinition serviceDef , List < ? extends ServerInterceptor > interceptors ) { Preconditions . checkNotNull ( serviceDef , "serviceDef" ) ; if ( interceptors . isEmpty ( ) ) { return serviceDef ; } ServerServiceDefinition . Builder serviceDefBuilder = ServerServiceDefinition . builder ( serviceDef . getServiceDescriptor ( ) ) ; for ( ServerMethodDefinition < ? , ? > method : serviceDef . getMethods ( ) ) { wrapAndAddMethod ( serviceDefBuilder , method , interceptors ) ; } return serviceDefBuilder . build ( ) ; }
Create a new {@code ServerServiceDefinition} whose {@link ServerCallHandler}s will call
{@code interceptors} before calling the pre-existing {@code ServerCallHandler}. The last
interceptor will have its {@link ServerInterceptor#interceptCall} called first.

@param serviceDef   the service definition for which to intercept all its methods.
@param interceptors list of interceptors to apply to the service.
@return a wrapped version of {@code serviceDef} with the interceptors applied.