Buggy code:
public class SingleNameReference extends NameReference implements OperatorIds { public char [ ] token ; public MethodBinding [ ] syntheticAccessors ; public static final int READ = 0 ; public static final int WRITE = 1 ; public SingleNameReference ( char [ ] source , long pos ) { } public FlowInfo analyseAssignment ( BlockScope currentScope , FlowContext flowContext , FlowInfo flowInfo , Assignment assignment , boolean isCompound ) { if ( isCompound ) { switch ( ( bits ) & ( ASTNode . RestrictiveFlagMASK ) ) { case FIELD : FieldBinding fieldBinding ; if ( ( ( fieldBinding = ( ( FieldBinding ) ( binding ) ) ) . isFinal ( ) ) && ( currentScope . allowBlankFinalFieldAssignment ( fieldBinding ) ) ) { if ( ! ( flowInfo . isDefinitelyAssigned ( fieldBinding ) ) ) { currentScope . problemReporter ( ) . uninitializedBlankFinalField ( fieldBinding , this ) ; } } manageSyntheticReadAccessIfNecessary ( currentScope ) ; break ; case LOCAL : LocalVariableBinding localBinding ; if ( ! ( flowInfo . isDefinitelyAssigned ( ( localBinding = ( ( LocalVariableBinding ) ( binding ) ) ) ) ) ) { currentScope . problemReporter ( ) . uninitializedLocalVariable ( localBinding , this ) ; } localBinding . useFlag = ( flowInfo . isReachable ( ) ) ? LocalVariableBinding . USED : LocalVariableBinding . FAKE_USED ; } } if ( ( assignment . expression ) != null ) { flowInfo = assignment . expression . analyseCode ( currentScope , flowContext , flowInfo ) . unconditionalInits ( ) ; } switch ( ( bits ) & ( ASTNode . RestrictiveFlagMASK ) ) { case FIELD : manageSyntheticWriteAccessIfNecessary ( currentScope ) ; FieldBinding fieldBinding ; if ( ( fieldBinding = ( ( FieldBinding ) ( binding ) ) ) . isFinal ( ) ) { if ( currentScope . allowBlankFinalFieldAssignment ( fieldBinding ) ) { if ( flowInfo . isPotentiallyAssigned ( fieldBinding ) ) { currentScope . problemReporter ( ) . duplicateInitializationOfBlankFinalField ( fieldBinding , this ) ; } flowInfo . markAsDefinitelyAssigned ( fieldBinding ) ; flowContext . recordSettingFinal ( fieldBinding , this ) ; } else { <START_BUG> currentScope . problemReporter ( ) . cannotAssignToFinalField ( fieldBinding , this ) ; <END_BUG> } } break ; case LOCAL : LocalVariableBinding localBinding = ( ( LocalVariableBinding ) ( binding ) ) ; if ( ! ( flowInfo . isDefinitelyAssigned ( localBinding ) ) ) { bits |= FirstAssignmentToLocalMASK ; } else { bits &= ~ ( FirstAssignmentToLocalMASK ) ; } if ( localBinding . isFinal ( ) ) { if ( ( ( bits ) & ( ASTNode . DepthMASK ) ) == 0 ) { if ( flowInfo . isPotentiallyAssigned ( localBinding ) ) { currentScope . problemReporter ( ) . duplicateInitializationOfFinalLocal ( localBinding , this ) ; } flowContext . recordSettingFinal ( localBinding , this ) ; } else { currentScope . problemReporter ( ) . cannotAssignToFinalOuterLocal ( localBinding , this ) ; } } flowInfo . markAsDefinitelyAssigned ( localBinding ) ; } manageEnclosingInstanceAccessIfNecessary ( currentScope ) ; return flowInfo ; } public FlowInfo analyseCode ( BlockScope currentScope , FlowContext flowContext , FlowInfo flowInfo ) { } public FlowInfo analyseCode ( BlockScope currentScope , FlowContext flowContext , FlowInfo flowInfo , boolean valueRequired ) { } public TypeBinding checkFieldAccess ( BlockScope scope ) { } public void generateAssignment ( BlockScope currentScope , CodeStream codeStream , Assignment assignment , boolean valueRequired ) { } public void generateCode ( BlockScope currentScope , CodeStream codeStream , boolean valueRequired ) { } public void generateCompoundAssignment ( BlockScope currentScope , CodeStream codeStream , Expression expression , int operator , int assignmentImplicitConversion , boolean valueRequired ) { } public void generateCompoundAssignment ( BlockScope currentScope , CodeStream codeStream , MethodBinding writeAccessor , Expression expression , int operator , int assignmentImplicitConversion , boolean valueRequired ) { } public void generatePostIncrement ( BlockScope currentScope , CodeStream codeStream , CompoundAssignment postIncrement , boolean valueRequired ) { } public void generateReceiver ( CodeStream codeStream ) { } public void manageEnclosingInstanceAccessIfNecessary ( BlockScope currentScope ) { } public void manageSyntheticReadAccessIfNecessary ( BlockScope currentScope ) { } public void manageSyntheticWriteAccessIfNecessary ( BlockScope currentScope ) { } public TypeBinding reportError ( BlockScope scope ) { } public TypeBinding resolveType ( BlockScope scope ) { } public String toStringExpression ( ) { } public void traverse ( IAbstractSyntaxTreeVisitor visitor , BlockScope scope ) { } public String unboundReferenceErrorName ( ) { } }

Fix:
currentScope . problemReporter ( ) . cannotAssignToFinalField ( fieldBinding , this , false ) ;