code: public <O, E, R extends BatchJobMutateResultInterface<O, E>> void logDownload(
        String downloadUrl,
        @Nullable BatchJobMutateResponseInterface<O, E, R> response,
        @Nullable Throwable throwable) {
      RequestInfo requestInfo =
          new RequestInfo.Builder()
              .withServiceName("batchjobdownload")
              .withContext(CONTEXT_NAME, null)
              .withUrl(downloadUrl)
              .build();
      int resultsCount = 0;
      if (response != null && response.getMutateResults() != null) {
        resultsCount = response.getMutateResults().length;
      }
      // The response payload could be massive, so simply indicate the number of results instead.
      ResponseInfo responseInfo =
          new ResponseInfo.Builder()
              .withPayload(String.format("Results count: %d", resultsCount))
              .build();
      RemoteCallReturn remoteCallReturn =
          new RemoteCallReturn.Builder()
              .withRequestInfo(requestInfo)
              .withResponseInfo(responseInfo)
              .withException(throwable)
              .build();
      loggerDelegate.logRequestSummary(remoteCallReturn);
      loggerDelegate.logRequestDetails(remoteCallReturn);
    }
docs: Logs a batch job results download.
  
  @param downloadUrl the download URL for the batch job.
  @param response the response - only not null if the download succeeded.
  @param throwable the throwable that occurred during download, or {@code null} if the download
  succeeded.