Buggy code:
private static void quickSortReverse ( String [ ] sortedCollection , int left , int right ) { } public static final char [ ] readUTF ( DataInput in ) throws IOException { } public static String relativePath ( IPath fullPath , int skipSegmentCount ) { } public static final String [ ] splitOn ( char divider , String string , int start , int end ) { } public static boolean isReadOnly ( IResource resource ) { } public static void setReadOnly ( IResource resource , boolean readOnly ) { } public static void sort ( char [ ] [ ] list ) { } public static void sort ( Util . Comparable [ ] objects ) { } public static void sort ( int [ ] list ) { } public static void sort ( Object [ ] objects , Util . Comparer comparer ) { } public static void sort ( Object [ ] objects , int [ ] sortOrder ) { } public static void sort ( String [ ] strings ) { } public static Util . Comparable [ ] sortCopy ( Util . Comparable [ ] objects ) { } public static Object [ ] sortCopy ( Object [ ] objects , Util . Comparer comparer ) { } public static String [ ] sortCopy ( String [ ] objects ) { } public static void sortReverseOrder ( String [ ] strings ) { } public static boolean startsWithIgnoreCase ( String [ ] compoundName , String [ ] prefix ) { } public static char [ ] [ ] toCharArrays ( String [ ] a ) { } public static char [ ] [ ] toCompoundChars ( String s ) { } public static String toString ( char [ ] c ) { } public static String toString ( char [ ] [ ] c ) { } public static String toString ( char [ ] [ ] c , char [ ] d ) { } public static String [ ] toStrings ( char [ ] [ ] a ) { } private static void appendArrayTypeSignature ( char [ ] string , int start , StringBuffer buffer ) { } private static void appendClassTypeSignature ( char [ ] string , int start , StringBuffer buffer ) { } static void appendTypeSignature ( char [ ] string , int start , StringBuffer buffer ) { } public static String toString ( char [ ] declaringClass , char [ ] methodName , char [ ] methodSignature , boolean includeReturnType ) { } public static String [ ] typeParameterSignatures ( AbstractMethodDeclaration method ) { } public static String typeSignature ( TypeReference type ) { } public static void validateMethodSignature ( String sig ) { } public static void validateTypeSignature ( String sig , boolean allowVoid ) { } public static void verbose ( String log ) { } public static synchronized void verbose ( String log , PrintStream printStream ) { } public static int writeUTF ( OutputStream out , char [ ] str ) throws IOException { } public static final boolean isJavaLikeFileName ( String name ) { } public static final boolean isJavaLikeFileName ( char [ ] fileName ) { } public static int scanTypeSignature ( char [ ] string , int start ) { } public static int scanBaseTypeSignature ( char [ ] string , int start ) { } public static int scanArrayTypeSignature ( char [ ] string , int start ) { } public static int scanCaptureTypeSignature ( char [ ] string , int start ) { } public static int scanTypeVariableSignature ( char [ ] string , int start ) { } public static int scanIdentifier ( char [ ] string , int start ) { } public static int scanClassTypeSignature ( char [ ] string , int start ) { } public static int scanTypeBoundSignature ( char [ ] string , int start ) { } public static int scanTypeArgumentSignatures ( char [ ] string , int start ) { } public static int scanTypeArgumentSignature ( char [ ] string , int start ) { } public static final char [ ] [ ] [ ] getAllTypeArguments ( char [ ] [ ] typeSignatures ) { } public static final char [ ] [ ] splitTypeLevelsSignature ( String typeSignature ) { <START_BUG> char [ ] source = Signature . removeCaptureFromMethod ( typeSignature . toCharArray ( ) ) ; <END_BUG> CharOperation . replace ( source , '$' , '.' ) ; char [ ] [ ] signatures = new char [ 10 ] [ ] ; int signaturesCount = 0 ; int typeArgsCount = 0 ; int paramOpening = 0 ; scanUniqueKey : for ( int idx = 0 , ln = source . length ; idx < ln ; idx ++ ) { switch ( source [ idx ] ) { case '>' : paramOpening -- ; if ( paramOpening == 0 ) { if ( signaturesCount == ( signatures . length ) ) { System . arraycopy ( signatures , 0 , ( signatures = new char [ signaturesCount + 10 ] [ ] ) , 0 , signaturesCount ) ; } typeArgsCount = 0 ; } break ; case '<' : paramOpening ++ ; if ( paramOpening == 1 ) { typeArgsCount = 1 ; } break ; case '*' : case ';' : if ( paramOpening == 1 ) typeArgsCount ++ ; break ; case '.' : if ( paramOpening == 0 ) { if ( signaturesCount == ( signatures . length ) ) { System . arraycopy ( signatures , 0 , ( signatures = new char [ signaturesCount + 10 ] [ ] ) , 0 , signaturesCount ) ; } signatures [ signaturesCount ] = new char [ idx + 1 ] ; System . arraycopy ( source , 0 , signatures [ signaturesCount ] , 0 , idx ) ; signatures [ signaturesCount ] [ idx ] = Signature . C_SEMICOLON ;

Fix:
char [ ] source = Signature . removeCapture ( typeSignature . toCharArray ( ) ) ;