* TImur debugger contributions applied.
diff --git a/plugins/org.eclipse.dltk.javascript.debug.ui/src/org/eclipse/dltk/javascript/internal/console/ui/actions/ShowFunctionsAction.java b/plugins/org.eclipse.dltk.javascript.debug.ui/src/org/eclipse/dltk/javascript/internal/console/ui/actions/ShowFunctionsAction.java
index cab2860..58e8507 100644
--- a/plugins/org.eclipse.dltk.javascript.debug.ui/src/org/eclipse/dltk/javascript/internal/console/ui/actions/ShowFunctionsAction.java
+++ b/plugins/org.eclipse.dltk.javascript.debug.ui/src/org/eclipse/dltk/javascript/internal/console/ui/actions/ShowFunctionsAction.java
@@ -10,8 +10,9 @@
  *******************************************************************************/
 package org.eclipse.dltk.javascript.internal.console.ui.actions;
 
-
 import org.eclipse.debug.core.DebugException;
+import org.eclipse.dltk.core.DLTKCore;
+import org.eclipse.dltk.debug.core.model.IScriptValue;
 import org.eclipse.dltk.debug.core.model.IScriptVariable;
 import org.eclipse.dltk.debug.ui.actions.ViewFilterAction;
 import org.eclipse.dltk.javascript.internal.ui.preferences.JavaScriptConsolePreferences;
@@ -27,14 +28,21 @@
 	}
 
 	protected String getPreferenceKey() {
-		return "show_functions"; 
+		return "show_functions";
 	}
-	
+
 	public boolean select(Viewer viewer, Object parentElement, Object element) {
 		if (element instanceof IScriptVariable) {
-			IScriptVariable variable = (IScriptVariable)element;
-			return !variable.getType().getName().equals("function"); 
+			IScriptVariable variable = (IScriptVariable) element;
+			try {
+				return !((IScriptValue) variable.getValue()).getType()
+						.getName().equals("function");
+			} catch (DebugException e) {
+				if (DLTKCore.DEBUG) {
+					e.printStackTrace();
+				}
+			}
 		}
 		return true;
-	}	
+	}
 }
diff --git a/plugins/org.eclipse.dltk.javascript.debug.ui/src/org/eclipse/dltk/javascript/internal/debug/ui/JavaScriptDebugModelPresentation.java b/plugins/org.eclipse.dltk.javascript.debug.ui/src/org/eclipse/dltk/javascript/internal/debug/ui/JavaScriptDebugModelPresentation.java
index f28741b..38e0764 100644
--- a/plugins/org.eclipse.dltk.javascript.debug.ui/src/org/eclipse/dltk/javascript/internal/debug/ui/JavaScriptDebugModelPresentation.java
+++ b/plugins/org.eclipse.dltk.javascript.debug.ui/src/org/eclipse/dltk/javascript/internal/debug/ui/JavaScriptDebugModelPresentation.java
@@ -1,11 +1,13 @@
 package org.eclipse.dltk.javascript.internal.debug.ui;
 
 import org.eclipse.core.runtime.CoreException;
+import org.eclipse.debug.core.DebugException;
 import org.eclipse.debug.ui.DebugUITools;
 import org.eclipse.debug.ui.IDebugUIConstants;
 import org.eclipse.dltk.debug.core.DLTKDebugPlugin;
 import org.eclipse.dltk.debug.core.model.IScriptBreakpoint;
 import org.eclipse.dltk.debug.core.model.IScriptMethodEntryBreakpoint;
+import org.eclipse.dltk.debug.core.model.IScriptValue;
 import org.eclipse.dltk.debug.core.model.IScriptVariable;
 import org.eclipse.dltk.debug.core.model.IScriptWatchpoint;
 import org.eclipse.dltk.debug.ui.ScriptDebugImageDescriptor;
@@ -106,7 +108,14 @@
 
 	protected Image getVariableImage(IScriptVariable variable) {
 		IScriptVariable v = variable;
-		String typeString = v.getType().getName();
+		IScriptValue scriptValue;
+		try {
+			scriptValue = (IScriptValue)v.getValue();
+		} catch (DebugException e) {
+			return ScriptDebugImages
+			.get(ScriptDebugImages.IMG_OBJS_LOCAL_VARIABLE);
+		}
+		String typeString = (scriptValue).getType().getName();
 		if (typeString.equals("function"))
 			return DLTKPluginImages.get(DLTKPluginImages.IMG_METHOD_PRIVATE);
 		if (typeString.equals("javaclass"))
@@ -115,7 +124,7 @@
 			return DLTKPluginImages.get(DLTKPluginImages.IMG_METHOD_PROTECTED);
 		if (typeString.equals("javaarray"))
 			return DLTKPluginImages.get(DLTKPluginImages.IMG_METHOD_DEFAULT);
-		String fullName = v.getEvalName();
+		String fullName = scriptValue.getEvalName();
 		if (fullName.indexOf('.') >= 0 || (fullName.equals("this")))
 			return DLTKPluginImages.get(DLTKPluginImages.IMG_METHOD_PUBLIC);
 		else