Buggy code:
public class FieldDeclaration extends AbstractVariableDeclaration { public FieldBinding binding ; boolean hasBeenResolved = false ; public Javadoc javadoc ; public int endPart1Position ; public int endPart2Position ; public FieldDeclaration ( ) { } public FieldDeclaration ( char [ ] name , int sourceStart , int sourceEnd ) { } public FlowInfo analyseCode ( MethodScope initializationScope , FlowContext flowContext , FlowInfo flowInfo ) { } public void generateCode ( BlockScope currentScope , CodeStream codeStream ) { } public int getKind ( ) { } public boolean isStatic ( ) { } public void resolve ( MethodScope initializationScope ) { if ( ( ( ! ( this . hasBeenResolved ) ) && ( ( this . binding ) != null ) ) && ( this . binding . isValidBinding ( ) ) ) { this . hasBeenResolved = true ; <START_BUG> ASTNode . resolveAnnotations ( this . annotations , initializationScope ) ; <END_BUG> ClassScope classScope = initializationScope . enclosingClassScope ( ) ; if ( classScope != null ) { SourceTypeBinding declaringType = classScope . enclosingSourceType ( ) ; boolean checkLocal = true ; if ( ( declaringType . superclass ) != null ) { Binding existingVariable = classScope . findField ( declaringType . superclass , this . name , this , false ) ; if ( ( ( existingVariable != null ) && ( ( this . binding ) != existingVariable ) ) && ( existingVariable . isValidBinding ( ) ) ) { initializationScope . problemReporter ( ) . fieldHiding ( this , existingVariable ) ; checkLocal = false ; } } if ( checkLocal ) { Scope outerScope = classScope . parent ; Binding existingVariable = outerScope . getBinding ( this . name , Binding . VARIABLE , this , false ) ; if ( ( ( ( existingVariable != null ) && ( ( this . binding ) != existingVariable ) ) && ( existingVariable . isValidBinding ( ) ) ) && ( ( ( ! ( existingVariable instanceof FieldBinding ) ) || ( ( ( FieldBinding ) ( existingVariable ) ) . isStatic ( ) ) ) || ( ! ( declaringType . isStatic ( ) ) ) ) ) { 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 ; 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 ( ) . unsafeRawConversion ( this . initialization , initializationType , fieldType ) ; } } 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 ( NotAConstant ) ; } } if ( ( this . javadoc ) != null ) { this . javadoc . resolve ( initializationScope ) ; } else if ( ( ( ( this . binding ) != null ) && ( ( this . binding . declaringClass ) != null ) ) && ( ! ( this . binding . declaringClass . isLocalType ( ) ) ) ) { 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:
ASTNode . resolveAnnotations ( initializationScope , this . annotations , this . binding ) ;