diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/ConstructorDeclaration.java b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/ConstructorDeclaration.java
index 9fd2f08..727128f 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/ConstructorDeclaration.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/ConstructorDeclaration.java
@@ -728,14 +728,19 @@
 		  || (   typeBinding.enclosingType() != null // also accept roles of o.o.Team
 			  && typeBinding.enclosingType().id == IOTConstants.T_OrgObjectTeamsTeam))
 		return false;
-	if (typeDecl.fields == null)
-		return false;
 	boolean hasInitialization = false;
-	for (FieldDeclaration fieldDeclaration : typeDecl.fields) {
-		if (fieldDeclaration.initialization != null) {
-			if (fieldDeclaration.isFinal())
-				return false; // needs to be set inside a proper constructor!
-			hasInitialization = true;
+	if (typeDecl.fields != null) {
+		for (FieldDeclaration fieldDeclaration : typeDecl.fields) {
+			if (fieldDeclaration.initialization != null) {
+				if (fieldDeclaration.isFinal())
+					return false; // needs to be set inside a proper constructor!
+				hasInitialization = true;
+			}
+		}
+	}
+	for (ReferenceBinding tsuperRole : typeDecl.getRoleModel().getTSuperRoleBindings()) {
+		if (tsuperRole.fields() != Binding.NO_FIELDS && !tsuperRole.roleModel.hasFinalFieldInit()) {
+			hasInitialization = true; // conservative, would need another flag to test if tsuper has field init
 		}
 	}
 	return hasInitialization;
diff --git a/testplugins/org.eclipse.objectteams.otdt.tests/otjld/org/eclipse/objectteams/otdt/tests/otjld/rolesandteams/ImplicitInheritance.java b/testplugins/org.eclipse.objectteams.otdt.tests/otjld/org/eclipse/objectteams/otdt/tests/otjld/rolesandteams/ImplicitInheritance.java
index c5339af..9dcb6bb 100644
--- a/testplugins/org.eclipse.objectteams.otdt.tests/otjld/org/eclipse/objectteams/otdt/tests/otjld/rolesandteams/ImplicitInheritance.java
+++ b/testplugins/org.eclipse.objectteams.otdt.tests/otjld/org/eclipse/objectteams/otdt/tests/otjld/rolesandteams/ImplicitInheritance.java
@@ -2010,4 +2010,41 @@
 			"Need to invoke a tsuper constructor because tsuper role \'SuperTeamFI5.R2\' has initializations for final fields.\n" +
 			"----------\n");
     }
+   
+    public void testFieldInitialization6_bound_tsuperUnbound_OK() throws Exception {
+    	// variants with implicit lifting constructors
+    	runConformTest(
+    		new String[] {
+    			"SubTeamFI6btU.java",
+    			"public team class SubTeamFI6btU extends SuperTeamFI6btU {\n" +
+    			"	@Override\n" +
+    			"	protected class R1 playedBy Base1 {\n" +
+    			"	}\n" +
+    			"	@Override\n" +
+    			"	protected class R2 {\n" +
+    			"	}\n" +
+    			"	public static void main(String... args) {\n" +
+    			"		new SubTeamFI6btU().test();\n" +
+    			"	}\n" +
+    			"	@SuppressWarnings(\"roleinstantiation\")\n" +
+    			"	void test() {\n" +
+    			"		System.out.print(new R1(new Base1()).s1);\n" +
+    			"		System.out.print(new R2(new Base1()).s1);\n" +
+    			"		System.out.print(new R2(new Base1()).s2);\n" +
+    			"	}\n" +
+				"}\n",
+    			"SuperTeamFI6btU.java",
+    			"public team class SuperTeamFI6btU {\n" +
+    			"	protected class R1 {\n" +
+    			"		public String s1 = \"s1\";\n" +
+    			"	}\n" +
+    			"	protected class R2 extends R1 {\n" +
+    			"		public String s2 = \"s2\";\n" +
+    			"	}\n" +
+    			"}\n",
+    			"Base1.java",
+    			"public class Base1 {}\n",
+    		},
+    		"s1s1s2");
+    }
 }
