diff --git a/Core/org.emftext.language.java/src/org/emftext/language/java/util/JavaModelCompletion.java b/Core/org.emftext.language.java/src/org/emftext/language/java/util/JavaModelCompletion.java
index e53e6b78..8889fea1 100644
--- a/Core/org.emftext.language.java/src/org/emftext/language/java/util/JavaModelCompletion.java
+++ b/Core/org.emftext.language.java/src/org/emftext/language/java/util/JavaModelCompletion.java
@@ -82,12 +82,16 @@ public static void complete(Resource resource) {
/**
* Adds java.lang.Object as default super class to the given
* class if the class does not explicitly extend another class.
+ * java.lang.Object itself is excluded since it has no super
+ * class, and setting it would cause an infinite loop when transitively
+ * traversing {@code getSuperClass()}.
*
* @param javaClass
* the class to complete
*/
public static void addDefaultSuperClass(Class javaClass) {
- if (javaClass.getExtends() == null && javaClass.getDefaultExtends() == null) {
+ if (javaClass.getExtends() == null && javaClass.getDefaultExtends() == null
+ && !javaClass.isJavaLangObject(javaClass)) {
Class objectClass = javaClass.getObjectClass();
ClassifierReference classifierReference = TypesFactory.eINSTANCE.createClassifierReference();
classifierReference.setTarget(objectClass);