part 4 of implementing Bug 337413 - [otjld][compiler] consider changing LiftingFailedException to a checked exception.
diff --git a/testplugins/org.eclipse.objectteams.otdt.tests/otjld/org/eclipse/objectteams/otdt/tests/otjld/callinbinding/CallinMethodBinding.java b/testplugins/org.eclipse.objectteams.otdt.tests/otjld/org/eclipse/objectteams/otdt/tests/otjld/callinbinding/CallinMethodBinding.java
index 4ce950e..ec32a8b 100644
--- a/testplugins/org.eclipse.objectteams.otdt.tests/otjld/org/eclipse/objectteams/otdt/tests/otjld/callinbinding/CallinMethodBinding.java
+++ b/testplugins/org.eclipse.objectteams.otdt.tests/otjld/org/eclipse/objectteams/otdt/tests/otjld/callinbinding/CallinMethodBinding.java
@@ -5097,7 +5097,7 @@
     		"2. ERROR in Team4131ilba2d.java (at line 7)\n" + 
     		"	Team4131ilba2d (T4131ilba2d as R0 o) {}\n" + 
     		"	                ^^^^^^^^^^^^^^^^^\n" + 
-    		"Unhandled exception type LiftingFailedException, caused by an unsafe lifting translation (OTJLD 2.3.5).\n" + 
+    		"Unhandled exception type LiftingFailedException, caused by an unsafe lifting request (OTJLD 2.3.5).\n" + 
     		"----------\n");
     }
 
diff --git a/testplugins/org.eclipse.objectteams.otdt.tests/otjld/org/eclipse/objectteams/otdt/tests/otjld/other/Java5.java b/testplugins/org.eclipse.objectteams.otdt.tests/otjld/org/eclipse/objectteams/otdt/tests/otjld/other/Java5.java
index 645e529..522a3a5 100644
--- a/testplugins/org.eclipse.objectteams.otdt.tests/otjld/org/eclipse/objectteams/otdt/tests/otjld/other/Java5.java
+++ b/testplugins/org.eclipse.objectteams.otdt.tests/otjld/org/eclipse/objectteams/otdt/tests/otjld/other/Java5.java
@@ -2449,7 +2449,7 @@
             "Base1Base2");
     }
 
-    // a method has a type parameterized constrained by "base" - bound is not a role
+    // a method has a type parameter constrained by "base" - bound is not a role
     // A.1.9-otjld-basetype-parameter-2
     public void testA19_basetypeParameter2() {
         runNegativeTestMatching(
@@ -2469,10 +2469,10 @@
             "2.3.2(e)");
     }
 
-    // a method has a type parameterized constrained by "base" - ambiguous lifting
+    // a method has a type parameter constrained by "base" - ambiguous lifting
     // A.1.9-otjld-basetype-parameter-3
     public void testA19_basetypeParameter3() {
-        runNegativeTestMatching(
+        runNegativeTest(
             new String[] {
 		"TeamA19bp3.java",
 			    "\n" +
@@ -2500,10 +2500,57 @@
 			    "}\n" +
 			    "    \n"
             },
-            "2.3.4(b)");
+            "----------\n" + 
+    		"1. ERROR in TeamA19bp3.java (at line 12)\n" + 
+    		"	public <B base Role0> void test(B as Role0 o) {\n" + 
+    		"	                                ^^^^^^^^^^\n" + 
+    		"Unhandled exception type LiftingFailedException, caused by an unsafe lifting request (OTJLD 2.3.5).\n" + 
+    		"----------\n");
     }
 
-    // a method has a type parameterized constrained by "base" - incompatible invocation
+    // a method has a type parameter constrained by "base" - ambiguous lifting
+    // make sure secondary occurrences of LiftingFailedException are reported w/o OTJLD reference.
+    public void testA19_basetypeParameter3a() {
+        runNegativeTest(
+            new String[] {
+		"TeamA19bp3a.java",
+			    "import org.objectteams.LiftingFailedException;\n" +
+			    "public team class TeamA19bp3a {\n" +
+			    "    protected abstract class Role0 {\n" +
+			    "        protected abstract void print();\n" +
+			    "    }\n" +
+			    "    protected class Role1 extends Role0 playedBy TA19bp3a {\n" +
+			    "        print -> print1;\n" +
+			    "    }\n" +
+			    "    protected class Role2 extends Role0 playedBy TA19bp3a {\n" +
+			    "        print -> print1;\n" +
+			    "    }\n" +
+			    "    public <B base Role0> void test(B as Role0 o) throws LiftingFailedException {\n" +
+			    "        o.print();\n" +
+			    "    }\n" +
+			    "    public void client(TA19bp3a b) {\n" +
+			    "        test(b);\n" +
+			    "    }\n" +
+			    "}\n" +
+			    "    \n",
+		"TA19bp3a.java",
+			    "\n" +
+			    "public class TA19bp3a {\n" +
+			    "    void print1() {\n" +
+			    "        System.out.print(\"Base1\");\n" +
+			    "    }\n" +
+			    "}\n" +
+			    "    \n"
+            },
+            "----------\n" + 
+    		"1. ERROR in TeamA19bp3a.java (at line 16)\n" + 
+    		"	test(b);\n" + 
+    		"	^^^^^^^\n" + 
+    		"Unhandled exception type LiftingFailedException\n" + 
+    		"----------\n");
+    }
+
+    // a method has a type parameter constrained by "base" - incompatible invocation
     // A.1.9-otjld-basetype-parameter-4
     public void testA19_basetypeParameter4() {
         runNegativeTestMatching(
@@ -2554,7 +2601,7 @@
     		"----------\n");
     }
 
-    // a method has a type parameterized constrained by "base" - nested team
+    // a method has a type parameter constrained by "base" - nested team
     // A.1.9-otjld-basetype-parameter-5
     public void testA19_basetypeParameter5() {
        
@@ -2606,7 +2653,7 @@
             "Base1Base2");
     }
 
-    // a method has a type parameterized constrained by "base" - some inheritance used
+    // a method has a type parameter constrained by "base" - some inheritance used
     // A.1.9-otjld-basetype-parameter-6
     public void testA19_basetypeParameter6() {
        
@@ -2667,7 +2714,7 @@
             "Base1Base2aBase1");
     }
 
-    // a method has a type parameterized constrained by "base" , using the type variable
+    // a method has a type parameter constrained by "base" , using the type variable
     // A.1.9-otjld-basetype-parameter-7
     public void testA19_basetypeParameter7() {
        
@@ -2727,7 +2774,7 @@
             "base1:Role1:Base1-base2:Role2:Base2");
     }
 
-    // a method has a type parameterized constrained by "base" - deferred lifting
+    // a method has a type parameter constrained by "base" - deferred lifting
     // A.1.9-otjld-basetype-parameter-8
     public void testA19_basetypeParameter8() {
        
@@ -2780,7 +2827,7 @@
             "Base1Base2");
     }
 
-    // a method has a type parameterized constrained by "base" - team inheritance involved
+    // a method has a type parameter constrained by "base" - team inheritance involved
     // A.1.9-otjld-basetype-parameter-9
     public void testA19_basetypeParameter9() {
        
diff --git a/testplugins/org.eclipse.objectteams.otdt.tests/otjld/org/eclipse/objectteams/otdt/tests/otjld/teamactivation/Predicates.java b/testplugins/org.eclipse.objectteams.otdt.tests/otjld/org/eclipse/objectteams/otdt/tests/otjld/teamactivation/Predicates.java
index ff1bc1b..6ba7d7e 100644
--- a/testplugins/org.eclipse.objectteams.otdt.tests/otjld/org/eclipse/objectteams/otdt/tests/otjld/teamactivation/Predicates.java
+++ b/testplugins/org.eclipse.objectteams.otdt.tests/otjld/org/eclipse/objectteams/otdt/tests/otjld/teamactivation/Predicates.java
@@ -353,11 +353,13 @@
     // a super role has a binding base guard, a sub role has a base guard at class level
     // 9.1.1-otjld-class-predicate-7
     public void test911_classPredicate7() {
-       
+        Map customOptions = getCompilerOptions();
+        customOptions.put(CompilerOptions.OPTION_ReportHiddenLiftingProblem, CompilerOptions.IGNORE);
+
        runConformTest(
             new String[] {
 		"Team911cp7.java",
-			    "\n" +
+			    "import org.objectteams.LiftingFailedException;\n" +
 			    "@SuppressWarnings(\"abstractrelevantrole\")\n" +
 			    "public team class Team911cp7 {\n" +
 			    "    protected abstract class R1 playedBy T911cp7_1 {\n" +
@@ -376,8 +378,8 @@
 			    "        }\n" +
 			    "        rm2 <- before test;\n" +
 			    "    }\n" +
-			    "    void register(T911cp7_1 as R1 o) {}\n" +
-			    "    public static void main(String[] args) {\n" +
+			    "    void register(T911cp7_1 as R1 o) throws LiftingFailedException {}\n" +
+			    "    public static void main(String[] args) throws LiftingFailedException {\n" +
 			    "        Team911cp7 t=new Team911cp7();\n" +
 			    "        t.activate();\n" +
 			    "        T911cp7_2 b= new T911cp7_2();\n" +
@@ -404,21 +406,29 @@
 			    "}\n" +
 			    "    \n"
             },
-            "Base2rm2Base2rm1");
+            "Base2rm2Base2rm1",
+            null/*classLibraries*/,
+            true/*shouldFlushOutputDirectory*/,
+            null/*vmArguments*/,
+            customOptions,
+            null/*no custom requestor*/);
     }
 
     // a super role has a binding base guard, a sub role has a base guard at class level - non-adapted sub-role
     // 9.1.1-otjld-class-predicate-8
     public void test911_classPredicate8() {
-       
+        Map customOptions = getCompilerOptions();
+        customOptions.put(CompilerOptions.OPTION_SuppressOptionalErrors, CompilerOptions.ENABLED);
+
        runConformTest(
             new String[] {
 		"Team911cp8.java",
-			    "\n" +
+			    "import org.objectteams.LiftingFailedException;\n" +
 			    "@SuppressWarnings(\"abstractrelevantrole\")\n" +
 			    "public team class Team911cp8 {\n" +
 			    "    protected abstract class R1 playedBy T911cp8_1 {\n" +
 			    "        abstract void rm1();\n" +
+			    "        @SuppressWarnings(\"hidden-lifting-problem\")\n" +
 			    "        rm1 <- after test\n" +
 			    "        base when (Team911cp8.this.hasRole(base, R1.class));\n" +
 			    "    }\n" +
@@ -433,7 +443,7 @@
 			    "        }\n" +
 			    "        rm2 <- before test;\n" +
 			    "    }\n" +
-			    "    void register(T911cp8_1 as R1 o) {}\n" +
+			    "    void register(T911cp8_1 as R1 o) throws LiftingFailedException {}\n" +
 			    "    public static void main(String[] args) {\n" +
 			    "        Team911cp8 t=new Team911cp8();\n" +
 			    "        t.activate();\n" +
@@ -442,8 +452,9 @@
 			    "        try {\n" +
 			    "            t.register(b);\n" +
 			    "        } catch (org.objectteams.LiftingFailedException lfe) {\n" +
-			    "            System.out.print(\"notLifted\");\n" +
+			    "            System.out.print(\".notLifted.\");\n" +
 			    "        }\n" +
+			    "        b.test();\n" +
 			    "    }\n" +
 			    "}\n" +
 			    "    \n",
@@ -467,12 +478,17 @@
 			    "\n" +
 			    "public class T911cp8_3 extends T911cp8_1 {\n" +
 			    "    public void test() {\n" +
-			    "        System.out.print(\"Base3.\");\n" +
+			    "        System.out.print(\"Base3\");\n" +
 			    "    }\n" +
 			    "}\n" +
 			    "    \n"
             },
-            "Base3.notLifted");
+            "Base3.notLifted.Base3",
+            null/*classLibraries*/,
+            true/*shouldFlushOutputDirectory*/,
+            null/*vmArguments*/,
+            customOptions,
+            null/*no custom requestor*/);
     }
     
     // a role class has a base predicate using base in the expression