class BaseDownloadService extends AbstractService implements DownloadService {

    @Override
    public Response<byte[]> download(String downloadUrl, RequestHeaders requestHeaders) {
        requireValid(validateDownload(downloadUrl, requestHeaders));

        Map<String, String> headersMap = populateGetHeaders(requestHeaders.toMap());

        Response<byte[]> response = httpClient.get(modifyDownloadUrl(downloadUrl))
                                        .headers(headersMap)
                                        .send(byteArrayResponseHandler(), requestBuilderInterceptor);

        return new Response<>(
            response.getStatusCode(),
            response.getBody(),
            modifyResponseHeaders(response.getHeaders())
        );
    }

    public  BaseDownloadService(String baseUri, HttpClient httpClient);
    public  BaseDownloadService(String baseUri,
                               HttpClient httpClient,
                               Interceptor requestBuilderInterceptor);

}