Buggy code:
class MethodBinding implements IMethodBinding { private static final int VALID_MODIFIERS = ( ( ( ( ( ( ( ( Modifier . PUBLIC ) | ( Modifier . PROTECTED ) ) | ( Modifier . PRIVATE ) ) | ( Modifier . ABSTRACT ) ) | ( Modifier . STATIC ) ) | ( Modifier . FINAL ) ) | ( Modifier . SYNCHRONIZED ) ) | ( Modifier . NATIVE ) ) | ( Modifier . STRICTFP ) ; private static final ITypeBinding [ ] NO_TYPE_BINDINGS = new ITypeBinding [ 0 ] ; private org . eclipse . jdt . internal . compiler . lookup . MethodBinding binding ; private BindingResolver resolver ; private ITypeBinding [ ] parameterTypes ; private ITypeBinding [ ] exceptionTypes ; private String name ; private ITypeBinding declaringClass ; private ITypeBinding returnType ; private String key ; private ITypeBinding [ ] typeParameters ; private ITypeBinding [ ] typeArguments ; MethodBinding ( BindingResolver resolver , org . eclipse . jdt . internal . compiler . lookup . MethodBinding binding ) { } public boolean isAnnotationMember ( ) { } public boolean isConstructor ( ) { } public boolean isDefaultConstructor ( ) { } public String getName ( ) { } public IAnnotationBinding [ ] getAnnotations ( ) { } public ITypeBinding getDeclaringClass ( ) { } public IAnnotationBinding [ ] getParameterAnnotations ( int index ) { } public ITypeBinding [ ] getParameterTypes ( ) { } public ITypeBinding getReturnType ( ) { } public Object getDefaultValue ( ) { } public ITypeBinding [ ] getExceptionTypes ( ) { } public IJavaElement getJavaElement ( ) { } private JavaElement getUnresolvedJavaElement ( ) { IType declaringType = ( ( IType ) ( getDeclaringClass ( ) . getJavaElement ( ) ) ) ; if ( declaringType == null ) return null ; if ( ! ( ( this . resolver ) instanceof DefaultBindingResolver ) ) return null ; ASTNode node = ( ( ASTNode ) ( ( ( DefaultBindingResolver ) ( this . resolver ) ) . bindingsToAstNodes . get ( this ) ) ) ; if ( ( node != null ) && ( ( declaringType . getParent ( ) . getElementType ( ) ) != ( IJavaElement . CLASS_FILE ) ) ) { if ( node instanceof MethodDeclaration ) { MethodDeclaration methodDeclaration = ( ( MethodDeclaration ) ( node ) ) ; ArrayList parameterSignatures = new ArrayList ( ) ; Iterator iterator = methodDeclaration . parameters ( ) . iterator ( ) ; while ( iterator . hasNext ( ) ) { SingleVariableDeclaration parameter = ( ( SingleVariableDeclaration ) ( iterator . next ( ) ) ) ; Type type = parameter . getType ( ) ; String typeSig = Util . getSignature ( type ) ; int arrayDim = parameter . getExtraDimensions ( ) ; if ( ( ( parameter . getAST ( ) . apiLevel ( ) ) >= ( AST . JLS3 ) ) && ( parameter . isVarargs ( ) ) ) { arrayDim ++ ; } if ( arrayDim > 0 ) { typeSig = Signature . createArraySignature ( typeSig , arrayDim ) ; } parameterSignatures . add ( typeSig ) ; } int parameterCount = parameterSignatures . size ( ) ; String [ ] parameters = new String [ parameterCount ] ; parameterSignatures . toArray ( parameters ) ; return ( ( JavaElement ) ( declaringType . getMethod ( getName ( ) , parameters ) ) ) ; } else { AnnotationTypeMemberDeclaration typeMemberDeclaration = ( ( AnnotationTypeMemberDeclaration ) ( node ) ) ; <START_BUG> return ( ( JavaElement ) ( declaringType . getMethod ( typeMemberDeclaration . getName ( ) . getIdentifier ( ) , new String [ 0 ] ) ) ) ; <END_BUG> } } else { org . eclipse . jdt . internal . compiler . lookup . MethodBinding original = this . binding . original ( ) ; String selector = ( original . isConstructor ( ) ) ? declaringType . getElementName ( ) : new String ( original . selector ) ; boolean isBinary = declaringType . isBinary ( ) ; ReferenceBinding enclosingType = original . declaringClass . enclosingType ( ) ; boolean isInnerBinaryTypeConstructor = ( isBinary && ( original . isConstructor ( ) ) ) && ( enclosingType != null ) ; TypeBinding [ ] parameters = original . parameters ; int length = ( parameters == null ) ? 0 : parameters . length ; int declaringIndex = ( isInnerBinaryTypeConstructor ) ? 1 : 0 ; String [ ] parameterSignatures = new String [ declaringIndex + length ] ; if ( isInnerBinaryTypeConstructor ) parameterSignatures [ 0 ] = new String ( enclosingType . genericTypeSignature ( ) ) . replace ( '//' , '.' ) ; for ( int i = 0 ; i < length ; i ++ ) { parameterSignatures [ ( declaringIndex + i ) ] = new String ( parameters [ i ] . genericTypeSignature ( ) ) . replace ( '//' , '.' ) ; } IMethod result = declaringType . getMethod ( selector , parameterSignatures ) ; if ( isBinary ) return ( ( JavaElement ) ( result ) ) ; IMethod [ ] methods = null ; try { methods = declaringType . getMethods ( ) ; } catch ( JavaModelException e ) { return null ; } IMethod [ ] candidates = Member . findMethods ( result , methods ) ; if ( ( candidates == null ) || ( ( candidates . length ) == 0 ) ) return null ; return ( ( JavaElement ) ( candidates [ 0 ] ) ) ; } } public int getKind ( ) { } public int getModifiers ( ) { } public boolean isDeprecated ( ) { } public boolean isSynthetic ( ) { } public boolean isVarargs ( ) { } public String getKey ( ) { } public boolean isEqualTo ( IBinding other ) { } public ITypeBinding [ ] getTypeParameters ( ) { }

Fix:
return ( ( JavaElement ) ( declaringType . getMethod ( typeMemberDeclaration . getName ( ) . getIdentifier ( ) , CharOperation . NO_STRINGS ) ) ) ;