void deserializeSubstreams() throws IOException, PdbException, CancelledException {

		if (substreamsDeserialized) {
			return;
		}

		TypeProgramInterfaceParser tpiParser = new TypeProgramInterfaceParser();

		typeProgramInterface = tpiParser.parse(this);
		if (typeProgramInterface != null) {
			typeProgramInterface.initialize();
		}

		boolean ipiStreamHasNoName = ItemProgramInterfaceParser.hackCheckNoNameForStream(nameTable);
		pdbReaderMetrics.witnessIpiDetection(ipiStreamHasNoName, hasIdStream);
		if (hasIdStream || ipiStreamHasNoName) {
			ItemProgramInterfaceParser ipiParser = new ItemProgramInterfaceParser();
			itemProgramInterface = ipiParser.parse(this);
			if (itemProgramInterface != null) {
				itemProgramInterface.initialize();
			}
			//processDependencyIndexPairList();
			//dumpDependencyGraph();
		}

		parseDBI();
		if (debugInfo != null) {
			debugInfo.initialize(false);
		}

		substreamsDeserialized = true;
	}
Deserializes the sub-streams for this {@link AbstractPdb} object
@throws IOException on file seek or read, invalid parameters, bad file configuration, or
 inability to read required bytes
@throws PdbException upon error in processing components
@throws CancelledException upon user cancellation
Ghidra/Features/PDB/src/main/java/ghidra/app/util/bin/format/pdb2/pdbreader/AbstractPdb.java