private void initialize(Program programParam, DataTypeManager dataTypeManagerParam,
			Address imageBaseParam, PdbApplicatorOptions applicatorOptionsParam,
			MessageLog logParam) throws PdbException {

		validateAndSetParameters(programParam, dataTypeManagerParam, imageBaseParam,
			applicatorOptionsParam, logParam);

		cancelOnlyWrappingMonitor = new CancelOnlyWrappingTaskMonitor(monitor);

		pdbPeHeaderInfoManager = new PdbPeHeaderInfoManager(this);

		multiphaseResolver = new MultiphaseDataTypeResolver(this);

		// Following should not need to be part of analysis state because types are filled in
		// during first round of processing
		filledInStructure = new HashSet<>();

		classTypeManager = new ClassTypeManager(dataTypeManager);

		pdbPrimitiveTypeApplicator = new PdbPrimitiveTypeApplicator(dataTypeManager);

		typeApplierParser = new TypeApplierFactory(this);
		isClassByNamespace = new TreeMap<>();

		symbolApplierParser = new SymbolApplierFactory(this);

		// Investigations
		labelsByAddress = new HashMap<>();
		// Investigations into source/line info
		recordNumbersByFileName = new HashMap<>();
		recordNumbersByModuleNumber = new HashMap<>();

		if (program != null && applicatorOptions.applySourceLineNumbers()) {
			linesApplicator = new PdbSourceLinesApplicator(this);
		}

	}
Initializes helper classes and data items used for applying the PDB
@throws PdbException upon error in processing components
Ghidra/Features/PDB/src/main/java/ghidra/app/util/pdb/pdbapplicator/DefaultPdbApplicator.java