Buggy code:
protected MethodBinding findDefaultAbstractMethod ( ReferenceBinding receiverType , char [ ] selector , TypeBinding [ ] argumentTypes , InvocationSite invocationSite , ReferenceBinding classHierarchyStart , ObjectVector found , MethodBinding concreteMatch ) { } public ReferenceBinding findDirectMemberType ( char [ ] typeName , ReferenceBinding enclosingType ) { } public MethodBinding findExactMethod ( ReferenceBinding receiverType , char [ ] selector , TypeBinding [ ] argumentTypes , InvocationSite invocationSite ) { } public FieldBinding findField ( TypeBinding receiverType , char [ ] fieldName , InvocationSite invocationSite , boolean needResolve ) { } public ReferenceBinding findMemberType ( char [ ] typeName , ReferenceBinding enclosingType ) { } public MethodBinding findMethod ( ReferenceBinding receiverType , char [ ] selector , TypeBinding [ ] argumentTypes , InvocationSite invocationSite ) { } 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 ) { } protected boolean hasErasedCandidatesCollisions ( TypeBinding one , TypeBinding two , Map invocations , ReferenceBinding type , ASTNode typeRef ) { } public CaseStatement innermostSwitchCase ( ) { } protected boolean isAcceptableMethod ( MethodBinding one , MethodBinding two ) { TypeBinding [ ] oneParams = one . parameters ; TypeBinding [ ] twoParams = two . parameters ; int oneParamsLength = oneParams . length ; int twoParamsLength = twoParams . length ; if ( oneParamsLength == twoParamsLength ) { for ( int i = 0 ; i < oneParamsLength ; i ++ ) { TypeBinding oneParam = oneParams [ i ] ; TypeBinding twoParam = twoParams [ i ] ; if ( oneParam == twoParam ) { if ( oneParam . leafComponentType ( ) . isRawType ( ) ) { if ( ( oneParam == ( one . original ( ) . parameters [ i ] ) ) && ( oneParam != ( two . original ( ) . parameters [ i ] ) ) ) return false ; } continue ; } if ( oneParam . isCompatibleWith ( twoParam ) ) { if ( oneParam . leafComponentType ( ) . isRawType ( ) ) { <START_BUG> if ( oneParam . needsUncheckedConversion ( two . original ( ) . parameters [ i ] ) ) <END_BUG> return false ; } } else { if ( ( ( i == ( oneParamsLength - 1 ) ) && ( one . isVarargs ( ) ) ) && ( two . isVarargs ( ) ) ) { TypeBinding eType = ( ( ArrayBinding ) ( twoParam ) ) . elementsType ( ) ; if ( ( oneParam == eType ) || ( oneParam . isCompatibleWith ( eType ) ) ) return true ; } return false ; } } return true ; } if ( ( one . isVarargs ( ) ) && ( two . isVarargs ( ) ) ) { if ( oneParamsLength > twoParamsLength ) { if ( ( ( ( ArrayBinding ) ( twoParams [ ( twoParamsLength - 1 ) ] ) ) . elementsType ( ) . id ) != ( TypeIds . T_JavaLangObject ) ) return false ; } for ( int i = ( oneParamsLength > twoParamsLength ? twoParamsLength : oneParamsLength ) - 2 ; i >= 0 ; i -- ) if ( ( ( oneParams [ i ] ) != ( twoParams [ i ] ) ) && ( ! ( oneParams [ i ] . isCompatibleWith ( twoParams [ i ] ) ) ) ) return false ; if ( ( ( parameterCompatibilityLevel ( one , twoParams ) ) == ( Scope . NOT_COMPATIBLE ) ) && ( ( parameterCompatibilityLevel ( two , oneParams ) ) == ( Scope . VARARGS_COMPATIBLE ) ) ) return true ; } return false ; } 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 ) { }

Fix:
if ( oneParam . needsUncheckedConversion ( ( two . declaringClass . isRawType ( ) ? twoParam : two . original ( ) . parameters [ i ] ) ) )