@Override
			public boolean hasNext() {
				while (currentIt == null || !currentIt.hasNext()) {
					if (providers.isEmpty()) {
						return false;
					}
					PasswordProvider provider = providers.remove(0);
					currentIt = provider.getPasswordsFor(fsrl, prompt, CryptoProviderSessionImpl.this);
				}
				return true;
			}
Union iterator of all password providers
Ghidra/Features/Base/src/main/java/ghidra/formats/gfilesystem/crypto/CryptoProviders.java