Fix NPE in OTReconcilerTests.testClassLiteralForRoFi
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/TypeDeclaration.java b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/TypeDeclaration.java
index 5b9be99..ec674d9 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/TypeDeclaration.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/TypeDeclaration.java
@@ -1820,11 +1820,14 @@
 		boolean hasEnumConstants = false;
 		FieldDeclaration[] enumConstantsWithoutBody = null;
 
-		if (this.memberTypes != null) {
 //{ObjectTeams: don't cache count, array may grow during this loop!
-/* orig:
+		int resolvedMemberCount = 0; // but remember for later :)
+// orig:
+		if (this.memberTypes != null) {
+/*
 			for (int i = 0, count = this.memberTypes.length; i < count; i++) {
   :giro */
+			resolvedMemberCount = this.memberTypes.length;
 			for (int i = 0; i < this.memberTypes.length; i++) {
 // SH}
 				this.memberTypes[i].resolve(this.scope);
@@ -1947,6 +1950,12 @@
 			return;
 		}
         StateMemento.methodResolveStart(this.binding);
+        // any role types found during field resolve? If so, catch up now:
+    	if (this.memberTypes != null && this.memberTypes.length > resolvedMemberCount 
+    			&& this.teamModel != null)
+    	{
+    		Dependencies.lateRolesCatchup(this.teamModel);
+    	}
 // SH}
 //{ObjectTeams: should we work?
       if (fieldsAndMethods) {