diff --git a/testplugins/org.eclipse.objectteams.otdt.tests/otjld/org/eclipse/objectteams/otdt/tests/otjld/rolesandteams/AcquisitionAndInheritanceOfRoleClasses.java b/testplugins/org.eclipse.objectteams.otdt.tests/otjld/org/eclipse/objectteams/otdt/tests/otjld/rolesandteams/AcquisitionAndInheritanceOfRoleClasses.java
index 44c2a55..415eaea 100644
--- a/testplugins/org.eclipse.objectteams.otdt.tests/otjld/org/eclipse/objectteams/otdt/tests/otjld/rolesandteams/AcquisitionAndInheritanceOfRoleClasses.java
+++ b/testplugins/org.eclipse.objectteams.otdt.tests/otjld/org/eclipse/objectteams/otdt/tests/otjld/rolesandteams/AcquisitionAndInheritanceOfRoleClasses.java
@@ -1677,7 +1677,7 @@
     // a role class accesses a method with the same name but different signature of its implicit super role via tsuper
     // 1.3.9-otjld-illegal-tsuper-access-4
     public void test139_illegalTsuperAccess4() {
-        runNegativeTestMatching(
+        runNegativeTest(
             new String[] {
 		"Team139ita4_1.java",
 			    "\n" +
@@ -1692,6 +1692,7 @@
 		"Team139ita4_2.java",
 			    "\n" +
 			    "public team class Team139ita4_2 extends Team139ita4_1 {\n" +
+			    "    @Override\n" +
 			    "    protected class Role139ita4 {\n" +
 			    "        public String getValue(String arg) {\n" +
 			    "            return tsuper.getValue();\n" +
@@ -1700,7 +1701,12 @@
 			    "}\n" +
 			    "    \n"
             },
-            "not applicable");
+            "----------\n" +
+            "1. ERROR in Team139ita4_2.java (at line 6)\n" +
+            "	return tsuper.getValue();\n" +
+			"	       ^^^^^^^^^^^^^^^^^\n" +
+    		"Illegal tsuper call: can only invoke the method being overridden by the current method (OTJLD 1.3.1(f)).\n" +
+            "----------\n");
     }
 
     // a role class accesses a method of its implicit super role via tsuper within an inner class - missing team keyword
@@ -1765,6 +1771,79 @@
             },
             "1.3.1(f)");
     }
+    
+    // a tsuper call is unresolved (requires specific error reporting, setting tsuperMethod to a ProblemMethodBinding)
+    public void test139_illegalTsuperAccess6() {
+        runNegativeTestMatching(
+            new String[] {
+		"Team139ita6_1.java",
+			    "\n" +
+			    "public team class Team139ita6_1 {\n" +
+			    "    protected class Role139ita6 {\n" +
+			    "    }\n" +
+			    "}\n" +
+			    "    \n",
+		"Team139ita6_2.java",
+			    "\n" +
+			    "public team class Team139ita6_2 extends Team139ita6_1 {\n" +
+			    "    @Override\n" +
+			    "    protected class Role139ita6 {\n" +
+			    "        callin String getValue(String arg) {\n" +
+			    "            return tsuper.getValue(arg);\n" +
+			    "        }\n" +
+			    "    }\n" +
+			    "}\n" +
+			    "    \n"
+            },
+            "----------\n" + 
+    		"1. ERROR in Team139ita6_2.java (at line 6)\n" + 
+    		"	return tsuper.getValue(arg);\n" + 
+    		"	              ^^^^^^^^\n" + 
+    		"The method getValue(String) is undefined for the type Team139ita6_1.Role139ita6\n" + 
+    		"----------\n");
+    }
+
+    // a tsuper call in a callin method with generic return type (requries copyInheritanceSrc to be reflected when creating a ParameterizedMethodBinding)
+    public void _test139_tsuperCallWithTypeParameter1() {
+        runConformTest(
+            new String[] {
+		"T139tcwtp1Main.java",
+    			"public class T139tcwtp1Main {\n" +
+			    "    public static void main(String[] args) {\n" +
+			    "        new Team139tcwtp1_2().activate();\n" +
+			    "        System.out.print(new T139tcwtp1().getValue(\"nv\"));\n" +
+			    "    }\n" +
+			    "}\n",
+		"T139tcwtp1.java",
+		    	"public class T139tcwtp1 {\n" +
+			    "    String getValue(String arg) {\n" +
+			    "        return \"NOTOK\";\n" +
+			    "    }\n" +
+			    "}\n",
+		"Team139tcwtp1_1.java",
+			    "\n" +
+			    "public team class Team139tcwtp1_1 {\n" +
+			    "    protected class Role139tcwtp1<E> {\n" +
+			    "        abstract E val();\n" +
+			    "        callin E getValue(String arg) {\n" +
+			    "            return this.val();\n" +
+			    "        }\n" +
+			    "    }\n" +
+			    "}\n",
+		"Team139tcwtp1_2.java",
+			    "\n" +
+			    "public team class Team139tcwtp1_2 extends Team139tcwtp1_1 {\n" +
+			    "    protected class Role139tcwtp1<String> playedBy T139tcwtp1 {\n" +
+			    "        String val() { return \"OK\"; }\n" +
+			    "        getValue <- replace getValue;\n" +
+			    "        callin String getValue(String arg) {\n" +
+			    "            return tsuper.getValue(arg);\n" +
+			    "        }\n" +
+			    "    }\n" +
+			    "}\n"
+            },
+            "OK");
+    }
 
     // a role class has stronger access rights than its implicit superrole
     // 1.3.10-otjld-stronger-access-than-superrole-1
diff --git a/testplugins/org.eclipse.objectteams.otdt.tests/otjld/org/eclipse/objectteams/otdt/tests/otjld/rolesandteams/TeamNesting.java b/testplugins/org.eclipse.objectteams.otdt.tests/otjld/org/eclipse/objectteams/otdt/tests/otjld/rolesandteams/TeamNesting.java
index 33f18cb..4364d81 100644
--- a/testplugins/org.eclipse.objectteams.otdt.tests/otjld/org/eclipse/objectteams/otdt/tests/otjld/rolesandteams/TeamNesting.java
+++ b/testplugins/org.eclipse.objectteams.otdt.tests/otjld/org/eclipse/objectteams/otdt/tests/otjld/rolesandteams/TeamNesting.java
@@ -679,6 +679,95 @@
 			    "}\n" +
 			    "    \n"
             },
+            "222.122.");
+    }
+
+    // a role inherits features from all possible super roles within nested teams - super and tsuper tree (note, that some of these are re-bound, so full tree is not possible.
+    // use qualified tsuper to achieve order of old tsuper-precedence (pre 0.8M3)
+    // 1.1.10-otjld-full-inheritance-structure-5
+    public void test1110_fullInheritanceStructure5a() {
+       
+       runConformTest(
+            new String[] {
+		"T1110fis5a.java",
+			    "\n" +
+			    "public class T1110fis5a {\n" +
+			    "    public static void main(String[] args) {\n" +
+			    "        Team1110fis5a_2 t = new Team1110fis5a_2();\n" +
+			    "        t.test();\n" +
+			    "    }\n" +
+			    "}\n" +
+			    "    \n",
+		"Team1110fis5a_1.java",
+			    "\n" +
+			    "public team class Team1110fis5a_1 {\n" +
+			    "    public team class Mid1 {\n" +
+			    "        public class R1 {\n" +
+			    "            public void m() {\n" +
+			    "                System.out.print(\"111.\");\n" +
+			    "            }\n" +
+			    "        }\n" +
+			    "        public class R2 extends R1 {\n" +
+			    "            public void m() {\n" +
+			    "                System.out.print(\"112.\");\n" +
+			    "                super.m();\n" +
+			    "            }\n" +
+			    "        }\n" +
+			    "    }\n" +
+			    "    public team class Mid2 extends Mid1 {\n" +
+			    "        public class R1 {\n" +
+			    "            public void m() {\n" +
+			    "                System.out.print(\"121.\");\n" +
+			    "            }\n" +
+			    "        }\n" +
+			    "        public class R2 extends R1 {\n" +
+			    "            public void m() {\n" +
+			    "                System.out.print(\"122.\");\n" +
+			    "            }\n" +
+			    "        }\n" +
+			    "    }\n" +
+			    "}\n" +
+			    "    \n",
+		"Team1110fis5a_2.java",
+			    "\n" +
+			    "public team class Team1110fis5a_2 extends Team1110fis5a_1 {\n" +
+			    "    public team class Mid1 {\n" +
+			    "        public class R1 {\n" +
+			    "            public void m() {\n" +
+			    "                System.out.print(\"211.\");\n" +
+			    "            }\n" +
+			    "        }\n" +
+			    "        public class R2 {\n" +
+			    "            public void m() {\n" +
+			    "                System.out.print(\"212.\");\n" +
+			    "                tsuper.m();\n" +
+			    "            }\n" +
+			    "        }\n" +
+			    "    }\n" +
+			    "    public team class Mid2 {\n" +
+			    "        public class R1 {\n" +
+			    "            public void m() {\n" +
+			    "                System.out.print(\"221.\");\n" +
+			    "            }\n" +
+			    "        }\n" +
+			    "        public class R2 extends R1 {\n" +
+			    "            public void m() {\n" +
+			    "                System.out.print(\"222.\");\n" +
+			    "                Mid2.tsuper.m();\n" +
+			    "            }\n" +
+			    "        }\n" +
+			    "        protected void test() {\n" +
+			    "            R2 r = new R2();\n" +
+			    "            r.m();\n" +
+			    "        }\n" +
+			    "    }\n" +
+			    "    public void test () {\n" +
+			    "        Mid2 m = new Mid2();\n" +
+			    "        m.test();\n" +
+			    "    }\n" +
+			    "}\n" +
+			    "    \n"
+            },
             "222.212.112.221.");
     }
 
diff --git a/testplugins/org.eclipse.objectteams.otdt.tests/selection/org/eclipse/objectteams/otdt/tests/selection/codeselect/CodeSelectionTests.java b/testplugins/org.eclipse.objectteams.otdt.tests/selection/org/eclipse/objectteams/otdt/tests/selection/codeselect/CodeSelectionTests.java
index 316fcb1..3eec3c1 100644
--- a/testplugins/org.eclipse.objectteams.otdt.tests/selection/org/eclipse/objectteams/otdt/tests/selection/codeselect/CodeSelectionTests.java
+++ b/testplugins/org.eclipse.objectteams.otdt.tests/selection/org/eclipse/objectteams/otdt/tests/selection/codeselect/CodeSelectionTests.java
@@ -476,4 +476,21 @@
 					"RProtected(String) [in RProtected [in RoleCreation [in RoleCreation.java [in statements [in src [in CodeSelection]]]]]]",
 					elements);
 	}
+	
+	public void testTSuperCall1() throws JavaModelException {
+		ICompilationUnit cu = getCompilationUnit("CodeSelection", "src", "statements", "TSuper.java");
+		IJavaElement[] elements = codeSelect(cu, "m(1);", "m");
+		assertElementsEqual(
+					"Unexpected elements",
+					"m(int) [in R1 [in Inner2 [in Mid1 [in TSuper [in TSuper.java [in statements [in src [in CodeSelection]]]]]]]]",
+					elements);
+	}
+	public void testTSuperCall2() throws JavaModelException {
+		ICompilationUnit cu = getCompilationUnit("CodeSelection", "src", "statements", "TSuper.java");
+		IJavaElement[] elements = codeSelect(cu, "m(2);", "m");
+		assertElementsEqual(
+					"Unexpected elements",
+					"m(int) [in R1 [in Inner1 [in Mid2 [in TSuper [in TSuper.java [in statements [in src [in CodeSelection]]]]]]]]",
+					elements);
+	}
 }
diff --git a/testplugins/org.eclipse.objectteams.otdt.tests/workspace/CodeSelection/src/statements/TSuper.java b/testplugins/org.eclipse.objectteams.otdt.tests/workspace/CodeSelection/src/statements/TSuper.java
new file mode 100644
index 0000000..d61367d
--- /dev/null
+++ b/testplugins/org.eclipse.objectteams.otdt.tests/workspace/CodeSelection/src/statements/TSuper.java
@@ -0,0 +1,31 @@
+package statements;
+
+public team class TSuper {
+	protected team class Mid1 {
+		protected team class Inner1 {
+			protected class R1 {
+				void m(int a) { }
+			}
+		}
+		protected team class Inner2 {
+			protected class R1 {
+				void m(int a) { }
+			}
+		}
+	}
+	protected team class Mid2 extends Mid1 {
+		protected team class Inner1 {
+			protected class R1 {
+				void m(int a) { }
+			}
+		}
+		protected team class Inner2 extends Inner1 {
+			protected class R1 {
+				void m(int a) {
+					tsuper.m(1);
+					Inner2.tsuper.m(2);
+				}
+			}
+		}
+	}
+}
\ No newline at end of file
