docs: private void downloadFile(File downloadFile, String url) throws IOException {
          if (!downloadFile.exists()) {
              int max = 3;
              for (int trial = 0; trial < max; trial++) {
                  try {
                      downloader.downloadFile(url, downloadFile.getAbsolutePath());
                      return;
                  } catch (SocketTimeoutException ex) {
                      if (trial >= max - 1)
                          throw new RuntimeException(ex);
                      try {
                          Thread.sleep(sleep);
                      } catch (InterruptedException ignored) {
                      }
                  }
              }
          }
      }