diff --git a/core/plugins/org.eclipse.dltk.core/ast/org/eclipse/dltk/ast/declarations/TypeDeclaration.java b/core/plugins/org.eclipse.dltk.core/ast/org/eclipse/dltk/ast/declarations/TypeDeclaration.java
index 8a8872f..b254910 100644
--- a/core/plugins/org.eclipse.dltk.core/ast/org/eclipse/dltk/ast/declarations/TypeDeclaration.java
+++ b/core/plugins/org.eclipse.dltk.core/ast/org/eclipse/dltk/ast/declarations/TypeDeclaration.java
@@ -16,6 +16,7 @@
 package org.eclipse.dltk.ast.declarations;
 
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.Iterator;
 import java.util.List;
 
@@ -81,11 +82,11 @@
 	 * Creates new type declaration from type name ANTLR token, start and end
 	 * position.
 	 * 
-	 * @param name -
-	 *            type name ANTLR token.
-	 * @param start -
+	 * @param name
+	 *            type name.
+	 * @param start
 	 *            type start position in associated file.
-	 * @param end -
+	 * @param end
 	 *            type end position in associated file.
 	 */
 	public TypeDeclaration(String name, int nameStart, int nameEnd, int start,
@@ -135,7 +136,7 @@
 	/**
 	 * Creates type declaration from name token.
 	 * 
-	 * @param name -
+	 * @param name
 	 *            name ANTRL token.
 	 */
 	public TypeDeclaration(DLTKToken name) {
@@ -356,11 +357,11 @@
 	/**
 	 * Set inner statements with start and end position in associated file.
 	 * 
-	 * @param startBody -
+	 * @param startBody
 	 *            start position.
-	 * @param body -
+	 * @param body
 	 *            inner statements.
-	 * @param endBody -
+	 * @param endBody
 	 *            end position.
 	 */
 	public void setBody(int startBody, Block body, int endBody) {
@@ -375,20 +376,29 @@
 	 * 
 	 * @return
 	 */
-	public List/* <String> */getSuperClassNames() {
-		List/* < String > */names = new ArrayList/* < String > */();
+	public List getSuperClassNames() {
 		if (this.fSuperClasses != null) {
-			List/* < Expression > */superClasseExpressions = this.fSuperClasses
-					.getChilds();
-			Iterator i = superClasseExpressions.iterator();
-			while (i.hasNext()) {
-				ASTNode expr = (ASTNode) i.next();
-				if (expr instanceof SimpleReference) {
-					names.add(((SimpleReference) expr).getName());
+			final List superClasses = this.fSuperClasses.getChilds();
+			final List names = new ArrayList(superClasses.size());
+			for (Iterator i = superClasses.iterator(); i.hasNext();) {
+				final ASTNode expr = (ASTNode) i.next();
+				final String name = resolveSuperClassReference(expr);
+				if (name != null) {
+					names.add(name);
 				}
 			}
+			return names;
+		} else {
+			return Collections.EMPTY_LIST;
 		}
-		return names;
+	}
+
+	public String resolveSuperClassReference(ASTNode node) {
+		if (node instanceof SimpleReference) {
+			return ((SimpleReference) node).getName();
+		} else {
+			return null;
+		}
 	}
 
 	/**
