avoid the need to declare LiftingFailedException (after this exception has been hardened):
- do not declare role as abstract but catch the case when an unspecific role was actually created by lifting.
diff --git a/plugins/org.eclipse.objectteams.otdt.debug.adaptor/src/org/eclipse/objectteams/otdt/internal/debug/adaptor/PresentationAdaptor.java b/plugins/org.eclipse.objectteams.otdt.debug.adaptor/src/org/eclipse/objectteams/otdt/internal/debug/adaptor/PresentationAdaptor.java
index 15eb54c..8977350 100644
--- a/plugins/org.eclipse.objectteams.otdt.debug.adaptor/src/org/eclipse/objectteams/otdt/internal/debug/adaptor/PresentationAdaptor.java
+++ b/plugins/org.eclipse.objectteams.otdt.debug.adaptor/src/org/eclipse/objectteams/otdt/internal/debug/adaptor/PresentationAdaptor.java
@@ -72,13 +72,20 @@
 		return instance;
 	}
 	
-	@SuppressWarnings("abstractrelevantrole")
-	protected abstract class AbstractOTJStackFrame playedBy IJavaStackFrame {
+	protected class AbstractOTJStackFrame playedBy IJavaStackFrame {
 		// store analyzed method kind between calls:
 		protected MethodKind kind= MethodKind.PLAIN;
 		
-		abstract protected boolean isOTSpecialSrc();
-		abstract protected boolean isPurelyGenerated();
+		protected boolean isOTSpecialSrc() {
+			OTDebugAdaptorPlugin.getDefault().getLog().log(new Status(IStatus.ERROR, OTDebugAdaptorPlugin.PLUGIN_ID, "Failed to create specific role for "+this.toString()));
+			return false;
+		}
+		protected boolean isPurelyGenerated() {
+			OTDebugAdaptorPlugin.getDefault().getLog().log(new Status(IStatus.ERROR, OTDebugAdaptorPlugin.PLUGIN_ID, "Failed to create specific role for "+this.toString()));
+			return false;
+		}
+		
+		public String toString() => String toString();
 	}
 	@SuppressWarnings("unchecked")
 	protected class OTJStackFrame extends AbstractOTJStackFrame playedBy JDIStackFrame