docs: private Directory processDir(File dirFile) {
  		List<Item> items = new ArrayList<Item>();
  
  		File[] files = dirFile.listFiles();
  		logger.info("processing directory {} with {} entries", dirFile, files.length);
  
  		for (File file : files) {
  			if (file.getName().equals(UpdateJob.LOCK_FILE)) {
  				logger.info("skipping lockfile {}", file);
  			} else if (file.isDirectory()) {
  				logger.debug("adding directory {}", file);
  				items.add(new DirectoryItem(file.getName(), processDir(file)));
  			} else {
  				// LastModified nur sekundengenau speichern, da Windows zwar
  				// millisekundengenau speichern kann, Linux Dateisysteme (ext3,
  				// ReiserFS, etc.) aber nur sekundengenau. Es kommst sonst zu
  				// Problemen, wenn der Blueprint auf einem Linux-System gebaut
  				// und auf ein Windows-System deployd wird:
  				long lastModified = (file.lastModified() / 1000) * 1000;
  				logger.debug("adding blob {}, lastModified: ", file, lastModified);
  
  				items.add(new FileItem(file.getName(), processBlob(file), lastModified));
  			}
  		}
  
  		Directory dir = new Directory(items.toArray(new Item[items.size()]));
  		try {
  			String id = writingRepository.store(dir);
  			logger.info("added directory {} -> {}", dirFile, id);
  		} catch (IOException e) {
  			throw new RuntimeException(e);
  		}
  
  		return dir;
  	}