Buggy code:
if ( ! ( this . binding . isValidBinding ( ) ) ) { if ( ( this . binding . declaringClass ) == null ) { if ( ( this . actualReceiverType ) instanceof ReferenceBinding ) { this . binding . declaringClass = ( ( ReferenceBinding ) ( this . actualReceiverType ) ) ; } else { scope . problemReporter ( ) . errorNoMethodFor ( this , this . actualReceiverType , argumentTypes ) ; return null ; } } scope . problemReporter ( ) . invalidMethod ( this , this . binding ) ; MethodBinding closestMatch = ( ( ProblemMethodBinding ) ( this . binding ) ) . closestMatch ; switch ( this . binding . problemId ( ) ) { case ProblemReasons . Ambiguous : break ; case ProblemReasons . NotVisible : case ProblemReasons . NonStaticReferenceInConstructorInvocation : case ProblemReasons . NonStaticReferenceInStaticContext : case ProblemReasons . ReceiverTypeNotVisible : case ProblemReasons . ParameterBoundMismatch : if ( closestMatch != null ) this . resolvedType = closestMatch . returnType ; default : } if ( closestMatch != null ) { this . binding = closestMatch ; MethodBinding closestMatchOriginal = closestMatch . original ( ) ; if ( ( ( closestMatchOriginal . isPrivate ( ) ) || ( closestMatchOriginal . declaringClass . isLocalType ( ) ) ) && ( ! ( scope . isDefinedInMethod ( closestMatchOriginal ) ) ) ) { closestMatchOriginal . modifiers |= ExtraCompilerModifiers . AccLocallyUsed ; } } return this . resolvedType ; } final CompilerOptions compilerOptions = scope . compilerOptions ( ) ; if ( ! ( this . binding . isStatic ( ) ) ) { if ( receiverIsType ) { scope . problemReporter ( ) . mustUseAStaticMethod ( this , this . binding ) ; if ( ( ( this . actualReceiverType . isRawType ( ) ) && ( ( ( this . receiver . bits ) & ( ASTNode . IgnoreRawTypeCheck ) ) == 0 ) ) && ( ( compilerOptions . getSeverity ( CompilerOptions . RawTypeReference ) ) != ( ProblemSeverities . Ignore ) ) ) { scope . problemReporter ( ) . rawTypeReference ( this . receiver , this . actualReceiverType ) ; } } else { this . receiver . computeConversion ( scope , this . actualReceiverType , this . actualReceiverType ) ; TypeBinding receiverErasure = this . actualReceiverType . erasure ( ) ; if ( receiverErasure instanceof ReferenceBinding ) { if ( ( receiverErasure . findSuperTypeOriginatingFrom ( this . binding . declaringClass ) ) == null ) { this . receiverGenericCast = this . binding . declaringClass ; } } } } else { if ( ! ( ( ( this . receiver . isImplicitThis ( ) ) || ( this . receiver . isSuper ( ) ) ) || receiverIsType ) ) { scope . problemReporter ( ) . nonStaticAccessToStaticMethod ( this , this . binding ) ; } if ( ( ! ( this . receiver . isImplicitThis ( ) ) ) && ( ( this . binding . declaringClass ) != ( this . actualReceiverType ) ) ) { scope . problemReporter ( ) . indirectAccessToStaticMethod ( this , this . binding ) ; } } ASTNode . checkInvocationArguments ( scope , this . receiver , this . actualReceiverType , this . binding , this . arguments , argumentTypes , argsContainCast , this ) ; if ( this . binding . isAbstract ( ) ) { if ( this . receiver . isSuper ( ) ) { scope . problemReporter ( ) . cannotDireclyInvokeAbstractMethod ( this , this . binding ) ; } } if ( isMethodUseDeprecated ( this . binding , scope , true ) ) scope . problemReporter ( ) . deprecatedMethod ( this . binding , this ) ; if ( ( ( ( this . actualReceiverType . isArrayType ( ) ) && ( ( this . binding . parameters ) == ( Binding . NO_PARAMETERS ) ) ) && ( ( compilerOptions . complianceLevel ) >= ( ClassFileConstants . JDK1_5 ) ) ) && ( CharOperation . equals ( this . binding . selector , TypeConstants . CLONE ) ) ) { this . resolvedType = this . actualReceiverType ; } else { TypeBinding returnType = this . binding . returnType ; if ( returnType != null ) returnType = returnType . capture ( scope , this . sourceEnd ) ; this . resolvedType = returnType ; } if ( ( this . receiver . isSuper ( ) ) && ( ( compilerOptions . getSeverity ( CompilerOptions . OverridingMethodWithoutSuperInvocation ) ) != ( ProblemSeverities . Ignore ) ) ) { final ReferenceContext referenceContext = scope . methodScope ( ) . referenceContext ; if ( referenceContext instanceof AbstractMethodDeclaration ) { final AbstractMethodDeclaration abstractMethodDeclaration = ( ( AbstractMethodDeclaration ) ( referenceContext ) ) ; MethodBinding enclosingMethodBinding = abstractMethodDeclaration . binding ; if ( ( ( enclosingMethodBinding . isOverriding ( ) ) && ( CharOperation . equals ( this . binding . selector , enclosingMethodBinding . selector ) ) ) && ( this . binding . areParametersEqual ( enclosingMethodBinding ) ) ) { abstractMethodDeclaration . bits |= ASTNode . OverridingMethodWithSupercall ; } } } if ( ( ( this . typeArguments ) != null ) && ( ( this . binding . original ( ) . typeVariables ) == ( Binding . NO_TYPE_VARIABLES ) ) ) { <START_BUG> scope . problemReporter ( ) . unnecessaryTypeArgumentsForMethodInvocation ( this ) ; <END_BUG> } return this . resolvedType ; } public void setActualReceiverType ( ReferenceBinding receiverType ) { } public void setDepth ( int depth ) { } public void setExpectedType ( TypeBinding expectedType ) { } public void setFieldIndex ( int depth ) { } public void traverse ( ASTVisitor visitor , BlockScope blockScope ) { } }

Fix:
scope . problemReporter ( ) . unnecessaryTypeArgumentsForMethodInvocation ( this . binding , this . genericTypeArguments , this . typeArguments ) ;