Buggy code:
k < pairsLength ; k ++ ) { MemberValuePair otherPair = pairs [ k ] ; if ( otherPair == null ) continue ; if ( CharOperation . equals ( otherPair . name , selector ) ) { foundDuplicate = true ; scope . problemReporter ( ) . duplicateAnnotationValue ( annotationType , otherPair ) ; otherPair . binding = method ; otherPair . resolveTypeExpecting ( scope , method . returnType ) ; pairs [ k ] = null ; } } if ( foundDuplicate ) { scope . problemReporter ( ) . duplicateAnnotationValue ( annotationType , pair ) ; continue nextMember ; } } } if ( ( ! foundValue ) && ( ( ( method . modifiers ) & ( ClassFileConstants . AccAnnotationDefault ) ) == 0 ) ) { scope . problemReporter ( ) . missingValueForAnnotationMember ( this , selector ) ; } } this . compilerAnnotation = new AnnotationBinding ( this ) ; for ( int i = 0 ; i < pairsLength ; i ++ ) { if ( ( pairs [ i ] ) != null ) { scope . problemReporter ( ) . undefinedAnnotationValue ( annotationType , pairs [ i ] ) ; pairs [ i ] . resolveTypeExpecting ( scope , null ) ; } } long tagBits = detectStandardAnnotation ( scope , annotationType , valueAttribute ) ; scope . referenceCompilationUnit ( ) . compilationResult . recordSuppressWarnings ( CompilerOptions . NonExternalizedString , this . sourceStart , this . declarationSourceEnd ) ; if ( ( this . recipient ) != null ) { if ( tagBits != 0 ) { switch ( this . recipient . kind ( ) ) { case Binding . PACKAGE : ( ( PackageBinding ) ( this . recipient ) ) . tagBits |= tagBits ; break ; case Binding . TYPE : case Binding . GENERIC_TYPE : SourceTypeBinding sourceType = ( ( SourceTypeBinding ) ( this . recipient ) ) ; sourceType . tagBits |= tagBits ; if ( ( tagBits & ( TagBits . AnnotationSuppressWarnings ) ) != 0 ) { TypeDeclaration typeDeclaration = sourceType . scope . referenceContext ; int start ; if ( ( scope . referenceCompilationUnit ( ) . types [ 0 ] ) == typeDeclaration ) { start = 0 ; } else { start = typeDeclaration . declarationSourceStart ; } recordSuppressWarnings ( scope , start , typeDeclaration . declarationSourceEnd , scope . compilerOptions ( ) . suppressWarnings ) ; } break ; case Binding . METHOD : MethodBinding sourceMethod = ( ( MethodBinding ) ( this . recipient ) ) ; sourceMethod . tagBits |= tagBits ; if ( ( tagBits & ( TagBits . AnnotationSuppressWarnings ) ) != 0 ) { sourceType = ( ( SourceTypeBinding ) ( sourceMethod . declaringClass ) ) ; AbstractMethodDeclaration methodDeclaration = sourceType . scope . referenceContext . declarationOf ( sourceMethod ) ; recordSuppressWarnings ( scope , methodDeclaration . declarationSourceStart , methodDeclaration . declarationSourceEnd , scope . compilerOptions ( ) . suppressWarnings ) ; } break ; case Binding . FIELD : FieldBinding sourceField = ( ( FieldBinding ) ( this . recipient ) ) ; sourceField . tagBits |= tagBits ; if ( ( tagBits & ( TagBits . AnnotationSuppressWarnings ) ) != 0 ) { sourceType = ( ( SourceTypeBinding ) ( sourceField . declaringClass ) ) ; FieldDeclaration fieldDeclaration = sourceType . scope . referenceContext . declarationOf ( sourceField ) ; recordSuppressWarnings ( scope , fieldDeclaration . declarationSourceStart , fieldDeclaration . declarationSourceEnd , scope . compilerOptions ( ) . suppressWarnings ) ; } break ; case Binding . LOCAL : LocalVariableBinding variable = ( ( LocalVariableBinding ) ( this . recipient ) ) ; variable . tagBits |= tagBits ; if ( ( tagBits & ( TagBits . AnnotationSuppressWarnings ) ) != 0 ) { LocalDeclaration localDeclaration = variable . declaration ; recordSuppressWarnings ( scope , localDeclaration . declarationSourceStart , localDeclaration . declarationSourceEnd , scope . compilerOptions ( ) . suppressWarnings ) ; } break ; } } checkTargetCompatibility : { long metaTagBits = annotationType . getAnnotationTagBits ( ) ; if ( ( metaTagBits & ( TagBits . AnnotationTargetMASK ) ) == 0 ) break checkTargetCompatibility ; switch ( recipient . kind ( ) ) { case Binding . PACKAGE : if ( ( metaTagBits & ( TagBits . AnnotationForPackage ) ) != 0 ) break checkTargetCompatibility ; break ; case Binding . TYPE : case Binding . GENERIC_TYPE : if ( ( ( ReferenceBinding ) ( this . recipient ) ) . isAnnotationType ( ) ) { if ( ( metaTagBits & ( ( TagBits . AnnotationForAnnotationType ) | ( TagBits . AnnotationForType ) ) ) != 0 ) break checkTargetCompatibility ; } else if ( ( metaTagBits & ( TagBits . AnnotationForType ) ) != 0 ) break checkTargetCompatibility ; break ; case Binding . METHOD : if ( ( ( MethodBinding ) ( this . recipient ) ) . isConstructor ( ) ) { if ( ( metaTagBits & ( TagBits . AnnotationForConstructor ) ) != 0 ) break checkTargetCompatibility ; } else if ( ( metaTagBits & ( TagBits . AnnotationForMethod ) ) != 0 ) break checkTargetCompatibility ; break ; case Binding . FIELD : if ( ( metaTagBits & ( TagBits . AnnotationForField ) ) != 0 ) break checkTargetCompatibility ; break ; case Binding . LOCAL : <START_BUG> if ( ( ( LocalVariableBinding ) ( this . recipient ) ) . isArgument ) { <END_BUG> if ( ( metaTagBits & ( TagBits . AnnotationForParameter ) ) != 0 ) break checkTargetCompatibility ; } else if ( ( ( annotationType . tagBits ) & ( TagBits . AnnotationForLocalVariable ) ) != 0 ) break checkTargetCompatibility ; break ; } scope . problemReporter ( ) . disallowedTargetForAnnotation ( this ) ; } } return this . resolvedType ; } public abstract void traverse ( ASTVisitor visitor , BlockScope scope ) { } public abstract void traverse ( ASTVisitor visitor , CompilationUnitScope scope ) { } }

Fix:
if ( ( ( ( ( LocalVariableBinding ) ( this . recipient ) ) . tagBits ) & ( TagBits . IsArgument ) ) != 0 ) {