private void generate(int depth, DomainFolder fold) {
		if (depth != 0) {
			pathelement[MASTER_DEPTH - depth] = fold.getName();
			depth -= 1;
			DomainFolder[] subfold = fold.getFolders();
			for (DomainFolder element : subfold) {
				generate(depth, element);
				if (isCancelled) {
					return;
				}
			}
			return;
		}
		pathelement[MASTER_DEPTH] = fold.getName();
		// Reaching here, we are at library depth in the folder hierarchy
		createLibraryNames();

		monitor.setMessage(
			currentLibraryName + ':' + currentLibraryVersion + ':' + currentLibraryVariant);
		boolean isDuplicate = false;
		if (duplicatemap != null) {
			isDuplicate = detectDups(fold);
		}
		if (!isDuplicate) {
			populateLibrary(fold);
		}
		monitor.incrementProgress(1);
	}
Recursively finds all domain objects that are program files under a domain folder.
@param programs the "return" value; found programs are placed in this collection
@param myFolder the domain folder to search
@throws CancelledException if the user cancels
Ghidra/Features/FunctionID/ghidra_scripts/CreateMultipleLibraries.java