Bug 537821 - [otdre] Create test suite for OT/Equinox + OTDRE
diff --git a/.gitignore b/.gitignore
index 1538da7..cb86bf3 100644
--- a/.gitignore
+++ b/.gitignore
@@ -6,6 +6,7 @@
 /othersrc/otdt-examples/*/bin/
 /testplugins/*/bin/
 /testplugins/*/jplis_dump/
+/testplugins/otequinoxtest/*/bin/
 /maven/**/target/
 *~
 *.rej
diff --git a/features/org.eclipse.objectteams.otdt.feature/unit-tests-feature/feature.xml b/features/org.eclipse.objectteams.otdt.feature/unit-tests-feature/feature.xml
index 519178a..11104ca 100644
--- a/features/org.eclipse.objectteams.otdt.feature/unit-tests-feature/feature.xml
+++ b/features/org.eclipse.objectteams.otdt.feature/unit-tests-feature/feature.xml
@@ -1,168 +1,238 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<feature

-      id="org.eclipse.objectteams.otdt-tests"

-      label="OTDT Development Tools Unit Tests"

-      version="2.1.0"

-      provider-name="Eclipse Object Teams Project">

-

-   <description>

-This is a build-time-only feature for testing the Object Teams Development Tooling.

-   </description>

-

-   <copyright>

-      The software &quot;Object Teams Development Tooling&quot; (OTDT) is a

-result of the joint project TOPPrax and has been developed in

-collaboration between 

-the Fraunhofer Institut für Rechnerarchitektur und Softwaretechnik

-(FIRST) 

-and the Technische Unversität Berlin. 

-The software consists of three distinguishable parts:

-- A compiler for OT/J (Compiler),

-- A graphical user interface (GUI) and

-- A runtime environment for OT/J (Runtime).

-The copyright is held by the Technische Universität (Compiler

-and Runtime)

-and by the Fraunhofer Gesellschaft, München, Deutschland,

-for its Fraunhofer Institut für Rechnerarchitektur und Softwaretechnik

-(FIRST) (Compiler and GUI) and others.

-This software is based on Eclipse and the Java Development Tooling

-(JDT) of which it contains parts.

-   </copyright>

-

-   <license url="%licenseURL">

-   		%license

-   </license>

-

-   <requires>

-      <import plugin="org.junit"/>

-      <import plugin="org.eclipse.jdt.core"/>

-      <import plugin="org.eclipse.core.resources"/>

-      <import plugin="org.eclipse.core.runtime"/>

-      <import plugin="org.eclipse.jdt.debug"/>

-      <import plugin="org.eclipse.team.core"/>

-      <import plugin="org.eclipse.text"/>

-      <import plugin="org.eclipse.test.performance"/>

-      <import plugin="org.eclipse.ant.optional.junit"/>

-   </requires>

-

-   <plugin

-         id="org.eclipse.jdt.core.tests.compiler"

-         download-size="0"

-         install-size="0"

-         version="0.0.0"/>

-

-   <plugin

-         id="org.eclipse.jdt.core.tests.builder"

-         download-size="0"

-         install-size="0"

-         version="0.0.0"/>

-

-   <plugin

-         id="org.eclipse.jdt.core.tests.model"

-         download-size="0"

-         install-size="0"

-         version="0.0.0"/>

-

-   <plugin

-         id="org.eclipse.objectteams.otdt.tests"

-         download-size="0"

-         install-size="0"

-         version="0.0.0"/>

-

-   <plugin

-         id="org.eclipse.jdt.ui.tests.refactoring"

-         download-size="0"

-         install-size="0"

-         version="0.0.0"/>

-

-   <plugin

-         id="org.eclipse.jdt.debug.tests"

-         download-size="0"

-         install-size="0"

-         version="0.0.0"/>

-

-   <plugin

-         id="org.eclipse.jdt.ui.tests"

-         download-size="0"

-         install-size="0"

-         version="0.0.0"/>

-    

-   <plugin

-         id="org.eclipse.objectteams.otdt.debug.tests"

-         download-size="0"

-         install-size="0"

-         version="0.0.0"/>

-

-   <plugin

-         id="org.eclipse.objectteams.otdt.ui.tests"

-         download-size="0"

-         install-size="0"

-         version="0.0.0"/>

-

-   <plugin

-         id="org.eclipse.objectteams.otdt.ui.tests.dom"

-         download-size="0"

-         install-size="0"

-         version="0.0.0"/>

-

-   <plugin

-         id="org.eclipse.objectteams.otdt.ui.tests.refactoring"

-         download-size="0"

-         install-size="0"

-         version="0.0.0"/>

-

-    <plugin

-         id="org.eclipse.objectteams.otdt.test.builder"

-         download-size="0"

-         install-size="0"

-         version="0.0.0"/>

-         

-    <plugin

-    	 id="org.eclipse.jdt.text.tests"

-    	 download-size="0"

-    	 install-size="0"

-    	 version="0.0.0"/>

-

-    <plugin

-    	 id="org.eclipse.jface.text.tests"

-    	 download-size="0"

-    	 install-size="0"

-    	 version="0.0.0"/>

-

-    <plugin

-    	 id="org.eclipse.text.tests"

-    	 download-size="0"

-    	 install-size="0"

-    	 version="0.0.0"/>

-

-    <plugin

-    	 id="org.eclipse.core.filebuffers.tests"

-    	 download-size="0"

-    	 install-size="0"

-    	 version="0.0.0"/>

-

-    <plugin

-    	 id="org.eclipse.jdt.annotation"

-    	 download-size="0"

-    	 install-size="0"

-    	 version="1.1.300.qualifier"/>

-

-    <plugin

-    	 id="org.eclipse.jdt.annotation"

-    	 download-size="0"

-    	 install-size="0"

-    	 version="2.2.100.qualifier"/>

-

-	<plugin

-		 id="org.hamcrest.core"

-		 download-size="0"

-		 install-size="0"

-		 version="0.0.0"/>

-

-	<plugin

-		 id="org.hamcrest.library"

-		 download-size="0"

-		 install-size="0"

-		 version="0.0.0"/>

-

-</feature>

+<?xml version="1.0" encoding="UTF-8"?>
+<feature
+      id="org.eclipse.objectteams.otdt-tests"
+      label="OTDT Development Tools Unit Tests"
+      version="2.1.0"
+      provider-name="Eclipse Object Teams Project">
+
+   <description>
+      This is a build-time-only feature for testing the Object Teams Development Tooling.
+   </description>
+
+   <copyright>
+      The software &quot;Object Teams Development Tooling&quot; (OTDT) is a
+result of the joint project TOPPrax and has been developed in
+collaboration between 
+the Fraunhofer Institut für Rechnerarchitektur und Softwaretechnik
+(FIRST) 
+and the Technische Unversität Berlin. 
+The software consists of three distinguishable parts:
+- A compiler for OT/J (Compiler),
+- A graphical user interface (GUI) and
+- A runtime environment for OT/J (Runtime).
+The copyright is held by the Technische Universität (Compiler
+and Runtime)
+and by the Fraunhofer Gesellschaft, München, Deutschland,
+for its Fraunhofer Institut für Rechnerarchitektur und Softwaretechnik
+(FIRST) (Compiler and GUI) and others.
+This software is based on Eclipse and the Java Development Tooling
+(JDT) of which it contains parts.
+   </copyright>
+
+   <license url="%licenseURL">
+      %license
+   </license>
+
+   <requires>
+      <import plugin="org.junit"/>
+      <import plugin="org.eclipse.jdt.core"/>
+      <import plugin="org.eclipse.core.resources"/>
+      <import plugin="org.eclipse.core.runtime"/>
+      <import plugin="org.eclipse.jdt.debug"/>
+      <import plugin="org.eclipse.team.core"/>
+      <import plugin="org.eclipse.text"/>
+      <import plugin="org.eclipse.test.performance"/>
+      <import plugin="org.eclipse.ant.optional.junit"/>
+   </requires>
+
+   <plugin
+         id="org.eclipse.jdt.core.tests.compiler"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"/>
+
+   <plugin
+         id="org.eclipse.jdt.core.tests.builder"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"/>
+
+   <plugin
+         id="org.eclipse.jdt.core.tests.model"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"/>
+
+   <plugin
+         id="org.eclipse.objectteams.otdt.tests"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"/>
+
+   <plugin
+         id="org.eclipse.jdt.ui.tests.refactoring"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"/>
+
+   <plugin
+         id="org.eclipse.jdt.debug.tests"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"/>
+
+   <plugin
+         id="org.eclipse.jdt.ui.tests"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"/>
+
+   <plugin
+         id="org.eclipse.objectteams.otdt.debug.tests"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"/>
+
+   <plugin
+         id="org.eclipse.objectteams.otdt.ui.tests"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"/>
+
+   <plugin
+         id="org.eclipse.objectteams.otdt.ui.tests.dom"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"/>
+
+   <plugin
+         id="org.eclipse.objectteams.otdt.ui.tests.refactoring"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"/>
+
+   <plugin
+         id="org.eclipse.objectteams.otdt.test.builder"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"/>
+
+   <plugin
+         id="org.eclipse.jdt.text.tests"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"/>
+
+   <plugin
+         id="org.eclipse.jface.text.tests"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"/>
+
+   <plugin
+         id="org.eclipse.text.tests"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"/>
+
+   <plugin
+         id="org.eclipse.core.filebuffers.tests"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"/>
+
+   <plugin
+         id="org.eclipse.jdt.annotation"
+         download-size="0"
+         install-size="0"
+         version="1.1.300.qualifier"/>
+
+   <plugin
+         id="org.eclipse.jdt.annotation"
+         download-size="0"
+         install-size="0"
+         version="2.2.100.qualifier"/>
+
+   <plugin
+         id="org.hamcrest.core"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"/>
+
+   <plugin
+         id="org.hamcrest.library"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"/>
+
+   <plugin
+         id="Aspect537350_A"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="Aspect537350_B"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="Aspect537351"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="Aspect537533"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="Base537350_A"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="Base537350_B"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="Base537351"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="Base537533"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="Middle537351"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="OTEquinoxTests"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+</feature>
diff --git a/releng/build-scripts/build/run.xml b/releng/build-scripts/build/run.xml
index 5d1b9c8..7da4b22 100644
--- a/releng/build-scripts/build/run.xml
+++ b/releng/build-scripts/build/run.xml
@@ -163,6 +163,11 @@
 		<antcall target="runOTDTTests" />
 	</target>
 
+	<target name="ot-junit-run-onlyone" depends="setupProperties,checkOS" description="Run OT tests without building">
+		<echo message="Starting Testrun ${test.root.dir}"/>
+		<antcall target="runOnlyoneTests" />
+	</target>
+
 	<!-- =================== END Public Targets ==================== -->
 
 	<!-- === Setup Targets: === -->
@@ -366,6 +371,21 @@
 		</ant>
 	</target>
 
+	<target name="runOnlyoneTests" description="Delegate to the next level script to perform the actual testing.">
+		<ant antfile="${OTScriptDir}/test.xml" target="onlyone" dir="${build.root.dir}">
+			<property name="os" value="${os}" />
+			<property name="ws" value="${ws}" />
+			<property name="arch" value="${arch}" />
+			<property name="baseos" value="${os}" />
+			<property name="basews" value="${ws}" />
+			<property name="basearch" value="${arch}" />
+			<property name="otdtUpdatesDir" value="${otdtUpdatesDir}" />
+			<property name="testsUpdatesDirBase" value="${testsUpdatesDirBase}" />
+			<property name="test.tmpDir" value="${test.tmpDir}"/>
+			<property name="vmargs" value="${vmargs}" />
+		</ant>
+	</target>
+
 	<!-- currently unused target name="collectResults">
 		<ant target="collect" antfile="${test.root.dir}/library.xml" dir="${otresults}">
 			<property name="includes" value="org.*.xml"/>
diff --git a/releng/build-scripts/build/test.xml b/releng/build-scripts/build/test.xml
index 8af1221..8b7b6a4 100644
--- a/releng/build-scripts/build/test.xml
+++ b/releng/build-scripts/build/test.xml
@@ -128,6 +128,12 @@
 		</antcall>

 	</target>

 

+	<target name="otequinox_tests" description="Runs the OTEquinoxTests test.xml">

+		<antcall target="runtests">

+			<param name="testPlugin" value="OTEquinoxTests_${OTEquinoxTests}" />

+		</antcall>

+	</target>

+

 	<target name="jdt_ui_tests" description="Runs the org.eclipse.jdt.ui.tests test.xml">

 		<property name="library-file"

 		            value="${test.root.dir}/library.xml"/>

@@ -179,6 +185,7 @@
                 <antcall target="otdt_ref_tests" />

                 <antcall target="otdt_dom_tests" />

                 <antcall target="otdt_tests" />

+		        <antcall target="otequinox_tests" />

        			<antcall target="jdt_builder_tests" />

                 <antcall target="jdtcore_compiler_tests" />

                 <antcall target="jdtcore_model_tests" />

@@ -208,7 +215,7 @@
 	</target>

 	

 	<target name="onlyone">

-		<antcall target="otdt_ui_tests" />

+		<antcall target="otequinox_tests" />

 	</target>

 

 </project>

diff --git a/releng/map/otdt.map.in b/releng/map/otdt.map.in
index 0164d1c..2ce865b 100644
--- a/releng/map/otdt.map.in
+++ b/releng/map/otdt.map.in
@@ -78,6 +78,19 @@
 plugin@org.eclipse.objectteams.otdt.test.builder=GIT,repo=git://git.eclipse.org/gitroot/objectteams/org.eclipse.objectteams.git,path=testplugins/org.eclipse.objectteams.otdt.test.builder

 plugin@org.eclipse.objectteams.otdt.ui.tests=GIT,repo=git://git.eclipse.org/gitroot/objectteams/org.eclipse.objectteams.git,path=testplugins/org.eclipse.objectteams.otdt.ui.tests

 

+!** OT/Equinox Tests **!

+plugin@OTEquinoxTests=GIT,repo=git://git.eclipse.org/gitroot/objectteams/org.eclipse.objectteams.git,path=testplugins/otequinoxtest/OTEquinoxTests

+plugin@Base537350_A=GIT,repo=git://git.eclipse.org/gitroot/objectteams/org.eclipse.objectteams.git,path=testplugins/otequinoxtest/Base537350_A

+plugin@Aspect537350_A=GIT,repo=git://git.eclipse.org/gitroot/objectteams/org.eclipse.objectteams.git,path=testplugins/otequinoxtest/Aspect537350_A

+plugin@Base537350_B=GIT,repo=git://git.eclipse.org/gitroot/objectteams/org.eclipse.objectteams.git,path=testplugins/otequinoxtest/Base537350_B

+plugin@Aspect537350_B=GIT,repo=git://git.eclipse.org/gitroot/objectteams/org.eclipse.objectteams.git,path=testplugins/otequinoxtest/Aspect537350_B

+plugin@Base537351=GIT,repo=git://git.eclipse.org/gitroot/objectteams/org.eclipse.objectteams.git,path=testplugins/otequinoxtest/Base537351

+plugin@Middle537351=GIT,repo=git://git.eclipse.org/gitroot/objectteams/org.eclipse.objectteams.git,path=testplugins/otequinoxtest/Middle537351

+plugin@Aspect537351=GIT,repo=git://git.eclipse.org/gitroot/objectteams/org.eclipse.objectteams.git,path=testplugins/otequinoxtest/Aspect537351

+plugin@Base537533=GIT,repo=git://git.eclipse.org/gitroot/objectteams/org.eclipse.objectteams.git,path=testplugins/otequinoxtest/Base537533

+plugin@Aspect537533=GIT,repo=git://git.eclipse.org/gitroot/objectteams/org.eclipse.objectteams.git,path=testplugins/otequinoxtest/Aspect537533

+

+

 !-- Tests fetched from original GIT (some are required indirectly by jdt.ui.tests): --

 plugin@org.eclipse.jdt.core.tests.builder=GIT,tag=@SDK_QUALIFIER@,repo=git://git.eclipse.org/gitroot/jdt/eclipse.jdt.core.git,path=org.eclipse.jdt.core.tests.builder

 plugin@org.eclipse.jdt.debug.tests=GIT,tag=@SDK_QUALIFIER@,repo=git://git.eclipse.org/gitroot/jdt/eclipse.jdt.debug.git,path=org.eclipse.jdt.debug.tests

diff --git a/testplugins/otequinoxtest/Aspect537350_A/.classpath b/testplugins/otequinoxtest/Aspect537350_A/.classpath
new file mode 100644
index 0000000..d06b940
--- /dev/null
+++ b/testplugins/otequinoxtest/Aspect537350_A/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/testplugins/otequinoxtest/Aspect537350_A/.project b/testplugins/otequinoxtest/Aspect537350_A/.project
new file mode 100644
index 0000000..61842cd
--- /dev/null
+++ b/testplugins/otequinoxtest/Aspect537350_A/.project
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>Aspect537350_A</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.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.objectteams.otdt.OTJavaNature</nature>
+	</natures>
+</projectDescription>
diff --git a/testplugins/otequinoxtest/Aspect537350_A/.settings/org.eclipse.jdt.core.prefs b/testplugins/otequinoxtest/Aspect537350_A/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..3ffc382
--- /dev/null
+++ b/testplugins/otequinoxtest/Aspect537350_A/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,28 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.objectteams.otdt.compiler.option.pure_java=enabled
+org.eclipse.objectteams.otdt.compiler.option.weaving_scheme=OTDRE
+org.eclipse.objectteams.otdt.compiler.problem.abstract_potential_relevant_role=warning
+org.eclipse.objectteams.otdt.compiler.problem.adapting_deprecated=error
+org.eclipse.objectteams.otdt.compiler.problem.ambiguous_lowering=warning
+org.eclipse.objectteams.otdt.compiler.problem.basecall=warning
+org.eclipse.objectteams.otdt.compiler.problem.baseclass_cycle=warning
+org.eclipse.objectteams.otdt.compiler.problem.binding_conventions=error
+org.eclipse.objectteams.otdt.compiler.problem.decapsulation=warning
+org.eclipse.objectteams.otdt.compiler.problem.decapsulation_write=warning
+org.eclipse.objectteams.otdt.compiler.problem.deprecated_path_syntax=warning
+org.eclipse.objectteams.otdt.compiler.problem.effectless_fieldaccess=warning
+org.eclipse.objectteams.otdt.compiler.problem.exception_in_guard=error
+org.eclipse.objectteams.otdt.compiler.problem.fragile_callin=warning
+org.eclipse.objectteams.otdt.compiler.problem.ignoring_role_return=warning
+org.eclipse.objectteams.otdt.compiler.problem.inferred_callout=error
+org.eclipse.objectteams.otdt.compiler.problem.override_final_role=error
+org.eclipse.objectteams.otdt.compiler.problem.potential_ambiguous_playedby=warning
+org.eclipse.objectteams.otdt.compiler.problem.unsafe_role_instantiation=warning
+org.eclipse.objectteams.otdt.compiler.problem.unused_parammap=warning
+org.eclipse.objectteams.otdt.compiler.problem.weave_into_system_class=warning
diff --git a/testplugins/otequinoxtest/Aspect537350_A/META-INF/MANIFEST.MF b/testplugins/otequinoxtest/Aspect537350_A/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..295c327
--- /dev/null
+++ b/testplugins/otequinoxtest/Aspect537350_A/META-INF/MANIFEST.MF
@@ -0,0 +1,13 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Aspect537350_A
+Bundle-SymbolicName: Aspect537350_A;singleton:=true
+Automatic-Module-Name: Aspect537350_A
+Bundle-Version: 1.0.0.qualifier
+Bundle-ActivationPolicy: lazy
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Require-Bundle: Base537350_A;bundle-version="1.0.0",
+ org.eclipse.objectteams.otequinox;bundle-version="2.7.1",
+ org.junit
+Export-Package: aspect;ot-aspect-host=Aspect537350_A,
+ test537350_a
diff --git a/testplugins/otequinoxtest/Aspect537350_A/build.properties b/testplugins/otequinoxtest/Aspect537350_A/build.properties
new file mode 100644
index 0000000..e9863e2
--- /dev/null
+++ b/testplugins/otequinoxtest/Aspect537350_A/build.properties
@@ -0,0 +1,5 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .,\
+               plugin.xml
diff --git a/testplugins/otequinoxtest/Aspect537350_A/plugin.xml b/testplugins/otequinoxtest/Aspect537350_A/plugin.xml
new file mode 100644
index 0000000..a3afe9e
--- /dev/null
+++ b/testplugins/otequinoxtest/Aspect537350_A/plugin.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+   <extension
+         point="org.eclipse.objectteams.otequinox.aspectBindings">
+      <aspectBinding
+            icon="platform:/plugin/org.eclipse.objectteams.otdt.ui/icons/ot/calloutbinding_obj.gif">
+         <basePlugin
+               icon="platform:/plugin/org.eclipse.pde.ui/icons/obj16/plugin_obj.png"
+               id="Base537350_A">
+         </basePlugin>
+         <team
+               activation="ALL_THREADS"
+               class="aspect.PDELaunchingAdapter"
+               icon="platform:/plugin/org.eclipse.objectteams.otdt.ui/icons/ot/team_obj.gif">
+         </team>
+      </aspectBinding>
+   </extension>
+
+</plugin>
diff --git a/testplugins/otequinoxtest/Aspect537350_A/src/aspect/PDELaunchingAdapter.java b/testplugins/otequinoxtest/Aspect537350_A/src/aspect/PDELaunchingAdapter.java
new file mode 100644
index 0000000..59a81a4
--- /dev/null
+++ b/testplugins/otequinoxtest/Aspect537350_A/src/aspect/PDELaunchingAdapter.java
@@ -0,0 +1,12 @@
+package aspect;
+
+import base base537350_a.MainTab;
+
+public team class PDELaunchingAdapter {
+	protected class MainTab playedBy MainTab {
+		runit <- after runit;
+		private void runit(StringBuilder result) {
+			result.append("-PDELaunchingAdapter.MainTab");
+		}
+	}
+}
diff --git a/testplugins/otequinoxtest/Aspect537350_A/src/test537350_a/TestBug537350_A.java b/testplugins/otequinoxtest/Aspect537350_A/src/test537350_a/TestBug537350_A.java
new file mode 100644
index 0000000..f98760f
--- /dev/null
+++ b/testplugins/otequinoxtest/Aspect537350_A/src/test537350_a/TestBug537350_A.java
@@ -0,0 +1,17 @@
+package test537350_a;
+
+import static org.junit.Assert.assertEquals;
+
+import org.junit.Test;
+
+import base537350_a.PluginJUnitMainTab;
+import junit.framework.TestSuite;
+
+public class TestBug537350_A extends TestSuite {
+	@Test
+	public void test() {
+		StringBuilder result = new StringBuilder();
+		new PluginJUnitMainTab().runit(result);
+		assertEquals("PluginJUnitMainTab-PDELaunchingAdapter.MainTab", result.toString());
+	}
+}
diff --git a/testplugins/otequinoxtest/Aspect537350_B/.classpath b/testplugins/otequinoxtest/Aspect537350_B/.classpath
new file mode 100644
index 0000000..d06b940
--- /dev/null
+++ b/testplugins/otequinoxtest/Aspect537350_B/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/testplugins/otequinoxtest/Aspect537350_B/.project b/testplugins/otequinoxtest/Aspect537350_B/.project
new file mode 100644
index 0000000..aa59128
--- /dev/null
+++ b/testplugins/otequinoxtest/Aspect537350_B/.project
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>Aspect537350_B</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.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.objectteams.otdt.OTJavaNature</nature>
+	</natures>
+</projectDescription>
diff --git a/testplugins/otequinoxtest/Aspect537350_B/.settings/org.eclipse.jdt.core.prefs b/testplugins/otequinoxtest/Aspect537350_B/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..c22c445
--- /dev/null
+++ b/testplugins/otequinoxtest/Aspect537350_B/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,28 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.objectteams.otdt.compiler.option.pure_java=enabled
+org.eclipse.objectteams.otdt.compiler.option.weaving_scheme=OTDRE
+org.eclipse.objectteams.otdt.compiler.problem.abstract_potential_relevant_role=warning
+org.eclipse.objectteams.otdt.compiler.problem.adapting_deprecated=error
+org.eclipse.objectteams.otdt.compiler.problem.ambiguous_lowering=warning
+org.eclipse.objectteams.otdt.compiler.problem.basecall=warning
+org.eclipse.objectteams.otdt.compiler.problem.baseclass_cycle=warning
+org.eclipse.objectteams.otdt.compiler.problem.binding_conventions=warning
+org.eclipse.objectteams.otdt.compiler.problem.decapsulation=warning
+org.eclipse.objectteams.otdt.compiler.problem.decapsulation_write=warning
+org.eclipse.objectteams.otdt.compiler.problem.deprecated_path_syntax=warning
+org.eclipse.objectteams.otdt.compiler.problem.effectless_fieldaccess=warning
+org.eclipse.objectteams.otdt.compiler.problem.exception_in_guard=error
+org.eclipse.objectteams.otdt.compiler.problem.fragile_callin=warning
+org.eclipse.objectteams.otdt.compiler.problem.ignoring_role_return=warning
+org.eclipse.objectteams.otdt.compiler.problem.inferred_callout=error
+org.eclipse.objectteams.otdt.compiler.problem.override_final_role=error
+org.eclipse.objectteams.otdt.compiler.problem.potential_ambiguous_playedby=warning
+org.eclipse.objectteams.otdt.compiler.problem.unsafe_role_instantiation=warning
+org.eclipse.objectteams.otdt.compiler.problem.unused_parammap=warning
+org.eclipse.objectteams.otdt.compiler.problem.weave_into_system_class=warning
diff --git a/testplugins/otequinoxtest/Aspect537350_B/META-INF/MANIFEST.MF b/testplugins/otequinoxtest/Aspect537350_B/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..c07c9c9
--- /dev/null
+++ b/testplugins/otequinoxtest/Aspect537350_B/META-INF/MANIFEST.MF
@@ -0,0 +1,11 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Aspect537350_B
+Bundle-SymbolicName: Aspect537350_B;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Require-Bundle: org.eclipse.objectteams.otequinox,
+ Base537350_B;bundle-version="1.0.0"
+Automatic-Module-Name: AspectD
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-ActivationPolicy: lazy
+Export-Package: aspect;ot-aspect-host=Aspect537350_B
diff --git a/testplugins/otequinoxtest/Aspect537350_B/build.properties b/testplugins/otequinoxtest/Aspect537350_B/build.properties
new file mode 100644
index 0000000..e9863e2
--- /dev/null
+++ b/testplugins/otequinoxtest/Aspect537350_B/build.properties
@@ -0,0 +1,5 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .,\
+               plugin.xml
diff --git a/testplugins/otequinoxtest/Aspect537350_B/plugin.xml b/testplugins/otequinoxtest/Aspect537350_B/plugin.xml
new file mode 100644
index 0000000..e8fd766
--- /dev/null
+++ b/testplugins/otequinoxtest/Aspect537350_B/plugin.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+   <extension
+         point="org.eclipse.objectteams.otequinox.aspectBindings">
+      <aspectBinding
+            icon="platform:/plugin/org.eclipse.objectteams.otdt.ui/icons/ot/calloutbinding_obj.gif">
+         <basePlugin
+               icon="platform:/plugin/org.eclipse.pde.ui/icons/obj16/plugin_obj.png"
+               id="Base537350_B">
+         </basePlugin>
+         <team
+               activation="ALL_THREADS"
+               class="aspect.FindActionAdaptor"
+               icon="platform:/plugin/org.eclipse.objectteams.otdt.ui/icons/ot/team_obj.gif">
+         </team>
+      </aspectBinding>
+   </extension>
+
+</plugin>
diff --git a/testplugins/otequinoxtest/Aspect537350_B/src/aspect/FindActionAdaptor.java b/testplugins/otequinoxtest/Aspect537350_B/src/aspect/FindActionAdaptor.java
new file mode 100644
index 0000000..635739a
--- /dev/null
+++ b/testplugins/otequinoxtest/Aspect537350_B/src/aspect/FindActionAdaptor.java
@@ -0,0 +1,46 @@
+package aspect;
+
+import base base537350_b.FindReferencesAction;
+import base base537350_b.FindDeclarationsAction;
+import base base537350_b.FindImplementersAction;
+import base base537350_b.FindAction;
+
+public team class FindActionAdaptor {
+
+	protected class FindAction playedBy FindAction {
+		protected String getString() { return "RFindAction"; }
+	}
+	protected class RFindReferencesAction extends FindAction playedBy FindReferencesAction {
+		@SuppressWarnings("decapsulation")
+		get <- replace get;
+		callin void get(StringBuilder result) {
+			result.append(getString());
+			result.append('-');
+			base.get(result);
+			result.append('-');
+			result.append("RFindReferencesAction");
+		}
+	}
+	protected class RFindDeclarationsAction extends FindAction playedBy FindDeclarationsAction {
+		@SuppressWarnings("decapsulation")
+		get <- replace get;
+		callin void get(StringBuilder result) {
+			result.append(getString());
+			result.append('-');
+			base.get(result);
+			result.append('-');
+			result.append("RFindDeclarationsAction");
+		}
+	}
+	protected class RFindImplementersAction extends FindAction playedBy FindImplementersAction {
+		@SuppressWarnings("decapsulation")
+		get <- replace get;
+		callin void get(StringBuilder result) {
+			result.append(getString());
+			result.append('-');
+			base.get(result);
+			result.append('-');
+			result.append("RFindImplementersAction");
+		}
+	}
+}
diff --git a/testplugins/otequinoxtest/Aspect537351/.classpath b/testplugins/otequinoxtest/Aspect537351/.classpath
new file mode 100644
index 0000000..d06b940
--- /dev/null
+++ b/testplugins/otequinoxtest/Aspect537351/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/testplugins/otequinoxtest/Aspect537351/.project b/testplugins/otequinoxtest/Aspect537351/.project
new file mode 100644
index 0000000..1236cd7
--- /dev/null
+++ b/testplugins/otequinoxtest/Aspect537351/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>Aspect537351</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.objectteams.otdt.builder.OTJBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<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.jdt.core.javanature</nature>
+		<nature>org.eclipse.objectteams.otdt.OTJavaNature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+	</natures>
+</projectDescription>
diff --git a/testplugins/otequinoxtest/Aspect537351/.settings/org.eclipse.jdt.core.prefs b/testplugins/otequinoxtest/Aspect537351/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..c4acda7
--- /dev/null
+++ b/testplugins/otequinoxtest/Aspect537351/.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.8
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.8
+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.8
+org.eclipse.objectteams.otdt.compiler.option.weaving_scheme=OTDRE
diff --git a/testplugins/otequinoxtest/Aspect537351/META-INF/MANIFEST.MF b/testplugins/otequinoxtest/Aspect537351/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..a872161
--- /dev/null
+++ b/testplugins/otequinoxtest/Aspect537351/META-INF/MANIFEST.MF
@@ -0,0 +1,13 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Aspect1
+Bundle-SymbolicName: Aspect537351;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-ActivationPolicy: lazy
+Require-Bundle: org.eclipse.objectteams.otequinox;bundle-version="2.7.0",
+ Middle537351;bundle-version="1.0.0",
+ org.eclipse.osgi,
+ org.eclipse.jdt.annotation;bundle-version="2.2.0";resolution:=optional
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Automatic-Module-Name: Aspect1
+Export-Package: aspect1;ot-aspect-host=Aspect1
diff --git a/testplugins/otequinoxtest/Aspect537351/build.properties b/testplugins/otequinoxtest/Aspect537351/build.properties
new file mode 100644
index 0000000..cc91072
--- /dev/null
+++ b/testplugins/otequinoxtest/Aspect537351/build.properties
@@ -0,0 +1,4 @@
+source.. = src/
+bin.includes = META-INF/,\
+               .,\
+               plugin.xml
diff --git a/testplugins/otequinoxtest/Aspect537351/plugin.xml b/testplugins/otequinoxtest/Aspect537351/plugin.xml
new file mode 100644
index 0000000..880d974
--- /dev/null
+++ b/testplugins/otequinoxtest/Aspect537351/plugin.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+   <extension
+         point="org.eclipse.objectteams.otequinox.aspectBindings">
+      <aspectBinding
+            icon="platform:/plugin/org.eclipse.objectteams.otdt.ui/icons/ot/calloutbinding_obj.gif">
+         <basePlugin
+               icon="platform:/plugin/org.eclipse.pde.ui/icons/obj16/plugin_obj.png"
+               id="Middle537351">
+         </basePlugin>
+         <team
+               activation="ALL_THREADS"
+               class="aspect1.Team2"
+               icon="platform:/plugin/org.eclipse.objectteams.otdt.ui/icons/ot/team_obj.gif">
+         </team>
+      </aspectBinding>
+   </extension>
+</plugin>
diff --git a/testplugins/otequinoxtest/Aspect537351/src/aspect1/Team2.java b/testplugins/otequinoxtest/Aspect537351/src/aspect1/Team2.java
new file mode 100644
index 0000000..c3dc822
--- /dev/null
+++ b/testplugins/otequinoxtest/Aspect537351/src/aspect1/Team2.java
@@ -0,0 +1,14 @@
+package aspect1;
+
+import base middle537351.MiddleClass1;
+
+public team class Team2 {
+	protected class R playedBy MiddleClass1 {
+
+		doMiddle1 <- after doMiddle1;
+
+		private void doMiddle1(StringBuilder result) {
+			result.append("Team2.R|");
+		}
+	}
+}
diff --git a/testplugins/otequinoxtest/Aspect537533/.classpath b/testplugins/otequinoxtest/Aspect537533/.classpath
new file mode 100644
index 0000000..d06b940
--- /dev/null
+++ b/testplugins/otequinoxtest/Aspect537533/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/testplugins/otequinoxtest/Aspect537533/.project b/testplugins/otequinoxtest/Aspect537533/.project
new file mode 100644
index 0000000..75be65e
--- /dev/null
+++ b/testplugins/otequinoxtest/Aspect537533/.project
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>Aspect537533</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.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.objectteams.otdt.OTJavaNature</nature>
+	</natures>
+</projectDescription>
diff --git a/testplugins/otequinoxtest/Aspect537533/.settings/org.eclipse.jdt.core.prefs b/testplugins/otequinoxtest/Aspect537533/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..3ffc382
--- /dev/null
+++ b/testplugins/otequinoxtest/Aspect537533/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,28 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.objectteams.otdt.compiler.option.pure_java=enabled
+org.eclipse.objectteams.otdt.compiler.option.weaving_scheme=OTDRE
+org.eclipse.objectteams.otdt.compiler.problem.abstract_potential_relevant_role=warning
+org.eclipse.objectteams.otdt.compiler.problem.adapting_deprecated=error
+org.eclipse.objectteams.otdt.compiler.problem.ambiguous_lowering=warning
+org.eclipse.objectteams.otdt.compiler.problem.basecall=warning
+org.eclipse.objectteams.otdt.compiler.problem.baseclass_cycle=warning
+org.eclipse.objectteams.otdt.compiler.problem.binding_conventions=error
+org.eclipse.objectteams.otdt.compiler.problem.decapsulation=warning
+org.eclipse.objectteams.otdt.compiler.problem.decapsulation_write=warning
+org.eclipse.objectteams.otdt.compiler.problem.deprecated_path_syntax=warning
+org.eclipse.objectteams.otdt.compiler.problem.effectless_fieldaccess=warning
+org.eclipse.objectteams.otdt.compiler.problem.exception_in_guard=error
+org.eclipse.objectteams.otdt.compiler.problem.fragile_callin=warning
+org.eclipse.objectteams.otdt.compiler.problem.ignoring_role_return=warning
+org.eclipse.objectteams.otdt.compiler.problem.inferred_callout=error
+org.eclipse.objectteams.otdt.compiler.problem.override_final_role=error
+org.eclipse.objectteams.otdt.compiler.problem.potential_ambiguous_playedby=warning
+org.eclipse.objectteams.otdt.compiler.problem.unsafe_role_instantiation=warning
+org.eclipse.objectteams.otdt.compiler.problem.unused_parammap=warning
+org.eclipse.objectteams.otdt.compiler.problem.weave_into_system_class=warning
diff --git a/testplugins/otequinoxtest/Aspect537533/META-INF/MANIFEST.MF b/testplugins/otequinoxtest/Aspect537533/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..b4cfc66
--- /dev/null
+++ b/testplugins/otequinoxtest/Aspect537533/META-INF/MANIFEST.MF
@@ -0,0 +1,15 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Aspect537533
+Bundle-SymbolicName: Aspect537533;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Automatic-Module-Name: Aspect537533
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Require-Bundle: org.eclipse.objectteams.otequinox;bundle-version="2.7.1",
+ org.eclipse.osgi;bundle-version="3.13.0",
+ Base537533;bundle-version="1.0.0",
+ org.junit;bundle-version="4.12.0"
+Bundle-ActivationPolicy: lazy
+Export-Package: aspect;ot-aspect-host=Aspect537533,
+ test537533
+Bundle-Activator: aspect.Activator
diff --git a/testplugins/otequinoxtest/Aspect537533/build.properties b/testplugins/otequinoxtest/Aspect537533/build.properties
new file mode 100644
index 0000000..e9863e2
--- /dev/null
+++ b/testplugins/otequinoxtest/Aspect537533/build.properties
@@ -0,0 +1,5 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .,\
+               plugin.xml
diff --git a/testplugins/otequinoxtest/Aspect537533/plugin.xml b/testplugins/otequinoxtest/Aspect537533/plugin.xml
new file mode 100644
index 0000000..908400f
--- /dev/null
+++ b/testplugins/otequinoxtest/Aspect537533/plugin.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+   <extension
+         point="org.eclipse.objectteams.otequinox.aspectBindings">
+      <aspectBinding
+            icon="platform:/plugin/org.eclipse.objectteams.otdt.ui/icons/ot/calloutbinding_obj.gif">
+         <basePlugin
+               icon="platform:/plugin/org.eclipse.pde.ui/icons/obj16/plugin_obj.png"
+               id="Base537533">
+         </basePlugin>
+         <team
+               activation="ALL_THREADS"
+               class="aspect.Team2"
+               icon="platform:/plugin/org.eclipse.objectteams.otdt.ui/icons/ot/team_obj.gif">
+         </team>
+      </aspectBinding>
+   </extension>
+
+</plugin>
diff --git a/testplugins/otequinoxtest/Aspect537533/src/aspect/Activator.java b/testplugins/otequinoxtest/Aspect537533/src/aspect/Activator.java
new file mode 100644
index 0000000..ce6f4cd
--- /dev/null
+++ b/testplugins/otequinoxtest/Aspect537533/src/aspect/Activator.java
@@ -0,0 +1,17 @@
+package aspect;
+
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+
+public class Activator implements BundleActivator {
+
+	@Override
+	public void start(BundleContext context) throws Exception {
+	}
+
+	@Override
+	public void stop(BundleContext context) throws Exception {
+		// nothing
+	}
+
+}
diff --git a/testplugins/otequinoxtest/Aspect537533/src/aspect/Team2.java b/testplugins/otequinoxtest/Aspect537533/src/aspect/Team2.java
new file mode 100644
index 0000000..7e90774
--- /dev/null
+++ b/testplugins/otequinoxtest/Aspect537533/src/aspect/Team2.java
@@ -0,0 +1,24 @@
+package aspect;
+
+import base537533.JavaTypeCompletionProposal;
+
+import base base537533.MethodDeclarationCompletionProposal;
+
+public team class Team2 {
+	protected class RMethodDeclarationCompletionProposal playedBy MethodDeclarationCompletionProposal {
+		void setReplacementString(StringBuilder result) <- replace void setReplacementString(StringBuilder result);
+
+		@SuppressWarnings("basecall")
+		callin void setReplacementString(StringBuilder result) {
+			result.append("RMethodDeclarationCompletionProposal");
+		}
+	}
+	protected class OverrideRoleCompletionProposal extends JavaTypeCompletionProposal { // unbound
+		protected void run(StringBuilder result) {
+			setReplacementString(result);
+		}
+	}
+	public void run(StringBuilder result) {
+		new OverrideRoleCompletionProposal().run(result);
+	}
+}
diff --git a/testplugins/otequinoxtest/Aspect537533/src/test537533/TestBug537533.java b/testplugins/otequinoxtest/Aspect537533/src/test537533/TestBug537533.java
new file mode 100644
index 0000000..04f0c88
--- /dev/null
+++ b/testplugins/otequinoxtest/Aspect537533/src/test537533/TestBug537533.java
@@ -0,0 +1,24 @@
+package test537533;
+
+import static org.junit.Assert.*;
+
+import org.junit.Test;
+
+import aspect.Team2;
+import base537533.MethodDeclarationCompletionProposal;
+import junit.framework.TestSuite;
+
+public class TestBug537533 extends TestSuite {
+	@Test
+	public void testDirect() {
+		StringBuilder result = new StringBuilder();
+		new Team2().run(result);
+		assertEquals("AbstractJavaCompletionProposal", result.toString());
+	}
+	@Test
+	public void testIntercepted() {
+		StringBuilder result = new StringBuilder();
+		new MethodDeclarationCompletionProposal().setReplacementString(result);
+		assertEquals("RMethodDeclarationCompletionProposal", result.toString());
+	}
+}
diff --git a/testplugins/otequinoxtest/Base537350_A/.classpath b/testplugins/otequinoxtest/Base537350_A/.classpath
new file mode 100644
index 0000000..d06b940
--- /dev/null
+++ b/testplugins/otequinoxtest/Base537350_A/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/testplugins/otequinoxtest/Base537350_A/.project b/testplugins/otequinoxtest/Base537350_A/.project
new file mode 100644
index 0000000..70bedea
--- /dev/null
+++ b/testplugins/otequinoxtest/Base537350_A/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>Base537350_A</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/otequinoxtest/Base537350_A/.settings/org.eclipse.jdt.core.prefs b/testplugins/otequinoxtest/Base537350_A/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..857df5d
--- /dev/null
+++ b/testplugins/otequinoxtest/Base537350_A/.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.8
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.8
+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.8
+org.eclipse.objectteams.otdt.compiler.option.pure_java=enabled
diff --git a/testplugins/otequinoxtest/Base537350_A/META-INF/MANIFEST.MF b/testplugins/otequinoxtest/Base537350_A/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..11cb435
--- /dev/null
+++ b/testplugins/otequinoxtest/Base537350_A/META-INF/MANIFEST.MF
@@ -0,0 +1,8 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Base537350_A
+Bundle-SymbolicName: Base537350_A
+Automatic-Module-Name: Base537350_A
+Bundle-Version: 1.0.0.qualifier
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Export-Package: base537350_a
diff --git a/testplugins/otequinoxtest/Base537350_A/build.properties b/testplugins/otequinoxtest/Base537350_A/build.properties
new file mode 100644
index 0000000..b107977
--- /dev/null
+++ b/testplugins/otequinoxtest/Base537350_A/build.properties
@@ -0,0 +1,3 @@
+source.. = src/
+bin.includes = META-INF/,\
+               .
diff --git a/testplugins/otequinoxtest/Base537350_A/src/base537350_a/MainTab.java b/testplugins/otequinoxtest/Base537350_A/src/base537350_a/MainTab.java
new file mode 100644
index 0000000..b98c433
--- /dev/null
+++ b/testplugins/otequinoxtest/Base537350_A/src/base537350_a/MainTab.java
@@ -0,0 +1,7 @@
+package base537350_a;
+
+public class MainTab {
+	public void runit(StringBuilder result) {
+		result.append("MainTab");
+	}
+}
diff --git a/testplugins/otequinoxtest/Base537350_A/src/base537350_a/PluginJUnitMainTab.java b/testplugins/otequinoxtest/Base537350_A/src/base537350_a/PluginJUnitMainTab.java
new file mode 100644
index 0000000..45d65b5
--- /dev/null
+++ b/testplugins/otequinoxtest/Base537350_A/src/base537350_a/PluginJUnitMainTab.java
@@ -0,0 +1,8 @@
+package base537350_a;
+
+public class PluginJUnitMainTab extends MainTab {
+	@Override
+	public void runit(StringBuilder result) {
+		result.append("PluginJUnitMainTab");
+	}
+}
diff --git a/testplugins/otequinoxtest/Base537350_B/.classpath b/testplugins/otequinoxtest/Base537350_B/.classpath
new file mode 100644
index 0000000..eca7bdb
--- /dev/null
+++ b/testplugins/otequinoxtest/Base537350_B/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/testplugins/otequinoxtest/Base537350_B/.project b/testplugins/otequinoxtest/Base537350_B/.project
new file mode 100644
index 0000000..973d5ee
--- /dev/null
+++ b/testplugins/otequinoxtest/Base537350_B/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>Base537350_B</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.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/testplugins/otequinoxtest/Base537350_B/.settings/org.eclipse.jdt.core.prefs b/testplugins/otequinoxtest/Base537350_B/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..68cbd3a
--- /dev/null
+++ b/testplugins/otequinoxtest/Base537350_B/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,8 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.objectteams.otdt.compiler.option.pure_java=enabled
diff --git a/testplugins/otequinoxtest/Base537350_B/META-INF/MANIFEST.MF b/testplugins/otequinoxtest/Base537350_B/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..a4cbf41
--- /dev/null
+++ b/testplugins/otequinoxtest/Base537350_B/META-INF/MANIFEST.MF
@@ -0,0 +1,9 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Aspect537350_B
+Bundle-SymbolicName: Base537350_B
+Bundle-Version: 1.0.0.qualifier
+Automatic-Module-Name: BaseD
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Export-Package: base537350_b
+Require-Bundle: org.junit
diff --git a/testplugins/otequinoxtest/Base537350_B/build.properties b/testplugins/otequinoxtest/Base537350_B/build.properties
new file mode 100644
index 0000000..34d2e4d
--- /dev/null
+++ b/testplugins/otequinoxtest/Base537350_B/build.properties
@@ -0,0 +1,4 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .
diff --git a/testplugins/otequinoxtest/Base537350_B/src/base537350_b/FindAction.java b/testplugins/otequinoxtest/Base537350_B/src/base537350_b/FindAction.java
new file mode 100644
index 0000000..b4662f4
--- /dev/null
+++ b/testplugins/otequinoxtest/Base537350_B/src/base537350_b/FindAction.java
@@ -0,0 +1,5 @@
+package base537350_b;
+
+public abstract class FindAction {
+	abstract void get(StringBuilder result);
+}
diff --git a/testplugins/otequinoxtest/Base537350_B/src/base537350_b/FindDeclarationsAction.java b/testplugins/otequinoxtest/Base537350_B/src/base537350_b/FindDeclarationsAction.java
new file mode 100644
index 0000000..2d93a2e
--- /dev/null
+++ b/testplugins/otequinoxtest/Base537350_B/src/base537350_b/FindDeclarationsAction.java
@@ -0,0 +1,9 @@
+package base537350_b;
+
+public class FindDeclarationsAction extends FindAction {
+
+	@Override
+	void get(StringBuilder result) {
+		result.append("FindDeclarationsAction");
+	}
+}
diff --git a/testplugins/otequinoxtest/Base537350_B/src/base537350_b/FindImplementersAction.java b/testplugins/otequinoxtest/Base537350_B/src/base537350_b/FindImplementersAction.java
new file mode 100644
index 0000000..489463d
--- /dev/null
+++ b/testplugins/otequinoxtest/Base537350_B/src/base537350_b/FindImplementersAction.java
@@ -0,0 +1,9 @@
+package base537350_b;
+
+public class FindImplementersAction extends FindAction {
+
+	@Override
+	void get(StringBuilder result) {
+		result.append("FindImplementersAction");
+	}
+}
diff --git a/testplugins/otequinoxtest/Base537350_B/src/base537350_b/FindReadReferencesAction.java b/testplugins/otequinoxtest/Base537350_B/src/base537350_b/FindReadReferencesAction.java
new file mode 100644
index 0000000..01a3ba9
--- /dev/null
+++ b/testplugins/otequinoxtest/Base537350_B/src/base537350_b/FindReadReferencesAction.java
@@ -0,0 +1,8 @@
+package base537350_b;
+
+public class FindReadReferencesAction extends FindReferencesAction {
+	@Override
+	void get(StringBuilder result) {
+		result.append("FindReadReferencesAction");
+	}
+}
diff --git a/testplugins/otequinoxtest/Base537350_B/src/base537350_b/FindReadReferencesInProjectAction.java b/testplugins/otequinoxtest/Base537350_B/src/base537350_b/FindReadReferencesInProjectAction.java
new file mode 100644
index 0000000..bb74c6e
--- /dev/null
+++ b/testplugins/otequinoxtest/Base537350_B/src/base537350_b/FindReadReferencesInProjectAction.java
@@ -0,0 +1,5 @@
+package base537350_b;
+
+public class FindReadReferencesInProjectAction extends FindReadReferencesAction {
+
+}
diff --git a/testplugins/otequinoxtest/Base537350_B/src/base537350_b/FindReferencesAction.java b/testplugins/otequinoxtest/Base537350_B/src/base537350_b/FindReferencesAction.java
new file mode 100644
index 0000000..09b654e
--- /dev/null
+++ b/testplugins/otequinoxtest/Base537350_B/src/base537350_b/FindReferencesAction.java
@@ -0,0 +1,7 @@
+package base537350_b;
+
+public class FindReferencesAction extends FindAction {
+	void get(StringBuilder result) {
+		result.append("FindReferencesAction");
+	}
+}
diff --git a/testplugins/otequinoxtest/Base537350_B/src/base537350_b/TestBug537350_B.java b/testplugins/otequinoxtest/Base537350_B/src/base537350_b/TestBug537350_B.java
new file mode 100644
index 0000000..f762200
--- /dev/null
+++ b/testplugins/otequinoxtest/Base537350_B/src/base537350_b/TestBug537350_B.java
@@ -0,0 +1,16 @@
+package base537350_b;
+
+import static org.junit.Assert.assertEquals;
+
+import org.junit.Test;
+
+import junit.framework.TestSuite;
+
+public class TestBug537350_B extends TestSuite {
+	@Test
+	public void test() {
+		StringBuilder result = new StringBuilder();
+		new FindReadReferencesInProjectAction().get(result);
+		assertEquals("RFindAction-FindReadReferencesAction-RFindReferencesAction", result.toString());
+	}
+}
diff --git a/testplugins/otequinoxtest/Base537351/.classpath b/testplugins/otequinoxtest/Base537351/.classpath
new file mode 100644
index 0000000..eca7bdb
--- /dev/null
+++ b/testplugins/otequinoxtest/Base537351/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/testplugins/otequinoxtest/Base537351/.project b/testplugins/otequinoxtest/Base537351/.project
new file mode 100644
index 0000000..f38e049
--- /dev/null
+++ b/testplugins/otequinoxtest/Base537351/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>Base537351</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.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/testplugins/otequinoxtest/Base537351/.settings/org.eclipse.jdt.core.prefs b/testplugins/otequinoxtest/Base537351/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..68cbd3a
--- /dev/null
+++ b/testplugins/otequinoxtest/Base537351/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,8 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.objectteams.otdt.compiler.option.pure_java=enabled
diff --git a/testplugins/otequinoxtest/Base537351/META-INF/MANIFEST.MF b/testplugins/otequinoxtest/Base537351/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..2f56b1e
--- /dev/null
+++ b/testplugins/otequinoxtest/Base537351/META-INF/MANIFEST.MF
@@ -0,0 +1,11 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Base537351
+Bundle-SymbolicName: Base537351
+Bundle-Version: 1.0.0.qualifier
+Bundle-Activator: base537351.Activator
+Automatic-Module-Name: Base537351
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Export-Package: base537351
+Require-Bundle: org.eclipse.osgi,
+ org.eclipse.jdt.annotation
diff --git a/testplugins/otequinoxtest/Base537351/build.properties b/testplugins/otequinoxtest/Base537351/build.properties
new file mode 100644
index 0000000..34d2e4d
--- /dev/null
+++ b/testplugins/otequinoxtest/Base537351/build.properties
@@ -0,0 +1,4 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .
diff --git a/testplugins/otequinoxtest/Base537351/src/base537351/Activator.java b/testplugins/otequinoxtest/Base537351/src/base537351/Activator.java
new file mode 100644
index 0000000..0b47f06
--- /dev/null
+++ b/testplugins/otequinoxtest/Base537351/src/base537351/Activator.java
@@ -0,0 +1,19 @@
+package base537351;
+
+import org.eclipse.jdt.annotation.NonNull;
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+
+public class Activator implements BundleActivator {
+
+	@Override
+	public void start(@NonNull BundleContext context) throws @NonNull Exception {
+		System.out.println("START");
+	}
+
+	@Override
+	public void stop(BundleContext context) throws Exception {
+		System.out.println("SHUTDOWN");
+	}
+
+}
diff --git a/testplugins/otequinoxtest/Base537351/src/base537351/BaseClass1.java b/testplugins/otequinoxtest/Base537351/src/base537351/BaseClass1.java
new file mode 100644
index 0000000..767c0a5
--- /dev/null
+++ b/testplugins/otequinoxtest/Base537351/src/base537351/BaseClass1.java
@@ -0,0 +1,7 @@
+package base537351;
+
+public class BaseClass1 {
+	public void doBase1(StringBuilder result) {
+		result.append("base1");
+	}
+}
diff --git a/testplugins/otequinoxtest/Base537533/.classpath b/testplugins/otequinoxtest/Base537533/.classpath
new file mode 100644
index 0000000..eca7bdb
--- /dev/null
+++ b/testplugins/otequinoxtest/Base537533/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/testplugins/otequinoxtest/Base537533/.project b/testplugins/otequinoxtest/Base537533/.project
new file mode 100644
index 0000000..07dc986
--- /dev/null
+++ b/testplugins/otequinoxtest/Base537533/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>Base537533</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.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/testplugins/otequinoxtest/Base537533/.settings/org.eclipse.jdt.core.prefs b/testplugins/otequinoxtest/Base537533/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..68cbd3a
--- /dev/null
+++ b/testplugins/otequinoxtest/Base537533/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,8 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.objectteams.otdt.compiler.option.pure_java=enabled
diff --git a/testplugins/otequinoxtest/Base537533/META-INF/MANIFEST.MF b/testplugins/otequinoxtest/Base537533/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..29196ad
--- /dev/null
+++ b/testplugins/otequinoxtest/Base537533/META-INF/MANIFEST.MF
@@ -0,0 +1,8 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Base537533
+Bundle-SymbolicName: Base537533
+Bundle-Version: 1.0.0.qualifier
+Automatic-Module-Name: Base537533
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Export-Package: base537533
diff --git a/testplugins/otequinoxtest/Base537533/build.properties b/testplugins/otequinoxtest/Base537533/build.properties
new file mode 100644
index 0000000..34d2e4d
--- /dev/null
+++ b/testplugins/otequinoxtest/Base537533/build.properties
@@ -0,0 +1,4 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .
diff --git a/testplugins/otequinoxtest/Base537533/src/base537533/AbstractJavaCompletionProposal.java b/testplugins/otequinoxtest/Base537533/src/base537533/AbstractJavaCompletionProposal.java
new file mode 100644
index 0000000..7dc958a
--- /dev/null
+++ b/testplugins/otequinoxtest/Base537533/src/base537533/AbstractJavaCompletionProposal.java
@@ -0,0 +1,7 @@
+package base537533;
+
+public class AbstractJavaCompletionProposal {
+	public void setReplacementString(StringBuilder result) {
+		result.append("AbstractJavaCompletionProposal");
+	}
+}
diff --git a/testplugins/otequinoxtest/Base537533/src/base537533/JavaTypeCompletionProposal.java b/testplugins/otequinoxtest/Base537533/src/base537533/JavaTypeCompletionProposal.java
new file mode 100644
index 0000000..82bff85
--- /dev/null
+++ b/testplugins/otequinoxtest/Base537533/src/base537533/JavaTypeCompletionProposal.java
@@ -0,0 +1,5 @@
+package base537533;
+
+public class JavaTypeCompletionProposal extends AbstractJavaCompletionProposal {
+
+}
diff --git a/testplugins/otequinoxtest/Base537533/src/base537533/MethodDeclarationCompletionProposal.java b/testplugins/otequinoxtest/Base537533/src/base537533/MethodDeclarationCompletionProposal.java
new file mode 100644
index 0000000..87c7be5
--- /dev/null
+++ b/testplugins/otequinoxtest/Base537533/src/base537533/MethodDeclarationCompletionProposal.java
@@ -0,0 +1,4 @@
+package base537533;
+
+public class MethodDeclarationCompletionProposal extends AbstractJavaCompletionProposal {
+}
diff --git a/testplugins/otequinoxtest/Middle537351/.classpath b/testplugins/otequinoxtest/Middle537351/.classpath
new file mode 100644
index 0000000..d06b940
--- /dev/null
+++ b/testplugins/otequinoxtest/Middle537351/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/testplugins/otequinoxtest/Middle537351/.project b/testplugins/otequinoxtest/Middle537351/.project
new file mode 100644
index 0000000..683892e
--- /dev/null
+++ b/testplugins/otequinoxtest/Middle537351/.project
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>Middle537351</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.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.objectteams.otdt.OTJavaNature</nature>
+	</natures>
+</projectDescription>
diff --git a/testplugins/otequinoxtest/Middle537351/.settings/org.eclipse.jdt.core.prefs b/testplugins/otequinoxtest/Middle537351/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..3ffc382
--- /dev/null
+++ b/testplugins/otequinoxtest/Middle537351/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,28 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.objectteams.otdt.compiler.option.pure_java=enabled
+org.eclipse.objectteams.otdt.compiler.option.weaving_scheme=OTDRE
+org.eclipse.objectteams.otdt.compiler.problem.abstract_potential_relevant_role=warning
+org.eclipse.objectteams.otdt.compiler.problem.adapting_deprecated=error
+org.eclipse.objectteams.otdt.compiler.problem.ambiguous_lowering=warning
+org.eclipse.objectteams.otdt.compiler.problem.basecall=warning
+org.eclipse.objectteams.otdt.compiler.problem.baseclass_cycle=warning
+org.eclipse.objectteams.otdt.compiler.problem.binding_conventions=error
+org.eclipse.objectteams.otdt.compiler.problem.decapsulation=warning
+org.eclipse.objectteams.otdt.compiler.problem.decapsulation_write=warning
+org.eclipse.objectteams.otdt.compiler.problem.deprecated_path_syntax=warning
+org.eclipse.objectteams.otdt.compiler.problem.effectless_fieldaccess=warning
+org.eclipse.objectteams.otdt.compiler.problem.exception_in_guard=error
+org.eclipse.objectteams.otdt.compiler.problem.fragile_callin=warning
+org.eclipse.objectteams.otdt.compiler.problem.ignoring_role_return=warning
+org.eclipse.objectteams.otdt.compiler.problem.inferred_callout=error
+org.eclipse.objectteams.otdt.compiler.problem.override_final_role=error
+org.eclipse.objectteams.otdt.compiler.problem.potential_ambiguous_playedby=warning
+org.eclipse.objectteams.otdt.compiler.problem.unsafe_role_instantiation=warning
+org.eclipse.objectteams.otdt.compiler.problem.unused_parammap=warning
+org.eclipse.objectteams.otdt.compiler.problem.weave_into_system_class=warning
diff --git a/testplugins/otequinoxtest/Middle537351/META-INF/MANIFEST.MF b/testplugins/otequinoxtest/Middle537351/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..3ef73a9
--- /dev/null
+++ b/testplugins/otequinoxtest/Middle537351/META-INF/MANIFEST.MF
@@ -0,0 +1,13 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Middle1
+Bundle-SymbolicName: Middle537351;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: Middle1
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Require-Bundle: Base537351;bundle-version="1.0.0",
+ org.eclipse.objectteams.otequinox,
+ org.junit;bundle-version="4.12.0"
+Export-Package: middle537351;ot-aspect-host=Middle1,
+ test537351
diff --git a/testplugins/otequinoxtest/Middle537351/build.properties b/testplugins/otequinoxtest/Middle537351/build.properties
new file mode 100644
index 0000000..e9863e2
--- /dev/null
+++ b/testplugins/otequinoxtest/Middle537351/build.properties
@@ -0,0 +1,5 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .,\
+               plugin.xml
diff --git a/testplugins/otequinoxtest/Middle537351/plugin.xml b/testplugins/otequinoxtest/Middle537351/plugin.xml
new file mode 100644
index 0000000..aaf8c23
--- /dev/null
+++ b/testplugins/otequinoxtest/Middle537351/plugin.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+   <extension
+         point="org.eclipse.objectteams.otequinox.aspectBindings">
+      <aspectBinding
+            icon="platform:/plugin/org.eclipse.objectteams.otdt.ui/icons/ot/calloutbinding_obj.gif">
+         <basePlugin
+               icon="platform:/plugin/org.eclipse.pde.ui/icons/obj16/plugin_obj.png"
+               id="Base537351">
+         </basePlugin>
+         <team
+               activation="ALL_THREADS"
+               class="middle537351.Team1"
+               icon="platform:/plugin/org.eclipse.objectteams.otdt.ui/icons/ot/team_obj.gif">
+         </team>
+      </aspectBinding>
+   </extension>
+
+</plugin>
diff --git a/testplugins/otequinoxtest/Middle537351/src/middle537351/MiddleClass1.java b/testplugins/otequinoxtest/Middle537351/src/middle537351/MiddleClass1.java
new file mode 100644
index 0000000..38e0a3c
--- /dev/null
+++ b/testplugins/otequinoxtest/Middle537351/src/middle537351/MiddleClass1.java
@@ -0,0 +1,7 @@
+package middle537351;
+
+public class MiddleClass1 {
+	public void doMiddle1(StringBuilder result) {
+		result.append("Middle1|");
+	}
+}
diff --git a/testplugins/otequinoxtest/Middle537351/src/middle537351/Team1.java b/testplugins/otequinoxtest/Middle537351/src/middle537351/Team1.java
new file mode 100644
index 0000000..b824e6e
--- /dev/null
+++ b/testplugins/otequinoxtest/Middle537351/src/middle537351/Team1.java
@@ -0,0 +1,16 @@
+package middle537351;
+
+import base base537351.BaseClass1;
+
+public team class Team1 {
+	protected class R playedBy BaseClass1 {
+
+		void doBase1(StringBuilder result) <- before void doBase1(StringBuilder result);
+
+		private void doBase1(StringBuilder result) {
+			result.append("Team1.R|");
+			new MiddleClass1().doMiddle1(result);
+		}
+		
+	}
+}
diff --git a/testplugins/otequinoxtest/Middle537351/src/test537351/TestBug537351.java b/testplugins/otequinoxtest/Middle537351/src/test537351/TestBug537351.java
new file mode 100644
index 0000000..c7a5bfe
--- /dev/null
+++ b/testplugins/otequinoxtest/Middle537351/src/test537351/TestBug537351.java
@@ -0,0 +1,17 @@
+package test537351;
+
+import static org.junit.Assert.*;
+
+import org.junit.Test;
+
+import base537351.BaseClass1;
+import junit.framework.TestSuite;
+
+public class TestBug537351 extends TestSuite {
+	@Test
+	public void zigzag() {
+		StringBuilder result = new StringBuilder();
+		new BaseClass1().doBase1(result);
+		assertEquals("Collected result", "Team1.R|Middle1|Team2.R|base1", result.toString());
+	}
+}
diff --git a/testplugins/otequinoxtest/OTEquinoxTests/.classpath b/testplugins/otequinoxtest/OTEquinoxTests/.classpath
new file mode 100644
index 0000000..eca7bdb
--- /dev/null
+++ b/testplugins/otequinoxtest/OTEquinoxTests/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/testplugins/otequinoxtest/OTEquinoxTests/.project b/testplugins/otequinoxtest/OTEquinoxTests/.project
new file mode 100644
index 0000000..7e14b1f
--- /dev/null
+++ b/testplugins/otequinoxtest/OTEquinoxTests/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>OTEquinoxTests</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.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/testplugins/otequinoxtest/OTEquinoxTests/.settings/org.eclipse.jdt.core.prefs b/testplugins/otequinoxtest/OTEquinoxTests/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..68cbd3a
--- /dev/null
+++ b/testplugins/otequinoxtest/OTEquinoxTests/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,8 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.objectteams.otdt.compiler.option.pure_java=enabled
diff --git a/testplugins/otequinoxtest/OTEquinoxTests/META-INF/MANIFEST.MF b/testplugins/otequinoxtest/OTEquinoxTests/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..4ee121d
--- /dev/null
+++ b/testplugins/otequinoxtest/OTEquinoxTests/META-INF/MANIFEST.MF
@@ -0,0 +1,15 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: OTEquinoxTests
+Bundle-SymbolicName: OTEquinoxTests
+Bundle-Version: 1.0.0.qualifier
+Automatic-Module-Name: OTEquinoxTests
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Require-Bundle: Aspect537350_B;bundle-version="1.0.0",
+ Base537350_B;bundle-version="1.0.0",
+ Aspect537350_A;bundle-version="1.0.0",
+ Base537350_A;bundle-version="1.0.0",
+ org.junit;bundle-version="4.12.0",
+ Aspect537533;bundle-version="1.0.0",
+ Base537533;bundle-version="1.0.0",
+ Middle537351;bundle-version="1.0.0"
diff --git a/testplugins/otequinoxtest/OTEquinoxTests/build.properties b/testplugins/otequinoxtest/OTEquinoxTests/build.properties
new file mode 100644
index 0000000..34d2e4d
--- /dev/null
+++ b/testplugins/otequinoxtest/OTEquinoxTests/build.properties
@@ -0,0 +1,4 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .
diff --git a/testplugins/otequinoxtest/OTEquinoxTests/src/test/AllOTEquinoxTests.java b/testplugins/otequinoxtest/OTEquinoxTests/src/test/AllOTEquinoxTests.java
new file mode 100644
index 0000000..4d4d1c1
--- /dev/null
+++ b/testplugins/otequinoxtest/OTEquinoxTests/src/test/AllOTEquinoxTests.java
@@ -0,0 +1,15 @@
+package test;
+
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
+
+import junit.framework.TestSuite;
+
+@RunWith(Suite.class)
+@Suite.SuiteClasses({
+	test537351.TestBug537351.class,
+	test537533.TestBug537533.class,
+	test537350_a.TestBug537350_A.class,
+	base537350_b.TestBug537350_B.class
+})
+public class AllOTEquinoxTests extends TestSuite { }
diff --git a/testplugins/otequinoxtest/OTEquinoxTests/test.xml b/testplugins/otequinoxtest/OTEquinoxTests/test.xml
new file mode 100644
index 0000000..29d5524
--- /dev/null
+++ b/testplugins/otequinoxtest/OTEquinoxTests/test.xml
@@ -0,0 +1,65 @@
+<project name="testsuite" default="run" basedir=".">
+
+	<property name="otdt-tests-workspace" value="${test.eclipseDir}/otdt-tests-workspace"/>
+
+	<!-- sets the properties eclipseTest-home, and library-file -->
+	<property name="plugin-name" value="OTEquinoxTests"/>
+
+	<!-- library.xml need these properties-->
+	<property name="eclipse-home" value="${test.eclipseDir}"/>
+	<property name="test.target" value="performance"/>	
+	
+	<fail unless="library-file">Property "library-file" needs to be passed by the caller.</fail>
+
+	<!-- This target holds all initialization code that needs to be done for -->
+	<!-- all tests that are to be run. Initialization for individual tests -->
+	<!-- should be done within the body of the suite target. -->
+	<target name="init">
+		<tstamp/>
+		<delete>
+			<fileset dir="${test.eclipseDir}" includes="test.AllOTEquinoxTests.xml"/>
+		</delete>
+
+	</target>
+
+	<!-- This target defines the tests that need to be run. -->
+	<target name="suite">
+
+		<!-- OT/Equinox tests -->
+		<property name="otequinox-folder" 
+              value="${otdt-tests-workspace}/otequinox-folder"/>
+		<delete dir="${otequinox-folder}" quiet="true"/>
+
+		<ant target="ui-test" antfile="${library-file}" dir="${test.eclipseDir}">
+			<property name="data-dir" value="${otequinox-folder}"/>
+			<property name="plugin-name" value="${plugin-name}"/>
+			<property name="classname" value="test.AllOTEquinoxTests"/>
+		</ant>
+
+	</target>
+
+	<target name="checkOS">
+		<condition property="os.isWindows">
+			<os family="windows"/>
+		</condition>
+	</target>
+
+	<!-- This target holds code to cleanup the testing environment after -->
+	<!-- after all of the tests have been run. You can use this target to -->
+	<!-- delete temporary files that have been created. -->
+	<target name="cleanup">
+
+	</target>
+
+	<!-- This target runs the test suite. Any actions that need to happen -->
+	<!-- after all the tests have been run should go here. -->
+	<target name="run" depends="init,suite,cleanup">
+<!--
+		<ant target="collect" antfile="${library-file}" dir="${test.eclipseDir}">
+			<property name="includes" value="org.eclipse.objectteams.otdt.ui.tests.dom.AllTests.xml"/>
+			<property name="output-file" value="${plugin-name}.${file-id}.xml"/>
+		</ant>
+-->
+	</target>
+
+</project>