Buggy code:
public class QualifiedNameReference extends NameReference { public char [ ] [ ] tokens ; public FieldBinding [ ] otherBindings ; public FieldBinding [ ] otherCodegenBindings ; int [ ] otherDepths ; public int indexOfFirstFieldBinding ; SyntheticAccessMethodBinding syntheticWriteAccessor ; SyntheticAccessMethodBinding [ ] syntheticReadAccessors ; protected FieldBinding lastFieldBinding ; public QualifiedNameReference ( char [ ] [ ] sources , int sourceStart , int sourceEnd ) { } public FlowInfo analyseAssignment ( BlockScope currentScope , FlowContext flowContext , FlowInfo flowInfo , Assignment assignment , boolean isCompound ) { if ( ( assignment . expression ) != null ) { flowInfo = assignment . expression . analyseCode ( currentScope , flowContext , flowInfo ) . unconditionalInits ( ) ; } int otherBindingsCount = ( ( otherBindings ) == null ) ? 0 : otherBindings . length ; int indexOfFirstValueRequired = otherBindingsCount ; while ( indexOfFirstValueRequired > 0 ) { FieldBinding otherBinding = otherBindings [ ( indexOfFirstValueRequired - 1 ) ] ; if ( otherBinding . isStatic ( ) ) break ; indexOfFirstValueRequired -- ; } FieldBinding lastFieldBinding = null ; if ( ( ( bits ) & ( FIELD ) ) != 0 ) { if ( ( ( lastFieldBinding = ( ( FieldBinding ) ( binding ) ) ) . isFinal ( ) ) && ( currentScope . allowBlankFinalFieldAssignment ( lastFieldBinding ) ) ) { if ( ! ( flowInfo . isDefinitelyAssigned ( lastFieldBinding ) ) ) { currentScope . problemReporter ( ) . uninitializedBlankFinalField ( lastFieldBinding , this ) ; } } } else { if ( ( ( bits ) & ( LOCAL ) ) != 0 ) { LocalVariableBinding localBinding ; if ( ! ( flowInfo . isDefinitelyAssigned ( ( localBinding = ( ( LocalVariableBinding ) ( binding ) ) ) ) ) ) { currentScope . problemReporter ( ) . uninitializedLocalVariable ( localBinding , this ) ; } if ( ! ( flowInfo . isFakeReachable ( ) ) ) localBinding . used = true ; } } if ( indexOfFirstValueRequired == 0 ) { manageEnclosingInstanceAccessIfNecessary ( currentScope ) ; } if ( ( otherBindings ) != null ) { int start = ( indexOfFirstValueRequired == 0 ) ? 0 : indexOfFirstValueRequired - 1 ; for ( int i = start ; i < otherBindingsCount ; i ++ ) { if ( lastFieldBinding != null ) { TypeBinding lastReceiverType ; switch ( i ) { case 0 : lastReceiverType = this . actualReceiverType ; break ; case 1 : lastReceiverType = ( ( VariableBinding ) ( binding ) ) . type ; break ; default : <START_BUG> lastReceiverType = otherBindings [ ( i - 1 ) ] . type ; <END_BUG> } manageSyntheticReadAccessIfNecessary ( currentScope , lastFieldBinding , lastReceiverType , i ) ; } lastFieldBinding = otherBindings [ i ] ; } } if ( isCompound ) { if ( ( ( ( binding ) == lastFieldBinding ) && ( currentScope . allowBlankFinalFieldAssignment ( lastFieldBinding ) ) ) && ( ! ( flowInfo . isDefinitelyAssigned ( lastFieldBinding ) ) ) ) { currentScope . problemReporter ( ) . uninitializedBlankFinalField ( lastFieldBinding , this ) ; } TypeBinding lastReceiverType ; if ( lastFieldBinding == ( binding ) ) { lastReceiverType = this . actualReceiverType ; } else if ( otherBindingsCount == 1 ) { lastReceiverType = ( ( VariableBinding ) ( this . binding ) ) . type ; } else { lastReceiverType = this . otherBindings [ ( otherBindingsCount - 2 ) ] . type ; } manageSyntheticReadAccessIfNecessary ( currentScope , lastFieldBinding , lastReceiverType , ( lastFieldBinding == ( binding ) ? 0 : otherBindingsCount ) ) ; } if ( lastFieldBinding . isFinal ( ) ) { if ( currentScope . allowBlankFinalFieldAssignment ( lastFieldBinding ) ) { if ( flowInfo . isPotentiallyAssigned ( lastFieldBinding ) ) { if ( ( indexOfFirstFieldBinding ) == 1 ) { currentScope . problemReporter ( ) . duplicateInitializationOfBlankFinalField ( lastFieldBinding , this ) ; } else { currentScope . problemReporter ( ) . cannotAssignToFinalField ( lastFieldBinding , this ) ; } } flowInfo . markAsDefinitelyAssigned ( lastFieldBinding ) ; flowContext . recordSettingFinal ( lastFieldBinding , this ) ; } else { currentScope . problemReporter ( ) . cannotAssignToFinalField ( lastFieldBinding , this ) ; } } TypeBinding lastReceiverType ; if ( lastFieldBinding == ( binding ) ) { lastReceiverType = this . actualReceiverType ; } else if ( otherBindingsCount == 1 ) { lastReceiverType = ( ( VariableBinding ) ( this . binding ) ) . type ; } else { lastReceiverType = this . otherBindings [ ( otherBindingsCount - 2 ) ] . type ; } manageSyntheticWriteAccessIfNecessary ( currentScope , lastFieldBinding , lastReceiverType ) ; return flowInfo ; } 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 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 void generateReadSequence ( BlockScope currentScope , CodeStream codeStream , boolean valueRequired ) { } public void generateReceiver ( CodeStream codeStream ) { } public TypeBinding getOtherFieldBindings ( BlockScope scope ) { } public void manageEnclosingInstanceAccessIfNecessary ( BlockScope currentScope ) { } public void manageSyntheticReadAccessIfNecessary ( BlockScope currentScope , FieldBinding fieldBinding , TypeBinding lastReceiverType , int index ) { } public void manageSyntheticWriteAccessIfNecessary ( BlockScope currentScope , FieldBinding fieldBinding , TypeBinding lastReceiverType ) { } public TypeBinding reportError ( BlockScope scope ) { } public TypeBinding resolveType ( BlockScope scope ) { } public void setFieldIndex ( int index ) { }

Fix:
lastReceiverType = otherBindings [ ( i - 2 ) ] . type ;