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 { } private char [ ] [ ] splitParameters ( char [ ] parametersSource , int paramCount ) { } 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 ) throws JavaModelException { } private String extractJavadoc ( IType declaringType , String contents ) throws JavaModelException { if ( contents == null ) return null ; String typeQualifiedName = null ; final boolean declaringTypeIsMember = declaringType . isMember ( ) ; if ( declaringTypeIsMember ) { IType currentType = declaringType ; StringBuffer buffer = new StringBuffer ( ) ; while ( currentType != null ) { buffer . insert ( 0 , currentType . getElementName ( ) ) ; currentType = currentType . getDeclaringType ( ) ; if ( currentType != null ) { buffer . insert ( 0 , '.' ) ; } } typeQualifiedName = new String ( buffer . toString ( ) ) ; } else { typeQualifiedName = declaringType . getElementName ( ) ; } String methodName = this . getElementName ( ) ; if ( this . isConstructor ( ) ) { methodName = typeQualifiedName ; } IBinaryMethod info = ( ( IBinaryMethod ) ( getElementInfo ( ) ) ) ; char [ ] genericSignature = info . getGenericSignature ( ) ; String anchor = null ; if ( genericSignature != null ) { <START_BUG> CharOperation . replace ( genericSignature , '//' , '.' ) ; <END_BUG> anchor = Util . toAnchor ( genericSignature , methodName , Flags . isVarargs ( this . getFlags ( ) ) ) ; if ( anchor == null ) throw new JavaModelException ( new JavaModelStatus ( IJavaModelStatusConstants . UNKNOWN_JAVADOC_FORMAT , this ) ) ; } else { anchor = Signature . toString ( this . getSignature ( ) . replace ( '//' , '.' ) , methodName , null , true , false , Flags . isVarargs ( this . getFlags ( ) ) ) ; } if ( declaringTypeIsMember ) { 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 ) ) { return null ; } int indexOfEndLink = contents . indexOf ( JavadocConstants . ANCHOR_SUFFIX , indexAnchor ) ;

Fix:
genericSignature = CharOperation . replaceOnCopy ( genericSignature , '//' , '.' ) ;