Buggy code:
if ( existingVariable instanceof FieldBinding ) { FieldBinding existingField = ( ( FieldBinding ) ( existingVariable ) ) ; if ( ( existingField . original ( ) ) == ( this . binding ) ) break checkHidingSuperField ; if ( ! ( existingField . canBeSeenBy ( declaringType , this , initializationScope ) ) ) break checkHidingSuperField ; } initializationScope . problemReporter ( ) . fieldHiding ( this , existingVariable ) ; break checkHiding ; } Scope outerScope = classScope . parent ; if ( ( outerScope . kind ) == ( Scope . COMPILATION_UNIT_SCOPE ) ) break checkHiding ; Binding existingVariable = outerScope . getBinding ( this . name , Binding . VARIABLE , this , false ) ; if ( existingVariable == null ) break checkHiding ; if ( ! ( existingVariable . isValidBinding ( ) ) ) break checkHiding ; if ( existingVariable == ( this . binding ) ) break checkHiding ; if ( existingVariable instanceof FieldBinding ) { FieldBinding existingField = ( ( FieldBinding ) ( existingVariable ) ) ; if ( ( existingField . original ( ) ) == ( this . binding ) ) break checkHiding ; if ( ( ! ( existingField . isStatic ( ) ) ) && ( declaringType . isStatic ( ) ) ) break checkHiding ; } 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 ) ; <START_BUG> if ( ( ( this . initialization . isConstantValueOfTypeAssignableToType ( initializationType , fieldType ) ) || ( ( fieldType . isBaseType ( ) ) && ( BaseTypeBinding . isWidening ( fieldType . id , initializationType . id ) ) ) ) || ( initializationType . isCompatibleWith ( fieldType ) ) ) { <END_BUG> 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 ( ) ) ) ) && ( this . 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 ) ; } if ( ( this . binding ) == ( Expression . getDirectBinding ( this . initialization ) ) ) { initializationScope . problemReporter ( ) . assignmentHasNoEffect ( this , this . name ) ; }

Fix:
if ( ( ( this . initialization . isConstantValueOfTypeAssignableToType ( initializationType , fieldType ) ) || ( BaseTypeBinding . isWidening ( fieldType . id , initializationType . id ) ) ) || ( initializationType . isCompatibleWith ( fieldType ) ) ) {