Buggy code:
public class BinaryIndexer extends AbstractIndexer implements SuffixConstants { private static final char [ ] BYTE = "byte" . toCharArray ( ) ; private static final char [ ] CHAR = "char" . toCharArray ( ) ; private static final char [ ] DOUBLE = "double" . toCharArray ( ) ; private static final char [ ] FLOAT = "float" . toCharArray ( ) ; private static final char [ ] INT = "int" . toCharArray ( ) ; private static final char [ ] LONG = "long" . toCharArray ( ) ; private static final char [ ] SHORT = "short" . toCharArray ( ) ; private static final char [ ] BOOLEAN = "boolean" . toCharArray ( ) ; private static final char [ ] VOID = "void" . toCharArray ( ) ; private static final char [ ] INIT = "<init>" . toCharArray ( ) ; public BinaryIndexer ( SearchDocument document ) { } private void addBinaryStandardAnnotations ( long annotationTagBits ) { } private void addBinaryTargetAnnotation ( long bits ) { } private void addBinaryRetentionAnnotation ( long bits ) { } private void addBinaryAnnotation ( IBinaryAnnotation annotation ) { } private void addPairValue ( Object pairValue ) { } public void addTypeReference ( char [ ] typeName ) { } private void convertToArrayType ( char [ ] [ ] parameterTypes , int counter , int arrayDim ) { } private char [ ] convertToArrayType ( char [ ] typeName , int arrayDim ) { } private char [ ] decodeFieldType ( char [ ] signature ) throws ClassFormatException { } private char [ ] [ ] decodeParameterTypes ( char [ ] signature , boolean firstIsSynthetic ) throws ClassFormatException { } private char [ ] decodeReturnType ( char [ ] signature ) throws ClassFormatException { } private int extractArgCount ( char [ ] signature , char [ ] className ) throws ClassFormatException { int indexOfClosingParen = CharOperation . lastIndexOf ( ')' , signature ) ; if ( indexOfClosingParen == 1 ) { return 0 ; } if ( indexOfClosingParen == ( - 1 ) ) { throw new ClassFormatException ( ClassFormatException . ErrInvalidMethodSignature ) ; } int parameterTypesCounter = 0 ; for ( int i = 1 ; i < indexOfClosingParen ; i ++ ) { switch ( signature [ i ] ) { case 'B' : case 'C' : case 'D' : case 'F' : case 'I' : case 'J' : case 'S' : case 'Z' : parameterTypesCounter ++ ; break ; case 'L' : int indexOfSemiColon = CharOperation . indexOf ( ';' , signature , ( i + 1 ) ) ; if ( indexOfSemiColon == ( - 1 ) ) throw new ClassFormatException ( ClassFormatException . ErrInvalidMethodSignature ) ; if ( ( className != null ) && ( parameterTypesCounter == 0 ) ) { char [ ] classSignature = Signature . createCharArrayTypeSignature ( className , true ) ; int length = ( indexOfSemiColon - i ) + 1 ; if ( ( classSignature . length ) > ( length + 1 ) ) { for ( int j = i , k = 0 ; j < indexOfSemiColon ; j ++ , k ++ ) { <START_BUG> if ( ( signature [ j ] ) != ( classSignature [ k ] ) ) { <END_BUG> parameterTypesCounter ++ ; break ; } } } else { parameterTypesCounter ++ ; } className = null ; } else { parameterTypesCounter ++ ; } i = indexOfSemiColon ; break ; case '[' : break ; default : throw new ClassFormatException ( ClassFormatException . ErrInvalidMethodSignature ) ; } } return parameterTypesCounter ; } private char [ ] extractClassName ( int [ ] constantPoolOffsets , ClassFileReader reader , int index ) { } private char [ ] extractName ( int [ ] constantPoolOffsets , ClassFileReader reader , int index ) { } private char [ ] extractClassReference ( int [ ] constantPoolOffsets , ClassFileReader reader , int index ) { } private void extractReferenceFromConstantPool ( byte [ ] contents , ClassFileReader reader ) throws ClassFormatException { } private char [ ] extractType ( int [ ] constantPoolOffsets , ClassFileReader reader , int index ) { } public void indexDocument ( ) { } private char [ ] [ ] replace ( char toBeReplaced , char newChar , char [ ] [ ] array ) { } private char [ ] replace ( char toBeReplaced , char newChar , char [ ] array ) { } }

Fix:
if ( ! ( ( ( signature [ j ] ) == ( classSignature [ k ] ) ) || ( ( ( signature [ j ] ) == '//' ) && ( ( classSignature [ k ] ) == '.' ) ) ) ) {