Buggy code:
public class CodeSnippetQualifiedNameReference extends QualifiedNameReference implements InvocationSite , ProblemReasons , EvaluationConstants { EvaluationContext evaluationContext ; FieldBinding delegateThis ; public CodeSnippetQualifiedNameReference ( char [ ] [ ] sources , long [ ] positions , int sourceStart , int sourceEnd , EvaluationContext evaluationContext ) { } 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 FieldBinding generateReadSequence ( BlockScope currentScope , CodeStream codeStream ) { int otherBindingsCount = ( ( this . otherCodegenBindings ) == null ) ? 0 : this . otherCodegenBindings . length ; boolean needValue = ( otherBindingsCount == 0 ) || ( ! ( this . otherBindings [ 0 ] . isStatic ( ) ) ) ; FieldBinding lastFieldBinding = null ; TypeBinding lastGenericCast = null ; switch ( ( this . bits ) & ( ASTNode . RestrictiveFlagMASK ) ) { case Binding . FIELD : lastFieldBinding = ( ( FieldBinding ) ( this . codegenBinding ) ) ; lastGenericCast = this . genericCast ; if ( ( lastFieldBinding . constant ( ) ) != ( Constant . NotAConstant ) ) { break ; } if ( needValue ) { if ( lastFieldBinding . canBeSeenBy ( getReceiverType ( currentScope ) , this , currentScope ) ) { if ( ! ( lastFieldBinding . isStatic ( ) ) ) { if ( ( ( this . bits ) & ( ASTNode . DepthMASK ) ) != 0 ) { ReferenceBinding targetType = currentScope . enclosingSourceType ( ) . enclosingTypeAt ( ( ( ( this . bits ) & ( ASTNode . DepthMASK ) ) > > ( ASTNode . DepthSHIFT ) ) ) ; Object [ ] emulationPath = currentScope . getEmulationPath ( targetType , true , false ) ; codeStream . generateOuterAccess ( emulationPath , this , targetType , currentScope ) ; } else { generateReceiver ( codeStream ) ; } } } else { if ( ! ( lastFieldBinding . isStatic ( ) ) ) { if ( ( ( this . bits ) & ( ASTNode . DepthMASK ) ) != 0 ) { <START_BUG> currentScope . problemReporter ( ) . needImplementation ( ) ; <END_BUG> } else { generateReceiver ( codeStream ) ; } } else { codeStream . aconst_null ( ) ; } } } break ; case Binding . LOCAL : if ( ! needValue ) break ; LocalVariableBinding localBinding = ( ( LocalVariableBinding ) ( this . codegenBinding ) ) ; Constant localConstant = localBinding . constant ( ) ; if ( localConstant != ( Constant . NotAConstant ) ) { codeStream . generateConstant ( localConstant , 0 ) ; } else { if ( ( ( bits ) & ( ASTNode . DepthMASK ) ) != 0 ) { VariableBinding [ ] path = currentScope . getEmulationPath ( localBinding ) ; codeStream . generateOuterAccess ( path , this , localBinding , currentScope ) ; } else { codeStream . load ( localBinding ) ; } } } if ( ( this . otherCodegenBindings ) != null ) { for ( int i = 0 ; i < otherBindingsCount ; i ++ ) { FieldBinding nextField = this . otherCodegenBindings [ i ] ; TypeBinding nextGenericCast = ( ( this . otherGenericCasts ) == null ) ? null : this . otherGenericCasts [ i ] ; if ( lastFieldBinding != null ) { needValue = ! ( nextField . isStatic ( ) ) ; if ( needValue ) { if ( lastFieldBinding . canBeSeenBy ( getReceiverType ( currentScope ) , this , currentScope ) ) { Constant fieldConstant = lastFieldBinding . constant ( ) ; if ( fieldConstant != ( Constant . NotAConstant ) ) { if ( ( lastFieldBinding != ( this . codegenBinding ) ) && ( ! ( lastFieldBinding . isStatic ( ) ) ) ) { codeStream . invokeObjectGetClass ( ) ; codeStream . pop ( ) ; } codeStream . generateConstant ( fieldConstant , 0 ) ; } else if ( lastFieldBinding . isStatic ( ) ) { codeStream . getstatic ( lastFieldBinding ) ; } else { codeStream . getfield ( lastFieldBinding ) ; } } else { codeStream . generateEmulatedReadAccessForField ( lastFieldBinding ) ; } if ( lastGenericCast != null ) codeStream . checkcast ( lastGenericCast ) ; } else { if ( ( ( this . codegenBinding ) != lastFieldBinding ) && ( ! ( lastFieldBinding . isStatic ( ) ) ) ) { codeStream . invokeObjectGetClass ( ) ; codeStream . pop ( ) ; } } } lastFieldBinding = nextField ; lastGenericCast = nextGenericCast ; if ( ( lastFieldBinding != null ) && ( ! ( lastFieldBinding . canBeSeenBy ( getReceiverType ( currentScope ) , this , currentScope ) ) ) ) { if ( lastFieldBinding . isStatic ( ) ) { codeStream . aconst_null ( ) ; } } } } return lastFieldBinding ; } public void generateReceiver ( CodeStream codeStream ) { } public TypeBinding getOtherFieldBindings ( BlockScope scope ) { } public TypeBinding getReceiverType ( BlockScope currentScope ) { } public void manageSyntheticAccessIfNecessary ( BlockScope currentScope , FieldBinding fieldBinding , TypeBinding lastReceiverType , int index , FlowInfo flowInfo ) { } public TypeBinding reportError ( BlockScope scope ) { } public TypeBinding resolveTypeVisibility ( BlockScope scope ) { } }

Fix:
currentScope . problemReporter ( ) . needImplementation ( this ) ;