Bug 419987 - "restricted" warning is incorrectly flagged at team of sub
role
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/ASTNode.java b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/ASTNode.java
index 9d5b485..16a0aa5 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/ASTNode.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/ASTNode.java
@@ -562,7 +562,8 @@
 				scope.problemReporter().forbiddenReference(type, this, restriction.classpathEntryType,
 						restriction.classpathEntryName, restriction.getProblemId());
   :giro */
-				scope.problemReporter().forbiddenReference(type, this, restriction.classpathEntryType,
+				if (!isGeneratedBaseTypeReference())
+					scope.problemReporter().forbiddenReference(type, this, restriction.classpathEntryType,
 						restriction);
 // SH}
 			}
@@ -580,6 +581,14 @@
 		if (!scope.compilerOptions().reportDeprecationInsideDeprecatedCode && scope.isInsideDeprecatedCode()) return false;
 		return true;
 	}
+	
+	private boolean isGeneratedBaseTypeReference() {
+		if ((this.bits & IsGenerated) == 0)
+			return false;
+		if (!(this instanceof Expression))
+			return false;
+		return  ((Expression)this).getBaseclassDecapsulation().isAllowed();
+	}
 
 	public abstract StringBuffer print(int indent, StringBuffer output);
 
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/ArrayQualifiedTypeReference.java b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/ArrayQualifiedTypeReference.java
index 8ad408c..1cb1fe2 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/ArrayQualifiedTypeReference.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/ArrayQualifiedTypeReference.java
@@ -19,12 +19,6 @@
 public class ArrayQualifiedTypeReference extends QualifiedTypeReference {
 	int dimensions;
 
-//{ObjectTeams: mark generated reference:
-	public ArrayQualifiedTypeReference(char[][] sources , int dim, long[] poss, boolean isGenerated) {
-		this(sources, dim, poss);
-		this.isGenerated = isGenerated;
-	}
-// SH}
 	public ArrayQualifiedTypeReference(char[][] sources , int dim, long[] poss) {
 
 		super( sources , poss);
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/QualifiedTypeReference.java b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/QualifiedTypeReference.java
index 477ebd0..6421176 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/QualifiedTypeReference.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/QualifiedTypeReference.java
@@ -35,15 +35,6 @@
 
 	public char[][] tokens;
 	public long[] sourcePositions;
-//{ObjectTeams: exempt generated references from OTJLD 1.2.3(b).
-	public boolean isGenerated;
-	public QualifiedTypeReference(char[][] sources , long[] poss, boolean isGenerated) {
-		this(sources,poss);
-		this.isGenerated = isGenerated;
-		if (isGenerated)
-			this.bits |= ASTNode.IgnoreRawTypeCheck;
-	}
-// SH}
 
 	public QualifiedTypeReference(char[][] sources , long[] poss) {
 
@@ -170,7 +161,7 @@
 				reportDeprecatedType(this.resolvedType, scope, i);
 			}
 //{ObjectTeams: statically qualified use of role?
-			if (i > 0 && !this.isGenerated && shouldAnalyzeRoleReference()) { // generated (and copied) methods are allowed to use MyTeam.R
+			if (i > 0 && (this.bits & ASTNode.IsGenerated) == 0 && shouldAnalyzeRoleReference()) { // generated (and copied) methods are allowed to use MyTeam.R
 				if (isIllegalQualifiedUseOfProtectedRole(scope)) {
 					// already reported
 				} else {
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/util/AstClone.java b/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/util/AstClone.java
index 406aa4e..8fa523b 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/util/AstClone.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/util/AstClone.java
@@ -23,6 +23,7 @@
 import java.util.Arrays;
 
 import org.eclipse.jdt.core.compiler.CharOperation;
+import org.eclipse.jdt.internal.compiler.ast.ASTNode;
 import org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclaration;
 import org.eclipse.jdt.internal.compiler.ast.Argument;
 import org.eclipse.jdt.internal.compiler.ast.ArrayQualifiedTypeReference;
@@ -113,7 +114,7 @@
 	                qualifiedResult = gen.qualifiedArrayTypeReference(typeName, dims);
 	            else
 	                qualifiedResult = gen.qualifiedTypeReference(typeName);
-	            qualifiedResult.isGenerated = qualifiedTypeReference.isGenerated;
+	            qualifiedResult.bits |= (qualifiedTypeReference.bits & ASTNode.IsGenerated);
 	            result = qualifiedResult;
             }
         }
@@ -183,9 +184,9 @@
             	result = new ParameterizedQualifiedTypeReference(typeName, newArgs, dims, poss);
             } else {
 	            if (dims > 0)
-	                result = new ArrayQualifiedTypeReference(typeName, dims, poss, qualifiedTypeReference.isGenerated);
+	                result = new ArrayQualifiedTypeReference(typeName, dims, poss);
 	            else
-	                result = new QualifiedTypeReference(typeName, poss, qualifiedTypeReference.isGenerated);
+	                result = new QualifiedTypeReference(typeName, poss);
             }
         }
 
@@ -212,7 +213,7 @@
         }
         if (result != null) {
         	result.setBaseclassDecapsulation(typeReference.getBaseclassDecapsulation());
-        	result.bits = typeReference.bits;
+        	result.bits = typeReference.bits | ASTNode.IsGenerated;
         	return result;
         }
         throw new InternalCompilerError("Unexpected kind of type reference: " + typeReference.getClass().getName()); //$NON-NLS-1$
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/util/AstGenerator.java b/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/util/AstGenerator.java
index 16f5a7c..815e87e 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/util/AstGenerator.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/util/AstGenerator.java
@@ -299,13 +299,17 @@
 	public QualifiedTypeReference qualifiedTypeReference(char[][] compoundName) {
 		long[] poss = new long[compoundName.length];
 		Arrays.fill(poss, this.pos);
-		return new QualifiedTypeReference(compoundName, poss, true);
+		QualifiedTypeReference reference = new QualifiedTypeReference(compoundName, poss);
+		reference.bits |= ASTNode.IsGenerated | ASTNode.IgnoreRawTypeCheck;
+		return reference;
 	}
 
 	public QualifiedTypeReference qualifiedArrayTypeReference(char[][] compoundName, int dims) {
 		long[] poss = new long[compoundName.length];
 		Arrays.fill(poss, this.pos);
-		return new ArrayQualifiedTypeReference(compoundName, dims, poss, true);
+		ArrayQualifiedTypeReference reference = new ArrayQualifiedTypeReference(compoundName, dims, poss);
+		reference.bits |= ASTNode.IsGenerated | ASTNode.IgnoreRawTypeCheck;
+		return reference;
 	}
 
 	public SingleTypeReference parameterizedSingleTypeReference(char[] name, TypeReference[] typeParameters, int dimensions)
@@ -364,6 +368,7 @@
             elementType = ab.leafComponentType;
         }
         TypeReference typeReference = createArrayTypeReference(elementType, dims, makeGeneric);
+        typeReference.bits |= ASTNode.IsGenerated | ASTNode.IgnoreRawTypeCheck;
         typeReference.deprecationProblemId = 0;
         if (!type.isValidBinding())
         	typeReference.bits |= ASTNode.IsGeneratedWithProblem;
@@ -412,9 +417,11 @@
     {
     	TypeReference typeReference = createArrayTypeReference(elementType, dims, true);
     	typeReference.deprecationProblemId = 0;
+    	typeReference.bits |= ASTNode.IsGenerated | ASTNode.IgnoreRawTypeCheck;
 		return typeReference;
     }
-    public TypeReference createArrayTypeReference(
+
+    private TypeReference createArrayTypeReference(
             TypeBinding elementType,
             int dims,
             boolean makeGeneric)
@@ -523,12 +530,12 @@
 	            if (qname == null)
 	           		return new SingleTypeReference(sname, this.pos);
 	            else
-	                return new QualifiedTypeReference(qname, poss, /*isGenerated*/true);
+	                return new QualifiedTypeReference(qname, poss);
 	        } else {
 	            if (qname == null)
 	                return new ArrayTypeReference(sname, dims, this.pos);
 	            else {
-	                return new ArrayQualifiedTypeReference(qname, dims, poss, /*isGenerated*/true);
+	                return new ArrayQualifiedTypeReference(qname, dims, poss);
 	            }
 	        }
         } else {
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/util/IAlienScopeTypeReference.java b/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/util/IAlienScopeTypeReference.java
index 56d91f4..87a7d07 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/util/IAlienScopeTypeReference.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/util/IAlienScopeTypeReference.java
@@ -17,6 +17,7 @@
 package org.eclipse.objectteams.otdt.internal.core.compiler.util;
 
 import org.eclipse.jdt.internal.compiler.CompilationResult.CheckPoint;
+import org.eclipse.jdt.internal.compiler.ast.ASTNode;
 import org.eclipse.jdt.internal.compiler.ast.ArrayQualifiedTypeReference;
 import org.eclipse.jdt.internal.compiler.ast.ArrayTypeReference;
 import org.eclipse.jdt.internal.compiler.ast.ParameterizedSingleTypeReference;
@@ -164,7 +165,7 @@
 		public AlienScopeQualifiedTypeReference(char[][] sources, long[] poss, Scope alienScope) {
 			super(sources, poss);
 			this.alienScope = alienScope;
-			this.isGenerated = true; // allow qualified reference to role
+			this.bits |= ASTNode.IsGenerated; // allow qualified reference to role
 		}
 		public Scope getAlienScope() { return this.alienScope; }
 		@Override
@@ -204,7 +205,7 @@
 		public AlienScopeArrayQualifiedTypeReference(char[][] sources, long[] poss, int dim, Scope alienScope) {
 			super(sources, dim, poss);
 			this.alienScope = alienScope;
-			this.isGenerated = true; // allow qualified reference to role
+			this.bits |= ASTNode.IsGenerated; // allow qualified reference to role
 		}
 		public Scope getAlienScope() { return this.alienScope; }
 		@Override
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/src/org/eclipse/objectteams/otdt/test/builder/OTEquinoxBuilderTests.java b/testplugins/org.eclipse.objectteams.otdt.test.builder/src/org/eclipse/objectteams/otdt/test/builder/OTEquinoxBuilderTests.java
index 68825e9..2b9b25b 100644
--- a/testplugins/org.eclipse.objectteams.otdt.test.builder/src/org/eclipse/objectteams/otdt/test/builder/OTEquinoxBuilderTests.java
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/src/org/eclipse/objectteams/otdt/test/builder/OTEquinoxBuilderTests.java
@@ -67,9 +67,9 @@
 		}
 	};
 	
-//	static {
-//		TESTS_NAMES = new String[] { "testBaseImportTrac304"};
-//	}
+	static {
+//		TESTS_NAMES = new String[] { "testBug419987"};
+	}
 	public OTEquinoxBuilderTests(String name) {
 		super(name);
 	}
@@ -150,8 +150,8 @@
 		expectingNoProblemsFor(trac18b.getPath());
 		expectingOnlySpecificProblemsFor(trac18a.getPath(), new Problem[] {
 			getDecapsulationProblem(trac18a, "trac18b.actions.SampleAction", "trac18a/Team18.java", 42, 70),
-			getDecapsulationProblem(trac18a, "trac18b.actions.SampleAction", "trac18a/Team18.java", 163, 175),
-			getDecapsulationProblem(trac18a, "trac18b.actions.SampleAction", "trac18a/Team18.java", 201, 205) // location of the base-ctor call.
+			getDecapsulationProblem(trac18a, "trac18b.actions.SampleAction", "trac18a/Team18.java", 163, 175)
+			// base-ctor call no longer flagged
 		});
 	}
 	/* trying to produce a broken and bogus error message a la Trac #154 (no success yet). */
@@ -380,6 +380,16 @@
 				new Problem[] {
 					getMissingAspectExportProblem(aea, "aea")});
 	}
+	
+	public void testBug419987() throws CoreException, IOException {
+		IJavaProject aeb= fileManager.setUpJavaProject("Base419987"); 
+		env.addProject(aeb.getProject());
+		IJavaProject aea= fileManager.setUpJavaProject("Bug419987"); 
+		env.addProject(aea.getProject());
+		fullBuild();
+		expectingNoProblemsFor(aeb.getPath());
+		expectingNoProblemsFor(aea.getPath());		
+	}
 
 	// ---------------- HELPERS: ---------------------------
 	private Problem getDecapsulationProblem(IJavaProject project, String baseclassName, String teamPath, int start, int end) {
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Base419987/.classpath b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Base419987/.classpath
new file mode 100644
index 0000000..304e861
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Base419987/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Base419987/.project b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Base419987/.project
new file mode 100644
index 0000000..0659ea7
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Base419987/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>Base419987</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+	</natures>
+</projectDescription>
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Base419987/.settings/org.eclipse.jdt.core.prefs b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Base419987/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..0f8f6c5
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Base419987/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,12 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.7
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.7
+org.eclipse.objectteams.otdt.compiler.option.pure_java=enabled
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Base419987/META-INF/MANIFEST.MF b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Base419987/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..cba4876
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Base419987/META-INF/MANIFEST.MF
@@ -0,0 +1,6 @@
+Bundle-ManifestVersion: 2
+Bundle-Name: Base
+Bundle-SymbolicName: Base419987
+Bundle-Version: 1.0.0.qualifier
+Export-Package: internal;x-internal:=true
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Base419987/build.properties b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Base419987/build.properties
new file mode 100644
index 0000000..b107977
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Base419987/build.properties
@@ -0,0 +1,3 @@
+source.. = src/
+bin.includes = META-INF/,\
+               .
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Base419987/src/internal/RestrictedFoo.java b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Base419987/src/internal/RestrictedFoo.java
new file mode 100644
index 0000000..ff37c03
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Base419987/src/internal/RestrictedFoo.java
@@ -0,0 +1,5 @@
+package internal;
+
+public class RestrictedFoo {
+
+}
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Bug419987/.classpath b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Bug419987/.classpath
new file mode 100644
index 0000000..9b7e6c5
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Bug419987/.classpath
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+	<classpathentry kind="con" path="OTRE"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Bug419987/.project b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Bug419987/.project
new file mode 100644
index 0000000..8cf7b24
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Bug419987/.project
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>Bug419987</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.objectteams.otdt.builder.OTJBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.objectteams.otdt.OTJavaNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+	</natures>
+</projectDescription>
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Bug419987/META-INF/MANIFEST.MF b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Bug419987/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..4233287
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Bug419987/META-INF/MANIFEST.MF
@@ -0,0 +1,7 @@
+Bundle-ManifestVersion: 2
+Bundle-Name: Bug419987
+Bundle-SymbolicName: Bug419987
+Bundle-Version: 1.0.0.qualifier
+Export-Package: teams
+Require-Bundle: Base419987;bundle-version="1.0.0"
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Bug419987/build.properties b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Bug419987/build.properties
new file mode 100644
index 0000000..b107977
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Bug419987/build.properties
@@ -0,0 +1,3 @@
+source.. = src/
+bin.includes = META-INF/,\
+               .
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Bug419987/src/teams/Sub.java b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Bug419987/src/teams/Sub.java
new file mode 100644
index 0000000..95a54bb
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Bug419987/src/teams/Sub.java
@@ -0,0 +1,5 @@
+package teams;
+public team class Sub extends Super { // warning is here on "Super"
+	protected class RSub extends RSuper {
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Bug419987/src/teams/Super.java b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Bug419987/src/teams/Super.java
new file mode 100644
index 0000000..c99c013
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.test.builder/workspace/Bug419987/src/teams/Super.java
@@ -0,0 +1,9 @@
+package teams;
+
+import base internal.RestrictedFoo;
+
+@SuppressWarnings("restriction")
+public team class Super {
+	protected class RSuper playedBy RestrictedFoo {
+	}
+}
\ No newline at end of file