public void parseExtendedPointerInfo(PdbByteReader reader, int intSize,
			StringParseType stringType) throws PdbException {

		if (pointerMode == MsPointerMode.MEMBER_DATA_POINTER ||
			pointerMode == MsPointerMode.MEMBER_FUNCTION_POINTER) {
			memberPointerContainingClassRecordNumber =
				RecordNumber.parse(pdb, reader, RecordCategory.TYPE, intSize);
			memberPointerType = MemberPointerType.fromValue(reader.parseUnsignedShortVal());
			if (reader.hasMore()) {
				//TODO: I think there might be possible padding
				reader.parseBytesRemaining();
			}
		}
		else if (pointerType == PointerType.SEGMENT_BASED) {
			baseSegment = pdb.parseSegment(reader);
			if (reader.hasMore()) {
				//TODO: I think there might be possible padding
				reader.parseBytesRemaining();
			}
		}
		else if (pointerType == PointerType.TYPE_BASED) {
			pointerBaseTypeRecordNumber =
				RecordNumber.parse(pdb, reader, RecordCategory.TYPE, intSize);
			name = reader.parseString(pdb, stringType);
			reader.skipPadding();
			if (reader.hasMore()) {
				//TODO: I think there might be possible padding
				reader.parseBytesRemaining();
			}
		}
		// Something needs to trigger this code (might be a mode or a type
		else if (pointerType == PointerType.INVALID) {
			baseSymbol = reader.parseString(pdb, stringType);
			reader.skipPadding();
		}
		else if (reader.hasMore()) {
			// TODO: more investigation--enable code during research.
			PdbLog.message(
				"Unexpected data in " + this.getClass().getSimpleName() + ":\n" + reader.dump());
		}
		reader.skipPadding();
	}
Constructor for this type.
@param pdb {@link AbstractPdb} to which this type belongs.
@param reader {@link PdbByteReader} from which this type is deserialized.
Ghidra/Features/PDB/src/main/java/ghidra/app/util/bin/format/pdb2/pdbreader/type/AbstractPointerMsType.java