@Override
	void deserialize() throws IOException, CancelledException {
		// Calculate the number of pages that the FreePageMap occupies on disk.
		int log2BitsPerPage = msf.getLog2PageSize() + 3; // 3 = log2(bitsperbyte)
		long freePageMapNumPages =
			Msf.floorDivisionWithLog2Divisor(msf.getNumPages(), log2BitsPerPage);

		// Get the First page number of the FreePageMap on disk.
		int nextPageNumber = msf.getCurrentFreePageMapFirstPageNumber();

		// Read the FreePageMap, which is dispersed across the file (see note below).
		MsfFileReader fileReader = msf.getFileReader();
		int pageSize = msf.getPageSize();
		while (freePageMapNumPages > 0) {
			msf.checkCancelled();
			byte[] bytes = new byte[pageSize];
			fileReader.read(nextPageNumber, 0, pageSize, bytes, 0);
			addMap(bytes);
			freePageMapNumPages--;
			// This is correct.  Each page of the FreePageMap700 is located at pageSize number
			//  of pages away from the last page.  So if the first page of the FreePageMap700
			//  is page 1, and if the pageSize is 4096, then the next page used as part of
			//  the FreePageMap700 is page 4097.  FreePageMap200 is different in that its data
			//  resides sequentially on disk.
			nextPageNumber += pageSize;
		}
	}
Constructor
@param msf the {@link Msf} to which this class belongs
Ghidra/Features/PDB/src/main/java/ghidra/app/util/bin/format/pdb2/pdbreader/msf/MsfFreePageMap700.java