Buggy code:
public final class Strings { public static final String LINE_SEPARATOR ; private static final char [ ] hexDigit = new char [ ] { '0' , '1' , '2' , '3' , '4' , '5' , '6' , '7' , '8' , '9' , 'A' , 'B' , 'C' , 'D' , 'E' , 'F' } ; private static final Pattern htmlNumber = Pattern . compile ( "\\&\\#\\d+\\;" ) ; public static String afterFirst ( final String s , final char c ) { } public static String afterFirstPathComponent ( final String path , final char separator ) { } public static String afterLast ( final String s , final char c ) { } public static String beforeFirst ( final String s , final char c ) { } public static String beforeLast ( final String s , final char c ) { } public static String beforeLastPathComponent ( final String path , final char separator ) { } public static String capitalize ( final String s ) { } public static CharSequence escapeMarkup ( final String s ) { } public static CharSequence escapeMarkup ( final String s , final boolean escapeSpaces ) { } public static CharSequence escapeMarkup ( final String s , final boolean escapeSpaces , final boolean convertToHtmlUnicodeEscapes ) { } public static String firstPathComponent ( final String path , final char separator ) { } public static String fromEscapedUnicode ( String escapedUnicodeString ) { } public static boolean isEmpty ( final CharSequence string ) { } public static boolean isEqual ( final String string1 , final String string2 ) { } public static boolean isTrue ( final String s ) throws StringValueConversionException { } public static String join ( String separator , String ... fragments ) { } public static String lastPathComponent ( final String path , final char separator ) { } public static CharSequence replaceAll ( final CharSequence s , final CharSequence searchFor , CharSequence replaceWith ) { } public static String replaceHtmlEscapeNumber ( String str ) { } public static String [ ] split ( final String s , final char c ) { } public static String stripEnding ( final String s , final String ending ) { } public static String stripJSessionId ( CharSequence url ) { if ( url == null ) { return null ; } StringBuffer path = new StringBuffer ( url . toString ( ) ) ; int ixSemiColon = path . indexOf ( ";" ) ; if ( ixSemiColon != ( - 1 ) ) { int ixEnd = path . indexOf ( "?" ) ; <START_BUG> if ( ixEnd < ixSemiColon ) { <END_BUG> return url . toString ( ) ; } if ( ixEnd == ( - 1 ) ) { ixEnd = path . length ( ) ; } path . delete ( ixSemiColon , ixEnd ) ; } return path . toString ( ) ; } public static Boolean toBoolean ( final String s ) throws StringValueConversionException { } public static char toChar ( final String s ) throws StringValueConversionException { } public static String toEscapedUnicode ( String unicodeString ) { } public static CharSequence toMultilineMarkup ( final CharSequence s ) { } public static String toString ( final Object object ) { } public static String toString ( final Component component , final Throwable location ) { } private static boolean shouldSkip ( String text , String [ ] filters ) { } public static String toString ( final Throwable throwable ) { } private static void append ( AppendingStringBuffer buffer , CharSequence s , int from , int to ) { } private static void outputThrowable ( Throwable cause , AppendingStringBuffer sb , boolean stopAtWicketServlet ) { } private static int search ( final CharSequence s , String searchString , int pos ) { } private static char toHex ( int nibble ) { } public static int lengthInBytes ( String string , Charset charset ) { } private Strings ( ) { } }

Fix:
if ( ixEnd <= ixSemiColon ) {