@Override
	protected void doLoad(Accumulator<AddressRangeInfo> accumulator, TaskMonitor monitor)
			throws CancelledException {
		AddressRangeIterator rangeIter = selection.getAddressRanges();
		ReferenceManager refManager = program.getReferenceManager();
		while (rangeIter.hasNext()) {
			monitor.checkCancelled();
			AddressRange range = rangeIter.next();
			if (range.getLength() < minLength) {
				continue;
			}
			boolean isSameByte = AddressRangeInfo.isSameByteValue(range.getMinAddress(),
				range.getMaxAddress(), program);

			AddressSet rangeSet = new AddressSet(range);

			AddressIterator destAddrIter =
				refManager.getReferenceDestinationIterator(rangeSet, true);
			int numRefsTo = StreamSupport.stream(destAddrIter.spliterator(), false)
					.map(addr -> refManager.getReferenceCountTo(addr))
					.reduce(0, Integer::sum);

			AddressIterator srcAddrIter =
				refManager.getReferenceSourceIterator(rangeSet, true);
			int numRefsFrom = StreamSupport.stream(srcAddrIter.spliterator(), false)
					.map(addr -> refManager.getReferenceCountFrom(addr))
					.reduce(0, Integer::sum);

			AddressRangeInfo info = new AddressRangeInfo(range.getMinAddress(),
				range.getMaxAddress(), range.getLength(), isSameByte, numRefsTo, numRefsFrom);

			accumulator.add(info);
			if (accumulator.size() >= resultsLimit) {
				Msg.showWarn(this, null, "Results Truncated",
					"Results are limited to " + resultsLimit + " address ranges.\n" +
						"This limit can be changed by the tool option \"" +
						CodeBrowserSelectionPlugin.OPTION_CATEGORY_NAME + " -> " +
						CodeBrowserSelectionPlugin.RANGES_LIMIT_OPTION_NAME + "\".");
				break;
			}
		}
		if (accumulator.isEmpty()) {
			Msg.showWarn(this, null, "No Ranges to Display",
				"No ranges to display - consider adjusting \"" +
					CodeBrowserSelectionPlugin.OPTION_CATEGORY_NAME + " -> " +
					CodeBrowserSelectionPlugin.MIN_RANGE_SIZE_OPTION_NAME + "\".");
		}
	}
A {@link GhidraProgramTableModel} for displaying tables in which one row corresponds
to an {@link AddressRange}
Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/codebrowser/AddressRangeTableModel.java