docs: public static void zip(final File dirToZip, final File zipFile, final FilenameFilter filter,
  		final boolean createFile)
  		throws FileNotFoundException, IOException, FileDoesNotExistException
  	{
  		try (FileOutputStream fos = new FileOutputStream(zipFile);
  			ZipOutputStream zos = new ZipOutputStream(fos);)
  		{
  			if (!dirToZip.exists())
  			{
  				throw new IOException(
  					"Directory with the name " + dirToZip.getName() + " does not exist.");
  			}
  
  			if (!zipFile.exists())
  			{
  				if (createFile)
  				{
  					zipFile.createNewFile();
  				}
  				else
  				{
  					throw new FileDoesNotExistException(
  						"Zipfile with the name " + zipFile.getName() + " does not exist.");
  				}
  			}
  			zos.setLevel(9);
  			zipFiles(dirToZip, dirToZip, zos, filter);
  			zos.flush();
  			zos.finish();
  			fos.flush();
  		}
  	}