boolean retain(Collection<?> c, KeySpan keySpan) {
			if (keySpan != null && keySpan.isEmpty()) {
				return false;
			}
			boolean result = false;
			try (LockHold hold = LockHold.lock(lock.writeLock())) {
				DirectedIterator<R> it = rawIterator(Direction.FORWARD, keySpan);
				while (it.hasNext()) {
					E u = fromRaw(it.next());
					if (!c.contains(u)) {
						it.delete();
						cache.delete(getKey(u));
						result = true;
					}
				}
			}
			catch (IOException e) {
				adapter.dbError(e);
			}
			return result;
		}
Convert the raw component to an element

@param raw the raw component
@return the element
@throws IOException if there's an issue reading the table
Ghidra/Debug/ProposedUtils/src/main/java/ghidra/util/database/DBCachedObjectStore.java