docs: private void fetchFile(SlotReference slot, String path, File destination) throws IOException {
          destination.deleteOnExit();
          final DeviceAnnouncement player = DeviceFinder.getInstance().getLatestAnnouncementFrom(slot.player);
          if (player == null) {
              throw new IOException("Cannot fetch file from player that is not found on the network; slot: " + slot);
          }
          int triesMade = 0;
          if (path.startsWith("PIONEER/") && mediaWithHiddenPioneerFolder.contains(slot)) {
              path = "." + path;  // We are dealing with HFS+ media, so skip the first, failed attempt to read it.
          }
          while (triesMade < getRetryLimit()) {
              try {
                  FileFetcher.getInstance().fetch(player.getAddress(), mountPath(slot.slot), path, destination);
                  return;
              } catch (IOException e) {
                  if (path.startsWith("PIONEER/") &&
                          e.getMessage().contains("lookup of element \"PIONEER\" returned status")) {
                      // Workaround for the fact that HFS+ formatted devices hide their PIONEER directory as a dot-file.
                      mediaWithHiddenPioneerFolder.add(slot);  // Skip the initial failed attempt next time we access it.
                      fetchFile(slot, "." + path, destination);
                      return;
                  }
                  triesMade++;
                  if (triesMade < getRetryLimit()) {
                      logger.warn("Attempt to fetch file from player failed, tries left: " + (getRetryLimit() - triesMade), e);
                      try {
                          Thread.sleep(Math.min(MAX_RETRY_INTERVAL, triesMade * RETRY_BACKOFF));
                      } catch (InterruptedException ie) {
                          logger.warn("Interrupted while sleeping between file fetch attempts. Retrying immediately.");
                      }
                  } else {
                      throw e;
                  }
              }
          }
      }