diff --git a/core/tests/org.eclipse.dltk.ui.tests/src/org/eclipse/dltk/ui/tests/navigator/SimpleModelLabelProvider.java b/core/tests/org.eclipse.dltk.ui.tests/src/org/eclipse/dltk/ui/tests/navigator/SimpleModelLabelProvider.java
deleted file mode 100644
index bcbc3ce..0000000
--- a/core/tests/org.eclipse.dltk.ui.tests/src/org/eclipse/dltk/ui/tests/navigator/SimpleModelLabelProvider.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- 
- *******************************************************************************/
-package org.eclipse.dltk.ui.tests.navigator;
-
-import org.eclipse.dltk.core.DLTKCore;
-import org.eclipse.dltk.core.IModelElement;
-import org.eclipse.dltk.ui.DLTKPluginImages;
-import org.eclipse.dltk.ui.viewsupport.ScriptUILabelProvider;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.viewers.ILabelProvider;
-import org.eclipse.jface.viewers.ILabelProviderListener;
-import org.eclipse.swt.graphics.Image;
-
-public class SimpleModelLabelProvider implements ILabelProvider {
-	ScriptUILabelProvider provider = new ScriptUILabelProvider() {
-		protected ImageDescriptor getSourceModuleIcon(IModelElement element,
-				int renderFlags) {
-			if (DLTKCore.DEBUG) {
-				System.err
-						.println("label provider returns ghost for source modules...");
-			}
-
-			return DLTKPluginImages.DESC_OBJS_GHOST;
-		}
-	};
-
-	public Image getImage(Object element) {
-		return provider.getImage(element);
-	}
-
-	public String getText(Object element) {
-		String text = provider.getText(element);
-		if (text != null) {
-			return text;
-		}
-		return element.toString();
-	}
-
-	public void addListener(ILabelProviderListener listener) {
-		// TODO Auto-generated method stub
-	}
-
-	public void dispose() {
-		// TODO Auto-generated method stub
-	}
-
-	public boolean isLabelProperty(Object element, String property) {
-		// TODO Auto-generated method stub
-		return false;
-	}
-
-	public void removeListener(ILabelProviderListener listener) {
-		// TODO Auto-generated method stub
-	}
-}
