private void processSymbol(MsSymbolIterator iter)
			throws CancelledException, PdbException {

		Address address = applicator.getAddress(symbol);
		String name = symbol.getName();

		// Regardless of ability to apply this symbol, we need to progress through symbols to the
		//  matching "end" symbol before we return
		if (!processEndSymbol(symbol.getEndPointer(), iter)) {
			applicator.appendLogMsg("PDB: Failed to process function at address " + address);
			return;
		}

		if (applicator.isInvalidAddress(address, name)) {
			applicator.appendLogMsg("PDB: Failed to process function at address: " + address);
			return;
		}

		function = applicator.getExistingOrCreateOneByteFunction(address);
		if (function == null) {
			return;
		}

		boolean succeededSetFunctionSignature = setFunctionDefinition(function, address);

		// If signature was set, then override existing primary mangled symbol with
		// the global symbol that provided this signature so that Demangler does not overwrite
		// the richer data type we get with global symbols.
		applicator.createSymbol(address, getReconciledSymbolPath(), succeededSetFunctionSignature);
	}
Constructor
@param applicator the {@link DefaultPdbApplicator} for which we are working.
@param symbol the symbol for this applier
Ghidra/Features/PDB/src/main/java/ghidra/app/util/pdb/pdbapplicator/FunctionSymbolApplier.java