docs: private void zipDir(String dir2zip, ZipOutputStream zos) throws IOException
    {
      try
      {
        //create a new File object based on the directory we have to zip.
        File zipDir = new File(dir2zip);
        //get a listing of the directory content
        String[] dirList = zipDir.list();
        byte[] readBuffer = new byte[4096];
        int bytesIn = 0;
        //loop through dirList, and zip the files
        for(int i=0; i<dirList.length; i++)
        {
          File f = new File(zipDir, dirList[i]);
          if(f.isDirectory())
          {
            //if the File object is a directory, call this
            //function again to add its content recursively
            String filePath = f.getPath();
            zipDir(filePath, zos);
            //loop again
            continue;
          }
          //if we reached here, the File object f was not a directory
          //create a FileInputStream on top of f
          FileInputStream fis = new FileInputStream(f);
          // create a new zip entry
          ZipEntry anEntry = new ZipEntry(f.getPath());
          anEntry.setTime(f.lastModified());
          //place the zip entry in the ZipOutputStream object
          zos.putNextEntry(anEntry);
          //now write the content of the file to the ZipOutputStream
  
          boolean stopEarlyBecauseTooMuchData = false;
          while((bytesIn = fis.read(readBuffer)) != -1)
          {
            zos.write(readBuffer, 0, bytesIn);
            if (baos.size() > MAX_SIZE) {
              stopEarlyBecauseTooMuchData = true;
              break;
            }
          }
          //close the Stream
          fis.close();
          zos.closeEntry();
  
          if (stopEarlyBecauseTooMuchData) {
            Log.warn("LogCollectorTask stopEarlyBecauseTooMuchData");
            break;
          }
        }
      }
      catch(Exception e)
      {
        //handle exception
      }
    }