code: private void addPaths(Path.ID path, HashSet<Path.ID> paths, ZipFile zf) {
  		if(path.size() > 0 && !paths.contains(path)) {
  			addPaths(path.parent(),paths,zf);
  			// A new path encountered
  			String directory = path.toString() + "/";
  			System.out.println("ADDING DIRECTORY: " + directory);
  			zf.add(new ZipEntry(directory), new byte[0]);
  			paths.add(path);
  		}
  	}
docs: This is a slightly strange method. Basically, it recursively adds directory
  entries into the ZipFile. Technically such entries should not be needed.
  However, due to a quirk in the way that ZipFileRoot works (in fact,
  AbstractFolder to be more precise) these entries are required for now.
  
  @param path
  @param paths
  @param zf