diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/CompilationUnitScope.java b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/CompilationUnitScope.java
index 6cda4e9..77162c0 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/CompilationUnitScope.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/CompilationUnitScope.java
@@ -835,11 +835,17 @@
 		while (i < length) {
 //{ObjectTeams: For a team with team package we need to give precedence to the type:
 			if (i == length -1 && module.canAccess(packageBinding)) {
-				ReferenceBinding type = packageBinding.getType(compoundName[i], module);
-				if (type != null && type.isValidBinding() && type.isTeam()) {
-					if (!type.canBeSeenBy(this.fPackage))
-						return new ProblemReferenceBinding(compoundName, type, ProblemReasons.NotVisible);
-					return type;
+				boolean save = packageBinding.dontRememberNotFoundType;
+				packageBinding.dontRememberNotFoundType = true;
+				try {
+					ReferenceBinding type = packageBinding.getType(compoundName[i], module);
+					if (type != null && type.isValidBinding() && type.isTeam()) {
+						if (!type.canBeSeenBy(this.fPackage))
+							return new ProblemReferenceBinding(compoundName, type, ProblemReasons.NotVisible);
+						return type;
+					}
+				} finally {
+					packageBinding.dontRememberNotFoundType = save;
 				}
 			}
 // SH}
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/PackageBinding.java b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/PackageBinding.java
index 20dfd87..971a6d8 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/PackageBinding.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/PackageBinding.java
@@ -54,6 +54,10 @@
 	/** Is this package exported from its module? NB: to query this property use {@link #isExported()} to ensure initialization. */
 	Boolean isExported;
 
+//{ObjectTeams: during a non-JLS lookup we may get a not-found-type but that should not be remembered!
+	boolean dontRememberNotFoundType;
+// SH}
+
 protected PackageBinding(char[][] compoundName, LookupEnvironment environment) {
 	// for creating problem package
 	this.compoundName = compoundName;
@@ -87,6 +91,7 @@
 }
 //{ObjectTeams: ROFI changed visibility, was private
 void addNotFoundType(char[] simpleName) {
+	if (this.dontRememberNotFoundType) return;
 // SH}
 	if (this.environment.suppressImportErrors)
 		return;
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/SplitPackageBinding.java b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/SplitPackageBinding.java
index ee04403..f359645 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/SplitPackageBinding.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/SplitPackageBinding.java
@@ -235,6 +235,11 @@
 		ReferenceBinding candidate = null;
 		boolean accessible = false;
 		for (PackageBinding incarnation : this.incarnations) {
+//{ObjectTeams:
+		  boolean save = incarnation.dontRememberNotFoundType;
+		  incarnation.dontRememberNotFoundType = this.dontRememberNotFoundType;
+		  try {
+// orig:
 			ReferenceBinding type = incarnation.getType(name, mod);
 			if (type != null) {
 				if (candidate == null || !accessible) {
@@ -244,6 +249,11 @@
 					return new ProblemReferenceBinding(type.compoundName, candidate, ProblemReasons.Ambiguous); // TODO(SHMOD) add module information
 				}
 			}
+// :giro
+		  } finally {
+			  incarnation.dontRememberNotFoundType = save;
+		  }
+// SH}
 		}
 		if (candidate != null && !accessible)
 			return new ProblemReferenceBinding(candidate.compoundName, candidate, ProblemReasons.NotAccessible); // TODO(SHMOD) more info
