@Override
	public synchronized Iterator<Password> getPasswordsFor(FSRL fsrl, String prompt,
			Session session) {
		Set<CryptoRec> uniqueFoundRecs = new LinkedHashSet<>();
		uniqueFoundRecs.addAll(values.getOrDefault(fsrl.toString(), Collections.emptyList()));
		uniqueFoundRecs.addAll(values.getOrDefault(fsrl.toPrettyString(), Collections.emptyList()));
		uniqueFoundRecs.addAll(values.getOrDefault(fsrl.getName(), Collections.emptyList()));
		if (fsrl.getMD5() != null) {
			uniqueFoundRecs.addAll(values.getOrDefault(fsrl.getMD5(), Collections.emptyList()));
		}

		List<Password> results = new ArrayList<>();
		for (CryptoRec rec : uniqueFoundRecs) {
			results.add(rec.value);
		}

		// Use an iterator that clones the values before giving them to the caller
		// so our internal values don't get cleared
		return new CloningPasswordIterator(results.iterator());
	}
Returns the number of items in cache

@return number of items in cache
Ghidra/Features/Base/src/main/java/ghidra/formats/gfilesystem/crypto/CachedPasswordProvider.java