Buggy code:
public class JavadocFieldReference extends FieldReference { public int tagSourceStart ; public int tagSourceEnd ; public JavadocFieldReference ( char [ ] source , long pos ) { } private TypeBinding internalResolveType ( Scope scope ) { this . constant = NotAConstant ; if ( ( this . receiver ) == null ) { this . receiverType = scope . enclosingSourceType ( ) ; } else if ( ( scope . kind ) == ( Scope . CLASS_SCOPE ) ) { this . receiverType = this . receiver . resolveType ( ( ( ClassScope ) ( scope ) ) ) ; } else { this . receiverType = this . receiver . resolveType ( ( ( BlockScope ) ( scope ) ) ) ; } if ( ( this . receiverType ) == null ) { return null ; } <START_BUG> Binding fieldBinding = ( ( ( this . receiver ) != null ) && ( this . receiver . isThis ( ) ) ) ? scope . getBinding ( this . token , ( ( this . bits ) & ( ASTNode . RestrictiveFlagMASK ) ) , this , true ) : scope . getField ( this . receiverType , this . token , this ) ; <END_BUG> if ( ! ( fieldBinding . isValidBinding ( ) ) ) { switch ( fieldBinding . problemId ( ) ) { case ProblemReasons . NonStaticReferenceInConstructorInvocation : case ProblemReasons . NonStaticReferenceInStaticContext : case ProblemReasons . InheritedNameHidesEnclosingName : FieldBinding closestMatch = ( ( ProblemFieldBinding ) ( fieldBinding ) ) . closestMatch ; if ( closestMatch != null ) { fieldBinding = closestMatch ; } } } if ( ( ! ( fieldBinding . isValidBinding ( ) ) ) || ( ! ( fieldBinding instanceof FieldBinding ) ) ) { if ( ( this . receiverType ) instanceof ReferenceBinding ) { ReferenceBinding refBinding = ( ( ReferenceBinding ) ( this . receiverType ) ) ; MethodBinding [ ] bindings = refBinding . getMethods ( this . token ) ; if ( bindings == null ) { scope . problemReporter ( ) . javadocInvalidField ( this . sourceStart , this . sourceEnd , fieldBinding , this . receiverType , scope . getDeclarationModifiers ( ) ) ; } else { switch ( bindings . length ) { case 0 : scope . problemReporter ( ) . javadocInvalidField ( this . sourceStart , this . sourceEnd , fieldBinding , this . receiverType , scope . getDeclarationModifiers ( ) ) ; break ; case 1 : this . binding = null ; break ; default : scope . problemReporter ( ) . javadocAmbiguousMethodReference ( this . sourceStart , this . sourceEnd , fieldBinding , scope . getDeclarationModifiers ( ) ) ; break ; } } } return null ; } this . binding = ( ( FieldBinding ) ( fieldBinding ) ) ; if ( isFieldUseDeprecated ( this . binding , scope , ( ( ( this . bits ) & ( IsStrictlyAssignedMASK ) ) != 0 ) ) ) { scope . problemReporter ( ) . javadocDeprecatedField ( this . binding , this , scope . getDeclarationModifiers ( ) ) ; } return this . resolvedType = this . binding . type ; } public boolean isSuperAccess ( ) { } public StringBuffer printExpression ( int indent , StringBuffer output ) { } public TypeBinding resolveType ( BlockScope scope ) { } public TypeBinding resolveType ( ClassScope scope ) { } public void traverse ( ASTVisitor visitor , BlockScope scope ) { } }

Fix:
Binding fieldBinding = ( ( ( this . receiver ) != null ) && ( this . receiver . isThis ( ) ) ) ? scope . classScope ( ) . getBinding ( this . token , ( ( this . bits ) & ( ASTNode . RestrictiveFlagMASK ) ) , this , true ) : scope . getField ( this . receiverType , this . token , this ) ;