Buggy code:
initializationScope . problemReporter ( ) . fieldHiding ( this , existingVariable ) ; } } if ( ( this . type ) != null ) { this . type . resolvedType = this . binding . type ; } FieldBinding previousField = initializationScope . initializedField ; int previousFieldID = initializationScope . lastVisibleFieldID ; try { initializationScope . initializedField = this . binding ; initializationScope . lastVisibleFieldID = this . binding . id ; ASTNode . resolveAnnotations ( initializationScope , this . annotations , this . binding ) ; if ( ( ( ( ( this . binding . getAnnotationTagBits ( ) ) & ( TagBits . AnnotationDeprecated ) ) == 0 ) && ( ( ( this . binding . modifiers ) & ( ClassFileConstants . AccDeprecated ) ) != 0 ) ) && ( ( initializationScope . compilerOptions ( ) . sourceLevel ) >= ( ClassFileConstants . JDK1_5 ) ) ) { initializationScope . problemReporter ( ) . missingDeprecatedAnnotationForField ( this ) ; } if ( ( this . initialization ) == null ) { this . binding . setConstant ( Constant . NotAConstant ) ; } else { this . binding . setConstant ( Constant . NotAConstant ) ; TypeBinding fieldType = this . binding . type ; TypeBinding initializationType ; this . initialization . setExpectedType ( fieldType ) ; if ( ( this . initialization ) instanceof ArrayInitializer ) { if ( ( initializationType = this . initialization . resolveTypeExpecting ( initializationScope , fieldType ) ) != null ) { ( ( ArrayInitializer ) ( this . initialization ) ) . binding = ( ( ArrayBinding ) ( initializationType ) ) ; this . initialization . computeConversion ( initializationScope , fieldType , initializationType ) ; } } else if ( ( initializationType = this . initialization . resolveType ( initializationScope ) ) != null ) { if ( fieldType != initializationType ) initializationScope . compilationUnitScope ( ) . recordTypeConversion ( fieldType , initializationType ) ; if ( ( ( this . initialization . isConstantValueOfTypeAssignableToType ( initializationType , fieldType ) ) || ( ( fieldType . isBaseType ( ) ) && ( BaseTypeBinding . isWidening ( fieldType . id , initializationType . id ) ) ) ) || ( initializationType . isCompatibleWith ( fieldType ) ) ) { this . initialization . computeConversion ( initializationScope , fieldType , initializationType ) ; if ( initializationType . needsUncheckedConversion ( fieldType ) ) { initializationScope . problemReporter ( ) . unsafeTypeConversion ( this . initialization , initializationType , fieldType ) ; } if ( ( ( this . initialization ) instanceof CastExpression ) && ( ( ( this . initialization . bits ) & ( ASTNode . UnnecessaryCast ) ) == 0 ) ) { CastExpression . checkNeedForAssignedCast ( initializationScope , fieldType , ( ( CastExpression ) ( this . initialization ) ) ) ; } } else if ( ( initializationScope . isBoxingCompatibleWith ( initializationType , fieldType ) ) || ( ( ( ( initializationType . isBaseType ( ) ) && ( ( initializationScope . compilerOptions ( ) . sourceLevel ) >= ( ClassFileConstants . JDK1_5 ) ) ) && ( ! ( fieldType . isBaseType ( ) ) ) ) && ( initialization . isConstantValueOfTypeAssignableToType ( initializationType , initializationScope . environment ( ) . computeBoxingType ( fieldType ) ) ) ) ) { this . initialization . computeConversion ( initializationScope , fieldType , initializationType ) ; if ( ( ( this . initialization ) instanceof CastExpression ) && ( ( ( this . initialization . bits ) & ( ASTNode . UnnecessaryCast ) ) == 0 ) ) { CastExpression . checkNeedForAssignedCast ( initializationScope , fieldType , ( ( CastExpression ) ( this . initialization ) ) ) ; } } else { if ( ( ( fieldType . tagBits ) & ( TagBits . HasMissingType ) ) == 0 ) { initializationScope . problemReporter ( ) . typeMismatchError ( initializationType , fieldType , this . initialization , null ) ; } } if ( this . binding . isFinal ( ) ) { this . binding . setConstant ( this . initialization . constant . castTo ( ( ( ( this . binding . type . id ) << 4 ) + ( this . initialization . constant . typeID ( ) ) ) ) ) ; } } else { this . binding . setConstant ( Constant . NotAConstant ) ; } <START_BUG> if ( ( this . binding ) == ( Assignment . getDirectBinding ( this . initialization ) ) ) { <END_BUG> initializationScope . problemReporter ( ) . assignmentHasNoEffect ( this , this . name ) ; } } if ( ( this . javadoc ) != null ) { this . javadoc . resolve ( initializationScope ) ; } else if ( ( ( ( this . binding ) != null ) && ( ( this . binding . declaringClass ) != null ) ) && ( ! ( this . binding . declaringClass . isLocalType ( ) ) ) ) { int javadocVisibility = ( this . binding . modifiers ) & ( ExtraCompilerModifiers . AccVisibilityMASK ) ; ProblemReporter reporter = initializationScope . problemReporter ( ) ; int severity = reporter . computeSeverity ( IProblem . JavadocMissing ) ; if ( severity != ( ProblemSeverities . Ignore ) ) { if ( classScope != null ) { javadocVisibility = Util . computeOuterMostVisibility ( classScope . referenceType ( ) , javadocVisibility ) ; } int javadocModifiers = ( ( this . binding . modifiers ) & ( ~ ( ExtraCompilerModifiers . AccVisibilityMASK ) ) ) | javadocVisibility ; reporter . javadocMissing ( this . sourceStart , this . sourceEnd , severity , javadocModifiers ) ; } } } finally { initializationScope . initializedField = previousField ; initializationScope . lastVisibleFieldID = previousFieldID ; if ( ( this . binding . constant ( ) ) == null ) this . binding . setConstant ( Constant . NotAConstant ) ; } }

Fix:
if ( ( this . binding ) == ( Expression . getDirectBinding ( this . initialization ) ) ) {