public void loadRanges(Program program, DumpFile df, TaskMonitor monitor) {
		Map<Address, DumpAddressObject> daos = df.getInteriorAddressRanges();
		if (daos.isEmpty()) {
			return;
		}
		try {
			FileBytes fileBytes = df.getFileBytes(monitor);
			if (fileBytes == null) {
				Msg.error(this,
					"File bytes not provided by DumpFile: " + df.getClass().getSimpleName());
				return;
			}
			int count = 0;
			monitor.setMessage("Tagging blocks");
			monitor.initialize(daos.size());
			for (Address address : daos.keySet()) {
				DumpAddressObject d = daos.get(address);
				String name = rangeMap.getObject(address);
				if (name == null) {
					name = d.getProviderId();
				}
				d.setRangeName(name);
				monitor.setProgress(count++);
				monitor.checkCancelled();
			}
			count = 0;
			monitor.setMessage("Processing blocks");
			monitor.initialize(daos.size());
			for (Address address : daos.keySet()) {
				DumpAddressObject d = daos.get(address);
				try {
					MemoryBlockUtils.createInitializedBlock(program, false, d.getRangeName(),
						address, fileBytes,
						d.getRVA(), // offset into filebytes
						d.getLength(), // size
						d.getComment(), // comment
						null, // source
						d.isRead(), // section.isReadonly(),
						d.isWrite(), // section.isWriteable(),
						d.isExec(), //section.isExecutable());
						log);
					monitor.setProgress(count++);
					monitor.checkCancelled();
				}
				catch (AddressOutOfBoundsException | AddressOverflowException
						| IllegalArgumentException e) {
					Msg.warn(this, e.getMessage());
				}
			}

			if (df.joinBlocksEnabled()) {
				Set<Address> deleted = new HashSet<>();
				count = 0;
				monitor.setMessage("Joining blocks");
				monitor.initialize(daos.size());
				MemoryMapDB memory = (MemoryMapDB) program.getMemory();

				for (Address address : daos.keySet()) {
					if (deleted.contains(address)) {
						continue;
					}
					MemoryBlock m = memory.getBlock(address);
					MemoryBlock next;
					while ((next = memory.getBlock(address.addWrap(m.getSize()))) != null) {
						if (!next.getStart().equals(m.getStart().addWrap(m.getSize()))) {
							break;
						}
						try {
							m = memory.join(m, next);
						}
						catch (MemoryBlockException | LockException | NotFoundException e) {
							break;
						}
						deleted.add(next.getStart());
						monitor.setProgress(count++);
						monitor.checkCancelled();
					}
					monitor.setProgress(count++);
					monitor.checkCancelled();
					//memory.invalidateCache(true);
				}
			}
		}
		catch (CancelledException | IOException e1) {
			Msg.error(this, e1.getMessage());
		}
	}
The name of the dump file loader
Ghidra/Features/FileFormats/src/main/java/ghidra/file/formats/dump/DumpFileLoader.java