don't produce setter synth method for final fields
fixes broken bytecode in CompletionAdaptor.OverrideRoleCompletionProposal
caused by incompatible signatures (w/ vs. w/o role arg)
witness is test0a9_staticFinalRoleField4
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/SourceTypeBinding.java b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/SourceTypeBinding.java
index 1302781..687f0df 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/SourceTypeBinding.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/SourceTypeBinding.java
@@ -1872,8 +1872,11 @@
 				originalRole = field.copyInheritanceSrc.declaringClass;
 			inner = FieldModel.getDecapsulatingFieldAccessor(this, field, true/*isGetter*/);
 			((SourceTypeBinding) enclosingType()).addSyntheticRoleMethodBridge(this, originalRole, inner, SyntheticMethodBinding.RoleMethodBridgeOuter);
-			inner = FieldModel.getDecapsulatingFieldAccessor(this, field, false/*isGetter*/);
-			((SourceTypeBinding) enclosingType()).addSyntheticRoleMethodBridge(this, originalRole, inner, SyntheticMethodBinding.RoleMethodBridgeOuter);
+			if (!field.isFinal()) { // no setter for final (includes all static role fields)
+								    // otherwise we would have to handle different signatures (w/ w/o role arg), which we currently don't
+				inner = FieldModel.getDecapsulatingFieldAccessor(this, field, false/*isGetter*/);
+				((SourceTypeBinding) enclosingType()).addSyntheticRoleMethodBridge(this, originalRole, inner, SyntheticMethodBinding.RoleMethodBridgeOuter);
+			}
 		}
 // SH}
 		return field;