Buggy code:
public TypeBinding genericCast ; public SingleNameReference ( char [ ] source , long pos ) { } public FlowInfo analyseAssignment ( BlockScope currentScope , FlowContext flowContext , FlowInfo flowInfo , Assignment assignment , boolean isCompound ) { boolean isReachable = ( ( flowInfo . tagBits ) & ( FlowInfo . UNREACHABLE ) ) == 0 ; if ( isCompound ) { switch ( ( bits ) & ( ASTNode . RestrictiveFlagMASK ) ) { case Binding . FIELD : FieldBinding fieldBinding ; if ( ( ( fieldBinding = ( ( FieldBinding ) ( binding ) ) ) . isBlankFinal ( ) ) && ( currentScope . allowBlankFinalFieldAssignment ( fieldBinding ) ) ) { if ( ! ( flowInfo . isDefinitelyAssigned ( fieldBinding ) ) ) { currentScope . problemReporter ( ) . uninitializedBlankFinalField ( fieldBinding , this ) ; } } manageSyntheticAccessIfNecessary ( currentScope , flowInfo , true ) ; break ; case Binding . LOCAL : LocalVariableBinding localBinding ; if ( ! ( flowInfo . isDefinitelyAssigned ( ( localBinding = ( ( LocalVariableBinding ) ( binding ) ) ) ) ) ) { currentScope . problemReporter ( ) . uninitializedLocalVariable ( localBinding , this ) ; } if ( isReachable ) { localBinding . useFlag = LocalVariableBinding . USED ; } else if ( ( localBinding . useFlag ) == ( LocalVariableBinding . UNUSED ) ) { localBinding . useFlag = LocalVariableBinding . FAKE_USED ; } } } if ( ( assignment . expression ) != null ) { flowInfo = assignment . expression . analyseCode ( currentScope , flowContext , flowInfo ) . unconditionalInits ( ) ; } switch ( ( bits ) & ( ASTNode . RestrictiveFlagMASK ) ) { case Binding . FIELD : manageSyntheticAccessIfNecessary ( currentScope , flowInfo , false ) ; FieldBinding fieldBinding = ( ( FieldBinding ) ( binding ) ) ; ReferenceBinding declaringClass = fieldBinding . declaringClass ; if ( declaringClass . isEnum ( ) ) { MethodScope methodScope = currentScope . methodScope ( ) ; SourceTypeBinding sourceType = currentScope . enclosingSourceType ( ) ; if ( ( ( ( ( fieldBinding . isStatic ( ) ) && ( ( this . constant ) == ( Constant . NotAConstant ) ) ) && ( ! ( methodScope . isStatic ) ) ) && ( ( sourceType == declaringClass ) || ( ( sourceType . superclass ) == declaringClass ) ) ) && ( methodScope . isInsideInitializerOrConstructor ( ) ) ) { currentScope . problemReporter ( ) . enumStaticFieldUsedDuringInitialization ( fieldBinding , this ) ; } } if ( fieldBinding . isFinal ( ) ) { if ( ( ( ! isCompound ) && ( fieldBinding . isBlankFinal ( ) ) ) && ( currentScope . allowBlankFinalFieldAssignment ( fieldBinding ) ) ) { if ( flowInfo . isPotentiallyAssigned ( fieldBinding ) ) { currentScope . problemReporter ( ) . duplicateInitializationOfBlankFinalField ( fieldBinding , this ) ; } else { flowContext . recordSettingFinal ( fieldBinding , this , flowInfo ) ; } flowInfo . markAsDefinitelyAssigned ( fieldBinding ) ; } else { currentScope . problemReporter ( ) . cannotAssignToFinalField ( fieldBinding , this ) ; } } break ; case Binding . LOCAL : LocalVariableBinding localBinding = ( ( LocalVariableBinding ) ( binding ) ) ; if ( ! ( flowInfo . isDefinitelyAssigned ( localBinding ) ) ) { bits |= ASTNode . FirstAssignmentToLocal ; } else { bits &= ~ ( ASTNode . FirstAssignmentToLocal ) ; } if ( localBinding . isFinal ( ) ) { if ( ( ( bits ) & ( ASTNode . DepthMASK ) ) == 0 ) { if ( ( isReachable && isCompound ) || ( ! ( localBinding . isBlankFinal ( ) ) ) ) { currentScope . problemReporter ( ) . cannotAssignToFinalLocal ( localBinding , this ) ; } else if ( flowInfo . isPotentiallyAssigned ( localBinding ) ) { currentScope . problemReporter ( ) . duplicateInitializationOfFinalLocal ( localBinding , this ) ; } else { flowContext . recordSettingFinal ( localBinding , this , flowInfo ) ; } } else { currentScope . problemReporter ( ) . cannotAssignToFinalOuterLocal ( localBinding , this ) ; } } else <START_BUG> if ( localBinding . isArgument ) { <END_BUG> currentScope . problemReporter ( ) . parameterAssignment ( localBinding , this ) ; } flowInfo . markAsDefinitelyAssigned ( localBinding ) ; } manageEnclosingInstanceAccessIfNecessary ( currentScope , flowInfo ) ; 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 computeConversion ( Scope scope , TypeBinding runtimeTimeType , TypeBinding compileTimeType ) { } 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 TypeBinding [ ] genericTypeArguments ( ) { } public LocalVariableBinding localVariableBinding ( ) { } public void manageEnclosingInstanceAccessIfNecessary ( BlockScope currentScope , FlowInfo flowInfo ) { } public void manageSyntheticAccessIfNecessary ( BlockScope currentScope , FlowInfo flowInfo , boolean isReadAccess ) { } public int nullStatus ( FlowInfo flowInfo ) { } public TypeBinding postConversionType ( Scope scope ) { } public StringBuffer printExpression ( int indent , StringBuffer output ) { } public TypeBinding reportError ( BlockScope scope ) { } public TypeBinding resolveType ( BlockScope scope ) { }

Fix:
if ( ( ( localBinding . tagBits ) & ( TagBits . IsArgument ) ) != 0 ) {