@Nullable
    @Override
    public <T extends HttpService> T findService(Class<? extends T> serviceClass) {
        requireNonNull(serviceClass, "serviceClass");
        final HttpService service = config().service();
        if (service instanceof InitialDispatcherService) {
            return ((InitialDispatcherService) service).findService(this, serviceClass);
        } else {
            return service.as(serviceClass);
        }
    }
Creates a new instance.

@param cfg the {@link ServiceConfig}
@param ch the {@link Channel} that handles the invocation
@param meterRegistry the {@link MeterRegistry} that collects various stats
@param sessionProtocol the {@link SessionProtocol} of the invocation
@param id the {@link RequestId} that represents the identifier of the current {@link Request}
          and {@link Response} pair.
@param routingContext the parameters which are used when finding a matched {@link Route}
@param routingResult the result of finding a matched {@link Route}
@param req the request associated with this context
@param sslSession the {@link SSLSession} for this invocation if it is over TLS
@param proxiedAddresses source and destination addresses delivered through proxy servers
@param clientAddress the address of a client who initiated the request
@param requestStartTimeNanos {@link System#nanoTime()} value when the request started.
@param requestStartTimeMicros the number of microseconds since the epoch,
                              e.g. {@code System.currentTimeMillis() * 1000}.
core/src/main/java/com/linecorp/armeria/internal/server/DefaultServiceRequestContext.java