Buggy code:
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 ) ; 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 { initializationScope . problemReporter ( ) . typeMismatchError ( initializationType , fieldType , this ) ; } 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 ) == ( Assignment . getDirectBinding ( this . initialization ) ) ) { initializationScope . problemReporter ( ) . assignmentHasNoEffect ( this , this . name ) ; } } if ( ( this . javadoc ) != null ) { this . javadoc . resolve ( initializationScope ) ; } else <START_BUG> if ( ( ( ( this . binding ) != null ) && ( ( this . binding . declaringClass ) != null ) ) && ( ! ( this . binding . declaringClass . isLocalType ( ) ) ) ) { <END_BUG> initializationScope . problemReporter ( ) . javadocMissing ( this . sourceStart , this . sourceEnd , this . binding . modifiers ) ; } } finally { initializationScope . initializedField = previousField ; initializationScope . lastVisibleFieldID = previousFieldID ; if ( ( this . binding . constant ( ) ) == null ) this . binding . setConstant ( Constant . NotAConstant ) ; } } } public void traverse ( ASTVisitor visitor , MethodScope scope ) { } }

Fix:
if ( ( ( this . binding . declaringClass ) != null ) && ( ! ( this . binding . declaringClass . isLocalType ( ) ) ) ) {