Bug 527169: [9][impl] SearchableEnvironment may answer unnamed module
more than once

Change-Id: I82957aed99ade7d3e46ccd0898b2c78727249faa
diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/SearchableEnvironment.java b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/SearchableEnvironment.java
index 2b30b8e..5116003 100644
--- a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/SearchableEnvironment.java
+++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/SearchableEnvironment.java
@@ -831,12 +831,21 @@
 			case AnyNamed:
 				char[][] names = CharOperation.NO_CHAR_CHAR;
 				IPackageFragmentRoot[] packageRoots = this.nameLookup.packageFragmentRoots;
+				boolean containsUnnamed = false;
 				for (IPackageFragmentRoot packageRoot : packageRoots) {
 					IPackageFragmentRoot[] singleton = { packageRoot };
 					if (strategy.matches(singleton, locs -> locs[0] instanceof JrtPackageFragmentRoot || getModuleDescription(locs) != null)) {
 						if (this.nameLookup.isPackage(pkgName, singleton)) {
 							IModuleDescription moduleDescription = getModuleDescription(singleton);
-							char[] aName = moduleDescription != null ? moduleDescription.getElementName().toCharArray() : ModuleBinding.UNNAMED;
+							char[] aName;
+							if (moduleDescription != null) {
+								aName = moduleDescription.getElementName().toCharArray();
+							} else {
+								if (containsUnnamed)
+									continue;
+								containsUnnamed = true;
+								aName = ModuleBinding.UNNAMED;
+							}
 							names = CharOperation.arrayConcat(names, aName);
 						}
 					}