Buggy code:
public MethodBinding findMethodForArray ( ArrayBinding receiverType , char [ ] selector , TypeBinding [ ] argumentTypes , InvocationSite invocationSite ) { } protected void findMethodInSuperInterfaces ( ReferenceBinding currentType , char [ ] selector , ObjectVector found ) { } public ReferenceBinding findType ( char [ ] typeName , PackageBinding declarationPackage , PackageBinding invocationPackage ) { } public LocalVariableBinding findVariable ( char [ ] variable ) { } public Binding getBinding ( char [ ] name , int mask , InvocationSite invocationSite , boolean needResolve ) { } public MethodBinding getConstructor ( ReferenceBinding receiverType , TypeBinding [ ] argumentTypes , InvocationSite invocationSite ) { } public final PackageBinding getCurrentPackage ( ) { } public int getDeclarationModifiers ( ) { } public FieldBinding getField ( TypeBinding receiverType , char [ ] fieldName , InvocationSite invocationSite ) { } public MethodBinding getImplicitMethod ( char [ ] selector , TypeBinding [ ] argumentTypes , InvocationSite invocationSite ) { } public final ReferenceBinding getJavaIoSerializable ( ) { } public final ReferenceBinding getJavaLangAnnotationAnnotation ( ) { } public final ReferenceBinding getJavaLangAssertionError ( ) { } public final ReferenceBinding getJavaLangClass ( ) { } public final ReferenceBinding getJavaLangCloneable ( ) { } public final ReferenceBinding getJavaLangEnum ( ) { } public final ReferenceBinding getJavaLangIterable ( ) { } public final ReferenceBinding getJavaLangObject ( ) { } public final ReferenceBinding getJavaLangString ( ) { } public final ReferenceBinding getJavaLangThrowable ( ) { } public final ReferenceBinding getJavaUtilIterator ( ) { } public final ReferenceBinding getMemberType ( char [ ] typeName , ReferenceBinding enclosingType ) { } public MethodBinding getMethod ( TypeBinding receiverType , char [ ] selector , TypeBinding [ ] argumentTypes , InvocationSite invocationSite ) { } public final Binding getPackage ( char [ ] [ ] compoundName ) { } public final TypeBinding getType ( char [ ] name ) { } public final TypeBinding getType ( char [ ] name , PackageBinding packageBinding ) { } public final TypeBinding getType ( char [ ] [ ] compoundName , int typeNameLength ) { } final Binding getTypeOrPackage ( char [ ] name , int mask ) { } public final Binding getTypeOrPackage ( char [ ] [ ] compoundName ) { int nameLength = compoundName . length ; if ( nameLength == 1 ) { TypeBinding binding = Scope . getBaseType ( compoundName [ 0 ] ) ; if ( binding != null ) return binding ; } Binding binding = getTypeOrPackage ( compoundName [ 0 ] , ( ( Binding . TYPE ) | ( Binding . PACKAGE ) ) ) ; if ( ! ( binding . isValidBinding ( ) ) ) return binding ; int currentIndex = 1 ; boolean checkVisibility = false ; if ( binding instanceof PackageBinding ) { PackageBinding packageBinding = ( ( PackageBinding ) ( binding ) ) ; while ( currentIndex < nameLength ) { binding = packageBinding . getTypeOrPackage ( compoundName [ ( currentIndex ++ ) ] ) ; if ( binding == null ) return new ProblemReferenceBinding ( CharOperation . subarray ( compoundName , 0 , currentIndex ) , null , ProblemReasons . NotFound ) ; if ( ! ( binding . isValidBinding ( ) ) ) return new ProblemReferenceBinding ( CharOperation . subarray ( compoundName , 0 , currentIndex ) , ( binding instanceof ReferenceBinding ? ( ( ReferenceBinding ) ( binding ) ) . closestMatch ( ) : null ) , binding . problemId ( ) ) ; if ( ! ( binding instanceof PackageBinding ) ) break ; packageBinding = ( ( PackageBinding ) ( binding ) ) ; } if ( binding instanceof PackageBinding ) return binding ; checkVisibility = true ; } ReferenceBinding typeBinding = ( ( ReferenceBinding ) ( binding ) ) ; <START_BUG> ReferenceBinding qualifiedType = ( ( ReferenceBinding ) ( this . environment ( ) . convertToRawType ( typeBinding ) ) ) ; <END_BUG> if ( checkVisibility ) if ( ! ( typeBinding . canBeSeenBy ( this ) ) ) return new ProblemReferenceBinding ( CharOperation . subarray ( compoundName , 0 , currentIndex ) , typeBinding , ProblemReasons . NotVisible ) ; while ( currentIndex < nameLength ) { typeBinding = getMemberType ( compoundName [ ( currentIndex ++ ) ] , typeBinding ) ; if ( ! ( typeBinding . isValidBinding ( ) ) ) return new ProblemReferenceBinding ( CharOperation . subarray ( compoundName , 0 , currentIndex ) , ( ( ReferenceBinding ) ( binding ) ) . closestMatch ( ) , typeBinding . problemId ( ) ) ; if ( typeBinding . isGenericType ( ) ) { qualifiedType = this . environment ( ) . createRawType ( typeBinding , qualifiedType ) ; } else { qualifiedType = ( ( qualifiedType != null ) && ( ( qualifiedType . isRawType ( ) ) || ( qualifiedType . isParameterizedType ( ) ) ) ) ? this . environment ( ) . createParameterizedType ( typeBinding , null , qualifiedType ) : typeBinding ; } } return qualifiedType ; } protected boolean hasErasedCandidatesCollisions ( TypeBinding one , TypeBinding two , Map invocations , ReferenceBinding type , ASTNode typeRef ) { } public CaseStatement innermostSwitchCase ( ) { } protected boolean isAcceptableMethod ( MethodBinding one , MethodBinding two ) { } public boolean isBoxingCompatibleWith ( TypeBinding expressionType , TypeBinding targetType ) { } public final boolean isDefinedInField ( FieldBinding field ) { } public final boolean isDefinedInMethod ( MethodBinding method ) { } public final boolean isDefinedInSameUnit ( ReferenceBinding type ) { } public final boolean isDefinedInType ( ReferenceBinding type ) { } public boolean isInsideCase ( CaseStatement caseStatement ) { } public boolean isInsideDeprecatedCode ( ) { } private TypeBinding leastContainingInvocation ( TypeBinding mec , Object invocationData , List lubStack ) { } private TypeBinding leastContainingTypeArgument ( TypeBinding u , TypeBinding v , ReferenceBinding genericType , int rank , List lubStack ) { } public TypeBinding lowerUpperBound ( TypeBinding [ ] types ) { } private TypeBinding lowerUpperBound ( TypeBinding [ ] types , List lubStack ) { }

Fix:
ReferenceBinding qualifiedType = ( ( ReferenceBinding ) ( this . environment ( ) . convertToRawType ( typeBinding , false ) ) ) ;