Clean-up:
- reduce warnings
- handle TODOs: remove some, elaborate other
diff --git a/org.eclipse.jdt.core/search/org/eclipse/objectteams/otdt/core/search/OTSearchHelper.java b/org.eclipse.jdt.core/search/org/eclipse/objectteams/otdt/core/search/OTSearchHelper.java
index f32d926..4ef2bf6 100644
--- a/org.eclipse.jdt.core/search/org/eclipse/objectteams/otdt/core/search/OTSearchHelper.java
+++ b/org.eclipse.jdt.core/search/org/eclipse/objectteams/otdt/core/search/OTSearchHelper.java
@@ -101,11 +101,7 @@
 			                    {
 			                        Object element = match.getElement();
 			                        if (element instanceof IType)
-			                        {
-			                        	// FIXME(SH): check: if mapping is a role, baseType must be conform to its baseclass 
-			                            IType mapping = (IType) element;
-			                            addToMapOfSets(resultMap, baseType, mapping);
-			                        }
+			                            addToMapOfSets(resultMap, baseType, (IType) element);
 			                    }
 	                        },
 	                        searchMonitor);
diff --git a/plugins/org.eclipse.objectteams.otdt.compiler.adaptor/src/org/eclipse/objectteams/otdt/internal/compiler/adaptor/BuildManager/ClassFileChangeTracker.java b/plugins/org.eclipse.objectteams.otdt.compiler.adaptor/src/org/eclipse/objectteams/otdt/internal/compiler/adaptor/BuildManager/ClassFileChangeTracker.java
index f1d9b75..86f5e53 100644
--- a/plugins/org.eclipse.objectteams.otdt.compiler.adaptor/src/org/eclipse/objectteams/otdt/internal/compiler/adaptor/BuildManager/ClassFileChangeTracker.java
+++ b/plugins/org.eclipse.objectteams.otdt.compiler.adaptor/src/org/eclipse/objectteams/otdt/internal/compiler/adaptor/BuildManager/ClassFileChangeTracker.java
@@ -30,7 +30,6 @@
  *  
  * @author stephan
  */
-@SuppressWarnings("restriction")
 public class ClassFileChangeTracker playedBy ClassFileReader 
 {	
 	void nonStructuralChange(String className) <- after boolean hasStructuralChanges(byte[] newBytes)
diff --git a/plugins/org.eclipse.objectteams.otdt.compiler.adaptor/src/org/eclipse/objectteams/otdt/internal/compiler/adaptor/PDEAdaptor.java b/plugins/org.eclipse.objectteams.otdt.compiler.adaptor/src/org/eclipse/objectteams/otdt/internal/compiler/adaptor/PDEAdaptor.java
index a0c5745..81e3cd9 100644
--- a/plugins/org.eclipse.objectteams.otdt.compiler.adaptor/src/org/eclipse/objectteams/otdt/internal/compiler/adaptor/PDEAdaptor.java
+++ b/plugins/org.eclipse.objectteams.otdt.compiler.adaptor/src/org/eclipse/objectteams/otdt/internal/compiler/adaptor/PDEAdaptor.java
@@ -91,7 +91,7 @@
 			}
 		}
 		
-		@SuppressWarnings({ "decapsulation", "rawtypes" })
+		@SuppressWarnings("decapsulation")
 		Rule[] addForcedExports(BundleDescription desc) 
 		 <- replace Rule[] getInclusions(Map<BundleDescription, ArrayList<Rule>> map, BundleDescription desc)
 		    with { desc <- desc }
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 8977350..0e95602 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
@@ -110,8 +110,9 @@
 			case CREATOR:
 			case INIT_FIELDS:
 				return true;
+			default:
+				return false;
 			}
-			return false;
 		}
 		protected boolean isOTSpecialSrc() {
 			switch(this.kind) {
@@ -120,8 +121,9 @@
 			case WHEN:
 			case BASE_WHEN:
 				return true;
+			default:
+				return false;
 			}
-			return false;
 		}
 
 		String getMethodName() <- replace String getMethodName();
@@ -156,6 +158,8 @@
 					return "[access to constructor of role "+segments[2]+"]";
 				case INIT_FIELDS:
 					return "[initialize role fields]";
+				default:
+					return result;
 				}
 			}
 			return result;
@@ -249,6 +253,8 @@
 			case BASE_WHEN:
 				typeNames= typeNames.subList(2, typeNames.size()); // remove 2 synth args: dummy,Team
 				break;
+			default:
+				// no action
 			}
 			// may need to strip multiple sets of enhance-args:
 			List<String> stripped= stripEnhancementParams(typeNames);
diff --git a/plugins/org.eclipse.objectteams.otdt.debug.adaptor/src/org/eclipse/objectteams/otdt/internal/debug/adaptor/actions/ShowOTInternalVariablesAction.java b/plugins/org.eclipse.objectteams.otdt.debug.adaptor/src/org/eclipse/objectteams/otdt/internal/debug/adaptor/actions/ShowOTInternalVariablesAction.java
index ce30d12..9f01721 100644
--- a/plugins/org.eclipse.objectteams.otdt.debug.adaptor/src/org/eclipse/objectteams/otdt/internal/debug/adaptor/actions/ShowOTInternalVariablesAction.java
+++ b/plugins/org.eclipse.objectteams.otdt.debug.adaptor/src/org/eclipse/objectteams/otdt/internal/debug/adaptor/actions/ShowOTInternalVariablesAction.java
@@ -16,7 +16,6 @@
  **********************************************************************/
 package org.eclipse.objectteams.otdt.internal.debug.adaptor.actions;
 
-import org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationContext;
 import org.eclipse.jdt.internal.debug.ui.actions.ToggleBooleanPreferenceAction;
 import org.eclipse.jface.preference.IPreferenceStore;
 import org.eclipse.objectteams.otdt.internal.debug.adaptor.OTDebugAdaptorPlugin;
diff --git a/plugins/org.eclipse.objectteams.otdt.debug.adaptor/src/org/eclipse/objectteams/otdt/internal/debug/adaptor/launching/OTLaunchConfigurationTab.java b/plugins/org.eclipse.objectteams.otdt.debug.adaptor/src/org/eclipse/objectteams/otdt/internal/debug/adaptor/launching/OTLaunchConfigurationTab.java
index a0b5719..1a98a7a 100644
--- a/plugins/org.eclipse.objectteams.otdt.debug.adaptor/src/org/eclipse/objectteams/otdt/internal/debug/adaptor/launching/OTLaunchConfigurationTab.java
+++ b/plugins/org.eclipse.objectteams.otdt.debug.adaptor/src/org/eclipse/objectteams/otdt/internal/debug/adaptor/launching/OTLaunchConfigurationTab.java
@@ -74,7 +74,6 @@
         // nothing to do -- empty defaults
     }
 
-    @SuppressWarnings("unchecked") // getAttribute(String,List) uses raw type
 	public void initializeFrom(ILaunchConfiguration configuration)
     {
         _teamsModel.clear();
diff --git a/plugins/org.eclipse.objectteams.otdt.debug.ui/src/org/eclipse/objectteams/otdt/debug/ui/OTDebugUIPlugin.java b/plugins/org.eclipse.objectteams.otdt.debug.ui/src/org/eclipse/objectteams/otdt/debug/ui/OTDebugUIPlugin.java
index 525f08e..17edfb0 100644
--- a/plugins/org.eclipse.objectteams.otdt.debug.ui/src/org/eclipse/objectteams/otdt/debug/ui/OTDebugUIPlugin.java
+++ b/plugins/org.eclipse.objectteams.otdt.debug.ui/src/org/eclipse/objectteams/otdt/debug/ui/OTDebugUIPlugin.java
@@ -45,6 +45,7 @@
 /**
  * The main plugin class to be used in the desktop.
  */
+@SuppressWarnings("restriction") // reusing ColorManager from o.e.debug.ui
 public class OTDebugUIPlugin extends AbstractUIPlugin 
 {
 	// preference constants
diff --git a/plugins/org.eclipse.objectteams.otdt.debug.ui/src/org/eclipse/objectteams/otdt/debug/ui/internal/CopyInheritanceBreakpointManager.java b/plugins/org.eclipse.objectteams.otdt.debug.ui/src/org/eclipse/objectteams/otdt/debug/ui/internal/CopyInheritanceBreakpointManager.java
index e604428..c661de6 100644
--- a/plugins/org.eclipse.objectteams.otdt.debug.ui/src/org/eclipse/objectteams/otdt/debug/ui/internal/CopyInheritanceBreakpointManager.java
+++ b/plugins/org.eclipse.objectteams.otdt.debug.ui/src/org/eclipse/objectteams/otdt/debug/ui/internal/CopyInheritanceBreakpointManager.java
@@ -78,6 +78,7 @@
  * 
  * @author gis, stephan
  */
+@SuppressWarnings("restriction") // reusing BreakpointUtils from o.e.jdt.debug.ui
 public class CopyInheritanceBreakpointManager implements IJavaBreakpointListener, IResourceChangeListener
 {
     private static final Object OT_BREAKPOINT_COPY = "OT_BREAKPOINT_COPY"; //$NON-NLS-1$
diff --git a/plugins/org.eclipse.objectteams.otdt.debug.ui/src/org/eclipse/objectteams/otdt/debug/ui/internal/actions/OTBreakpointLocationVerifierJob.java b/plugins/org.eclipse.objectteams.otdt.debug.ui/src/org/eclipse/objectteams/otdt/debug/ui/internal/actions/OTBreakpointLocationVerifierJob.java
index 49ff88f..fcbcd40 100644
--- a/plugins/org.eclipse.objectteams.otdt.debug.ui/src/org/eclipse/objectteams/otdt/debug/ui/internal/actions/OTBreakpointLocationVerifierJob.java
+++ b/plugins/org.eclipse.objectteams.otdt.debug.ui/src/org/eclipse/objectteams/otdt/debug/ui/internal/actions/OTBreakpointLocationVerifierJob.java
@@ -1,10 +1,9 @@
 /*******************************************************************************
- * Copyright (c) 2003, 2006 IBM Corporation and others.
+ * Copyright (c) 2003, 2015 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
  * http://www.eclipse.org/legal/epl-v10.html
- * $Id: OTBreakpointLocationVerifierJob.java 23432 2010-02-03 23:13:42Z stephan $
  * 
  * Contributors:
  *     IBM Corporation - initial API and implementation
@@ -13,7 +12,6 @@
  *******************************************************************************/
 package org.eclipse.objectteams.otdt.debug.ui.internal.actions;
 
-import java.text.MessageFormat;
 import java.util.HashMap;
 import java.util.Map;
 
@@ -50,7 +48,6 @@
 /**
  * Job used to verify the position of a breakpoint
  * copied from BreakpointLocationVerifierJob
- * $Id: OTBreakpointLocationVerifierJob.java 23432 2010-02-03 23:13:42Z stephan $
  */
 //{OT_COPY_PASTE: class copied from org.eclipse.jdt.internal.debug.ui.actions.BreakpointLocationVerifierJob
 // modified just to instantiate OTValidBreakpointLocationLocator in favor of ValidBreakpointLocationLocator
@@ -120,7 +117,7 @@
 	}
 	
 	public IStatus run(IProgressMonitor monitor) {
-		ASTParser parser = ASTParser.newParser(AST.JLS3);
+		ASTParser parser = ASTParser.newParser(AST.JLS8);
 		char[] source = fDocument.get().toCharArray();
 		parser.setSource(source);
 		IJavaElement javaElement = JavaCore.create(fResource);
@@ -171,7 +168,7 @@
 					}
 				}
 				if (unitName != null) {
-					parser = ASTParser.newParser(AST.JLS3);
+					parser = ASTParser.newParser(AST.JLS8);
 					parser.setSource(source);
 					parser.setProject(project);
 					parser.setUnitName(unitName);
diff --git a/plugins/org.eclipse.objectteams.otdt.debug.ui/src/org/eclipse/objectteams/otdt/debug/ui/internal/model/OTDefaultVariableViewModelProxy.java b/plugins/org.eclipse.objectteams.otdt.debug.ui/src/org/eclipse/objectteams/otdt/debug/ui/internal/model/OTDefaultVariableViewModelProxy.java
index 29f4ff8..be243fe 100644
--- a/plugins/org.eclipse.objectteams.otdt.debug.ui/src/org/eclipse/objectteams/otdt/debug/ui/internal/model/OTDefaultVariableViewModelProxy.java
+++ b/plugins/org.eclipse.objectteams.otdt.debug.ui/src/org/eclipse/objectteams/otdt/debug/ui/internal/model/OTDefaultVariableViewModelProxy.java
@@ -20,7 +20,6 @@
  **********************************************************************/
 package org.eclipse.objectteams.otdt.debug.ui.internal.model;
 
-import org.eclipse.debug.core.ILaunch;
 import org.eclipse.debug.internal.ui.viewers.model.provisional.IModelDelta;
 import org.eclipse.debug.internal.ui.viewers.model.provisional.ModelDelta;
 import org.eclipse.debug.internal.ui.viewers.provisional.AbstractModelProxy;
diff --git a/plugins/org.eclipse.objectteams.otdt.debug.ui/src/org/eclipse/objectteams/otdt/debug/ui/internal/model/OTVariableColumnFactoryAdapter.java b/plugins/org.eclipse.objectteams.otdt.debug.ui/src/org/eclipse/objectteams/otdt/debug/ui/internal/model/OTVariableColumnFactoryAdapter.java
index 8ff883b..9ba704b 100644
--- a/plugins/org.eclipse.objectteams.otdt.debug.ui/src/org/eclipse/objectteams/otdt/debug/ui/internal/model/OTVariableColumnFactoryAdapter.java
+++ b/plugins/org.eclipse.objectteams.otdt.debug.ui/src/org/eclipse/objectteams/otdt/debug/ui/internal/model/OTVariableColumnFactoryAdapter.java
@@ -24,6 +24,7 @@
 import org.eclipse.debug.internal.ui.viewers.model.provisional.IColumnPresentation;
 import org.eclipse.debug.internal.ui.viewers.model.provisional.IColumnPresentationFactory;
 import org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationContext;
+import org.eclipse.debug.ui.IDebugUIConstants;
 import org.eclipse.objectteams.otdt.debug.OTDebugElementsContainer;
 import org.eclipse.objectteams.otdt.debug.ui.OTDebugUIPlugin;
 
@@ -56,7 +57,7 @@
 		String id = context.getId();
 		if (OTDebugUIPlugin.TEAM_VIEW_ID.equals(id)) {
 			if (element instanceof OTDebugElementsContainer) {
-				return VariableColumnPresentation.DEFAULT_VARIABLE_COLUMN_PRESENTATION;
+				return IDebugUIConstants.COLUMN_PRESENTATION_ID_VARIABLE;
 			}
 		}
 		return null;
diff --git a/plugins/org.eclipse.objectteams.otdt.debug.ui/src/org/eclipse/objectteams/otdt/debug/ui/internal/model/TeamInstanceLabelProvider.java b/plugins/org.eclipse.objectteams.otdt.debug.ui/src/org/eclipse/objectteams/otdt/debug/ui/internal/model/TeamInstanceLabelProvider.java
index e629040..875fa5c 100644
--- a/plugins/org.eclipse.objectteams.otdt.debug.ui/src/org/eclipse/objectteams/otdt/debug/ui/internal/model/TeamInstanceLabelProvider.java
+++ b/plugins/org.eclipse.objectteams.otdt.debug.ui/src/org/eclipse/objectteams/otdt/debug/ui/internal/model/TeamInstanceLabelProvider.java
@@ -22,9 +22,9 @@
 
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.debug.core.model.IVariable;
-import org.eclipse.debug.internal.ui.elements.adapters.VariableColumnPresentation;
 import org.eclipse.debug.internal.ui.model.elements.VariableLabelProvider;
 import org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationContext;
+import org.eclipse.debug.ui.IDebugUIConstants;
 import org.eclipse.jface.resource.ImageDescriptor;
 import org.eclipse.jface.viewers.TreePath;
 import org.eclipse.objectteams.otdt.debug.OTDebugElementsContainer;
@@ -80,7 +80,7 @@
 
 	private boolean isNameColumn(String columnId) {
 		return columnId == null
-		|| VariableColumnPresentation.COLUMN_VARIABLE_NAME.equals(columnId);
+		|| IDebugUIConstants.COLUMN_ID_VARIABLE_NAME.equals(columnId);
 	}
 	
     private ImageDescriptor getImageForState(int activationState)
diff --git a/plugins/org.eclipse.objectteams.otdt.debug.ui/src/org/eclipse/objectteams/otdt/debug/ui/internal/preferences/OTDebugPreferencePage.java b/plugins/org.eclipse.objectteams.otdt.debug.ui/src/org/eclipse/objectteams/otdt/debug/ui/internal/preferences/OTDebugPreferencePage.java
index 14f42f8..9ec0815 100644
--- a/plugins/org.eclipse.objectteams.otdt.debug.ui/src/org/eclipse/objectteams/otdt/debug/ui/internal/preferences/OTDebugPreferencePage.java
+++ b/plugins/org.eclipse.objectteams.otdt.debug.ui/src/org/eclipse/objectteams/otdt/debug/ui/internal/preferences/OTDebugPreferencePage.java
@@ -54,6 +54,7 @@
 /**
  * @author gis, stephan
  */
+@SuppressWarnings("restriction") // reusing good stuff from o.e.debug.ui
 public class OTDebugPreferencePage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage
 {
     private static final String JAVA_STEP_FILTER_PREFERENCE_PAGE = "org.eclipse.jdt.debug.ui.JavaStepFilterPreferencePage"; //$NON-NLS-1$
diff --git a/plugins/org.eclipse.objectteams.otdt.debug.ui/src/org/eclipse/objectteams/otdt/debug/ui/internal/preferences/OTDebugPreferences.java b/plugins/org.eclipse.objectteams.otdt.debug.ui/src/org/eclipse/objectteams/otdt/debug/ui/internal/preferences/OTDebugPreferences.java
index bb04d53..3a8b4da 100644
--- a/plugins/org.eclipse.objectteams.otdt.debug.ui/src/org/eclipse/objectteams/otdt/debug/ui/internal/preferences/OTDebugPreferences.java
+++ b/plugins/org.eclipse.objectteams.otdt.debug.ui/src/org/eclipse/objectteams/otdt/debug/ui/internal/preferences/OTDebugPreferences.java
@@ -39,6 +39,7 @@
 /**
  * @author gis
  */
+@SuppressWarnings("restriction") // reusing good stuff from o.e.debug.ui & o.e.jdt.debug.ui
 public class OTDebugPreferences extends AbstractPreferenceInitializer {
 
 	// preference key:
diff --git a/plugins/org.eclipse.objectteams.otdt.jdt.ui/src/org/eclipse/objectteams/otdt/internal/ui/assist/BaseImportRewriting.java b/plugins/org.eclipse.objectteams.otdt.jdt.ui/src/org/eclipse/objectteams/otdt/internal/ui/assist/BaseImportRewriting.java
index 6ed95af..63ca08f 100644
--- a/plugins/org.eclipse.objectteams.otdt.jdt.ui/src/org/eclipse/objectteams/otdt/internal/ui/assist/BaseImportRewriting.java
+++ b/plugins/org.eclipse.objectteams.otdt.jdt.ui/src/org/eclipse/objectteams/otdt/internal/ui/assist/BaseImportRewriting.java
@@ -217,7 +217,7 @@
 			if (type instanceof ParameterizedType)
 				type = ((ParameterizedType) type).getType();
 			if (type instanceof ArrayType)
-				type = ((ArrayType) type).getComponentType();
+				type = ((ArrayType) type).getElementType();
 			if (type.isSimpleType()) {
 				Name name = ((SimpleType) type).getName();
 				if (name.isSimpleName())
diff --git a/plugins/org.eclipse.objectteams.otdt.jdt.ui/src/org/eclipse/objectteams/otdt/internal/ui/assist/CompletionAdaptor/OverrideRoleCompletionProposal.java b/plugins/org.eclipse.objectteams.otdt.jdt.ui/src/org/eclipse/objectteams/otdt/internal/ui/assist/CompletionAdaptor/OverrideRoleCompletionProposal.java
index d6f13f4..182ce13 100644
--- a/plugins/org.eclipse.objectteams.otdt.jdt.ui/src/org/eclipse/objectteams/otdt/internal/ui/assist/CompletionAdaptor/OverrideRoleCompletionProposal.java
+++ b/plugins/org.eclipse.objectteams.otdt.jdt.ui/src/org/eclipse/objectteams/otdt/internal/ui/assist/CompletionAdaptor/OverrideRoleCompletionProposal.java
@@ -112,7 +112,7 @@
 
 		recoveredDocument.set(new String(content));
 
-		final ASTParser parser= ASTParser.newParser(AST.JLS4);
+		final ASTParser parser= ASTParser.newParser(AST.JLS8);
 		parser.setResolveBindings(true);
 		parser.setStatementsRecovery(true);
 		parser.setSource(content);
diff --git a/plugins/org.eclipse.objectteams.otdt.jdt.ui/src/org/eclipse/objectteams/otdt/internal/ui/text/correction/PrecedenceProposalSubProcessor.java b/plugins/org.eclipse.objectteams.otdt.jdt.ui/src/org/eclipse/objectteams/otdt/internal/ui/text/correction/PrecedenceProposalSubProcessor.java
index 72b78db..3c6390b 100644
--- a/plugins/org.eclipse.objectteams.otdt.jdt.ui/src/org/eclipse/objectteams/otdt/internal/ui/text/correction/PrecedenceProposalSubProcessor.java
+++ b/plugins/org.eclipse.objectteams.otdt.jdt.ui/src/org/eclipse/objectteams/otdt/internal/ui/text/correction/PrecedenceProposalSubProcessor.java
@@ -86,7 +86,7 @@
 			}
 			
 			// get a fresh AST:
-			ASTParser p = ASTParser.newParser(AST.JLS4);
+			ASTParser p = ASTParser.newParser(AST.JLS8);
 			p.setSource(cu);
 			p.setResolveBindings(false);
 			p.setFocalPosition(offset);
diff --git a/plugins/org.eclipse.objectteams.otdt.jdt.ui/src/org/eclipse/objectteams/otdt/internal/ui/text/correction/TypeProposalSubProcessor.java b/plugins/org.eclipse.objectteams.otdt.jdt.ui/src/org/eclipse/objectteams/otdt/internal/ui/text/correction/TypeProposalSubProcessor.java
index 6711792..3b81032 100644
--- a/plugins/org.eclipse.objectteams.otdt.jdt.ui/src/org/eclipse/objectteams/otdt/internal/ui/text/correction/TypeProposalSubProcessor.java
+++ b/plugins/org.eclipse.objectteams.otdt.jdt.ui/src/org/eclipse/objectteams/otdt/internal/ui/text/correction/TypeProposalSubProcessor.java
@@ -228,7 +228,7 @@
 		}
 		
 		// get a fresh AST:
-		ASTParser p = ASTParser.newParser(AST.JLS4);
+		ASTParser p = ASTParser.newParser(AST.JLS8);
 		p.setSource(cu);
 		p.setResolveBindings(false);
 		CompilationUnit astCU = (CompilationUnit) p.createAST(null);
diff --git a/plugins/org.eclipse.objectteams.otdt.pde.ui/src/org/eclipse/objectteams/otdt/internal/pde/ui/ExtensionEditorAdaptor.java b/plugins/org.eclipse.objectteams.otdt.pde.ui/src/org/eclipse/objectteams/otdt/internal/pde/ui/ExtensionEditorAdaptor.java
index 2e30b78..ea2464a 100644
--- a/plugins/org.eclipse.objectteams.otdt.pde.ui/src/org/eclipse/objectteams/otdt/internal/pde/ui/ExtensionEditorAdaptor.java
+++ b/plugins/org.eclipse.objectteams.otdt.pde.ui/src/org/eclipse/objectteams/otdt/internal/pde/ui/ExtensionEditorAdaptor.java
@@ -35,7 +35,6 @@
 import org.eclipse.objectteams.otdt.ui.OTDTUIPlugin;
 import org.eclipse.objectteams.otequinox.Constants;
 import org.eclipse.pde.core.plugin.IPluginAttribute;
-import org.eclipse.pde.core.plugin.IPluginBase;
 import org.eclipse.pde.core.plugin.IPluginElement;
 import org.eclipse.pde.core.plugin.IPluginExtension;
 import org.eclipse.pde.internal.core.ischema.IMetaAttribute;
diff --git a/plugins/org.eclipse.objectteams.otdt.refactoring/src/org/eclipse/objectteams/otdt/internal/refactoring/adaptor/ExtractInterfaceAdaptor.java b/plugins/org.eclipse.objectteams.otdt.refactoring/src/org/eclipse/objectteams/otdt/internal/refactoring/adaptor/ExtractInterfaceAdaptor.java
index 7206837..2adaef2 100644
--- a/plugins/org.eclipse.objectteams.otdt.refactoring/src/org/eclipse/objectteams/otdt/internal/refactoring/adaptor/ExtractInterfaceAdaptor.java
+++ b/plugins/org.eclipse.objectteams.otdt.refactoring/src/org/eclipse/objectteams/otdt/internal/refactoring/adaptor/ExtractInterfaceAdaptor.java
@@ -18,20 +18,15 @@
 import java.util.HashMap;
 import java.util.Map;
 
-import org.eclipse.core.resources.IFile;
 import org.eclipse.core.runtime.Assert;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.OperationCanceledException;
 import org.eclipse.jdt.core.ICompilationUnit;
 import org.eclipse.jdt.core.IJavaProject;
 import org.eclipse.jdt.core.IMember;
-import org.eclipse.jdt.core.IPackageFragment;
 import org.eclipse.jdt.core.ISourceRange;
 import org.eclipse.jdt.core.IType;
 import org.eclipse.jdt.core.JavaModelException;
-import org.eclipse.jdt.core.dom.AbstractTypeDeclaration;
-import org.eclipse.jdt.core.formatter.IndentManipulation;
 import org.eclipse.jdt.core.refactoring.CompilationUnitChange;
 import org.eclipse.jdt.core.refactoring.descriptors.ExtractInterfaceDescriptor;
 import org.eclipse.jdt.core.refactoring.descriptors.JavaRefactoringDescriptor;
@@ -40,10 +35,7 @@
 import org.eclipse.jdt.internal.corext.refactoring.JDTRefactoringDescriptorComment;
 import org.eclipse.jdt.internal.corext.refactoring.JavaRefactoringDescriptorUtil;
 import org.eclipse.jdt.internal.corext.refactoring.RefactoringCoreMessages;
-import org.eclipse.jdt.internal.corext.refactoring.changes.CreateCompilationUnitChange;
 import org.eclipse.jdt.internal.corext.refactoring.changes.DynamicValidationRefactoringChange;
-import org.eclipse.jdt.internal.corext.refactoring.util.ResourceUtil;
-import org.eclipse.jdt.internal.corext.util.JavaModelUtil;
 import org.eclipse.jdt.internal.corext.util.JdtFlags;
 import org.eclipse.jdt.internal.corext.util.Messages;
 import org.eclipse.jdt.internal.ui.JavaPlugin;
@@ -52,13 +44,10 @@
 import org.eclipse.ltk.core.refactoring.CategorizedTextEditGroup;
 import org.eclipse.ltk.core.refactoring.Change;
 import org.eclipse.ltk.core.refactoring.RefactoringDescriptor;
-import org.eclipse.ltk.core.refactoring.RefactoringStatus;
 import org.eclipse.ltk.core.refactoring.TextEditBasedChange;
-import org.eclipse.ltk.core.refactoring.TextEditBasedChangeGroup;
 import org.eclipse.ltk.core.refactoring.TextEditChangeGroup;
 import org.eclipse.objectteams.otdt.core.OTModelManager;
 import org.eclipse.objectteams.otdt.internal.refactoring.RefactoringMessages;
-import org.eclipse.objectteams.otdt.internal.refactoring.corext.rename.BaseCallFinder;
 import org.eclipse.osgi.util.NLS;
 import org.eclipse.swt.events.SelectionAdapter;
 import org.eclipse.swt.events.SelectionEvent;
@@ -66,7 +55,6 @@
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Text;
 import org.eclipse.text.edits.InsertEdit;
-import org.eclipse.text.edits.ReplaceEdit;
 import org.eclipse.text.edits.TextEdit;
 import org.eclipse.text.edits.TextEditGroup;
 
diff --git a/plugins/org.eclipse.objectteams.otdt.refactoring/src/org/eclipse/objectteams/otdt/internal/refactoring/otrefactorings/extractcallin/ExtractCallinRefactoring.java b/plugins/org.eclipse.objectteams.otdt.refactoring/src/org/eclipse/objectteams/otdt/internal/refactoring/otrefactorings/extractcallin/ExtractCallinRefactoring.java
index 1601fcb..1383271 100644
--- a/plugins/org.eclipse.objectteams.otdt.refactoring/src/org/eclipse/objectteams/otdt/internal/refactoring/otrefactorings/extractcallin/ExtractCallinRefactoring.java
+++ b/plugins/org.eclipse.objectteams.otdt.refactoring/src/org/eclipse/objectteams/otdt/internal/refactoring/otrefactorings/extractcallin/ExtractCallinRefactoring.java
@@ -123,7 +123,8 @@
 

 	private MethodInvocation fExtractedMethodInvocation;

 

-	private ImportRewrite fBaseImportRewriter;

+// 	could be used for re-organizing base imports:

+//	private ImportRewrite fBaseImportRewriter;

 	

 	public ExtractCallinRefactoring() {

 		fCopyBaseMethod = true;

@@ -227,7 +228,8 @@
 				if (fRootBase == null) {

 					fRootBase = RefactoringASTParser.parseWithASTProvider(fBaseCUnit, true, new SubProgressMonitor(monitor, 99));

 				}

-				fBaseImportRewriter = StubUtility.createImportRewrite(fRootBase, true);

+//				could be used for re-organizing base imports:

+//				fBaseImportRewriter = StubUtility.createImportRewrite(fRootBase, true);

 				fBaseMethodDeclaration = RefactoringUtil.methodToDeclaration(fBaseMethod, fRootBase);

 				

 				fBaseAST = fRootBase.getAST();

diff --git a/plugins/org.eclipse.objectteams.otdt.refactoring/src/org/eclipse/objectteams/otdt/internal/refactoring/util/RefactoringUtil.java b/plugins/org.eclipse.objectteams.otdt.refactoring/src/org/eclipse/objectteams/otdt/internal/refactoring/util/RefactoringUtil.java
index 34be85e..07d306b 100644
--- a/plugins/org.eclipse.objectteams.otdt.refactoring/src/org/eclipse/objectteams/otdt/internal/refactoring/util/RefactoringUtil.java
+++ b/plugins/org.eclipse.objectteams.otdt.refactoring/src/org/eclipse/objectteams/otdt/internal/refactoring/util/RefactoringUtil.java
@@ -1244,7 +1244,7 @@
 
 		ICompilationUnit source = member.getCompilationUnit();
 
-		ASTParser parser = ASTParser.newParser(AST.JLS4);
+		ASTParser parser = ASTParser.newParser(AST.JLS8);
 		parser.setSource(source);
 		parser.setResolveBindings(true);
 		CompilationUnit astRoot = (CompilationUnit) parser.createAST(null);
diff --git a/plugins/org.eclipse.objectteams.otdt.ui/src/org/eclipse/objectteams/otdt/internal/ui/OTElementAdapterFactory.java b/plugins/org.eclipse.objectteams.otdt.ui/src/org/eclipse/objectteams/otdt/internal/ui/OTElementAdapterFactory.java
index 8e8edae..3956712 100644
--- a/plugins/org.eclipse.objectteams.otdt.ui/src/org/eclipse/objectteams/otdt/internal/ui/OTElementAdapterFactory.java
+++ b/plugins/org.eclipse.objectteams.otdt.ui/src/org/eclipse/objectteams/otdt/internal/ui/OTElementAdapterFactory.java
@@ -1,7 +1,7 @@
 /**********************************************************************
  * This file is part of "Object Teams Development Tooling"-Software
  * 
- * Copyright 2003, 2009 Fraunhofer Gesellschaft, Munich, Germany,
+ * Copyright 2003, 2015 Fraunhofer Gesellschaft, Munich, Germany,
  * for its Fraunhofer Institute for Computer Architecture and Software
  * Technology (FIRST), Berlin, Germany and Technical University Berlin,
  * Germany.
@@ -10,7 +10,6 @@
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
  * http://www.eclipse.org/legal/epl-v10.html
- * $Id: OTElementAdapterFactory.java 23435 2010-02-04 00:14:38Z stephan $
  * 
  * Please visit http://www.eclipse.org/objectteams for updates and contact.
  * 
@@ -29,27 +28,22 @@
  * needs to be registered by the platforms AdapterManager.
  * 
  * @author kaiser
- * @version $Id: OTElementAdapterFactory.java 23435 2010-02-04 00:14:38Z stephan $
  */
 public class OTElementAdapterFactory implements IAdapterFactory
 {
 	WorkbenchAdapter _otAdapter   = new WorkbenchAdapter();
-	Class[]          _allAdapters = { IWorkbenchAdapter.class };
+	Class<?>[]       _allAdapters = { IWorkbenchAdapter.class };
 
-    public Object getAdapter(Object adaptableObject, Class adapterType)
+    @SuppressWarnings("unchecked")
+	public <T> T getAdapter(Object adaptableObject, Class<T> adapterType)
     {
-    	Object adapter = null;
-    	
     	if (IWorkbenchAdapter.class.equals(adapterType))
-    	{
-    		adapter = _otAdapter;
-    	}
+    		return (T)_otAdapter;
     	
-    	return adapter;
+    	return null;
     }
 
-    public Class[] getAdapterList()
-    {
+    public Class<?>[] getAdapterList() {
         return _allAdapters;
     }
 }
diff --git a/plugins/org.eclipse.objectteams.otdt.ui/src/org/eclipse/objectteams/otdt/internal/ui/bindingeditor/BindingEditorDialog.java b/plugins/org.eclipse.objectteams.otdt.ui/src/org/eclipse/objectteams/otdt/internal/ui/bindingeditor/BindingEditorDialog.java
index 3b73e65..1720121 100644
--- a/plugins/org.eclipse.objectteams.otdt.ui/src/org/eclipse/objectteams/otdt/internal/ui/bindingeditor/BindingEditorDialog.java
+++ b/plugins/org.eclipse.objectteams.otdt.ui/src/org/eclipse/objectteams/otdt/internal/ui/bindingeditor/BindingEditorDialog.java
@@ -186,7 +186,7 @@
         {
 			_originalDocument = new Document(_team.getCompilationUnit().getSource());
 			
-			ASTParser parser = ASTParser.newParser(AST.JLS4);
+			ASTParser parser = ASTParser.newParser(AST.JLS8);
 
             parser.setSource(_team.getCompilationUnit());
             parser.setResolveBindings(true);
diff --git a/plugins/org.eclipse.objectteams.otdt.ui/src/org/eclipse/objectteams/otdt/internal/ui/compare/BaseMethodCompareElement.java b/plugins/org.eclipse.objectteams.otdt.ui/src/org/eclipse/objectteams/otdt/internal/ui/compare/BaseMethodCompareElement.java
index 3118037..29d0555 100644
--- a/plugins/org.eclipse.objectteams.otdt.ui/src/org/eclipse/objectteams/otdt/internal/ui/compare/BaseMethodCompareElement.java
+++ b/plugins/org.eclipse.objectteams.otdt.ui/src/org/eclipse/objectteams/otdt/internal/ui/compare/BaseMethodCompareElement.java
@@ -89,7 +89,7 @@
 			public boolean isReadOnly() {
 				return true;
 			}
-			public Object getAdapter(Class adapter) {
+			public <T> T getAdapter(Class<T> adapter) {
 				return null;
 			}
 		};
diff --git a/plugins/org.eclipse.objectteams.otdt.ui/src/org/eclipse/objectteams/otdt/internal/ui/wizards/NewTypeWizardPage.java b/plugins/org.eclipse.objectteams.otdt.ui/src/org/eclipse/objectteams/otdt/internal/ui/wizards/NewTypeWizardPage.java
index be9c67d..bee8ad5 100644
--- a/plugins/org.eclipse.objectteams.otdt.ui/src/org/eclipse/objectteams/otdt/internal/ui/wizards/NewTypeWizardPage.java
+++ b/plugins/org.eclipse.objectteams.otdt.ui/src/org/eclipse/objectteams/otdt/internal/ui/wizards/NewTypeWizardPage.java
@@ -602,7 +602,7 @@
 					return status;
 				}
 				String typeDeclaration= "class " + typeNameWithParameters + " {}"; //$NON-NLS-1$//$NON-NLS-2$
-				ASTParser parser= ASTParser.newParser(AST.JLS4);
+				ASTParser parser= ASTParser.newParser(AST.JLS8);
 				parser.setSource(typeDeclaration.toCharArray());
 				parser.setProject(root.getJavaProject());
 				CompilationUnit compilationUnit= (CompilationUnit) parser.createAST(null);
@@ -673,6 +673,7 @@
 				return getSuperInterfacesStubTypeContext();
 			}
 		});
+		// note: same deprecation warnings are raised against original org.eclipse.jdt.ui.wizards.NewTypeWizardPage:
 		SubjectControlContentAssistant contentAssistant= ControlContentAssistHelper.createJavaContentAssistant(superInterfaceCompletionProcessor);
 		Text cellEditorText= cellEditor.getText();
 		ContentAssistHandler.createHandlerForText(cellEditorText, contentAssistant);
diff --git a/plugins/org.eclipse.objectteams.otdt.ui/src/org/eclipse/objectteams/otdt/internal/ui/wizards/listeners/NewRoleWizardPageListener.java b/plugins/org.eclipse.objectteams.otdt.ui/src/org/eclipse/objectteams/otdt/internal/ui/wizards/listeners/NewRoleWizardPageListener.java
index 6d0b90c..c9162c6 100644
--- a/plugins/org.eclipse.objectteams.otdt.ui/src/org/eclipse/objectteams/otdt/internal/ui/wizards/listeners/NewRoleWizardPageListener.java
+++ b/plugins/org.eclipse.objectteams.otdt.ui/src/org/eclipse/objectteams/otdt/internal/ui/wizards/listeners/NewRoleWizardPageListener.java
@@ -22,10 +22,12 @@
 
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.jdt.core.IJavaElement;
+import org.eclipse.jdt.core.IJavaProject;
 import org.eclipse.jdt.core.IPackageFragmentRoot;
 import org.eclipse.jdt.core.IType;
 import org.eclipse.jdt.core.ITypeHierarchy;
 import org.eclipse.jdt.core.JavaConventions;
+import org.eclipse.jdt.core.JavaCore;
 import org.eclipse.jdt.core.JavaModelException;
 import org.eclipse.jdt.core.Signature;
 import org.eclipse.jdt.core.search.IJavaSearchConstants;
@@ -353,8 +355,13 @@
 		} catch (JavaModelException e) { /* nop */ }
         IStatus validJava = StatusInfo.OK_STATUS;
         if (baseType == null) { // check valid base class name only if base class doesn't yet exist
+        	String compliance = JavaCore.VERSION_1_8;
+        	if (enclosingType != null) {
+        		IJavaProject javaProject = enclosingType.getJavaProject();
+        		compliance = javaProject.getOption(JavaCore.COMPILER_COMPLIANCE, true);
+        	}
 	        // ERRORS:
-	        validJava = JavaConventions.validateJavaTypeName(baseclassName);
+	        validJava = JavaConventions.validateJavaTypeName(baseclassName, compliance, compliance);
 	        if (validJava.getSeverity() == IStatus.ERROR) 
 	            return new StatusInfo(IStatus.ERROR,
 	            		Messages.format(org.eclipse.jdt.internal.ui.wizards.NewWizardMessages.NewTypeWizardPage_error_InvalidTypeName, 
diff --git a/plugins/org.eclipse.objectteams.otdt.ui/src/org/eclipse/objectteams/otdt/internal/ui/wizards/typecreation/TypeCreator.java b/plugins/org.eclipse.objectteams.otdt.ui/src/org/eclipse/objectteams/otdt/internal/ui/wizards/typecreation/TypeCreator.java
index 033baef..41b4437 100644
--- a/plugins/org.eclipse.objectteams.otdt.ui/src/org/eclipse/objectteams/otdt/internal/ui/wizards/typecreation/TypeCreator.java
+++ b/plugins/org.eclipse.objectteams.otdt.ui/src/org/eclipse/objectteams/otdt/internal/ui/wizards/typecreation/TypeCreator.java
@@ -341,7 +341,7 @@
 	}	
 	
 	private CompilationUnit createASTForImports(ICompilationUnit cu) {
-		ASTParser parser= ASTParser.newParser(AST.JLS4);
+		ASTParser parser= ASTParser.newParser(AST.JLS8);
 		parser.setSource(cu);
 		parser.setResolveBindings(false);
 		parser.setFocalPosition(0);
@@ -430,7 +430,7 @@
 	}
 	
 	private void removeUnusedImports(ICompilationUnit cu, Set<String> existingImports, boolean needsSave) throws CoreException {
-		ASTParser parser= ASTParser.newParser(AST.JLS4);
+		ASTParser parser= ASTParser.newParser(AST.JLS8);
 		parser.setSource(cu);
 		parser.setResolveBindings(true);
 
@@ -884,7 +884,7 @@
 		String content= getCompilationUnitContent(cu, fileComment, typeComment, typeContent, lineDelimiter);
 //carp}		
 		if (content != null) {
-			ASTParser parser= ASTParser.newParser(AST.JLS4);
+			ASTParser parser= ASTParser.newParser(AST.JLS8);
 //OTDTUI: set unit name and project for role-file handling in parser -- probably obsolete!
 			parser.setUnitName(cu.getPath().toString());
 //carp}
@@ -945,7 +945,7 @@
 		ArrayList<IMethod> newMethods= new ArrayList<IMethod>();
 		CodeGenerationSettings settings= JavaPreferencesSettings.getCodeGenerationSettings(type.getJavaProject());
 		settings.createComments= this._addComments;
-		ASTParser parser= ASTParser.newParser(AST.JLS4);
+		ASTParser parser= ASTParser.newParser(AST.JLS8);
 		parser.setResolveBindings(true);
 		parser.setSource(cu);
 		CompilationUnit unit= (CompilationUnit) parser.createAST(new SubProgressMonitor(monitor, 1));
diff --git a/plugins/org.eclipse.objectteams.otdt/src/org/eclipse/objectteams/otdt/core/hierarchy/OTTypeHierarchies.java b/plugins/org.eclipse.objectteams.otdt/src/org/eclipse/objectteams/otdt/core/hierarchy/OTTypeHierarchies.java
index 25e2b29..a175128 100644
--- a/plugins/org.eclipse.objectteams.otdt/src/org/eclipse/objectteams/otdt/core/hierarchy/OTTypeHierarchies.java
+++ b/plugins/org.eclipse.objectteams.otdt/src/org/eclipse/objectteams/otdt/core/hierarchy/OTTypeHierarchies.java
@@ -199,6 +199,7 @@
 		 * This role adds to ITypes the capability of connecting to all direct and indirect tsuper types,
 		 * which includes linearization of all super types (implicit & explicit). 
 		 */
+		@SuppressWarnings("bindingconventions") // IType is widely used in this team (directly, not via roles)
 		protected class ConnectedType playedBy IType 
 		{
 			ConnectedType getParent() -> IJavaElement getParent() 
diff --git a/plugins/org.eclipse.objectteams.otdt/src/org/eclipse/objectteams/otdt/internal/core/ext/AbstractMarkable.java b/plugins/org.eclipse.objectteams.otdt/src/org/eclipse/objectteams/otdt/internal/core/ext/AbstractMarkable.java
index f1adafa..99eba51 100644
--- a/plugins/org.eclipse.objectteams.otdt/src/org/eclipse/objectteams/otdt/internal/core/ext/AbstractMarkable.java
+++ b/plugins/org.eclipse.objectteams.otdt/src/org/eclipse/objectteams/otdt/internal/core/ext/AbstractMarkable.java
@@ -133,8 +133,34 @@
 		return subTypes;
 	}
 
-	/** Fetch projects from a resource or all workspace projects if resource === null */
+	/** Fetch
+	 *  - directly dependent projects from a resource, or
+	 *  - all workspace OT projects if resource == null
+	 */
 	IJavaProject[] getProjects(IResource resource) {
+		/*
+		 * Should we ever want to restrict the set of projects to those that have a direct
+		 * dependency on the "current" project, we'd need to perform these steps:
+		 *
+		 * PDE scenarii:
+		 * - determine the current plugin:
+		 *   - root = getJavaElement().getAncestor(PACKAGE_FRAGMENT_ROOT)
+		 *   - traverse getJavaElement().getJavaProject().getResolvedClasspath(true)
+		 *     - match javaProject.getPackageFragmentRoots(cpEntry) against root
+		 *     - when found extract pluginName = cpEntry.extraAttributes[o.e.ot.originBaseBundle*]
+		 * - for each candidate project 
+		 *   - fetch the AspectBindingReader
+		 *     (See org.eclipse.objectteams.otdt.internal.compiler.adaptor.ResourceProjectAdaptor.getAspectBindingReader(IProject))
+		 *   - check if an aspect binding exists towards pluginName
+		 * This appears to be quite heavy weight, will only pay off if
+		 * - number of OT-plugins is large
+		 * - looking at a class from a non-WS plugin
+		 * 
+		 * Plain-Java scenarii:
+		 * - have no dependency information other than project dependencies, see next.
+		 * 
+		 * Dependencies between workspace projects are already leveraged in calculateProjectsToSearch()
+		 */
 		IJavaProject[] projects = null;
         if (resource != null) {
         	IProject project = resource.getProject();
@@ -143,7 +169,7 @@
         	IWorkspace ws = ResourcesPlugin.getWorkspace();
         	ArrayList<IJavaProject> projectList = new ArrayList<IJavaProject>(); 
         	for (IProject prj : ws.getRoot().getProjects())
-        		if (isOTProject(prj) && prj.isOpen()) // FIXME(SH): better project filtering
+        		if (isOTProject(prj) && prj.isOpen())
         			projectList.add(JavaCore.create(prj));
         	projects = projectList.toArray(new IJavaProject[projectList.size()]);
         }
@@ -153,7 +179,7 @@
     private IJavaProject[] getProjectsToSearch(IProject baseProject)
     {
         Set<IJavaProject> result = new HashSet<IJavaProject>();
-        calculateProjectsToSearch(baseProject, result);
+        calculateProjectsToSearch(baseProject, result, true);
         return result.toArray(new IJavaProject[result.size()]);
     }
         
@@ -181,15 +207,18 @@
         }
     }
     
-    private void calculateProjectsToSearch(IProject currentProject, Set<IJavaProject> allProjectsFound)
+    private void calculateProjectsToSearch(IProject currentProject, Set<IJavaProject> allProjectsFound, boolean descend)
     {
         if (isOTProject(currentProject))
             allProjectsFound.add(JavaCore.create(currentProject));
         
-//        if (isPluginProject(currentProject))
-//        	return; // don't search indirect dependencies of plug-in projects because aspectBindings must be declared directly 
+        if (!descend)
+        	return;
+        
+        // don't search indirect dependencies of plug-in projects because aspectBindings must be declared directly:
+        descend = !isPluginProject(currentProject);
         
         for(IProject referencingProject : currentProject.getReferencingProjects())
-        	calculateProjectsToSearch(referencingProject, allProjectsFound);
+        	calculateProjectsToSearch(referencingProject, allProjectsFound, descend);
     }
 }