public Retrofit build() {
        final ClientOptions retrofitOptions = buildOptions(webClient.options());
        final ClientBuilderParams params = webClient.paramsBuilder()
                                                    .absolutePathRef("/")
                                                    .options(retrofitOptions)
                                                    .build();
        // Re-create the base client without a path, because Retrofit will always provide a full path.
        final WebClient baseWebClient = (WebClient) retrofitOptions.factory().newClient(params);

        if (nonBaseClientFactory == null) {
            nonBaseClientFactory =
                    (p, url) -> WebClient.builder(p, Endpoint.unsafeCreate(url.host(), url.port()))
                                         .options(retrofitOptions)
                                         .build();
        }

        retrofitBuilder.callFactory(new ArmeriaCallFactory(
                baseWebClientHost, baseWebClientPort, baseWebClient,
                streaming ? SubscriberFactory.streaming(callbackExecutor)
                          : SubscriberFactory.blocking(), new CachedNonBaseClientFactory(nonBaseClientFactory)
        ));

        return retrofitBuilder.build();
    }
Returns a newly-created {@link Retrofit} based on the properties of this builder.
retrofit2/src/main/java/com/linecorp/armeria/client/retrofit2/ArmeriaRetrofitBuilder.java