Bug 577535 - NPE during hierarchy resolving on behalf of callin marker
creator
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 b5616d4..7121cdf 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
@@ -358,10 +358,12 @@
 			for (int i = 0; i < this.memberTypes.length; i++) {
 				TypeDeclaration memberType = this.memberTypes[i];
 				memberType.modifiers |= ExtraCompilerModifiers.AccRole;
-				if (CharOperation.equals(memberType.name, IOTConstants.OTCONFINED))
+				if (CharOperation.equals(memberType.name, IOTConstants.OTCONFINED)) {
 					otconfined = memberType;
-				else if (CharOperation.equals(memberType.name, IOTConstants.CONFINED))
+				} else if (CharOperation.equals(memberType.name, IOTConstants.CONFINED)) {
 					confined = memberType;
+					confined.modifiers |= IOTConstants.AccSynthIfc; // synthetically mark as synthetic :)
+				}
 			}
 			if (confined != null && otconfined != null) {
 				// link roles that are split manually (without using RoleSplitter).