Buggy code:
class BinaryMethod extends BinaryMember implements IMethod { protected String [ ] parameterTypes ; protected String [ ] parameterNames ; protected String [ ] exceptionTypes ; protected String returnType ; protected BinaryMethod ( JavaElement parent , String name , String [ ] paramTypes ) { } public boolean equals ( Object o ) { } public String [ ] getExceptionTypes ( ) throws JavaModelException { } public int getElementType ( ) { } public int getFlags ( ) throws JavaModelException { } protected void getHandleMemento ( StringBuffer buff ) { } protected char getHandleMementoDelimiter ( ) { } public String getKey ( boolean forceOpen ) throws JavaModelException { } public int getNumberOfParameters ( ) { } public String [ ] getParameterNames ( ) throws JavaModelException { } public String [ ] getParameterTypes ( ) { } public ITypeParameter getTypeParameter ( String typeParameterName ) { } public ITypeParameter [ ] getTypeParameters ( ) throws JavaModelException { } public String [ ] getTypeParameterSignatures ( ) throws JavaModelException { } public String [ ] getRawParameterNames ( ) throws JavaModelException { } private String [ ] getRawParameterNames ( int paramCount ) { } public String getReturnType ( ) throws JavaModelException { } private String getReturnType ( IBinaryMethod info ) { } public String getSignature ( ) throws JavaModelException { } public int hashCode ( ) { } public boolean isConstructor ( ) throws JavaModelException { } public boolean isMainMethod ( ) throws JavaModelException { } public boolean isResolved ( ) { } public boolean isSimilar ( IMethod method ) { } public String readableName ( ) { } public JavaElement resolved ( Binding binding ) { } protected void toStringInfo ( int tab , StringBuffer buffer , Object info , boolean showResolvedInfo ) { } protected void toStringName ( StringBuffer buffer ) { } protected void toStringName ( StringBuffer buffer , int flags ) { } public String getAttachedJavadoc ( IProgressMonitor monitor , String defaultEncoding ) throws JavaModelException { } private String extractJavadoc ( IType declaringType , String contents ) throws JavaModelException { if ( contents == null ) <START_BUG> throw new JavaModelException ( new JavaModelStatus ( IJavaModelStatusConstants . CANNOT_RETRIEVE_ATTACHED_JAVADOC , this ) ) ; <END_BUG> String typeQualifiedName = declaringType . getTypeQualifiedName ( '.' ) ; typeQualifiedName = typeQualifiedName . replace ( '$' , '.' ) ; String methodName = this . getElementName ( ) ; if ( this . isConstructor ( ) ) { methodName = typeQualifiedName ; } String anchor = Signature . toString ( this . getSignature ( ) . replace ( '//' , '.' ) , methodName , null , true , false , Flags . isVarargs ( this . getFlags ( ) ) ) ; if ( declaringType . isMember ( ) ) { int depth = 0 ; final String packageFragmentName = declaringType . getPackageFragment ( ) . getElementName ( ) ; final IJavaProject javaProject = declaringType . getJavaProject ( ) ; char [ ] [ ] typeNames = CharOperation . splitOn ( '.' , typeQualifiedName . toCharArray ( ) ) ; if ( ! ( Flags . isStatic ( declaringType . getFlags ( ) ) ) ) depth ++ ; StringBuffer typeName = new StringBuffer ( ) ; for ( int i = 0 , max = typeNames . length ; i < max ; i ++ ) { if ( ( typeName . length ( ) ) == 0 ) { typeName . append ( typeNames [ i ] ) ; } else { typeName . append ( '.' ) . append ( typeNames [ i ] ) ; } IType resolvedType = javaProject . findType ( packageFragmentName , String . valueOf ( typeName ) ) ; if ( ( ( resolvedType != null ) && ( resolvedType . isMember ( ) ) ) && ( ! ( Flags . isStatic ( resolvedType . getFlags ( ) ) ) ) ) depth ++ ; } if ( depth != 0 ) { int indexOfOpeningParen = anchor . indexOf ( '(' ) ; if ( indexOfOpeningParen == ( - 1 ) ) return null ; int index = indexOfOpeningParen ; indexOfOpeningParen ++ ; for ( int i = 0 ; i < depth ; i ++ ) { int indexOfComma = anchor . indexOf ( ',' , index ) ; if ( indexOfComma != ( - 1 ) ) { index = indexOfComma + 2 ; } } anchor = ( anchor . substring ( 0 , indexOfOpeningParen ) ) + ( anchor . substring ( index ) ) ; } } int indexAnchor = contents . indexOf ( ( ( ( JavadocConstants . ANCHOR_PREFIX_START ) + anchor ) + ( JavadocConstants . ANCHOR_PREFIX_END ) ) ) ; if ( indexAnchor == ( - 1 ) ) throw new JavaModelException ( new JavaModelStatus ( IJavaModelStatusConstants . UNKNOWN_JAVADOC_FORMAT , this ) ) ; int indexOfEndLink = contents . indexOf ( JavadocConstants . ANCHOR_SUFFIX , indexAnchor ) ; if ( indexOfEndLink == ( - 1 ) ) throw new JavaModelException ( new JavaModelStatus ( IJavaModelStatusConstants . UNKNOWN_JAVADOC_FORMAT , this ) ) ; int indexOfNextMethod = contents . indexOf ( JavadocConstants . ANCHOR_PREFIX_START , indexOfEndLink ) ; int indexOfBottom = - 1 ; if ( this . isConstructor ( ) ) { indexOfBottom = contents . indexOf ( JavadocConstants . METHOD_DETAIL , indexOfEndLink ) ; if ( indexOfBottom == ( - 1 ) ) { indexOfBottom = contents . indexOf ( JavadocConstants . END_OF_CLASS_DATA , indexOfEndLink ) ; } } else { indexOfBottom = contents . indexOf ( JavadocConstants . END_OF_CLASS_DATA , indexOfEndLink ) ; } if ( indexOfBottom == ( - 1 ) ) throw new JavaModelException ( new JavaModelStatus ( IJavaModelStatusConstants . UNKNOWN_JAVADOC_FORMAT , this ) ) ; indexOfNextMethod = Math . min ( indexOfNextMethod , indexOfBottom ) ; if ( indexOfNextMethod == ( - 1 ) ) throw new JavaModelException ( new JavaModelStatus ( IJavaModelStatusConstants . UNKNOWN_JAVADOC_FORMAT , this ) ) ;

Fix:
return null ;