class Uploader {

  void execute(UploadRequest uploadRequest) throws IOException, InterruptedException {
    String sourceId = uploadRequest.sourceId;
    contentUploadService.startAsync().awaitRunning();
    for (UploadRequest.AbstractRequest request : uploadRequest.requests) {
      GenericJson response = request.accept(getVisitor(sourceId));
      System.out.println(response.toPrettyString());
    }
    contentUploadService.stopAsync().awaitTerminated();
  }

    Uploader(Builder builder);

}