class MesosClient {

    @NotNull
    // @VisibleForTesting
    static URI getUriFromRedirectResponse(final @NotNull URI mesosUri, @NotNull final HttpClientResponse<ByteBuf> redirectResponse) {
        if (redirectResponse.getStatus().equals(HttpResponseStatus.TEMPORARY_REDIRECT)) {
            final String location = redirectResponse.getHeaders().get("Location");
            final URI newUri = resolveRelativeUri(mesosUri, location);
            LOGGER.info("Using new Mesos URI: {}", newUri);
            return newUri;
        } else {
            LOGGER.info("Continuing with Mesos URI as-is");
            return mesosUri;
        }
    }

      MesosClient(
        @NotNull final URI mesosUri,
        @NotNull final Function<Class<?>, UserAgentEntry> applicationUserAgentEntry,
        @NotNull final MessageCodec<Send> sendCodec,
        @NotNull final MessageCodec<Receive> receiveCodec,
        @NotNull final Send subscribe,
        @NotNull final Function<Observable<Receive>, Observable<Optional<SinkOperation<Send>>>> streamProcessor,
        @NotNull final  Observable.Transformer<byte[], byte[]> backpressureTransformer
    );

}