docs: public static Callable<Void> getDownloadFileCallable(
        final StageInfo stage,
        final String srcFilePath,
        final String localLocation,
        final Map<String, FileMetadata> fileMetadataMap,
        final SnowflakeStorageClient client,
        final SFSession connection,
        final String command,
        final int parallel,
        final RemoteStoreFileEncryptionMaterial encMat)
    {
      return new Callable<Void>()
      {
        public Void call() throws Exception
        {
  
          logger.debug("Entering getDownloadFileCallable...");
  
          FileMetadata metadata = fileMetadataMap.get(srcFilePath);
  
          // this shouldn't happen
          if (metadata == null)
          {
            throw new SnowflakeSQLException(SqlState.INTERNAL_ERROR,
                                            ErrorCode.INTERNAL_ERROR.getMessageCode(),
                                            "missing file metadata for: " + srcFilePath);
          }
  
          String destFileName = metadata.destFileName;
          logger.debug("Started copying file from: {}:{} file path:{} to {} destName:{}",
                       stage.getStageType().name(), stage.getLocation(), srcFilePath, localLocation, destFileName);
  
          try
          {
            switch (stage.getStageType())
            {
              case LOCAL_FS:
                pullFileFromLocal(stage.getLocation(),
                                  srcFilePath,
                                  localLocation,
                                  destFileName);
                break;
  
              case AZURE:
              case S3:
                pullFileFromRemoteStore(stage,
                                        srcFilePath,
                                        destFileName,
                                        localLocation,
                                        client,
                                        connection,
                                        command,
                                        parallel,
                                        encMat);
                metadata.isEncrypted = encMat != null;
                break;
            }
          }
          catch (Throwable ex)
          {
            logger.error(
                "Exception encountered during file download", ex);
  
            metadata.resultStatus = ResultStatus.ERROR;
            metadata.errorDetails = ex.getMessage();
            throw ex;
          }
  
          logger.debug("filePath: {}", srcFilePath);
  
          File destFile = new File(localLocation + localFSFileSep + destFileName);
          long downloadSize = destFile.length();
  
          // set dest size
          metadata.destFileSize = downloadSize;
  
          // mark the file as being uploaded
          metadata.resultStatus = ResultStatus.DOWNLOADED;
  
          return null;
        }
      };
    }