Bug 460359: Fix compiler problems from generified IAdaptable#getAdapter(..)
diff --git a/org.eclipse.jdt.jeview/META-INF/MANIFEST.MF b/org.eclipse.jdt.jeview/META-INF/MANIFEST.MF
index 5a1a78e..86fde68 100644
--- a/org.eclipse.jdt.jeview/META-INF/MANIFEST.MF
+++ b/org.eclipse.jdt.jeview/META-INF/MANIFEST.MF
@@ -8,7 +8,7 @@
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
 Bundle-RequiredExecutionEnvironment: J2SE-1.5
-Require-Bundle: org.eclipse.core.runtime,
+Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.11.0,4.0.0)",
  org.eclipse.jdt.core;bundle-version="[3.10.0,4.0.0)",
  org.eclipse.jdt.ui;bundle-version="[3.10.0,4.0.0)",
  org.eclipse.ui,
diff --git a/org.eclipse.jdt.jeview/src/org/eclipse/jdt/jeview/EditorUtility.java b/org.eclipse.jdt.jeview/src/org/eclipse/jdt/jeview/EditorUtility.java
index a040555..6631873 100644
--- a/org.eclipse.jdt.jeview/src/org/eclipse/jdt/jeview/EditorUtility.java
+++ b/org.eclipse.jdt.jeview/src/org/eclipse/jdt/jeview/EditorUtility.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
+ * Copyright (c) 2000, 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
@@ -68,7 +68,7 @@
 		/*
 		 * This needs works, see https://bugs.eclipse.org/bugs/show_bug.cgi?id=120340
 		 */
-		return (IJavaElement)editorInput.getAdapter(IJavaElement.class);
+		return editorInput.getAdapter(IJavaElement.class);
 	}
 	
 	public static void selectInEditor(ITextEditor editor, int offset, int length) {
diff --git a/org.eclipse.jdt.jeview/src/org/eclipse/jdt/jeview/views/JavaElementView.java b/org.eclipse.jdt.jeview/src/org/eclipse/jdt/jeview/views/JavaElementView.java
index ed2793b..4434241 100644
--- a/org.eclipse.jdt.jeview/src/org/eclipse/jdt/jeview/views/JavaElementView.java
+++ b/org.eclipse.jdt.jeview/src/org/eclipse/jdt/jeview/views/JavaElementView.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2014 IBM Corporation and others.
+ * Copyright (c) 2005, 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
@@ -385,7 +385,7 @@
 	private String getShowInMenuLabel() {
 		String keyBinding= null;
 
-		IBindingService bindingService= (IBindingService) PlatformUI.getWorkbench().getAdapter(IBindingService.class);
+		IBindingService bindingService= PlatformUI.getWorkbench().getAdapter(IBindingService.class);
 		if (bindingService != null)
 			keyBinding= bindingService.getBestActiveBindingFormattedFor(IWorkbenchCommandConstants.NAVIGATE_SHOW_IN_QUICK_MENU);
 
@@ -479,7 +479,7 @@
 					setEmptyInput();
 					return;
 				}
-				IJavaElement javaElement= (IJavaElement) input.getAdapter(IJavaElement.class);
+				IJavaElement javaElement= input.getAdapter(IJavaElement.class);
 				if (javaElement == null) {
 					setEmptyInput();
 					return;
@@ -520,7 +520,7 @@
 					setEmptyInput();
 					return;
 				}
-				IJavaElement javaElement= (IJavaElement) input.getAdapter(IJavaElement.class);
+				IJavaElement javaElement= input.getAdapter(IJavaElement.class);
 				if (javaElement == null) {
 					setEmptyInput();
 					return;
diff --git a/org.eclipse.jdt.junit/META-INF/MANIFEST.MF b/org.eclipse.jdt.junit/META-INF/MANIFEST.MF
index 317980f..ce3a48e 100644
--- a/org.eclipse.jdt.junit/META-INF/MANIFEST.MF
+++ b/org.eclipse.jdt.junit/META-INF/MANIFEST.MF
@@ -28,7 +28,7 @@
  org.eclipse.debug.ui;bundle-version="[3.5.0,4.0.0)",
  org.eclipse.jdt.core;bundle-version="[3.5.0,4.0.0)",
  org.eclipse.jdt.ui;bundle-version="[3.5.0,4.0.0)",
- org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
+ org.eclipse.core.runtime;bundle-version="[3.11.0,4.0.0)",
  org.eclipse.jdt.launching;bundle-version="[3.5.0,4.0.0)",
  org.eclipse.jdt.debug.ui;bundle-version="[3.3.0,4.0.0)",
  org.eclipse.jdt.junit.runtime;bundle-version="[3.4.100,4.0.0)",
diff --git a/org.eclipse.jdt.junit/src/org/eclipse/jdt/junit/launcher/JUnitLaunchConfigurationTab.java b/org.eclipse.jdt.junit/src/org/eclipse/jdt/junit/launcher/JUnitLaunchConfigurationTab.java
index 44a5939..78dacea 100644
--- a/org.eclipse.jdt.junit/src/org/eclipse/jdt/junit/launcher/JUnitLaunchConfigurationTab.java
+++ b/org.eclipse.jdt.junit/src/org/eclipse/jdt/junit/launcher/JUnitLaunchConfigurationTab.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2010 IBM Corporation and others.
+ * Copyright (c) 2000, 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
@@ -1123,7 +1123,7 @@
 			IEditorPart part = page.getActiveEditor();
 			if (part != null) {
 				IEditorInput input = part.getEditorInput();
-				return (IJavaElement) input.getAdapter(IJavaElement.class);
+				return input.getAdapter(IJavaElement.class);
 			}
 		}
 		return null;
diff --git a/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/MoveMembersTests.java b/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/MoveMembersTests.java
index e90a1f2..c59adc5 100644
--- a/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/MoveMembersTests.java
+++ b/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/MoveMembersTests.java
@@ -98,7 +98,7 @@
 		}
 		MoveRefactoring ref= createRefactoring(members, destinationType);
 
-		IDelegateUpdating delUp= (IDelegateUpdating) ref.getProcessor().getAdapter(IDelegateUpdating.class);
+		IDelegateUpdating delUp= ref.getProcessor().getAdapter(IDelegateUpdating.class);
 		delUp.setDelegateUpdating(addDelegate);
 
 		RefactoringStatus result= performRefactoringWithStatus(ref);
diff --git a/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/RenamePackageTests.java b/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/RenamePackageTests.java
index f26417c..4dc7361 100644
--- a/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/RenamePackageTests.java
+++ b/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/RenamePackageTests.java
@@ -614,8 +614,8 @@
 			assertTrue(status.toString(), status.isOK());
 
 		RefactoringProcessor processor= ((RenameRefactoring) refactoring).getProcessor();
-		IResourceMapper rm= (IResourceMapper) processor.getAdapter(IResourceMapper.class);
-		IJavaElementMapper jm= (IJavaElementMapper) processor.getAdapter(IJavaElementMapper.class);
+		IResourceMapper rm= processor.getAdapter(IResourceMapper.class);
+		IJavaElementMapper jm= processor.getAdapter(IJavaElementMapper.class);
 		checkMappingUnchanged(jm, rm, new Object[] { getRoot().getJavaProject(), getRoot(), file });
 		IFile newFile= ((IContainer) getRoot().getResource()).getFile(new Path("x.properties"));
 		assertEquals("This is about 'org.test2' and more", getContents(newFile));
@@ -650,8 +650,8 @@
 			assertTrue(status.toString(), status.isOK());
 
 		RefactoringProcessor processor= ((RenameRefactoring) refactoring).getProcessor();
-		IResourceMapper rm= (IResourceMapper) processor.getAdapter(IResourceMapper.class);
-		IJavaElementMapper jm= (IJavaElementMapper) processor.getAdapter(IJavaElementMapper.class);
+		IResourceMapper rm= processor.getAdapter(IResourceMapper.class);
+		IJavaElementMapper jm= processor.getAdapter(IJavaElementMapper.class);
 		checkMappingUnchanged(jm, rm, new Object[] { getRoot().getJavaProject(), getRoot() });
 		IPackageFragment newFragment= getRoot().getPackageFragment("org.test2");
 		IFile newFile= ((IContainer) newFragment.getResource()).getFile(new Path("x.properties"));
@@ -1077,8 +1077,8 @@
 	public void test1() throws Exception{
 		fIsPreDeltaTest= true;
 		RenamePackageProcessor proc= helper2(new String[]{"r"}, new String[][]{{"A"}}, "p1");
-		IJavaElementMapper jm= (IJavaElementMapper) proc.getAdapter(IJavaElementMapper.class);
-		IResourceMapper rm= (IResourceMapper) proc.getAdapter(IResourceMapper.class);
+		IJavaElementMapper jm= proc.getAdapter(IJavaElementMapper.class);
+		IResourceMapper rm= proc.getAdapter(IResourceMapper.class);
 
 		IJavaModel javaModel= JavaCore.create(ResourcesPlugin.getWorkspace().getRoot());
 		IJavaProject project= getRoot().getJavaProject();
diff --git a/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/RenameTypeTests.java b/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/RenameTypeTests.java
index 0e4bedd..a95c327 100644
--- a/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/RenameTypeTests.java
+++ b/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/RenameTypeTests.java
@@ -176,7 +176,7 @@
 
 	private void checkMappedSimilarElementsExist(Refactoring ref) {
 		RenameTypeProcessor rtp= (RenameTypeProcessor) ((RenameRefactoring) ref).getProcessor();
-		IJavaElementMapper mapper= (IJavaElementMapper) rtp.getAdapter(IJavaElementMapper.class);
+		IJavaElementMapper mapper= rtp.getAdapter(IJavaElementMapper.class);
 		IJavaElement[] similarElements= rtp.getSimilarElements();
 		if (similarElements == null)
 			return;
diff --git a/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/TestRenameParticipantShared.java b/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/TestRenameParticipantShared.java
index 6ae1319..24b3c38 100644
--- a/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/TestRenameParticipantShared.java
+++ b/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/TestRenameParticipantShared.java
@@ -55,7 +55,7 @@
 		else
 			fHandles.add(((IResource)element).getFullPath().toString());
 
-		IJavaElementMapper updating= (IJavaElementMapper)getProcessor().getAdapter(IJavaElementMapper.class);
+		IJavaElementMapper updating= getProcessor().getAdapter(IJavaElementMapper.class);
 		if ((updating != null) && getArguments() instanceof RenameTypeArguments) {
 			RenameTypeArguments arguments= (RenameTypeArguments)getArguments();
 			if (arguments.getUpdateSimilarDeclarations()) {
diff --git a/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/model/ContentProviderTests.java b/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/model/ContentProviderTests.java
index 03394e8..6b9d1f3 100644
--- a/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/model/ContentProviderTests.java
+++ b/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/model/ContentProviderTests.java
@@ -201,7 +201,7 @@
 		
 		IPackageFragment packageFragment3= (IPackageFragment)JavaCore.create(f3);
 		LogicalPackage logicalPackage3= new LogicalPackage(packageFragment3);
-		ResourceMapping resourceMapping= (ResourceMapping)logicalPackage3.getAdapter(ResourceMapping.class);
+		ResourceMapping resourceMapping= logicalPackage3.getAdapter(ResourceMapping.class);
 		ResourceTraversal[] traversals= resourceMapping.getTraversals(ResourceMappingContext.LOCAL_CONTEXT, null);
 		assertEquals(1, traversals.length);
 		assertEqualSets("", new IResource[] { f3 }, traversals[0].getResources());
diff --git a/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/model/MockPluginView.java b/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/model/MockPluginView.java
index 4759dc2..96cc489 100644
--- a/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/model/MockPluginView.java
+++ b/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/model/MockPluginView.java
@@ -130,7 +130,7 @@
 	}
 
 	private ResourceMapping[] getResourceMappings(IJavaProject project) {
-		ResourceMapping mapping = (ResourceMapping)project.getResource().getAdapter(ResourceMapping.class);
+		ResourceMapping mapping = project.getResource().getAdapter(ResourceMapping.class);
 		return new ResourceMapping[] { mapping };
 	}
 
diff --git a/org.eclipse.jdt.ui/META-INF/MANIFEST.MF b/org.eclipse.jdt.ui/META-INF/MANIFEST.MF
index 0599d1c..a7da5b5 100644
--- a/org.eclipse.jdt.ui/META-INF/MANIFEST.MF
+++ b/org.eclipse.jdt.ui/META-INF/MANIFEST.MF
@@ -132,7 +132,7 @@
  org.eclipse.ui.ide;bundle-version="[3.5.0,4.0.0)",
  org.eclipse.ui.views;bundle-version="[3.3.100,4.0.0)",
  org.eclipse.ui.editors;bundle-version="[3.5.0,4.0.0)",
- org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
+ org.eclipse.core.runtime;bundle-version="[3.11.0,4.0.0)",
  org.eclipse.ltk.core.refactoring;bundle-version="[3.5.0,4.0.0)",
  org.eclipse.ltk.ui.refactoring;bundle-version="[3.5.0,4.0.0)",
  org.eclipse.ui.forms;bundle-version="[3.4.0,4.0.0)",
diff --git a/org.eclipse.jdt.ui/core extension/org/eclipse/jdt/internal/corext/callhierarchy/CallLocation.java b/org.eclipse.jdt.ui/core extension/org/eclipse/jdt/internal/corext/callhierarchy/CallLocation.java
index 175a9f2..3a8381d 100644
--- a/org.eclipse.jdt.ui/core extension/org/eclipse/jdt/internal/corext/callhierarchy/CallLocation.java
+++ b/org.eclipse.jdt.ui/core extension/org/eclipse/jdt/internal/corext/callhierarchy/CallLocation.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2011 IBM Corporation and others.
+ * Copyright (c) 2000, 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
@@ -124,9 +124,10 @@
         return getCallText();
     }
 
-    public Object getAdapter(Class adapter) {
+    @SuppressWarnings("unchecked")
+	public <T> T getAdapter(Class<T> adapter) {
         if (IJavaElement.class.isAssignableFrom(adapter)) {
-            return getMember();
+            return (T) getMember();
         }
 
         return null;
diff --git a/org.eclipse.jdt.ui/core extension/org/eclipse/jdt/internal/corext/callhierarchy/MethodWrapper.java b/org.eclipse.jdt.ui/core extension/org/eclipse/jdt/internal/corext/callhierarchy/MethodWrapper.java
index fc5cad4..f99ab60 100644
--- a/org.eclipse.jdt.ui/core extension/org/eclipse/jdt/internal/corext/callhierarchy/MethodWrapper.java
+++ b/org.eclipse.jdt.ui/core extension/org/eclipse/jdt/internal/corext/callhierarchy/MethodWrapper.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2011 IBM Corporation and others.
+ * Copyright (c) 2000, 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
@@ -68,12 +68,13 @@
         this.fParent = parent;
     }
 
-    @Override
-	public Object getAdapter(Class adapter) {
+    @SuppressWarnings("unchecked")
+	@Override
+	public <T> T getAdapter(Class<T> adapter) {
 		if (adapter == IJavaElement.class) {
-	        return getMember();
+	        return (T) getMember();
 	    } else if (adapter == IWorkbenchAdapter.class){
-	    	return new MethodWrapperWorkbenchAdapter(this);
+	    	return (T) new MethodWrapperWorkbenchAdapter(this);
 	    } else {
 	    	return null;
 	    }
diff --git a/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/util/Changes.java b/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/util/Changes.java
index b472a7c..3279e04 100644
--- a/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/util/Changes.java
+++ b/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/util/Changes.java
@@ -34,7 +34,7 @@
 			Change change= changes[i];
 			Object modifiedElement= change.getModifiedElement();
 			if (modifiedElement instanceof IAdaptable) {
-				IFile file= (IFile)((IAdaptable)modifiedElement).getAdapter(IFile.class);
+				IFile file= ((IAdaptable)modifiedElement).getAdapter(IFile.class);
 				if (file != null)
 					result.add(file);
 			}
diff --git a/org.eclipse.jdt.ui/ui refactoring/org/eclipse/jdt/internal/ui/refactoring/CreateTextFileChangePreviewViewer.java b/org.eclipse.jdt.ui/ui refactoring/org/eclipse/jdt/internal/ui/refactoring/CreateTextFileChangePreviewViewer.java
index 36484f3..ef2ec93 100644
--- a/org.eclipse.jdt.ui/ui refactoring/org/eclipse/jdt/internal/ui/refactoring/CreateTextFileChangePreviewViewer.java
+++ b/org.eclipse.jdt.ui/ui refactoring/org/eclipse/jdt/internal/ui/refactoring/CreateTextFileChangePreviewViewer.java
@@ -134,7 +134,7 @@
 			Object element= change.getModifiedElement();
 			if (element instanceof IAdaptable) {
 				IAdaptable adaptable= (IAdaptable) element;
-				IWorkbenchAdapter workbenchAdapter= (IWorkbenchAdapter) adaptable.getAdapter(IWorkbenchAdapter.class);
+				IWorkbenchAdapter workbenchAdapter= adaptable.getAdapter(IWorkbenchAdapter.class);
 				if (workbenchAdapter != null) {
 					fPane.setImageDescriptor(workbenchAdapter.getImageDescriptor(element));
 				} else {
diff --git a/org.eclipse.jdt.ui/ui refactoring/org/eclipse/jdt/internal/ui/refactoring/RefactoringAdapterFactory.java b/org.eclipse.jdt.ui/ui refactoring/org/eclipse/jdt/internal/ui/refactoring/RefactoringAdapterFactory.java
index c9eda2e..806256f 100644
--- a/org.eclipse.jdt.ui/ui refactoring/org/eclipse/jdt/internal/ui/refactoring/RefactoringAdapterFactory.java
+++ b/org.eclipse.jdt.ui/ui refactoring/org/eclipse/jdt/internal/ui/refactoring/RefactoringAdapterFactory.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2011 IBM Corporation and others.
+ * Copyright (c) 2000, 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
@@ -25,15 +25,16 @@
 		TextEditChangeNode.class
 	};
 
-	public Class[] getAdapterList() {
+	public Class<?>[] getAdapterList() {
 		return ADAPTER_LIST;
 	}
 
-	public Object getAdapter(Object object, Class key) {
+	@SuppressWarnings("unchecked")
+	public <T> T getAdapter(Object object, Class<T> key) {
 		if (!TextEditChangeNode.class.equals(key))
 			return null;
 		if (!(object instanceof CompilationUnitChange) && !(object instanceof MultiStateCompilationUnitChange))
 			return null;
-		return new CompilationUnitChangeNode((TextEditBasedChange)object);
+		return (T) new CompilationUnitChangeNode((TextEditBasedChange)object);
 	}
 }
diff --git a/org.eclipse.jdt.ui/ui refactoring/org/eclipse/jdt/internal/ui/refactoring/binary/BinaryRefactoringHistoryWizard.java b/org.eclipse.jdt.ui/ui refactoring/org/eclipse/jdt/internal/ui/refactoring/binary/BinaryRefactoringHistoryWizard.java
index 9782f08..c55bf19 100644
--- a/org.eclipse.jdt.ui/ui refactoring/org/eclipse/jdt/internal/ui/refactoring/binary/BinaryRefactoringHistoryWizard.java
+++ b/org.eclipse.jdt.ui/ui refactoring/org/eclipse/jdt/internal/ui/refactoring/binary/BinaryRefactoringHistoryWizard.java
@@ -707,7 +707,7 @@
 			final Object element= change.getModifiedElement();
 			if (element instanceof IAdaptable) {
 				final IAdaptable adaptable= (IAdaptable) element;
-				final IResource resource= (IResource) adaptable.getAdapter(IResource.class);
+				final IResource resource= adaptable.getAdapter(IResource.class);
 				if (resource != null && source.isPrefixOf(resource.getFullPath()))
 					return false;
 			}
diff --git a/org.eclipse.jdt.ui/ui refactoring/org/eclipse/jdt/internal/ui/refactoring/nls/search/CompilationUnitEntry.java b/org.eclipse.jdt.ui/ui refactoring/org/eclipse/jdt/internal/ui/refactoring/nls/search/CompilationUnitEntry.java
index 4eaaba3..d5d593e 100644
--- a/org.eclipse.jdt.ui/ui refactoring/org/eclipse/jdt/internal/ui/refactoring/nls/search/CompilationUnitEntry.java
+++ b/org.eclipse.jdt.ui/ui refactoring/org/eclipse/jdt/internal/ui/refactoring/nls/search/CompilationUnitEntry.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 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
@@ -32,9 +32,10 @@
 		return fCompilationUnit;
 	}
 
-	public Object getAdapter(Class adapter) {
+	@SuppressWarnings("unchecked")
+	public <T> T getAdapter(Class<T> adapter) {
 		if (ICompilationUnit.class.equals(adapter))
-			return getCompilationUnit();
+			return (T) getCompilationUnit();
 		return null;
 	}
 
diff --git a/org.eclipse.jdt.ui/ui refactoring/org/eclipse/jdt/internal/ui/refactoring/nls/search/FileEntry.java b/org.eclipse.jdt.ui/ui refactoring/org/eclipse/jdt/internal/ui/refactoring/nls/search/FileEntry.java
index a4bca5b..41040f8 100644
--- a/org.eclipse.jdt.ui/ui refactoring/org/eclipse/jdt/internal/ui/refactoring/nls/search/FileEntry.java
+++ b/org.eclipse.jdt.ui/ui refactoring/org/eclipse/jdt/internal/ui/refactoring/nls/search/FileEntry.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2011 IBM Corporation and others.
+ * Copyright (c) 2000, 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
@@ -39,9 +39,10 @@
 		return fMessage;
 	}
 
-	public Object getAdapter(Class adapter) {
+	@SuppressWarnings("unchecked")
+	public <T> T getAdapter(Class<T> adapter) {
 		if (IResource.class.equals(adapter))
-			return fPropertiesFile;
+			return (T) fPropertiesFile;
 		return null;
 	}
 }
diff --git a/org.eclipse.jdt.ui/ui refactoring/org/eclipse/jdt/internal/ui/refactoring/nls/search/NLSSearchResultPage.java b/org.eclipse.jdt.ui/ui refactoring/org/eclipse/jdt/internal/ui/refactoring/nls/search/NLSSearchResultPage.java
index 4e8d2c0..76cb882 100644
--- a/org.eclipse.jdt.ui/ui refactoring/org/eclipse/jdt/internal/ui/refactoring/nls/search/NLSSearchResultPage.java
+++ b/org.eclipse.jdt.ui/ui refactoring/org/eclipse/jdt/internal/ui/refactoring/nls/search/NLSSearchResultPage.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2011 IBM Corporation and others.
+ * Copyright (c) 2000, 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
@@ -101,12 +101,10 @@
 		viewer.setContentProvider(fContentProvider);
 	}
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.core.runtime.IAdaptable#getAdapter(java.lang.Class)
-	 */
-	public Object getAdapter(Class adapter) {
+	@SuppressWarnings("unchecked")
+	public <T> T getAdapter(Class<T> adapter) {
 		if (IShowInTargetList.class.equals(adapter)) {
-			return JavaSearchResultPage.SHOW_IN_TARGET_LIST;
+			return (T) JavaSearchResultPage.SHOW_IN_TARGET_LIST;
 		}
 		return null;
 	}
diff --git a/org.eclipse.jdt.ui/ui refactoring/org/eclipse/jdt/internal/ui/refactoring/reorg/PasteAction.java b/org.eclipse.jdt.ui/ui refactoring/org/eclipse/jdt/internal/ui/refactoring/reorg/PasteAction.java
index 214e153..4f860de 100644
--- a/org.eclipse.jdt.ui/ui refactoring/org/eclipse/jdt/internal/ui/refactoring/reorg/PasteAction.java
+++ b/org.eclipse.jdt.ui/ui refactoring/org/eclipse/jdt/internal/ui/refactoring/reorg/PasteAction.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2014 IBM Corporation and others.
+ * Copyright (c) 2000, 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
@@ -509,7 +509,7 @@
 			final String text= getClipboardText(fAvailableTypes);
 			
 			IStorage storage= new IEncodedStorage() {
-				public Object getAdapter(Class adapter) {
+				public <T> T getAdapter(Class<T> adapter) {
 					return null;
 				}
 				public boolean isReadOnly() {
diff --git a/org.eclipse.jdt.ui/ui refactoring/org/eclipse/jdt/internal/ui/refactoring/reorg/RenameInformationPopup.java b/org.eclipse.jdt.ui/ui refactoring/org/eclipse/jdt/internal/ui/refactoring/reorg/RenameInformationPopup.java
index 91feeea..9d814fb 100644
--- a/org.eclipse.jdt.ui/ui refactoring/org/eclipse/jdt/internal/ui/refactoring/reorg/RenameInformationPopup.java
+++ b/org.eclipse.jdt.ui/ui refactoring/org/eclipse/jdt/internal/ui/refactoring/reorg/RenameInformationPopup.java
@@ -822,7 +822,7 @@
 	 * @return the keybinding for Refactor &gt; Rename
 	 */
 	private static String getOpenDialogBinding() {
-		IBindingService bindingService= (IBindingService)PlatformUI.getWorkbench().getAdapter(IBindingService.class);
+		IBindingService bindingService= PlatformUI.getWorkbench().getAdapter(IBindingService.class);
 		if (bindingService == null)
 			return ""; //$NON-NLS-1$
 		String binding= bindingService.getBestActiveBindingFormattedFor(IJavaEditorActionDefinitionIds.RENAME_ELEMENT);
diff --git a/org.eclipse.jdt.ui/ui refactoring/org/eclipse/jdt/internal/ui/refactoring/reorg/RenameSelectionState.java b/org.eclipse.jdt.ui/ui refactoring/org/eclipse/jdt/internal/ui/refactoring/reorg/RenameSelectionState.java
index 8c90f67..896a1ac 100644
--- a/org.eclipse.jdt.ui/ui refactoring/org/eclipse/jdt/internal/ui/refactoring/reorg/RenameSelectionState.java
+++ b/org.eclipse.jdt.ui/ui refactoring/org/eclipse/jdt/internal/ui/refactoring/reorg/RenameSelectionState.java
@@ -67,7 +67,7 @@
 			return;
 		ISetSelectionTarget target= null;
 		if (!(part instanceof ISetSelectionTarget)) {
-			target= (ISetSelectionTarget)part.getAdapter(ISetSelectionTarget.class);
+			target= part.getAdapter(ISetSelectionTarget.class);
 			if (target == null)
 				return;
 		} else {
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/EditorInputAdapterFactory.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/EditorInputAdapterFactory.java
index 47c6c51..ae25678 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/EditorInputAdapterFactory.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/EditorInputAdapterFactory.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2011 IBM Corporation and others.
+ * Copyright (c) 2000, 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
@@ -34,20 +34,21 @@
 
 	private Object fSearchPageScoreComputer;
 
-	public Class[] getAdapterList() {
+	public Class<?>[] getAdapterList() {
 		updateLazyLoadedAdapters();
 		return PROPERTIES;
 	}
 
-	public Object getAdapter(Object element, Class key) {
+	@SuppressWarnings("unchecked")
+	public <T> T getAdapter(Object element, Class<T> key) {
 		updateLazyLoadedAdapters();
 		if (fSearchPageScoreComputer != null && ISearchPageScoreComputer.class.equals(key) && element instanceof IEditorInput && JavaUI.getEditorInputJavaElement((IEditorInput)element) != null)
-			return fSearchPageScoreComputer;
+			return (T) fSearchPageScoreComputer;
 
 		if (IJavaElement.class.equals(key) && element instanceof IEditorInput) {
 			IJavaElement je= JavaUI.getWorkingCopyManager().getWorkingCopy((IEditorInput)element);
 			if (je != null)
-				return je;
+				return (T) je;
 			if (element instanceof IStorageEditorInput) {
 				try {
 					return ((IStorageEditorInput)element).getStorage().getAdapter(key);
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/JavaElementAdapterFactory.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/JavaElementAdapterFactory.java
index c08db63..f14d1ee 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/JavaElementAdapterFactory.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/JavaElementAdapterFactory.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2011 IBM Corporation and others.
+ * Copyright (c) 2000, 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
@@ -76,37 +76,38 @@
 	private static ITaskListResourceAdapter fgTaskListAdapter;
 	private static JavaElementContainmentAdapter fgJavaElementContainmentAdapter;
 
-	public Class[] getAdapterList() {
+	public Class<?>[] getAdapterList() {
 		updateLazyLoadedAdapters();
 		return ADAPTER_LIST;
 	}
 
-	public Object getAdapter(Object element, Class key) {
+	@SuppressWarnings("unchecked")
+	public <T> T getAdapter(Object element, Class<T> key) {
 		updateLazyLoadedAdapters();
 		IJavaElement java= getJavaElement(element);
 
 		if (IPropertySource.class.equals(key)) {
-			return getProperties(java);
+			return (T) getProperties(java);
 		} if (IResource.class.equals(key)) {
-			return getResource(java);
+			return (T) getResource(java);
 		} if (fSearchPageScoreComputer != null && ISearchPageScoreComputer.class.equals(key)) {
-			return fSearchPageScoreComputer;
+			return (T) fSearchPageScoreComputer;
 		} if (IWorkbenchAdapter.class.equals(key)) {
-			return getJavaWorkbenchAdapter();
+			return (T) getJavaWorkbenchAdapter();
 		} if (IResourceLocator.class.equals(key)) {
-			return getResourceLocator();
+			return (T) getResourceLocator();
 		} if (IPersistableElement.class.equals(key)) {
-			return new PersistableJavaElementFactory(java);
+			return (T) new PersistableJavaElementFactory(java);
 		} if (IContributorResourceAdapter.class.equals(key)) {
-			return this;
+			return (T) this;
 		} if (IContributorResourceAdapter2.class.equals(key)) {
-			return this;
+			return (T) this;
 		} if (ITaskListResourceAdapter.class.equals(key)) {
-			return getTaskListAdapter();
+			return (T) getTaskListAdapter();
 		} if (IContainmentAdapter.class.equals(key)) {
-			return getJavaElementContainmentAdapter();
+			return (T) getJavaElementContainmentAdapter();
 		} if (fIsTeamUILoaded && IHistoryPageSource.class.equals(key) && JavaElementHistoryPageSource.hasEdition(java)) {
-			return JavaElementHistoryPageSource.getInstance();
+			return (T) JavaElementHistoryPageSource.getInstance();
 		}
 		return null;
 	}
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/JavaElementContainmentAdapter.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/JavaElementContainmentAdapter.java
index bba5922..a6d83f0 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/JavaElementContainmentAdapter.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/JavaElementContainmentAdapter.java
@@ -37,7 +37,7 @@
 			resource= jElement.getResource();
 		} else {
 			if (element instanceof IAdaptable) {
-				resource= (IResource)((IAdaptable)element).getAdapter(IResource.class);
+				resource= ((IAdaptable)element).getAdapter(IResource.class);
 				if (resource != null) {
 					if (fJavaModel.contains(resource)) {
 						jElement= JavaCore.create(resource);
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/JavaProjectAdapterFactory.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/JavaProjectAdapterFactory.java
index 71e013e..e9a805a 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/JavaProjectAdapterFactory.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/JavaProjectAdapterFactory.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2011 IBM Corporation and others.
+ * Copyright (c) 2000, 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
@@ -27,14 +27,15 @@
 		IProject.class,
 	};
 
-	public Class[] getAdapterList() {
+	public Class<?>[] getAdapterList() {
 		return PROPERTIES;
 	}
 
-	public Object getAdapter(Object element, Class key) {
+	@SuppressWarnings("unchecked")
+	public <T> T getAdapter(Object element, Class<T> key) {
 		if (IProject.class.equals(key)) {
 			IJavaProject javaProject= (IJavaProject)element;
-			return javaProject.getProject();
+			return (T) javaProject.getProject();
 		}
 		return null;
 	}
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/LogicalPackageAdapterFactory.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/LogicalPackageAdapterFactory.java
index c4e90a9..cc9cf01 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/LogicalPackageAdapterFactory.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/LogicalPackageAdapterFactory.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2011 IBM Corporation and others.
+ * Copyright (c) 2000, 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
@@ -34,20 +34,21 @@
 	// Must be Object to allow lazy loading
 	private Object fSearchPageScoreComputer;
 
-	public Class[] getAdapterList() {
+	public Class<?>[] getAdapterList() {
 		updateLazyLoadedAdapters();
 		return PROPERTIES;
 	}
 
-	public Object getAdapter(Object element, Class key) {
+	@SuppressWarnings("unchecked")
+	public <T> T getAdapter(Object element, Class<T> key) {
 		updateLazyLoadedAdapters();
 
 		if (fSearchPageScoreComputer != null && ISearchPageScoreComputer.class.equals(key)) {
-			return fSearchPageScoreComputer;
+			return (T) fSearchPageScoreComputer;
 		} else if (ResourceMapping.class.equals(key)) {
 			if (!(element instanceof LogicalPackage))
 				return null;
-			return JavaElementResourceMapping.create((LogicalPackage)element);
+			return (T) JavaElementResourceMapping.create((LogicalPackage) element);
 		}
 		return null;
 	}
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/MarkerAdapterFactory.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/MarkerAdapterFactory.java
index 6b38100..acbf611 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/MarkerAdapterFactory.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/MarkerAdapterFactory.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2011 IBM Corporation and others.
+ * Copyright (c) 2000, 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
@@ -28,15 +28,16 @@
 
 	private Object fSearchPageScoreComputer;
 
-	public Class[] getAdapterList() {
+	public Class<?>[] getAdapterList() {
 		updateLazyLoadedAdapters();
 		return PROPERTIES;
 	}
 
-	public Object getAdapter(Object element, Class key) {
+	@SuppressWarnings("unchecked")
+	public <T> T getAdapter(Object element, Class<T> key) {
 		updateLazyLoadedAdapters();
 		if (fSearchPageScoreComputer != null && ISearchPageScoreComputer.class.equals(key))
-			return fSearchPageScoreComputer;
+			return (T) fSearchPageScoreComputer;
 		return null;
 	}
 
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/ResourceAdapterFactory.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/ResourceAdapterFactory.java
index 2a9abcf..d189262 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/ResourceAdapterFactory.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/ResourceAdapterFactory.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2011 IBM Corporation and others.
+ * Copyright (c) 2000, 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
@@ -27,21 +27,22 @@
 		IJavaElement.class
 	};
 
-	public Class[] getAdapterList() {
+	public Class<?>[] getAdapterList() {
 		return PROPERTIES;
 	}
 
-	public Object getAdapter(Object element, Class key) {
+	@SuppressWarnings("unchecked")
+	public <T> T getAdapter(Object element, Class<T> key) {
 		if (IJavaElement.class.equals(key)) {
 
 			// Performance optimization, see https://bugs.eclipse.org/bugs/show_bug.cgi?id=133141
 			if (element instanceof IFile) {
 				IJavaElement je= JavaPlugin.getDefault().getWorkingCopyManager().getWorkingCopy(new FileEditorInput((IFile)element));
 				if (je != null)
-					return je;
+					return (T) je;
 			}
 
-			return JavaCore.create((IResource)element);
+			return (T) JavaCore.create((IResource)element);
 		}
 		return null;
 	}
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/actions/AddTaskAction.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/actions/AddTaskAction.java
index 9c25ebf..3d32f5a 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/actions/AddTaskAction.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/actions/AddTaskAction.java
@@ -56,7 +56,7 @@
 		Object element= selection.getFirstElement();
 		if (!(element instanceof IAdaptable))
 			return null;
-		IResource resource= (IResource) ((IAdaptable)element).getAdapter(IResource.class);
+		IResource resource= ((IAdaptable)element).getAdapter(IResource.class);
 		if (resource instanceof IProject && !((IProject) resource).isOpen()) {
 			return null;
 		}
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/actions/BlockCommentAction.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/actions/BlockCommentAction.java
index d83a1b3..728b4aa 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/actions/BlockCommentAction.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/actions/BlockCommentAction.java
@@ -203,7 +203,7 @@
 		else
 			return;
 
-		IRewriteTarget target= (IRewriteTarget)editor.getAdapter(IRewriteTarget.class);
+		IRewriteTarget target= editor.getAdapter(IRewriteTarget.class);
 		if (target != null) {
 			target.beginCompoundChange();
 		}
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/actions/FoldingActionGroup.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/actions/FoldingActionGroup.java
index c8dd0f6..e162d79 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/actions/FoldingActionGroup.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/actions/FoldingActionGroup.java
@@ -125,7 +125,7 @@
 			}
 
 			public void update() {
-				ITextOperationTarget target= (ITextOperationTarget) editor.getAdapter(ITextOperationTarget.class);
+				ITextOperationTarget target= editor.getAdapter(ITextOperationTarget.class);
 
 				boolean isEnabled= (target != null && target.canDoOperation(ProjectionViewer.TOGGLE));
 				setEnabled(isEnabled);
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/actions/IndentAction.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/actions/IndentAction.java
index 02272d8..29f56df 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/actions/IndentAction.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/actions/IndentAction.java
@@ -160,7 +160,7 @@
 
 			Runnable runnable= new Runnable() {
 				public void run() {
-					IRewriteTarget target= (IRewriteTarget)getTextEditor().getAdapter(IRewriteTarget.class);
+					IRewriteTarget target= getTextEditor().getAdapter(IRewriteTarget.class);
 					if (target != null)
 						target.beginCompoundChange();
 
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/browsing/JavaBrowsingPart.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/browsing/JavaBrowsingPart.java
index 490c39c..7e4ab7d 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/browsing/JavaBrowsingPart.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/browsing/JavaBrowsingPart.java
@@ -1104,7 +1104,7 @@
 			if (firstElement instanceof IMarker)
 				firstElement= ((IMarker)firstElement).getResource();
 			if (firstElement instanceof IAdaptable) {
-				IJavaElement je= (IJavaElement)((IAdaptable)firstElement).getAdapter(IJavaElement.class);
+				IJavaElement je= ((IAdaptable)firstElement).getAdapter(IJavaElement.class);
 				if (je == null && firstElement instanceof IFile) {
 					IContainer parent= ((IFile)firstElement).getParent();
 					if (parent != null)
@@ -1196,12 +1196,12 @@
 			}
 			if (ei instanceof IFileEditorInput) {
 				IFile file= ((IFileEditorInput)ei).getFile();
-				IJavaElement je= (IJavaElement)file.getAdapter(IJavaElement.class);
+				IJavaElement je= file.getAdapter(IJavaElement.class);
 				IContainer container= null;
 				if (je == null) {
 					container= ((IFileEditorInput)ei).getFile().getParent();
 					if (container != null)
-						je= (IJavaElement)container.getAdapter(IJavaElement.class);
+						je= container.getAdapter(IJavaElement.class);
 				}
 				if (je == null && container == null) {
 					setSelection(null, false);
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/browsing/PatchedOpenInNewWindowAction.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/browsing/PatchedOpenInNewWindowAction.java
index 8aad66b..3a1b396 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/browsing/PatchedOpenInNewWindowAction.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/browsing/PatchedOpenInNewWindowAction.java
@@ -56,7 +56,7 @@
 				if (selectedElement instanceof IJavaElement)
 					return (IJavaElement)selectedElement;
 				if (!(selectedElement instanceof IJavaElement) && selectedElement instanceof IAdaptable)
-					return (IJavaElement)((IAdaptable)selectedElement).getAdapter(IJavaElement.class);
+					return ((IAdaptable)selectedElement).getAdapter(IJavaElement.class);
 				else if (selectedElement instanceof IWorkspace)
 						return JavaCore.create(((IWorkspace)selectedElement).getRoot());
 			}
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/dialogs/TextFieldNavigationHandler.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/dialogs/TextFieldNavigationHandler.java
index 7d26fcb..10675e3 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/dialogs/TextFieldNavigationHandler.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/dialogs/TextFieldNavigationHandler.java
@@ -378,8 +378,8 @@
 
 						fSubmissions= new ArrayList<Submission>();
 
-						ICommandService commandService= (ICommandService) PlatformUI.getWorkbench().getAdapter(ICommandService.class);
-						IBindingService bindingService= (IBindingService) PlatformUI.getWorkbench().getAdapter(IBindingService.class);
+						ICommandService commandService= PlatformUI.getWorkbench().getAdapter(ICommandService.class);
+						IBindingService bindingService= PlatformUI.getWorkbench().getAdapter(IBindingService.class);
 						if (commandService == null || bindingService == null)
 							return fSubmissions;
 
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/dnd/ResourceTransferDragAdapter.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/dnd/ResourceTransferDragAdapter.java
index 542db06..c420536 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/dnd/ResourceTransferDragAdapter.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/dnd/ResourceTransferDragAdapter.java
@@ -106,7 +106,7 @@
 				// don't use IAdaptable as for members only the top level type adapts
 				resource= ((IJavaElement) element).getResource();
 			} else if (element instanceof IAdaptable) {
-				resource= (IResource) ((IAdaptable) element).getAdapter(IResource.class);
+				resource= ((IAdaptable) element).getAdapter(IResource.class);
 			}
 			if (resource != null)
 				result.add(resource);
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/filters/NamePatternFilter.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/filters/NamePatternFilter.java
index 500e436..db2663c 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/filters/NamePatternFilter.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/filters/NamePatternFilter.java
@@ -75,7 +75,7 @@
 		} else if (element instanceof IWorkingSet) {
 			matchName= ((IWorkingSet) element).getLabel();
 		} else if (element instanceof IAdaptable) {
-			IWorkbenchAdapter wbadapter= (IWorkbenchAdapter) ((IAdaptable)element).getAdapter(IWorkbenchAdapter.class);
+			IWorkbenchAdapter wbadapter= ((IAdaptable)element).getAdapter(IWorkbenchAdapter.class);
 			if (wbadapter != null) {
 				matchName= wbadapter.getLabel(element);
 			}
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/fix/CleanUpSaveParticipantPreferenceConfiguration.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/fix/CleanUpSaveParticipantPreferenceConfiguration.java
index ad55621..66afb87 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/fix/CleanUpSaveParticipantPreferenceConfiguration.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/fix/CleanUpSaveParticipantPreferenceConfiguration.java
@@ -248,7 +248,7 @@
 
 		IJavaProject javaProject= null;
 		if (element != null) {
-			IProject project= (IProject)element.getAdapter(IProject.class);
+			IProject project= element.getAdapter(IProject.class);
 			if (project != null) {
 				IJavaProject jProject= JavaCore.create(project);
 				if (jProject != null && jProject.exists()) {
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/infoviews/AbstractInfoView.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/infoviews/AbstractInfoView.java
index b02e8f0..ea2280a 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/infoviews/AbstractInfoView.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/infoviews/AbstractInfoView.java
@@ -577,7 +577,7 @@
 
 		IJavaElement je= null;
 		if (element instanceof IAdaptable)
-			je= (IJavaElement)((IAdaptable)element).getAdapter(IJavaElement.class);
+			je= ((IAdaptable)element).getAdapter(IJavaElement.class);
 
 		if (je != null && je.exists())
 			return je;
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/jarpackager/JarPackageWizardPage.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/jarpackager/JarPackageWizardPage.java
index b0a68d8..0af5067 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/jarpackager/JarPackageWizardPage.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/jarpackager/JarPackageWizardPage.java
@@ -479,7 +479,7 @@
 			for (int index= 0; index < elements.length; index++) {
 				if (elements[index] instanceof IAdaptable) {
 					final IAdaptable adaptable= (IAdaptable) elements[index];
-					final IResource resource= (IResource) adaptable.getAdapter(IResource.class);
+					final IResource resource= adaptable.getAdapter(IResource.class);
 					if (resource != null)
 						set.add(resource.getProject());
 				}
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javadocexport/JavadocOptionsManager.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javadocexport/JavadocOptionsManager.java
index 4abc38a..726a2ad 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javadocexport/JavadocOptionsManager.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javadocexport/JavadocOptionsManager.java
@@ -1055,7 +1055,7 @@
 	private IJavaElement getSelectableJavaElement(Object obj) throws JavaModelException {
 		IJavaElement je= null;
 		if (obj instanceof IAdaptable) {
-			je= (IJavaElement) ((IAdaptable) obj).getAdapter(IJavaElement.class);
+			je= ((IAdaptable) obj).getAdapter(IJavaElement.class);
 		}
 
 		if (je != null) {
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/AddClassFileMarkerAction.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/AddClassFileMarkerAction.java
index 55eaaf1..1375fa3 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/AddClassFileMarkerAction.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/AddClassFileMarkerAction.java
@@ -47,7 +47,7 @@
 		IEditorInput input= getTextEditor().getEditorInput();
 		if (input instanceof IClassFileEditorInput) {
 			IClassFile c= ((IClassFileEditorInput) input).getClassFile();
-			IResourceLocator locator= (IResourceLocator) c.getAdapter(IResourceLocator.class);
+			IResourceLocator locator= c.getAdapter(IResourceLocator.class);
 			if (locator != null) {
 				try {
 					resource= locator.getContainingResource(c);
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/ClassFileDocumentProvider.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/ClassFileDocumentProvider.java
index b7f5085..7c6fcfc 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/ClassFileDocumentProvider.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/ClassFileDocumentProvider.java
@@ -225,7 +225,7 @@
 		IResource resource= null;
 		IClassFile classFile= classFileEditorInput.getClassFile();
 
-		IResourceLocator locator= (IResourceLocator) classFile.getAdapter(IResourceLocator.class);
+		IResourceLocator locator= classFile.getAdapter(IResourceLocator.class);
 		if (locator != null)
 			resource= locator.getContainingResource(classFile);
 
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/ClassFileMarkerRulerAction.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/ClassFileMarkerRulerAction.java
index 4deb0d2..ba01ce7 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/ClassFileMarkerRulerAction.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/ClassFileMarkerRulerAction.java
@@ -49,7 +49,7 @@
 		IEditorInput input= getTextEditor().getEditorInput();
 		if (input instanceof IClassFileEditorInput) {
 			IClassFile c= ((IClassFileEditorInput) input).getClassFile();
-			IResourceLocator locator= (IResourceLocator) c.getAdapter(IResourceLocator.class);
+			IResourceLocator locator= c.getAdapter(IResourceLocator.class);
 			if (locator != null) {
 				try {
 					resource= locator.getContainingResource(c);
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/ClipboardOperationAction.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/ClipboardOperationAction.java
index 1e0e7ff..b39569c 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/ClipboardOperationAction.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/ClipboardOperationAction.java
@@ -314,7 +314,7 @@
 				ITextEditorExtension3 extension= (ITextEditorExtension3)part;
 				return extension.getInsertMode() == ITextEditorExtension3.SMART_INSERT;
 			} else if (part != null && EditorUtility.isCompareEditorInput(part.getEditorInput())) {
-				ITextEditorExtension3 extension= (ITextEditorExtension3)part.getAdapter(ITextEditorExtension3.class);
+				ITextEditorExtension3 extension= part.getAdapter(ITextEditorExtension3.class);
 				if (extension != null)
 					return extension.getInsertMode() == ITextEditorExtension3.SMART_INSERT;
 			}
@@ -348,7 +348,7 @@
 
 		ITextEditor editor= getTextEditor();
 		if (fOperationTarget == null && editor!= null && fOperationCode != -1)
-			fOperationTarget= (ITextOperationTarget) editor.getAdapter(ITextOperationTarget.class);
+			fOperationTarget= editor.getAdapter(ITextOperationTarget.class);
 
 		boolean isEnabled= (fOperationTarget != null && fOperationTarget.canDoOperation(fOperationCode));
 		setEnabled(isEnabled);
@@ -526,7 +526,7 @@
 			ClipboardData importsData= (ClipboardData)clipboard.getContents(fgTransferInstance);
 			if (importsData != null && inputElement instanceof ICompilationUnit && !importsData.isFromSame(inputElement)) {
 				// combine operation and adding of imports
-				IRewriteTarget target= (IRewriteTarget)editor.getAdapter(IRewriteTarget.class);
+				IRewriteTarget target= editor.getAdapter(IRewriteTarget.class);
 				if (target != null) {
 					target.beginCompoundChange();
 				}
@@ -590,7 +590,7 @@
 		if (editor != null) {
 			IWorkbenchPartSite site= editor.getSite();
 			if (site != null)
-				return (IWorkbenchSiteProgressService) editor.getSite().getAdapter(IWorkbenchSiteProgressService.class);
+				return editor.getSite().getAdapter(IWorkbenchSiteProgressService.class);
 		}
 		return PlatformUI.getWorkbench().getProgressService();
 	}
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/CompoundEditExitStrategy.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/CompoundEditExitStrategy.java
index bd539f7..b1e3240 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/CompoundEditExitStrategy.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/CompoundEditExitStrategy.java
@@ -188,13 +188,13 @@
 			fWidgetEventSource.addFocusListener(fEventListener);
 		}
 
-		ICommandService commandService= (ICommandService)PlatformUI.getWorkbench().getAdapter(ICommandService.class);
+		ICommandService commandService= PlatformUI.getWorkbench().getAdapter(ICommandService.class);
 		if (commandService != null)
 			commandService.addExecutionListener(fEventListener);
 	}
 
 	private void removeListeners() {
-		ICommandService commandService = (ICommandService)PlatformUI.getWorkbench().getAdapter(ICommandService.class);
+		ICommandService commandService = PlatformUI.getWorkbench().getAdapter(ICommandService.class);
 		if (commandService != null)
 			commandService.removeExecutionListener(fEventListener);
 
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/EditorUtility.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/EditorUtility.java
index c73e275..7b5836e 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/EditorUtility.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/EditorUtility.java
@@ -208,7 +208,7 @@
 					if (isCompareEditorInput || !JavaModelUtil.isPrimary(cu)) {
 						IEditorInput editorInput;
 						if (isCompareEditorInput)
-							editorInput= (IEditorInput)editor.getAdapter(IEditorInput.class);
+							editorInput= editor.getAdapter(IEditorInput.class);
 						else
 							editorInput= editor.getEditorInput();
 						IJavaElement editorCU= getEditorInputJavaElement(editorInput, false);
@@ -451,7 +451,7 @@
 		if (cu != null)
 			return cu;
 
-		IJavaElement je= (IJavaElement)editorInput.getAdapter(IJavaElement.class);
+		IJavaElement je= editorInput.getAdapter(IJavaElement.class);
 		if (je instanceof ITypeRoot)
 			return (ITypeRoot)je;
 
@@ -704,7 +704,7 @@
 		 * If <code>saveUnknownEditors</code> is <code>true</code>, save all editors
 		 * whose implementation is probably not based on file buffers.
 		 */
-		IResource resource= (IResource) input.getAdapter(IResource.class);
+		IResource resource= input.getAdapter(IResource.class);
 		if (resource == null)
 			return saveUnknownEditors;
 
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/InternalClassFileEditorInput.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/InternalClassFileEditorInput.java
index da1062f..4bb1c62 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/InternalClassFileEditorInput.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/InternalClassFileEditorInput.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2011 IBM Corporation and others.
+ * Copyright (c) 2000, 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
@@ -116,14 +116,12 @@
 		return fClassFile.exists();
 	}
 
-	/*
-	 * @see IAdaptable#getAdapter(Class)
-	 */
-	public Object getAdapter(Class adapter) {
+	@SuppressWarnings("unchecked")
+	public <T> T getAdapter(Class<T> adapter) {
 		if (adapter == IClassFile.class)
-			return fClassFile;
+			return (T) fClassFile;
 		else if (adapter == IJavaElement.class)
-			return fClassFile;
+			return (T) fClassFile;
 		return null;
 	}
 
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/JarEntryEditorInput.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/JarEntryEditorInput.java
index b717686..bd3fca4 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/JarEntryEditorInput.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/JarEntryEditorInput.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2011 IBM Corporation and others.
+ * Copyright (c) 2000, 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
@@ -124,10 +124,7 @@
 		return true;
 	}
 
-	/*
-	 * @see IAdaptable#getAdapter(Class)
-	 */
-	public Object getAdapter(Class adapter) {
+	public <T> T getAdapter(Class<T> adapter) {
 		return null;
 	}
 
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/JavaEditorBreadcrumbActionGroup.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/JavaEditorBreadcrumbActionGroup.java
index 6ee99df..998613e 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/JavaEditorBreadcrumbActionGroup.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/JavaEditorBreadcrumbActionGroup.java
@@ -126,7 +126,7 @@
 	public JavaEditorBreadcrumbActionGroup(JavaEditor javaEditor, ISelectionProvider selectionProvider) {
 		super(new ActionGroup[] {
 				new BreadcrumbActionGroup(javaEditor),
-				new UndoRedoActionGroup(javaEditor.getEditorSite(), (IUndoContext) ResourcesPlugin.getWorkspace().getAdapter(IUndoContext.class), true),
+				new UndoRedoActionGroup(javaEditor.getEditorSite(), ResourcesPlugin.getWorkspace().getAdapter(IUndoContext.class), true),
 				new NewWizardsActionGroup(javaEditor.getEditorSite()),
 				new JavaSearchActionGroup(javaEditor.getEditorSite(), selectionProvider),
 				new NavigateActionGroup(javaEditor.getEditorSite(), selectionProvider),
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/JavaEditorErrorTickUpdater.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/JavaEditorErrorTickUpdater.java
index 2899b11..2346d9e 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/JavaEditorErrorTickUpdater.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/JavaEditorErrorTickUpdater.java
@@ -56,7 +56,7 @@
 
 		IEditorInput input= fJavaEditor.getEditorInput();
 		if (input != null) { // might run async, tests needed
-			IJavaElement jelement= (IJavaElement) input.getAdapter(IJavaElement.class);
+			IJavaElement jelement= input.getAdapter(IJavaElement.class);
 			if (jelement != null) {
 				IResource resource= jelement.getResource();
 				for (int i = 0; i < changedResources.length; i++) {
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/JavaElementImplementationHyperlink.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/JavaElementImplementationHyperlink.java
index 2b47b20..6172644 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/JavaElementImplementationHyperlink.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/JavaElementImplementationHyperlink.java
@@ -321,7 +321,7 @@
 	 * @param editor the editor for which to open the quick hierarchy
 	 */
 	private static void openQuickHierarchy(IEditorPart editor) {
-		ITextOperationTarget textOperationTarget= (ITextOperationTarget)editor.getAdapter(ITextOperationTarget.class);
+		ITextOperationTarget textOperationTarget= editor.getAdapter(ITextOperationTarget.class);
 		textOperationTarget.doOperation(JavaSourceViewer.SHOW_HIERARCHY);
 	}
 }
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/JavaOutlinePage.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/JavaOutlinePage.java
index e213648..18a6533 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/JavaOutlinePage.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/JavaOutlinePage.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2011 IBM Corporation and others.
+ * Copyright (c) 2000, 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
@@ -241,12 +241,10 @@
 					return JavaEditorMessages.JavaOutlinePage_error_NoTopLevelType;
 				}
 
-				/*
-				 * @see org.eclipse.core.runtime.IAdaptable#getAdapter(Class)
-				 */
-				public Object getAdapter(Class clas) {
+				@SuppressWarnings("unchecked")
+				public <T> T getAdapter(Class<T> clas) {
 					if (clas == IWorkbenchAdapter.class)
-						return this;
+						return (T) this;
 					return null;
 				}
 			}
@@ -1148,15 +1146,13 @@
 		return fActions.get(actionID);
 	}
 
-	/*
-	 * @see org.eclipse.core.runtime.IAdaptable#getAdapter(java.lang.Class)
-	 */
-	public Object getAdapter(Class key) {
+	@SuppressWarnings("unchecked")
+	public <T> T getAdapter(Class<T> key) {
 		if (key == IShowInSource.class) {
-			return getShowInSource();
+			return (T) getShowInSource();
 		}
 		if (key == IShowInTargetList.class) {
-			return new IShowInTargetList() {
+			return (T) new IShowInTargetList() {
 				public String[] getShowInTargetIds() {
 					return new String[] { JavaUI.ID_PACKAGES };
 				}
@@ -1164,7 +1160,7 @@
 			};
 		}
 		if (key == IShowInTarget.class) {
-			return getShowInTarget();
+			return (T) getShowInTarget();
 		}
 
 		return null;
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/JavaSelectAnnotationRulerAction.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/JavaSelectAnnotationRulerAction.java
index 9fd6865..3bfbd68 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/JavaSelectAnnotationRulerAction.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/JavaSelectAnnotationRulerAction.java
@@ -91,7 +91,7 @@
 		}
 
 		if (fHasCorrection) {
-			ITextOperationTarget operation= (ITextOperationTarget) fTextEditor.getAdapter(ITextOperationTarget.class);
+			ITextOperationTarget operation= fTextEditor.getAdapter(ITextOperationTarget.class);
 			final int opCode= ISourceViewer.QUICK_ASSIST;
 			if (operation != null && operation.canDoOperation(opCode)) {
 				fTextEditor.selectAndReveal(fPosition.getOffset(), fPosition.getLength());
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/JavaSelectMarkerRulerAction2.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/JavaSelectMarkerRulerAction2.java
index 7e8f2c3..fe4fd43 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/JavaSelectMarkerRulerAction2.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/JavaSelectMarkerRulerAction2.java
@@ -68,7 +68,7 @@
 			return;
 
 		if (isQuickFixTarget(annotation)) {
-			ITextOperationTarget operation= (ITextOperationTarget) getTextEditor().getAdapter(ITextOperationTarget.class);
+			ITextOperationTarget operation= getTextEditor().getAdapter(ITextOperationTarget.class);
 			final int opCode= ISourceViewer.QUICK_ASSIST;
 			if (operation != null && operation.canDoOperation(opCode)) {
 				getTextEditor().selectAndReveal(position.getOffset(), position.getLength());
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/NLSKeyHyperlink.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/NLSKeyHyperlink.java
index 64f099a..879c75e 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/NLSKeyHyperlink.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/NLSKeyHyperlink.java
@@ -137,7 +137,7 @@
 		if (editor instanceof ITextEditor)
 			document= ((ITextEditor)editor).getDocumentProvider().getDocument(editorInput);
 		else {
-			IFile file= (IFile)editorInput.getAdapter(IFile.class);
+			IFile file= editorInput.getAdapter(IFile.class);
 			if (file != null) {
 				IPath path= file.getFullPath();
 				ITextFileBufferManager manager= FileBuffers.getTextFileBufferManager();
@@ -215,7 +215,7 @@
 	private static void showErrorInStatusLine(IEditorPart editor, final String message) {
 		final Display display= editor.getSite().getShell().getDisplay();
 		display.beep();
-		final IEditorStatusLine statusLine= (IEditorStatusLine)editor.getAdapter(IEditorStatusLine.class);
+		final IEditorStatusLine statusLine= editor.getAdapter(IEditorStatusLine.class);
 		if (statusLine != null) {
 			display.asyncExec(new Runnable() {
 				/*
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/SpecificContentAssistAction.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/SpecificContentAssistAction.java
index d8c2620..b2d8b7b 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/SpecificContentAssistAction.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/SpecificContentAssistAction.java
@@ -105,7 +105,7 @@
 		if (editor == null)
 			return false;
 		
-		ITextOperationTarget target= (ITextOperationTarget) editor.getAdapter(ITextOperationTarget.class);
+		ITextOperationTarget target= editor.getAdapter(ITextOperationTarget.class);
 		if (target == null || ! target.canDoOperation(ISourceViewer.CONTENTASSIST_PROPOSALS))
 			return false;
 		
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/SpecificContentAssistExecutor.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/SpecificContentAssistExecutor.java
index 0b567af..2d45532 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/SpecificContentAssistExecutor.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/SpecificContentAssistExecutor.java
@@ -70,7 +70,7 @@
 		}
 
 		try {
-			ITextOperationTarget target= (ITextOperationTarget) editor.getAdapter(ITextOperationTarget.class);
+			ITextOperationTarget target= editor.getAdapter(ITextOperationTarget.class);
 			if (target != null && target.canDoOperation(ISourceViewer.CONTENTASSIST_PROPOSALS))
 				target.doOperation(ISourceViewer.CONTENTASSIST_PROPOSALS);
 		} finally {
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/ToggleCommentAction.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/ToggleCommentAction.java
index 38c312b..d13adb6 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/ToggleCommentAction.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/ToggleCommentAction.java
@@ -278,7 +278,7 @@
 
 		ITextEditor editor= getTextEditor();
 		if (fOperationTarget == null && editor != null)
-			fOperationTarget= (ITextOperationTarget) editor.getAdapter(ITextOperationTarget.class);
+			fOperationTarget= editor.getAdapter(ITextOperationTarget.class);
 
 		boolean isEnabled= (fOperationTarget != null && fOperationTarget.canDoOperation(ITextOperationTarget.PREFIX) && fOperationTarget.canDoOperation(ITextOperationTarget.STRIP_PREFIX));
 		setEnabled(isEnabled);
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/model/JavaModelAdapterFactory.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/model/JavaModelAdapterFactory.java
index e38d291..3200256 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/model/JavaModelAdapterFactory.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/model/JavaModelAdapterFactory.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
+ * Copyright (c) 2005, 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
@@ -32,20 +32,21 @@
 	/**
 	 * {@inheritDoc}
 	 */
-	public Object getAdapter(final Object adaptable, final Class adapter) {
+	@SuppressWarnings("unchecked")
+	public <T> T getAdapter(Object adaptable, Class<T> adapter) {
 		if (adaptable instanceof JavaModelProvider) {
 			if (adapter == IResourceMappingMerger.class)
-				return new JavaModelMerger((ModelProvider) adaptable);
+				return (T) new JavaModelMerger((ModelProvider) adaptable);
 			else if (adapter == ISynchronizationCompareAdapter.class)
-				return new JavaSynchronizationCompareAdapter();
+				return (T) new JavaSynchronizationCompareAdapter();
 		} else if (adaptable instanceof RefactoringHistory) {
 			if (adapter == ResourceMapping.class)
-				return new JavaRefactoringHistoryResourceMapping((RefactoringHistory) adaptable);
+				return (T) new JavaRefactoringHistoryResourceMapping((RefactoringHistory) adaptable);
 			else if (adapter == IResource.class)
-				return new JavaRefactoringHistoryResourceMapping((RefactoringHistory) adaptable).getResource();
+				return (T) new JavaRefactoringHistoryResourceMapping((RefactoringHistory) adaptable).getResource();
 		} else if (adaptable instanceof RefactoringDescriptorProxy) {
 			if (adapter == ResourceMapping.class)
-				return new JavaRefactoringDescriptorResourceMapping((RefactoringDescriptorProxy) adaptable);
+				return (T) new JavaRefactoringDescriptorResourceMapping((RefactoringDescriptorProxy) adaptable);
 		}
 		return null;
 	}
@@ -53,7 +54,7 @@
 	/**
 	 * {@inheritDoc}
 	 */
-	public Class[] getAdapterList() {
+	public Class<?>[] getAdapterList() {
 		return new Class[] { ResourceMapping.class, ISynchronizationCompareAdapter.class, IResource.class};
 	}
 }
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/model/JavaSynchronizationCompareAdapter.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/model/JavaSynchronizationCompareAdapter.java
index 77a91a9..8cf2894 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/model/JavaSynchronizationCompareAdapter.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/model/JavaSynchronizationCompareAdapter.java
@@ -158,7 +158,7 @@
 			final Object object= mappings[index].getModelObject();
 			if (object instanceof IJavaElement) {
 				final IJavaElement element= (IJavaElement) object;
-				final IResource resource= (IResource) element.getAdapter(IResource.class);
+				final IResource resource= element.getAdapter(IResource.class);
 				if (resource != null) {
 					final IMemento child= memento.createChild(RESOURCES);
 					child.putInteger(RESOURCE_TYPE, resource.getType());
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/navigator/JavaNavigatorContentProvider.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/navigator/JavaNavigatorContentProvider.java
index 2a6fe64..4704e91 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/navigator/JavaNavigatorContentProvider.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/navigator/JavaNavigatorContentProvider.java
@@ -306,7 +306,7 @@
 			if (element instanceof IResource) {
 				resource= (IResource)element;
 			} else if (element instanceof IAdaptable) {
-				resource= (IResource)((IAdaptable)element).getAdapter(IResource.class);
+				resource= ((IAdaptable)element).getAdapter(IResource.class);
 			}
 			if (resource != null) {
 				int i= elementList.indexOf(resource);
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/packageview/ClassPathContainer.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/packageview/ClassPathContainer.java
index fd942ee..5c10d16 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/packageview/ClassPathContainer.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/packageview/ClassPathContainer.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2011 IBM Corporation and others.
+ * Copyright (c) 2000, 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
@@ -67,9 +67,10 @@
 			return fParent;
 		}
 
-		public Object getAdapter(Class adapter) {
+		@SuppressWarnings("unchecked")
+		public <T> T getAdapter(Class<T> adapter) {
 			if (adapter == IWorkbenchAdapter.class)
-				return this;
+				return (T) this;
 			return null;
 		}
 
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/packageview/FileTransferDragAdapter.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/packageview/FileTransferDragAdapter.java
index a877088..b17fcfa 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/packageview/FileTransferDragAdapter.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/packageview/FileTransferDragAdapter.java
@@ -225,7 +225,7 @@
 			if (o instanceof IResource) {
 				r= (IResource)o;
 			} else if (o instanceof IAdaptable) {
-				r= (IResource)((IAdaptable)o).getAdapter(IResource.class);
+				r= ((IAdaptable)o).getAdapter(IResource.class);
 			}
 			// Only add resource for which we have a location
 			// in the local file system.
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/packageview/PackageExplorerPart.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/packageview/PackageExplorerPart.java
index dd6b1c6..1369131 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/packageview/PackageExplorerPart.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/packageview/PackageExplorerPart.java
@@ -895,11 +895,11 @@
 			}
 		} else if (original instanceof IAdaptable) {
 			IAdaptable adaptable= (IAdaptable)original;
-			IJavaElement je= (IJavaElement) adaptable.getAdapter(IJavaElement.class);
+			IJavaElement je= adaptable.getAdapter(IJavaElement.class);
 			if (je != null && je.exists())
 				return je;
 
-			IResource r= (IResource) adaptable.getAdapter(IResource.class);
+			IResource r= adaptable.getAdapter(IResource.class);
 			if (r != null) {
 				je= JavaCore.create(r);
 				if (je != null && je.exists())
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/packageview/PackageFragmentRootContainer.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/packageview/PackageFragmentRootContainer.java
index 8cf2769..ec25e2e 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/packageview/PackageFragmentRootContainer.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/packageview/PackageFragmentRootContainer.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 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
@@ -70,9 +70,10 @@
 		fProject= project;
 	}
 
-	public Object getAdapter(Class adapter) {
+	@SuppressWarnings("unchecked")
+	public <T> T getAdapter(Class<T> adapter) {
 		if (adapter == IWorkbenchAdapter.class)
-			return fgAdapterInstance;
+			return (T) fgAdapterInstance;
 		return null;
 	}
 
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/packageview/WorkingSetAwareContentProvider.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/packageview/WorkingSetAwareContentProvider.java
index 1830ba8..317e010 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/packageview/WorkingSetAwareContentProvider.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/packageview/WorkingSetAwareContentProvider.java
@@ -113,7 +113,7 @@
 					result.add(elem);
 				}
 			} else {
-				IProject project= (IProject) element.getAdapter(IProject.class);
+				IProject project= element.getAdapter(IProject.class);
 				if (project != null) {
 					processResource(project, result);
 				}
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/ClasspathContainerPreferencePage.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/ClasspathContainerPreferencePage.java
index c9a30ae..d33b423 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/ClasspathContainerPreferencePage.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/ClasspathContainerPreferencePage.java
@@ -61,7 +61,7 @@
 		if (element instanceof ClassPathContainer) {
 			container= (ClassPathContainer) element;
 		} else {
-			container= (ClassPathContainer) element.getAdapter(ClassPathContainer.class);
+			container= element.getAdapter(ClassPathContainer.class);
 		}
 		fJavaProject= container.getJavaProject();
 		fEntry= container.getClasspathEntry();
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/CodeAssistAdvancedConfigurationBlock.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/CodeAssistAdvancedConfigurationBlock.java
index 16c5fc5..f4295ac 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/CodeAssistAdvancedConfigurationBlock.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/CodeAssistAdvancedConfigurationBlock.java
@@ -272,7 +272,7 @@
 
 		ModelElement(CompletionProposalCategory category, PreferenceModel model) {
 			fCategory= category;
-			ICommandService commandSvc= (ICommandService) PlatformUI.getWorkbench().getAdapter(ICommandService.class);
+			ICommandService commandSvc= PlatformUI.getWorkbench().getAdapter(ICommandService.class);
 			fCommand= commandSvc.getCommand("org.eclipse.jdt.ui.specific_content_assist.command"); //$NON-NLS-1$
 			IParameter type;
 			try {
@@ -397,7 +397,7 @@
 	}
 
 	private void createDefaultLabel(Composite composite, int h_span) {
-	    final ICommandService commandSvc= (ICommandService) PlatformUI.getWorkbench().getAdapter(ICommandService.class);
+	    final ICommandService commandSvc= PlatformUI.getWorkbench().getAdapter(ICommandService.class);
 		final Command command= commandSvc.getCommand(ITextEditorActionDefinitionIds.CONTENT_ASSIST_PROPOSALS);
 		ParameterizedCommand pCmd= new ParameterizedCommand(command, null);
 		String key= getKeyboardShortcut(pCmd);
@@ -753,7 +753,7 @@
 	}
 
 	private static String getKeyboardShortcut(ParameterizedCommand command) {
-		IBindingService bindingService= (IBindingService) PlatformUI.getWorkbench().getAdapter(IBindingService.class);
+		IBindingService bindingService= PlatformUI.getWorkbench().getAdapter(IBindingService.class);
 		fgLocalBindingManager.setBindings(bindingService.getBindings());
 		try {
 			Scheme activeScheme= bindingService.getActiveScheme();
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/EditTemplateDialog.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/EditTemplateDialog.java
index 3794cfc..a91d88d 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/EditTemplateDialog.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/EditTemplateDialog.java
@@ -483,7 +483,7 @@
 
 	private void initializeActions() {
 		final ArrayList<IHandlerActivation> handlerActivations= new ArrayList<IHandlerActivation>(3);
-		final IHandlerService handlerService= (IHandlerService) PlatformUI.getWorkbench().getAdapter(IHandlerService.class);
+		final IHandlerService handlerService= PlatformUI.getWorkbench().getAdapter(IHandlerService.class);
 		final Expression expression= new ActiveShellExpression(fPatternEditor.getControl().getShell());
 
 		getShell().addDisposeListener(new DisposeListener() {
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/JavaCompilerPropertyPage.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/JavaCompilerPropertyPage.java
index 16da5a6..29abe8b 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/JavaCompilerPropertyPage.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/JavaCompilerPropertyPage.java
@@ -54,7 +54,7 @@
 	@Override
 	public void createControl(Composite parent) {
 		IAdaptable adaptable= getElement();
-		IJavaElement elem= (IJavaElement) adaptable.getAdapter(IJavaElement.class);
+		IJavaElement elem= adaptable.getAdapter(IJavaElement.class);
 		try {
 			if (elem instanceof IPackageFragmentRoot) {
 				fProject= elem.getJavaProject();
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/JavadocConfigurationPropertyPage.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/JavadocConfigurationPropertyPage.java
index 9348506..95803c7 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/JavadocConfigurationPropertyPage.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/JavadocConfigurationPropertyPage.java
@@ -205,10 +205,10 @@
 
 	private IJavaElement getJavaElement() {
 		IAdaptable adaptable= getElement();
-		IJavaElement elem= (IJavaElement) adaptable.getAdapter(IJavaElement.class);
+		IJavaElement elem= adaptable.getAdapter(IJavaElement.class);
 		if (elem == null) {
 
-			IResource resource= (IResource) adaptable.getAdapter(IResource.class);
+			IResource resource= adaptable.getAdapter(IResource.class);
 			//special case when the .jar is a file
 			try {
 				if (resource instanceof IFile && ArchiveFileFilter.isArchivePath(resource.getFullPath(), true)) {
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/NativeLibrariesPropertyPage.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/NativeLibrariesPropertyPage.java
index 8e0c83e..88db0ff 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/NativeLibrariesPropertyPage.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/NativeLibrariesPropertyPage.java
@@ -255,10 +255,10 @@
 
 	private IJavaElement getJavaElement() {
 		IAdaptable adaptable= getElement();
-		IJavaElement elem= (IJavaElement) adaptable.getAdapter(IJavaElement.class);
+		IJavaElement elem= adaptable.getAdapter(IJavaElement.class);
 		if (elem == null) {
 
-			IResource resource= (IResource) adaptable.getAdapter(IResource.class);
+			IResource resource= adaptable.getAdapter(IResource.class);
 			//special case when the .jar is a file
 			try {
 				if (resource instanceof IFile && ArchiveFileFilter.isArchivePath(resource.getFullPath(), false)) {
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/SourceAttachmentPropertyPage.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/SourceAttachmentPropertyPage.java
index 8c6f042..c3260f2 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/SourceAttachmentPropertyPage.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/SourceAttachmentPropertyPage.java
@@ -215,12 +215,12 @@
 	private IPackageFragmentRoot getJARPackageFragmentRoot() throws CoreException {
 		// try to find it as Java element (needed for external jars)
 		IAdaptable adaptable= getElement();
-		IJavaElement elem= (IJavaElement) adaptable.getAdapter(IJavaElement.class);
+		IJavaElement elem= adaptable.getAdapter(IJavaElement.class);
 		if (elem instanceof IPackageFragmentRoot) {
 			return (IPackageFragmentRoot) elem;
 		}
 		// not on classpath or not in a java project
-		IResource resource= (IResource) adaptable.getAdapter(IResource.class);
+		IResource resource= adaptable.getAdapter(IResource.class);
 		if (resource instanceof IFile) {
 			IProject proj= resource.getProject();
 			if (proj.hasNature(JavaCore.NATURE_ID)) {
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/propertiesfileeditor/PropertiesCorrectionProcessor.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/propertiesfileeditor/PropertiesCorrectionProcessor.java
index 1371658..05ea6b8 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/propertiesfileeditor/PropertiesCorrectionProcessor.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/propertiesfileeditor/PropertiesCorrectionProcessor.java
@@ -139,7 +139,7 @@
 
 	private PropertiesAssistContext createAssistContext(IQuickAssistInvocationContext invocationContext) {
 		IEditorPart editorPart= fAssistant.getEditor();
-		IFile file= (IFile) editorPart.getEditorInput().getAdapter(IFile.class);
+		IFile file= editorPart.getEditorInput().getAdapter(IFile.class);
 		ISourceViewer sourceViewer= invocationContext.getSourceViewer();
 		IType accessorType= ((PropertiesFileEditor) editorPart).getAccessorType();
 		return new PropertiesAssistContext(sourceViewer, invocationContext.getOffset(), invocationContext.getLength(), file, sourceViewer.getDocument(), accessorType);
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/propertiesfileeditor/PropertiesFileEditor.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/propertiesfileeditor/PropertiesFileEditor.java
index d9967d4..99a1ee8 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/propertiesfileeditor/PropertiesFileEditor.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/propertiesfileeditor/PropertiesFileEditor.java
@@ -120,7 +120,7 @@
 		if (fJob != null)
 			fJob.cancel();
 
-		fFile= (IFile) getEditorInput().getAdapter(IFile.class);
+		fFile= getEditorInput().getAdapter(IFile.class);
 		if (fFile == null)
 			return;
 
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/propertiesfileeditor/PropertyKeyHyperlink.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/propertiesfileeditor/PropertyKeyHyperlink.java
index 398a3f0..761f115 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/propertiesfileeditor/PropertyKeyHyperlink.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/propertiesfileeditor/PropertyKeyHyperlink.java
@@ -117,13 +117,11 @@
 			this.showLineNumber= showLineNumber;
 		}
 
-		/*
-		 * @see org.eclipse.core.runtime.IAdaptable#getAdapter(java.lang.Class)
-		 */
+		@SuppressWarnings("unchecked")
 		@Override
-		public Object getAdapter(Class adapter) {
+		public <T> T getAdapter(Class<T> adapter) {
 			if (adapter == IWorkbenchAdapter.class)
-				return this;
+				return (T) this;
 			else
 				return super.getAdapter(adapter);
 		}
@@ -137,7 +135,7 @@
 		 * @see org.eclipse.ui.model.IWorkbenchAdapter#getImageDescriptor(java.lang.Object)
 		 */
 		public ImageDescriptor getImageDescriptor(Object object) {
-			IWorkbenchAdapter wbAdapter= (IWorkbenchAdapter) resource.getAdapter(IWorkbenchAdapter.class);
+			IWorkbenchAdapter wbAdapter= resource.getAdapter(IWorkbenchAdapter.class);
 			if (wbAdapter != null)
 				return wbAdapter.getImageDescriptor(resource);
 			return null;
@@ -368,7 +366,7 @@
 
 			String message= null;
 
-			IWorkbenchAdapter wbAdapter= (IWorkbenchAdapter)((IAdaptable)keyReference).getAdapter(IWorkbenchAdapter.class);
+			IWorkbenchAdapter wbAdapter= ((IAdaptable)keyReference).getAdapter(IWorkbenchAdapter.class);
 			if (wbAdapter != null)
 				message= Messages.format(PropertiesFileEditorMessages.OpenAction_error_messageArgs,
 						new String[] { wbAdapter.getLabel(keyReference), x.getLocalizedMessage() } );
@@ -392,7 +390,7 @@
 
 	private void showErrorInStatusLine(final String message) {
 		fShell.getDisplay().beep();
-		final IEditorStatusLine statusLine= (IEditorStatusLine)fEditor.getAdapter(IEditorStatusLine.class);
+		final IEditorStatusLine statusLine= fEditor.getAdapter(IEditorStatusLine.class);
 		if (statusLine != null) {
 			fShell.getDisplay().asyncExec(new Runnable() {
 				/*
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/propertiesfileeditor/PropertyKeyHyperlinkDetector.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/propertiesfileeditor/PropertyKeyHyperlinkDetector.java
index 1a221bf..1d2989b 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/propertiesfileeditor/PropertyKeyHyperlinkDetector.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/propertiesfileeditor/PropertyKeyHyperlinkDetector.java
@@ -170,7 +170,7 @@
 	private void showErrorInStatusLine(final String message, ITextEditor textEditor) {
 		Display display= textEditor.getEditorSite().getShell().getDisplay();
 		display.beep();
-		final IEditorStatusLine statusLine= (IEditorStatusLine)textEditor.getAdapter(IEditorStatusLine.class);
+		final IEditorStatusLine statusLine= textEditor.getAdapter(IEditorStatusLine.class);
 		if (statusLine != null) {
 			display.asyncExec(new Runnable() {
 				/*
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/search/AbstractJavaSearchResult.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/search/AbstractJavaSearchResult.java
index 4b59602..b489ef9 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/search/AbstractJavaSearchResult.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/search/AbstractJavaSearchResult.java
@@ -52,12 +52,12 @@
 	}
 
 	private Match[] computeContainedMatches(IAdaptable adaptable) {
-		IJavaElement javaElement= (IJavaElement) adaptable.getAdapter(IJavaElement.class);
+		IJavaElement javaElement= adaptable.getAdapter(IJavaElement.class);
 		Set<Match> matches= new HashSet<Match>();
 		if (javaElement != null) {
 			collectMatches(matches, javaElement);
 		}
-		IFile file= (IFile) adaptable.getAdapter(IFile.class);
+		IFile file= adaptable.getAdapter(IFile.class);
 		if (file != null) {
 			collectMatches(matches, file);
 		}
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/search/JavaSearchPage.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/search/JavaSearchPage.java
index eb27a4e..80a777b 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/search/JavaSearchPage.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/search/JavaSearchPage.java
@@ -322,7 +322,7 @@
 			case ISearchPageContainer.SELECTION_SCOPE:
 				IJavaElement[] javaElements= new IJavaElement[0];
 				if (getContainer().getActiveEditorInput() != null) {
-					IFile file= (IFile)getContainer().getActiveEditorInput().getAdapter(IFile.class);
+					IFile file= getContainer().getActiveEditorInput().getAdapter(IFile.class);
 					if (file != null && file.exists()) {
 						IJavaElement javaElement= JavaCore.create(file);
 						if (javaElement != null)
@@ -964,13 +964,13 @@
 			LogicalPackage lp= (LogicalPackage)o;
 			return new SearchPatternData(PACKAGE, REFERENCES, 0, fIsCaseSensitive, lp.getElementName(), null, getLastIncludeMask());
 		} else if (o instanceof IAdaptable) {
-			IJavaElement element= (IJavaElement) ((IAdaptable) o).getAdapter(IJavaElement.class);
+			IJavaElement element= ((IAdaptable) o).getAdapter(IJavaElement.class);
 			if (element != null) {
 				res= determineInitValuesFrom(element);
 			}
 		}
 		if (res == null && o instanceof IAdaptable) {
-			IWorkbenchAdapter adapter= (IWorkbenchAdapter)((IAdaptable)o).getAdapter(IWorkbenchAdapter.class);
+			IWorkbenchAdapter adapter= ((IAdaptable)o).getAdapter(IWorkbenchAdapter.class);
 			if (adapter != null) {
 				return new SearchPatternData(TYPE, REFERENCES, 0, fIsCaseSensitive, adapter.getLabel(o), null, getLastIncludeMask());
 			}
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/search/JavaSearchResultPage.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/search/JavaSearchResultPage.java
index b961391..2e8376b 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/search/JavaSearchResultPage.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/search/JavaSearchResultPage.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2011 IBM Corporation and others.
+ * Copyright (c) 2000, 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
@@ -548,13 +548,10 @@
 		return count;
 	}
 
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.core.runtime.IAdaptable#getAdapter(java.lang.Class)
-	 */
-	public Object getAdapter(Class adapter) {
+	@SuppressWarnings("unchecked")
+	public <T> T getAdapter(Class<T> adapter) {
 		if (IShowInTargetList.class.equals(adapter)) {
-			return SHOW_IN_TARGET_LIST;
+			return (T) SHOW_IN_TARGET_LIST;
 		}
 		return null;
 	}
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/search/JavaSearchScopeFactory.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/search/JavaSearchScopeFactory.java
index 00d06fe..c15bdb7 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/search/JavaSearchScopeFactory.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/search/JavaSearchScopeFactory.java
@@ -319,7 +319,7 @@
 				IWorkingSet ws= (IWorkingSet)selectedElement;
 				addJavaElements(result, ws);
 			} else if (selectedElement instanceof IAdaptable) {
-				IResource resource= (IResource) ((IAdaptable) selectedElement).getAdapter(IResource.class);
+				IResource resource= ((IAdaptable) selectedElement).getAdapter(IResource.class);
 				if (resource != null)
 					addJavaElements(result, resource);
 			}
@@ -355,7 +355,7 @@
 	}
 
 	private void addJavaElements(Set<IJavaElement> javaElements, IResource resource) {
-		IJavaElement javaElement= (IJavaElement)resource.getAdapter(IJavaElement.class);
+		IJavaElement javaElement= resource.getAdapter(IJavaElement.class);
 		if (javaElement == null)
 			// not a Java resource
 			return;
@@ -392,12 +392,12 @@
 
 		IAdaptable[] elements= workingSet.getElements();
 		for (int i= 0; i < elements.length; i++) {
-			IJavaElement javaElement=(IJavaElement) elements[i].getAdapter(IJavaElement.class);
+			IJavaElement javaElement=elements[i].getAdapter(IJavaElement.class);
 			if (javaElement != null) {
 				addJavaElements(javaElements, javaElement);
 				continue;
 			}
-			IResource resource= (IResource)elements[i].getAdapter(IResource.class);
+			IResource resource= elements[i].getAdapter(IResource.class);
 			if (resource != null) {
 				addJavaElements(javaElements, resource);
 			}
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/CorrectionCommandHandler.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/CorrectionCommandHandler.java
index 90bcfd6..dbd5424 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/CorrectionCommandHandler.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/CorrectionCommandHandler.java
@@ -163,7 +163,7 @@
 
 	public static String getShortCutString(String proposalId) {
 		if (proposalId != null) {
-			IBindingService bindingService= (IBindingService) PlatformUI.getWorkbench().getAdapter(IBindingService.class);
+			IBindingService bindingService= PlatformUI.getWorkbench().getAdapter(IBindingService.class);
 			if (bindingService != null) {
 				TriggerSequence[] activeBindingsFor= bindingService.getActiveBindingsFor(proposalId);
 				if (activeBindingsFor.length > 0) {
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/CorrectionCommandInstaller.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/CorrectionCommandInstaller.java
index 60e5b59..237ebbf 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/CorrectionCommandInstaller.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/CorrectionCommandInstaller.java
@@ -38,8 +38,8 @@
 
 	public void registerCommands(CompilationUnitEditor editor) {
 		IWorkbench workbench= PlatformUI.getWorkbench();
-		ICommandService commandService= (ICommandService) workbench.getAdapter(ICommandService.class);
-		IHandlerService handlerService= (IHandlerService) workbench.getAdapter(IHandlerService.class);
+		ICommandService commandService= workbench.getAdapter(ICommandService.class);
+		IHandlerService handlerService= workbench.getAdapter(IHandlerService.class);
 		if (commandService == null || handlerService == null) {
 			return;
 		}
@@ -62,7 +62,7 @@
 	}
 
 	public void deregisterCommands() {
-		IHandlerService handlerService= (IHandlerService) PlatformUI.getWorkbench().getAdapter(IHandlerService.class);
+		IHandlerService handlerService= PlatformUI.getWorkbench().getAdapter(IHandlerService.class);
 		if (handlerService != null && fCorrectionHandlerActivations != null) {
 			handlerService.deactivateHandlers(fCorrectionHandlerActivations);
 			fCorrectionHandlerActivations= null;
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/JavaCorrectionProcessor.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/JavaCorrectionProcessor.java
index 43da413..1ab93fb 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/JavaCorrectionProcessor.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/JavaCorrectionProcessor.java
@@ -208,7 +208,7 @@
 			}
 
 			private String getQuickAssistBinding() {
-				final IBindingService bindingSvc= (IBindingService) PlatformUI.getWorkbench().getAdapter(IBindingService.class);
+				final IBindingService bindingSvc= PlatformUI.getWorkbench().getAdapter(IBindingService.class);
 				return bindingSvc.getBestActiveBindingFormattedFor(ITextEditorActionDefinitionIds.QUICK_ASSIST);
 			}
 		});
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/java/ContentAssistProcessor.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/java/ContentAssistProcessor.java
index 1b40f9d..bdfd0d9 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/java/ContentAssistProcessor.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/java/ContentAssistProcessor.java
@@ -661,7 +661,7 @@
 	}
 
 	private KeySequence getIterationBinding() {
-	    final IBindingService bindingSvc= (IBindingService) PlatformUI.getWorkbench().getAdapter(IBindingService.class);
+	    final IBindingService bindingSvc= PlatformUI.getWorkbench().getAdapter(IBindingService.class);
 		TriggerSequence binding= bindingSvc.getBestActiveBindingFor(ITextEditorActionDefinitionIds.CONTENT_ASSIST_PROPOSALS);
 		if (binding instanceof KeySequence)
 			return (KeySequence) binding;
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/java/JavaAutoIndentStrategy.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/java/JavaAutoIndentStrategy.java
index 2ddf433..3351030 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/java/JavaAutoIndentStrategy.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/java/JavaAutoIndentStrategy.java
@@ -1303,7 +1303,7 @@
 				ITextEditorExtension3 extension= (ITextEditorExtension3) part;
 				return extension.getInsertMode() == ITextEditorExtension3.SMART_INSERT;
 			} else if (part != null && EditorUtility.isCompareEditorInput(part.getEditorInput())) {
-				ITextEditorExtension3 extension = (ITextEditorExtension3)part.getAdapter(ITextEditorExtension3.class);
+				ITextEditorExtension3 extension = part.getAdapter(ITextEditorExtension3.class);
 				if (extension != null)
 					return extension.getInsertMode() == ITextEditorExtension3.SMART_INSERT;
 			}
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/java/JavaCompletionProposalComputer.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/java/JavaCompletionProposalComputer.java
index fbad486..c2b65ef 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/java/JavaCompletionProposalComputer.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/java/JavaCompletionProposalComputer.java
@@ -243,7 +243,7 @@
 				collector.setReplacementLength(selection.y);
 			unit.codeComplete(offset, collector, fTimeoutProgressMonitor);
 		} catch (OperationCanceledException x) {
-			IBindingService bindingSvc= (IBindingService)PlatformUI.getWorkbench().getAdapter(IBindingService.class);
+			IBindingService bindingSvc= PlatformUI.getWorkbench().getAdapter(IBindingService.class);
 			String keyBinding= bindingSvc.getBestActiveBindingFormattedFor(IWorkbenchCommandConstants.EDIT_CONTENT_ASSIST);
 			fErrorMessage= Messages.format(JavaTextMessages.CompletionProcessor_error_javaCompletion_took_too_long_message, keyBinding);
 		} catch (JavaModelException x) {
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/javadoc/JavaDocAutoIndentStrategy.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/javadoc/JavaDocAutoIndentStrategy.java
index c23f9b8..0f877db 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/javadoc/JavaDocAutoIndentStrategy.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/javadoc/JavaDocAutoIndentStrategy.java
@@ -376,7 +376,7 @@
 				ITextEditorExtension3 extension= (ITextEditorExtension3) part;
 				return extension.getInsertMode() == ITextEditorExtension3.SMART_INSERT;
 			} else if (EditorUtility.isCompareEditorInput(part.getEditorInput())) {
-				ITextEditorExtension3 extension= (ITextEditorExtension3)part.getAdapter(ITextEditorExtension3.class);
+				ITextEditorExtension3 extension= part.getAdapter(ITextEditorExtension3.class);
 				if (extension != null)
 					return extension.getInsertMode() == ITextEditorExtension3.SMART_INSERT;
 			}
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/typehierarchy/TypeHierarchyLifeCycle.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/typehierarchy/TypeHierarchyLifeCycle.java
index 32c001d..204ec1c 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/typehierarchy/TypeHierarchyLifeCycle.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/typehierarchy/TypeHierarchyLifeCycle.java
@@ -237,7 +237,7 @@
 						}
 					};
 					fRefreshHierarchyJob.setUser(true);
-					IWorkbenchSiteProgressService progressService= (IWorkbenchSiteProgressService)fTypeHierarchyViewPart.getSite()
+					IWorkbenchSiteProgressService progressService= fTypeHierarchyViewPart.getSite()
 														.getAdapter(IWorkbenchSiteProgressService.class);
 					progressService.schedule(fRefreshHierarchyJob, 0);
 				}
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/typehierarchy/TypeHierarchyViewPart.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/typehierarchy/TypeHierarchyViewPart.java
index c77e097..f7a17aa 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/typehierarchy/TypeHierarchyViewPart.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/typehierarchy/TypeHierarchyViewPart.java
@@ -1820,7 +1820,7 @@
 			return;
 		}
 
-		IJavaElement elem= (IJavaElement)editor.getEditorInput().getAdapter(IJavaElement.class);
+		IJavaElement elem= editor.getEditorInput().getAdapter(IJavaElement.class);
 		if (elem instanceof ITypeRoot) {
 			IType type= ((ITypeRoot) elem).findPrimaryType();
 			if (type != null) {
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/util/ElementValidator.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/util/ElementValidator.java
index a68938b..c5736be 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/util/ElementValidator.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/util/ElementValidator.java
@@ -201,7 +201,7 @@
 				}
 				resource= je.getResource();
 			} else {
-				resource= (IResource)element.getAdapter(IResource.class);
+				resource= element.getAdapter(IResource.class);
 			}
 			if (resource != null)
 				result.add(resource);
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/util/SelectionUtil.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/util/SelectionUtil.java
index 5cdcac3..cbe05d7 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/util/SelectionUtil.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/util/SelectionUtil.java
@@ -106,7 +106,7 @@
 			if (part instanceof ISetSelectionTarget) {
 				target= (ISetSelectionTarget) part;
 			} else {
-				target= (ISetSelectionTarget) part.getAdapter(ISetSelectionTarget.class);
+				target= part.getAdapter(ISetSelectionTarget.class);
 			}
 
 			if (target != null) {
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/viewsupport/JavaElementImageProvider.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/viewsupport/JavaElementImageProvider.java
index 44292c8..a3b6247 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/viewsupport/JavaElementImageProvider.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/viewsupport/JavaElementImageProvider.java
@@ -176,7 +176,7 @@
 	 * @return returns the image descriptor
 	 */
 	public ImageDescriptor getWorkbenchImageDescriptor(IAdaptable adaptable, int flags) {
-		IWorkbenchAdapter wbAdapter= (IWorkbenchAdapter) adaptable.getAdapter(IWorkbenchAdapter.class);
+		IWorkbenchAdapter wbAdapter= adaptable.getAdapter(IWorkbenchAdapter.class);
 		if (wbAdapter == null) {
 			return null;
 		}
@@ -290,7 +290,7 @@
 					IJavaProject jp= (IJavaProject)element;
 					if (jp.getProject().isOpen()) {
 						IProject project= jp.getProject();
-						IWorkbenchAdapter adapter= (IWorkbenchAdapter)project.getAdapter(IWorkbenchAdapter.class);
+						IWorkbenchAdapter adapter= project.getAdapter(IWorkbenchAdapter.class);
 						if (adapter != null) {
 							ImageDescriptor result= adapter.getImageDescriptor(project);
 							if (result != null)
@@ -312,7 +312,7 @@
 				default:
 					// ignore. Must be a new, yet unknown Java element
 					// give an advanced IWorkbenchAdapter the chance
-					IWorkbenchAdapter wbAdapter= (IWorkbenchAdapter) element.getAdapter(IWorkbenchAdapter.class);
+					IWorkbenchAdapter wbAdapter= element.getAdapter(IWorkbenchAdapter.class);
 					if (wbAdapter != null && !(wbAdapter instanceof JavaWorkbenchAdapter)) { // avoid recursion
 						ImageDescriptor imageDescriptor= wbAdapter.getImageDescriptor(element);
 						if (imageDescriptor != null) {
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/viewsupport/StatusBarUpdater.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/viewsupport/StatusBarUpdater.java
index 4a1302a..d8392ed 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/viewsupport/StatusBarUpdater.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/viewsupport/StatusBarUpdater.java
@@ -88,7 +88,7 @@
 					buf.append(JavaElementLabels.getElementLabel(jarEntryResource.getPackageFragmentRoot(), JavaElementLabels.ROOT_POST_QUALIFIED));
 					return buf.toString();
 				} else if (elem instanceof IAdaptable) {
-					IWorkbenchAdapter wbadapter= (IWorkbenchAdapter) ((IAdaptable)elem).getAdapter(IWorkbenchAdapter.class);
+					IWorkbenchAdapter wbadapter= ((IAdaptable)elem).getAdapter(IWorkbenchAdapter.class);
 					if (wbadapter != null) {
 						return wbadapter.getLabel(elem);
 					}
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/buildpaths/newsourcepage/BuildpathModifierAction.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/buildpaths/newsourcepage/BuildpathModifierAction.java
index f0eb196..bae1ab4 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/buildpaths/newsourcepage/BuildpathModifierAction.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/buildpaths/newsourcepage/BuildpathModifierAction.java
@@ -182,7 +182,7 @@
 			if (part instanceof ISetSelectionTarget)
 				target= (ISetSelectionTarget) part;
 			else
-				target= (ISetSelectionTarget) part.getAdapter(ISetSelectionTarget.class);
+				target= part.getAdapter(ISetSelectionTarget.class);
 
 			if (target != null) {
 				// select and reveal resource
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/buildpaths/newsourcepage/ConfigureBuildPathAction.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/buildpaths/newsourcepage/ConfigureBuildPathAction.java
index c570e74..7e64907 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/buildpaths/newsourcepage/ConfigureBuildPathAction.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/buildpaths/newsourcepage/ConfigureBuildPathAction.java
@@ -83,7 +83,7 @@
 			IClasspathEntry entry= container instanceof ClassPathContainer ? ((ClassPathContainer) container).getClasspathEntry() : JavaCore.newLibraryEntry(new Path("/x/y"), null, null); //$NON-NLS-1$
 			data.put(BuildPathsPropertyPage.DATA_REVEAL_ENTRY, entry);
 		} else {
-			project= ((IResource) ((IAdaptable) firstElement).getAdapter(IResource.class)).getProject();
+			project= ((IAdaptable) firstElement).getAdapter(IResource.class).getProject();
 		}
 		PreferencesUtil.createPropertyDialogOn(getShell(), project, BuildPathsPropertyPage.PROP_ID, null, data).open();
 	}
@@ -109,7 +109,7 @@
 		} else if (firstElement instanceof PackageFragmentRootContainer) {
 			return true;
 		} else if (firstElement instanceof IAdaptable) {
-			IResource res= (IResource) ((IAdaptable) firstElement).getAdapter(IResource.class);
+			IResource res= ((IAdaptable) firstElement).getAdapter(IResource.class);
 			if (res == null)
 				return false;
 
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/workingsets/AbstractWorkingSetWizardPage.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/workingsets/AbstractWorkingSetWizardPage.java
index 77cc6d3..bb38dcc 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/workingsets/AbstractWorkingSetWizardPage.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/workingsets/AbstractWorkingSetWizardPage.java
@@ -463,7 +463,7 @@
 				if (oldItems[i] instanceof IResource) {
 					oldResource= (IResource) oldItems[i];
 				} else {
-					oldResource= (IResource) oldItems[i].getAdapter(IResource.class);
+					oldResource= oldItems[i].getAdapter(IResource.class);
 				}
 				if (oldResource != null && oldResource.isAccessible() == false) {
 					IProject project= oldResource.getProject();
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/workingsets/JavaWorkingSetPage.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/workingsets/JavaWorkingSetPage.java
index aa5dba0..a3feff4 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/workingsets/JavaWorkingSetPage.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/workingsets/JavaWorkingSetPage.java
@@ -225,7 +225,7 @@
 				Object[] elements= selection.toArray();
 				for (int i= 0; i < elements.length; i++) {
 					if (elements[i] instanceof IResource) {
-						IJavaElement je= (IJavaElement)((IResource)elements[i]).getAdapter(IJavaElement.class);
+						IJavaElement je= ((IResource)elements[i]).getAdapter(IJavaElement.class);
 						if (je != null && je.exists() &&  je.getJavaProject().isOnClasspath((IResource)elements[i]))
 							elements[i]= je;
 					}
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/workingsets/Mementos.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/workingsets/Mementos.java
index cb301c2..0004513 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/workingsets/Mementos.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/workingsets/Mementos.java
@@ -23,7 +23,7 @@
     public static final String TAG_ITEM = "item"; //$NON-NLS-1$
 
     public static void saveItem(IMemento memento, IAdaptable element) {
-        IPersistableElement persistable= (IPersistableElement)element.getAdapter(IPersistableElement.class);
+        IPersistableElement persistable= element.getAdapter(IPersistableElement.class);
         if (persistable != null) {
             memento.putString(
             	TAG_FACTORY_ID,
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/workingsets/OthersWorkingSetUpdater.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/workingsets/OthersWorkingSetUpdater.java
index 25c68f3..991aeb9 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/workingsets/OthersWorkingSetUpdater.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/workingsets/OthersWorkingSetUpdater.java
@@ -184,7 +184,7 @@
 			IAdaptable[] elements= activeWorkingSets[i].getElements();
 			for (int j= 0; j < elements.length; j++) {
 				IAdaptable element= elements[j];
-				IResource resource= (IResource)element.getAdapter(IResource.class);
+				IResource resource= element.getAdapter(IResource.class);
 				if (resource != null && resource.getType() == IResource.PROJECT) {
 					projects.add(resource);
 				}
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/workingsets/WorkingSetFilter.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/workingsets/WorkingSetFilter.java
index 4a9f86a..49e4fc7 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/workingsets/WorkingSetFilter.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/workingsets/WorkingSetFilter.java
@@ -61,11 +61,11 @@
 			} else if (a instanceof IJarEntryResource) {
 				init((IJarEntryResource)a);
 			} else {
-				IJavaElement je= (IJavaElement) a.getAdapter(IJavaElement.class);
+				IJavaElement je= a.getAdapter(IJavaElement.class);
 				if (je != null) {
 					init(je);
 				} else {
-					IResource resource= (IResource) a.getAdapter(IResource.class);
+					IResource resource= a.getAdapter(IResource.class);
 					if (resource != null) {
 						init(resource);
 					} else {
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/workingsets/WorkingSetModel.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/workingsets/WorkingSetModel.java
index 95c67cf..130f01e 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/workingsets/WorkingSetModel.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/workingsets/WorkingSetModel.java
@@ -180,14 +180,14 @@
 		}
 		private void addElement(IAdaptable element, IWorkingSet ws) {
 			addToMap(fElementToWorkingSet, element, ws);
-			IResource resource= (IResource)element.getAdapter(IResource.class);
+			IResource resource= element.getAdapter(IResource.class);
 			if (resource != null) {
 				addToMap(fResourceToWorkingSet, resource, ws);
 			}
 		}
 		private void removeElement(IAdaptable element, IWorkingSet ws) {
 			removeFromMap(fElementToWorkingSet, element, ws);
-			IResource resource= (IResource)element.getAdapter(IResource.class);
+			IResource resource= element.getAdapter(IResource.class);
 			if (resource != null) {
 				removeFromMap(fResourceToWorkingSet, resource, ws);
 			}
@@ -678,7 +678,7 @@
 		IAdaptable[] elements= workingSet.getElements();
 		for (int i= 0; i < elements.length; i++) {
 			IAdaptable element= elements[i];
-			IProject p= (IProject)element.getAdapter(IProject.class);
+			IProject p= element.getAdapter(IProject.class);
 			if (p != null && p.exists())
 				return true;
 		}
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/JavaElementComparator.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/JavaElementComparator.java
index 7e617d3..24b8bbc 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/JavaElementComparator.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/JavaElementComparator.java
@@ -300,7 +300,7 @@
 			return ((IStorage) element).getName();
 		}
 		if (element instanceof IAdaptable) {
-			IWorkbenchAdapter adapter= (IWorkbenchAdapter) ((IAdaptable) element).getAdapter(IWorkbenchAdapter.class);
+			IWorkbenchAdapter adapter= ((IAdaptable) element).getAdapter(IWorkbenchAdapter.class);
 			if (adapter != null) {
 				return adapter.getLabel(element);
 			}
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/JavaElementLabels.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/JavaElementLabels.java
index 93f2772..1a8152e 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/JavaElementLabels.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/JavaElementLabels.java
@@ -410,7 +410,7 @@
 			return BasicElementLabels.getResourceName(((IStorage) obj).getName());
 
 		} else if (obj instanceof IAdaptable) {
-			IWorkbenchAdapter wbadapter= (IWorkbenchAdapter) ((IAdaptable)obj).getAdapter(IWorkbenchAdapter.class);
+			IWorkbenchAdapter wbadapter= ((IAdaptable)obj).getAdapter(IWorkbenchAdapter.class);
 			if (wbadapter != null) {
 				return Strings.markLTR(wbadapter.getLabel(obj));
 			}
@@ -444,7 +444,7 @@
 			return getStyledStorageLabel((IStorage) obj);
 
 		} else if (obj instanceof IAdaptable) {
-			IWorkbenchAdapter wbadapter= (IWorkbenchAdapter) ((IAdaptable)obj).getAdapter(IWorkbenchAdapter.class);
+			IWorkbenchAdapter wbadapter= ((IAdaptable)obj).getAdapter(IWorkbenchAdapter.class);
 			if (wbadapter != null) {
 				return Strings.markLTR(new StyledString(wbadapter.getLabel(obj)));
 			}
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/JavaUI.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/JavaUI.java
index ef385bc..6483cae 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/JavaUI.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/JavaUI.java
@@ -756,7 +756,7 @@
 		if (je != null)
 			return je;
 
-		return (IJavaElement)editorInput.getAdapter(IJavaElement.class);
+		return editorInput.getAdapter(IJavaElement.class);
 	}
 
 	/**
@@ -774,7 +774,7 @@
 		if (cu != null)
 			return cu;
 
-		IJavaElement je= (IJavaElement) editorInput.getAdapter(IJavaElement.class);
+		IJavaElement je= editorInput.getAdapter(IJavaElement.class);
 		if (je instanceof ITypeRoot)
 			return (ITypeRoot) je;
 
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/AddDelegateMethodsAction.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/AddDelegateMethodsAction.java
index b351df9..1a8b1f9 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/AddDelegateMethodsAction.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/AddDelegateMethodsAction.java
@@ -572,7 +572,7 @@
 						tuples.add((DelegateEntry) object[index]);
 				}
 				IEditorPart part= JavaUI.openInEditor(type);
-				IRewriteTarget target= (IRewriteTarget) part.getAdapter(IRewriteTarget.class);
+				IRewriteTarget target= part.getAdapter(IRewriteTarget.class);
 				try {
 					if (target != null)
 						target.beginCompoundChange();
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/AddGetterSetterAction.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/AddGetterSetterAction.java
index 7d85b97..21d4abd 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/AddGetterSetterAction.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/AddGetterSetterAction.java
@@ -599,7 +599,7 @@
 	// ---- Helpers -------------------------------------------------------------------
 
 	private void run(ICompilationUnit cu, IType type, IField[] getterFields, IField[] setterFields, IField[] getterSetterFields, IEditorPart editor, CompilationUnit unit, IJavaElement elementPosition) {
-		IRewriteTarget target= (IRewriteTarget) editor.getAdapter(IRewriteTarget.class);
+		IRewriteTarget target= editor.getAdapter(IRewriteTarget.class);
 		if (target != null) {
 			target.beginCompoundChange();
 		}
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/AddToClasspathAction.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/AddToClasspathAction.java
index e81f3be..2150127 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/AddToClasspathAction.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/AddToClasspathAction.java
@@ -103,7 +103,7 @@
 	}
 
 	private static IFile getCandidate(IAdaptable element) throws JavaModelException {
-		IResource resource= (IResource)element.getAdapter(IResource.class);
+		IResource resource= element.getAdapter(IResource.class);
 		if (! (resource instanceof IFile) || ! ArchiveFileFilter.isArchivePath(resource.getFullPath(), true))
 			return null;
 
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/ConvertingSelectionProvider.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/ConvertingSelectionProvider.java
index 0cc7c34..d74495f 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/ConvertingSelectionProvider.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/ConvertingSelectionProvider.java
@@ -105,11 +105,11 @@
 				result.add(element);
 			} else if (element instanceof IAdaptable) {
 				IAdaptable adaptable= (IAdaptable)element;
-				IJavaElement jElement= (IJavaElement)adaptable.getAdapter(IJavaElement.class);
+				IJavaElement jElement= adaptable.getAdapter(IJavaElement.class);
 				if (jElement != null) {
 					result.add(jElement);
 				} else {
-					IResource resource= (IResource)adaptable.getAdapter(IResource.class);
+					IResource resource= adaptable.getAdapter(IResource.class);
 					if (resource != null) {
 						result.add(resource);
 					} else {
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/FindAction.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/FindAction.java
index 6998a7a..a9e2f15 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/FindAction.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/FindAction.java
@@ -146,7 +146,7 @@
 			if (firstElement instanceof IJavaElement)
 				elem= (IJavaElement) firstElement;
 			else if (firstElement instanceof IAdaptable)
-				elem= (IJavaElement) ((IAdaptable) firstElement).getAdapter(IJavaElement.class);
+				elem= ((IAdaptable) firstElement).getAdapter(IJavaElement.class);
 			if (elem != null) {
 				return getTypeIfPossible(elem, silent);
 			}
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/OpenViewActionGroup.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/OpenViewActionGroup.java
index 60d59e5..7db7b27 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/OpenViewActionGroup.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/OpenViewActionGroup.java
@@ -282,7 +282,7 @@
 	private String getShowInMenuLabel() {
 		String keyBinding= null;
 
-		IBindingService bindingService= (IBindingService) PlatformUI.getWorkbench().getAdapter(IBindingService.class);
+		IBindingService bindingService= PlatformUI.getWorkbench().getAdapter(IBindingService.class);
 		if (bindingService != null)
 			keyBinding= bindingService.getBestActiveBindingFormattedFor(IWorkbenchCommandConstants.NAVIGATE_SHOW_IN_QUICK_MENU);
 
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/RefactorActionGroup.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/RefactorActionGroup.java
index 14d40cd..ccc7796 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/RefactorActionGroup.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/RefactorActionGroup.java
@@ -204,7 +204,7 @@
 	public RefactorActionGroup(IViewPart part) {
 		this(part.getSite(), null);
 
-		IUndoContext workspaceContext= (IUndoContext)ResourcesPlugin.getWorkspace().getAdapter(IUndoContext.class);
+		IUndoContext workspaceContext= ResourcesPlugin.getWorkspace().getAdapter(IUndoContext.class);
 		fUndoRedoActionGroup= new UndoRedoActionGroup(part.getViewSite(), workspaceContext, true);
 
 		installQuickAccessAction();
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/RefreshAction.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/RefreshAction.java
index e0b41ec..d70ef09 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/RefreshAction.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/RefreshAction.java
@@ -98,7 +98,7 @@
 				if (curr instanceof IWorkingSet) {
 					IAdaptable[] members= ((IWorkingSet) curr).getElements();
 					for (int k= 0; k < members.length; k++) {
-						IResource adapted= (IResource) members[k].getAdapter(IResource.class);
+						IResource adapted= members[k].getAdapter(IResource.class);
 						if (adapted != null) {
 							selectedResources.add(adapted);
 						}
@@ -165,7 +165,7 @@
 				// too expensive to look at children. assume we can refresh
 				okToRefresh= true;
 			} else if (element instanceof IAdaptable) { // test for IAdaptable last (types before are IAdaptable as well)
-				IResource resource= (IResource)((IAdaptable)element).getAdapter(IResource.class);
+				IResource resource= ((IAdaptable)element).getAdapter(IResource.class);
 				okToRefresh|= resource != null && (resource.getType() != IResource.PROJECT || ((IProject) resource).isOpen());
 			} else {
 				// nothing to say;
@@ -208,7 +208,7 @@
 			} else if (curr instanceof IWorkingSet) {
 				IAdaptable[] members= ((IWorkingSet) curr).getElements();
 				for (int k= 0; k < members.length; k++) {
-					IJavaElement adapted= (IJavaElement)members[k].getAdapter(IJavaElement.class);
+					IJavaElement adapted= members[k].getAdapter(IJavaElement.class);
 					if (adapted instanceof IPackageFragmentRoot) {
 						javaElements.add(adapted);
 					}
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/text/java/correction/ChangeCorrectionProposal.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/text/java/correction/ChangeCorrectionProposal.java
index 985a512..e45d7ae 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/text/java/correction/ChangeCorrectionProposal.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/text/java/correction/ChangeCorrectionProposal.java
@@ -140,7 +140,7 @@
 					LinkedModeModel.closeAllModels(document);
 				}
 				if (activeEditor != null) {
-					rewriteTarget= (IRewriteTarget) activeEditor.getAdapter(IRewriteTarget.class);
+					rewriteTarget= activeEditor.getAdapter(IRewriteTarget.class);
 					if (rewriteTarget != null) {
 						rewriteTarget.beginCompoundChange();
 					}
@@ -199,7 +199,7 @@
 				disabledStyledText.setEditable(true);
 				disabledStyledText.removeTraverseListener(traverseBlocker);
 				// Workaround to fix bug 434791 during 4.4 RC2. Will be replaced by official API during 4.5.
-				ITextOperationTarget textOperationTarget= (ITextOperationTarget) activeEditor.getAdapter(ITextOperationTarget.class);
+				ITextOperationTarget textOperationTarget= activeEditor.getAdapter(ITextOperationTarget.class);
 				if (textOperationTarget != null && textOperationTarget.canDoOperation(-100))
 					textOperationTarget.doOperation(-100);
 			}
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/wizards/NewContainerWizardPage.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/wizards/NewContainerWizardPage.java
index 6a9e983..583828a 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/wizards/NewContainerWizardPage.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/wizards/NewContainerWizardPage.java
@@ -177,14 +177,14 @@
 			if (selectedElement instanceof IAdaptable) {
 				IAdaptable adaptable= (IAdaptable) selectedElement;
 
-				jelem= (IJavaElement) adaptable.getAdapter(IJavaElement.class);
+				jelem= adaptable.getAdapter(IJavaElement.class);
 				if (jelem == null || !jelem.exists()) {
 					jelem= null;
-					IResource resource= (IResource) adaptable.getAdapter(IResource.class);
+					IResource resource= adaptable.getAdapter(IResource.class);
 					if (resource != null && resource.getType() != IResource.ROOT) {
 						while (jelem == null && resource.getType() != IResource.PROJECT) {
 							resource= resource.getParent();
-							jelem= (IJavaElement) resource.getAdapter(IJavaElement.class);
+							jelem= resource.getAdapter(IJavaElement.class);
 						}
 						if (jelem == null) {
 							jelem= JavaCore.create(resource); // java project