IProblemReporter doesn't extend IAdaptable
diff --git a/core/plugins/org.eclipse.dltk.core/compiler/org/eclipse/dltk/compiler/problem/AbstractProblemReporter.java b/core/plugins/org.eclipse.dltk.core/compiler/org/eclipse/dltk/compiler/problem/AbstractProblemReporter.java
index aefdc53..808fae7 100644
--- a/core/plugins/org.eclipse.dltk.core/compiler/org/eclipse/dltk/compiler/problem/AbstractProblemReporter.java
+++ b/core/plugins/org.eclipse.dltk.core/compiler/org/eclipse/dltk/compiler/problem/AbstractProblemReporter.java
@@ -11,13 +11,16 @@
  *******************************************************************************/
 package org.eclipse.dltk.compiler.problem;
 
+import org.eclipse.core.runtime.IAdaptable;
+
 /**
  * The abstract implementation of {@link IProblemReporter} to simplify code in
  * tests, etc.
  */
-public abstract class AbstractProblemReporter implements IProblemReporter {
+public abstract class AbstractProblemReporter implements IProblemReporter,
+		IAdaptable {
 
-	public Object getAdapter(Class adapter) {
+	public Object getAdapter(@SuppressWarnings("rawtypes") Class adapter) {
 		return null;
 	}
 
diff --git a/core/plugins/org.eclipse.dltk.core/compiler/org/eclipse/dltk/compiler/problem/IProblemReporter.java b/core/plugins/org.eclipse.dltk.core/compiler/org/eclipse/dltk/compiler/problem/IProblemReporter.java
index fa352fb..380e813 100644
--- a/core/plugins/org.eclipse.dltk.core/compiler/org/eclipse/dltk/compiler/problem/IProblemReporter.java
+++ b/core/plugins/org.eclipse.dltk.core/compiler/org/eclipse/dltk/compiler/problem/IProblemReporter.java
@@ -9,9 +9,7 @@
  *******************************************************************************/
 package org.eclipse.dltk.compiler.problem;
 
-import org.eclipse.core.runtime.IAdaptable;
-
-public interface IProblemReporter extends IAdaptable {
+public interface IProblemReporter {
 
 	void reportProblem(IProblem problem);
 
diff --git a/core/plugins/org.eclipse.dltk.core/compiler/org/eclipse/dltk/compiler/problem/ProblemReporterProxy.java b/core/plugins/org.eclipse.dltk.core/compiler/org/eclipse/dltk/compiler/problem/ProblemReporterProxy.java
index 6e1ce61..ffe95cf 100644
--- a/core/plugins/org.eclipse.dltk.core/compiler/org/eclipse/dltk/compiler/problem/ProblemReporterProxy.java
+++ b/core/plugins/org.eclipse.dltk.core/compiler/org/eclipse/dltk/compiler/problem/ProblemReporterProxy.java
@@ -11,11 +11,13 @@
  *******************************************************************************/
 package org.eclipse.dltk.compiler.problem;
 
+import org.eclipse.core.runtime.IAdaptable;
+
 /**
  * The {@link IProblemReporter} implementation which forwards all methods call
  * to the instance passed in the constructor.
  */
-public class ProblemReporterProxy implements IProblemReporter {
+public class ProblemReporterProxy implements IProblemReporter, IAdaptable {
 
 	private final IProblemReporter original;
 
@@ -32,9 +34,9 @@
 		}
 	}
 
-	public Object getAdapter(Class adapter) {
-		if (original != null) {
-			return original.getAdapter(adapter);
+	public Object getAdapter(@SuppressWarnings("rawtypes") Class adapter) {
+		if (original != null && original instanceof IAdaptable) {
+			return ((IAdaptable) original).getAdapter(adapter);
 		}
 		return null;
 	}
diff --git a/core/plugins/org.eclipse.dltk.core/compiler/org/eclipse/dltk/compiler/task/ITaskReporter.java b/core/plugins/org.eclipse.dltk.core/compiler/org/eclipse/dltk/compiler/task/ITaskReporter.java
index c9c6d1a..1c80211 100644
--- a/core/plugins/org.eclipse.dltk.core/compiler/org/eclipse/dltk/compiler/task/ITaskReporter.java
+++ b/core/plugins/org.eclipse.dltk.core/compiler/org/eclipse/dltk/compiler/task/ITaskReporter.java
@@ -12,13 +12,12 @@
 package org.eclipse.dltk.compiler.task;
 
 import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.IAdaptable;
 
 /**
  * The interface to create <i>tasks</i> for the attached resource. At any given
  * moment this object operates on single {@link IResource}.
  */
-public interface ITaskReporter extends IAdaptable {
+public interface ITaskReporter {
 
 	/**
 	 * Creates new task for the attached resource.
diff --git a/core/plugins/org.eclipse.dltk.core/model/org/eclipse/dltk/internal/core/builder/ExternalModuleBuildContext.java b/core/plugins/org.eclipse.dltk.core/model/org/eclipse/dltk/internal/core/builder/ExternalModuleBuildContext.java
index aeb8f76..e5ba025 100644
--- a/core/plugins/org.eclipse.dltk.core/model/org/eclipse/dltk/internal/core/builder/ExternalModuleBuildContext.java
+++ b/core/plugins/org.eclipse.dltk.core/model/org/eclipse/dltk/internal/core/builder/ExternalModuleBuildContext.java
@@ -11,6 +11,7 @@
  *******************************************************************************/
 package org.eclipse.dltk.internal.core.builder;
 
+import org.eclipse.core.runtime.IAdaptable;
 import org.eclipse.dltk.compiler.problem.IProblem;
 import org.eclipse.dltk.compiler.problem.IProblemReporter;
 import org.eclipse.dltk.compiler.task.ITaskReporter;
@@ -19,7 +20,7 @@
 import org.eclipse.dltk.core.environment.IFileHandle;
 
 public class ExternalModuleBuildContext extends AbstractBuildContext implements
-		IProblemReporter, ITaskReporter {
+		IProblemReporter, ITaskReporter, IAdaptable {
 
 	/**
 	 * @param module