Buggy code:
public class SingleNameReference extends NameReference implements OperatorIds { public static final int READ = 0 ; public static final int WRITE = 1 ; public char [ ] token ; public MethodBinding [ ] syntheticAccessors ; public TypeBinding genericCast ; public SingleNameReference ( char [ ] source , long pos ) { } 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 ) { } 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 generateCompoundAssignment ( BlockScope currentScope , CodeStream codeStream , MethodBinding writeAccessor , Expression expression , int operator , int assignmentImplicitConversion , boolean valueRequired ) { } public void generatePostIncrement ( BlockScope currentScope , CodeStream codeStream , CompoundAssignment postIncrement , boolean valueRequired ) { } public void generateReceiver ( CodeStream codeStream ) { } public TypeBinding [ ] genericTypeArguments ( ) { } public LocalVariableBinding localVariableBinding ( ) { } public void manageEnclosingInstanceAccessIfNecessary ( BlockScope currentScope , FlowInfo flowInfo ) { } public void manageSyntheticAccessIfNecessary ( BlockScope currentScope , FlowInfo flowInfo , boolean isReadAccess ) { } public int nullStatus ( FlowInfo flowInfo ) { } public TypeBinding postConversionType ( Scope scope ) { } public StringBuffer printExpression ( int indent , StringBuffer output ) { } public TypeBinding reportError ( BlockScope scope ) { } public TypeBinding resolveType ( BlockScope scope ) { if ( ( this . actualReceiverType ) != null ) { this . binding = scope . getField ( this . actualReceiverType , token , this ) ; } else { this . actualReceiverType = scope . enclosingSourceType ( ) ; this . binding = scope . getBinding ( token , ( ( bits ) & ( ASTNode . RestrictiveFlagMASK ) ) , this , true ) ; } this . codegenBinding = this . binding ; if ( this . binding . isValidBinding ( ) ) { switch ( ( bits ) & ( ASTNode . RestrictiveFlagMASK ) ) { case Binding . VARIABLE : case ( Binding . VARIABLE ) | ( Binding . TYPE ) : if ( ( binding ) instanceof VariableBinding ) { VariableBinding variable = ( ( VariableBinding ) ( binding ) ) ; if ( ( binding ) instanceof LocalVariableBinding ) { bits &= ~ ( ASTNode . RestrictiveFlagMASK ) ; bits |= Binding . LOCAL ; if ( ( ! ( variable . isFinal ( ) ) ) && ( ( ( bits ) & ( ASTNode . DepthMASK ) ) != 0 ) ) { scope . problemReporter ( ) . cannotReferToNonFinalOuterLocal ( ( ( LocalVariableBinding ) ( variable ) ) , this ) ; } TypeBinding fieldType = variable . type ; if ( ( ( this . bits ) & ( ASTNode . IsStrictlyAssigned ) ) == 0 ) { constant = variable . constant ( ) ; if ( fieldType != null ) fieldType = fieldType . capture ( scope , this . sourceEnd ) ; } else { constant = Constant . NotAConstant ; } return this . resolvedType = fieldType ; } FieldBinding field = ( ( FieldBinding ) ( this . binding ) ) ; if ( ( ! ( field . isStatic ( ) ) ) && ( ( scope . compilerOptions ( ) . getSeverity ( CompilerOptions . UnqualifiedFieldAccess ) ) != ( ProblemSeverities . Ignore ) ) ) { scope . problemReporter ( ) . unqualifiedFieldAccess ( this , field ) ; } TypeBinding fieldType = checkFieldAccess ( scope ) ; return this . resolvedType = ( ( ( this . bits ) & ( ASTNode . IsStrictlyAssigned ) ) == 0 ) ? fieldType . capture ( scope , this . sourceEnd ) : fieldType ; } bits &= ~ ( ASTNode . RestrictiveFlagMASK ) ; bits |= Binding . TYPE ; case Binding . TYPE : constant = Constant . NotAConstant ; TypeBinding type = ( ( TypeBinding ) ( binding ) ) ; if ( isTypeUseDeprecated ( type , scope ) ) scope . problemReporter ( ) . deprecatedType ( type , this ) ; <START_BUG> type = scope . environment ( ) . convertToRawType ( type ) ; <END_BUG> return this . resolvedType = type ; } } return this . resolvedType = this . reportError ( scope ) ; } public void traverse ( ASTVisitor visitor , BlockScope scope ) { } public void traverse ( ASTVisitor visitor , ClassScope scope ) { } public String unboundReferenceErrorName ( ) { } }

Fix:
type = scope . environment ( ) . convertToRawType ( type , false ) ;