Buggy code:
public class ParameterizedGenericMethodBinding extends ParameterizedMethodBinding implements Substitution { public TypeBinding [ ] typeArguments ; private LookupEnvironment environment ; public boolean inferredReturnType ; public boolean wasInferred ; public boolean isRaw ; private MethodBinding tiebreakMethod ; public static MethodBinding computeCompatibleMethod ( MethodBinding originalMethod , TypeBinding [ ] arguments , Scope scope , InvocationSite invocationSite ) { ParameterizedGenericMethodBinding methodSubstitute ; TypeVariableBinding [ ] typeVariables = originalMethod . typeVariables ; TypeBinding [ ] substitutes = invocationSite . genericTypeArguments ( ) ; TypeBinding [ ] uncheckedArguments = null ; computeSubstitutes : { if ( substitutes != null ) { if ( ( substitutes . length ) != ( typeVariables . length ) ) { return new ProblemMethodBinding ( originalMethod , originalMethod . selector , substitutes , ProblemReasons . TypeParameterArityMismatch ) ; } methodSubstitute = scope . environment ( ) . createParameterizedGenericMethod ( originalMethod , substitutes ) ; break computeSubstitutes ; } TypeBinding [ ] parameters = originalMethod . parameters ; InferenceContext inferenceContext = new InferenceContext ( originalMethod ) ; methodSubstitute = ParameterizedGenericMethodBinding . inferFromArgumentTypes ( scope , originalMethod , arguments , parameters , inferenceContext ) ; if ( methodSubstitute == null ) return null ; if ( inferenceContext . hasUnresolvedTypeArgument ( ) ) { if ( inferenceContext . isUnchecked ) { int length = inferenceContext . substitutes . length ; System . arraycopy ( inferenceContext . substitutes , 0 , ( uncheckedArguments = new TypeBinding [ length ] ) , 0 , length ) ; } if ( ( methodSubstitute . returnType ) != ( TypeBinding . VOID ) ) { TypeBinding expectedType = null ; if ( invocationSite instanceof MessageSend ) { MessageSend message = ( ( MessageSend ) ( invocationSite ) ) ; expectedType = message . expectedType ; } if ( expectedType != null ) { inferenceContext . hasExplicitExpectedType = true ; } else { expectedType = scope . getJavaLangObject ( ) ; } inferenceContext . expectedType = expectedType ; } methodSubstitute = methodSubstitute . inferFromExpectedType ( scope , inferenceContext ) ; if ( methodSubstitute == null ) return null ; } } for ( int i = 0 , length = typeVariables . length ; i < length ; i ++ ) { TypeVariableBinding typeVariable = typeVariables [ i ] ; TypeBinding substitute = methodSubstitute . typeArguments [ i ] ; if ( ( uncheckedArguments != null ) && ( ( uncheckedArguments [ i ] ) == null ) ) continue ; switch ( typeVariable . boundCheck ( methodSubstitute , substitute ) ) { case MISMATCH : int argLength = arguments . length ; TypeBinding [ ] augmentedArguments = new TypeBinding [ argLength + 2 ] ; System . arraycopy ( arguments , 0 , augmentedArguments , 0 , argLength ) ; augmentedArguments [ argLength ] = substitute ; augmentedArguments [ ( argLength + 1 ) ] = typeVariable ; return new ProblemMethodBinding ( methodSubstitute , originalMethod . selector , augmentedArguments , ProblemReasons . ParameterBoundMismatch ) ; case UNCHECKED : <START_BUG> invocationSite . setUnchecked ( true ) ; <END_BUG> break ; } } return methodSubstitute ; } private static ParameterizedGenericMethodBinding inferFromArgumentTypes ( Scope scope , MethodBinding originalMethod , TypeBinding [ ] arguments , TypeBinding [ ] parameters , InferenceContext inferenceContext ) { } private static boolean resolveSubstituteConstraints ( Scope scope , TypeVariableBinding [ ] typeVariables , InferenceContext inferenceContext , boolean considerEXTENDSConstraints ) { } public ParameterizedGenericMethodBinding ( MethodBinding originalMethod , RawTypeBinding rawType , LookupEnvironment environment ) { } public ParameterizedGenericMethodBinding ( MethodBinding originalMethod , TypeBinding [ ] typeArguments , LookupEnvironment environment ) { } public char [ ] computeUniqueKey ( boolean isLeaf ) { } public LookupEnvironment environment ( ) { } public boolean hasSubstitutedParameters ( ) { } public boolean hasSubstitutedReturnType ( ) { } private ParameterizedGenericMethodBinding inferFromExpectedType ( Scope scope , InferenceContext inferenceContext ) { } public boolean isRawSubstitution ( ) { } public TypeBinding substitute ( TypeVariableBinding originalVariable ) { } public MethodBinding tiebreakMethod ( ) { } }

Fix:
methodSubstitute . tagBits |= TagBits . HasUncheckedTypeArgumentForBoundCheck ;