private static void processModuleSymbols(DefaultPdbApplicator applicator,
			Map<Address, List<Stuff>> map, TaskMonitor monitor)
			throws CancelledException, PdbException {
		AbstractPdb pdb = applicator.getPdb();
		PdbDebugInfo debugInfo = pdb.getDebugInfo();
		if (debugInfo == null) {
			return;
		}

		int totalCount = 0;
		int num = debugInfo.getNumModules();
		for (int moduleNumber = 1; moduleNumber <= num; moduleNumber++) {
			monitor.checkCancelled();
			SymbolGroup symbolGroup = applicator.getSymbolGroupForModule(moduleNumber);
			if (symbolGroup == null) {
				continue;
			}
			totalCount += symbolGroup.size();
		}
		monitor.setMessage("PDB: Applying " + totalCount + " module symbol components...");
		monitor.initialize(totalCount);

		// Process symbols list for each module
		for (int moduleNumber = 1; moduleNumber <= num; moduleNumber++) {
			monitor.checkCancelled();

//			String moduleName =
//				pdb.getDebugInfo().getModuleInformation(index).getModuleName();

			// Process module symbols list
			SymbolGroup symbolGroup = applicator.getSymbolGroupForModule(moduleNumber);
			if (symbolGroup == null) {
				continue;
			}
			MsSymbolIterator iter = symbolGroup.getSymbolIterator();
			processSymbolGroup(applicator, map, moduleNumber, iter, monitor);
			// do not call monitor.incrementProgress(1) here, as it is updated inside of
			//  processSymbolGroup.
		}
	}
Default PDB member construction
@param name member field name.
@param dataType for the field.
@param offset member's byte offset within the root composite.
Ghidra/Features/PDB/src/main/java/ghidra/app/util/pdb/pdbapplicator/PdbResearch.java