public Iterator<Namespace> getNamespacesOverlapping(AddressSetView set) {
		lock.acquire();
		try {
			LinkedHashSet<Long> idSet = new LinkedHashSet<Long>();
			AddressRangeIterator rangeIter = set.getAddressRanges();
			while (rangeIter.hasNext()) {
				AddressRange range = rangeIter.next();
				AddressRangeIterator namespaceRanges =
					namespaceMap.getAddressRanges(range.getMinAddress(), range.getMaxAddress());
				while (namespaceRanges.hasNext()) {
					AddressRange namespaceRange = namespaceRanges.next();
					Field field = namespaceMap.getValue(namespaceRange.getMinAddress());
					Long id = field.getLongValue();
					if (!idSet.contains(id)) {
						idSet.add(id);
					}
				}
			}

			List<Namespace> list = new ArrayList<Namespace>(idSet.size());
			for (long namespaceID : idSet) {
				Symbol s = symbolMgr.getSymbol(namespaceID);
				if (s != null) {
					Object obj = s.getObject();
					if (obj instanceof Namespace) {
						list.add((Namespace) s.getObject());
					}
				}
			}

			return list.iterator();

		}
		finally {
			clearCache();
			lock.release();
		}
	}
Get all Namespaces whose body overlaps the specified address set.
@param set the address for which to find namespace's that intersect it.
@return a LongField function key iterator.
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/symbol/NamespaceManager.java