Buggy code:
public class QualifiedNameReference extends NameReference { public char [ ] [ ] tokens ; public long [ ] sourcePositions ; public FieldBinding [ ] otherBindings ; public FieldBinding [ ] otherCodegenBindings ; int [ ] otherDepths ; public int indexOfFirstFieldBinding ; SyntheticMethodBinding syntheticWriteAccessor ; SyntheticMethodBinding [ ] syntheticReadAccessors ; public TypeBinding genericCast ; public TypeBinding [ ] otherGenericCasts ; public QualifiedNameReference ( char [ ] [ ] sources , long [ ] positions , int sourceStart , int sourceEnd ) { } public FlowInfo analyseAssignment ( BlockScope currentScope , FlowContext flowContext , FlowInfo flowInfo , Assignment assignment , boolean isCompound ) { } public FlowInfo analyseCode ( BlockScope currentScope , FlowContext flowContext , FlowInfo flowInfo ) { } public FlowInfo analyseCode ( BlockScope currentScope , FlowContext flowContext , FlowInfo flowInfo , boolean valueRequired ) { } public TypeBinding checkFieldAccess ( BlockScope scope ) { } public void computeConversion ( Scope scope , TypeBinding runtimeTimeType , TypeBinding compileTimeType ) { if ( ( runtimeTimeType == null ) || ( compileTimeType == null ) ) return ; FieldBinding field = null ; int length = ( ( this . otherBindings ) == null ) ? 0 : this . otherBindings . length ; if ( length == 0 ) { <START_BUG> if ( ( ( this . binding ) != null ) && ( this . binding . isValidBinding ( ) ) ) { <END_BUG> field = ( ( FieldBinding ) ( this . binding ) ) ; } } else { field = this . otherBindings [ ( length - 1 ) ] ; } if ( field != null ) { FieldBinding originalBinding = field . original ( ) ; if ( originalBinding != field ) { if ( ( ( ( originalBinding . type . tagBits ) & ( TagBits . HasTypeVariable ) ) != 0 ) && ( ( runtimeTimeType . id ) != ( T_Object ) ) ) { setGenericCast ( length , originalBinding . type . genericCast ( runtimeTimeType ) ) ; } } } super . computeConversion ( scope , runtimeTimeType , compileTimeType ) ; } public void generateAssignment ( BlockScope currentScope , CodeStream codeStream , Assignment assignment , boolean valueRequired ) { } public void generateCode ( BlockScope currentScope , CodeStream codeStream , boolean valueRequired ) { } public void generateCompoundAssignment ( BlockScope currentScope , CodeStream codeStream , Expression expression , int operator , int assignmentImplicitConversion , boolean valueRequired ) { } public void generatePostIncrement ( BlockScope currentScope , CodeStream codeStream , CompoundAssignment postIncrement , boolean valueRequired ) { } public FieldBinding generateReadSequence ( BlockScope currentScope , CodeStream codeStream ) { } public void generateReceiver ( CodeStream codeStream ) { } public TypeBinding [ ] genericTypeArguments ( ) { } protected FieldBinding getCodegenBinding ( int index ) { } protected TypeBinding getGenericCast ( int index ) { } public TypeBinding getOtherFieldBindings ( BlockScope scope ) { } public void manageEnclosingInstanceAccessIfNecessary ( BlockScope currentScope , FlowInfo flowInfo ) { } public void manageSyntheticAccessIfNecessary ( BlockScope currentScope , FieldBinding fieldBinding , TypeBinding lastReceiverType , int index , FlowInfo flowInfo ) { } public StringBuffer printExpression ( int indent , StringBuffer output ) { } public TypeBinding reportError ( BlockScope scope ) { } public TypeBinding resolveType ( BlockScope scope ) { } protected void setCodegenBinding ( int index , FieldBinding someCodegenBinding ) { } protected void setGenericCast ( int index , TypeBinding someGenericCast ) { } protected void setSyntheticAccessor ( FieldBinding fieldBinding , int index , SyntheticMethodBinding syntheticAccessor ) { } public void setFieldIndex ( int index ) { } public void traverse ( ASTVisitor visitor , BlockScope scope ) { } public String unboundReferenceErrorName ( ) { } }

Fix:
if ( ( ( ( ( this . bits ) & ( Binding . FIELD ) ) != 0 ) && ( ( this . binding ) != null ) ) && ( this . binding . isValidBinding ( ) ) ) {