Buggy code:
public class _TestUtil { public static File getTempDir ( String desc ) { } public static void rmDir ( File dir ) throws IOException { } public static void unzip ( File zipName , File destDir ) throws IOException { } public static void syncConcurrentMerges ( IndexWriter writer ) { } public static void syncConcurrentMerges ( MergeScheduler ms ) { } public static Status checkIndex ( Directory dir ) throws IOException { } public static Status checkIndex ( Directory dir , CodecProvider codecs ) throws IOException { } public static int nextInt ( Random r , int start , int end ) { } public static String randomSimpleString ( Random r ) { } public static String randomUnicodeString ( Random r ) { } public static String randomUnicodeString ( Random r , int maxLength ) { } public static void randomFixedLengthUnicodeString ( Random random , char [ ] chars , int offset , int length ) { int i = offset ; final int end = offset + length ; while ( i < end ) { final int t = random . nextInt ( 5 ) ; if ( ( 0 == t ) && ( i < ( length - 1 ) ) ) { chars [ ( i ++ ) ] = ( ( char ) ( _TestUtil . nextInt ( random , 55296 , 56319 ) ) ) ; chars [ ( i ++ ) ] = ( ( char ) ( _TestUtil . nextInt ( random , 56320 , 57343 ) ) ) ; } else if ( t <= 1 ) { chars [ ( i ++ ) ] = ( ( char ) ( random . nextInt ( 128 ) ) ) ; } else if ( 2 == t ) { <START_BUG> chars [ ( i ++ ) ] = ( ( char ) ( _TestUtil . nextInt ( random , 128 , 2048 ) ) ) ; <END_BUG> } else if ( 3 == t ) { chars [ ( i ++ ) ] = ( ( char ) ( _TestUtil . nextInt ( random , 2048 , 55295 ) ) ) ; } else if ( 4 == t ) { chars [ ( i ++ ) ] = ( ( char ) ( _TestUtil . nextInt ( random , 57344 , 65535 ) ) ) ; } } } private static final int [ ] blockStarts = new int [ ] { 0 , 128 , 256 , 384 , 592 , 688 , 768 , 880 , 1024 , 1280 , 1328 , 1424 , 1536 , 1792 , 1872 , 1920 , 1984 , 2048 , 2304 , 2432 , 2560 , 2688 , 2816 , 2944 , 3072 , 3200 , 3328 , 3456 , 3584 , 3712 , 3840 , 4096 , 4256 , 4352 , 4608 , 4992 , 5024 , 5120 , 5760 , 5792 , 5888 , 5920 , 5952 , 5984 , 6016 , 6144 , 6320 , 6400 , 6480 , 6528 , 6624 , 6656 , 6688 , 6912 , 7040 , 7168 , 7248 , 7376 , 7424 , 7552 , 7616 , 7680 , 7936 , 8192 , 8304 , 8352 , 8400 , 8448 , 8528 , 8592 , 8704 , 8960 , 9216 , 9280 , 9312 , 9472 , 9600 , 9632 , 9728 , 9984 , 10176 , 10224 , 10240 , 10496 , 10624 , 10752 , 11008 , 11264 , 11360 , 11392 , 11520 , 11568 , 11648 , 11744 , 11776 , 11904 , 12032 , 12272 , 12288 , 12352 , 12448 , 12544 , 12592 , 12688 , 12704 , 12736 , 12784 , 12800 , 13056 , 13312 , 19904 , 19968 , 40960 , 42128 , 42192 , 42240 , 42560 , 42656 , 42752 , 42784 , 43008 , 43056 , 43072 , 43136 , 43232 , 43264 , 43312 , 43360 , 43392 , 43520 , 43616 , 43648 , 43968 , 44032 , 55216 , 57344 , 63744 , 64256 , 64336 , 65024 , 65040 , 65056 , 65072 , 65104 , 65136 , 65280 , 65520 , 65536 , 65664 , 65792 , 65856 , 65936 , 66000 , 66176 , 66208 , 66304 , 66352 , 66432 , 66464 , 66560 , 66640 , 66688 , 67584 , 67648 , 67840 , 67872 , 68096 , 68192 , 68352 , 68416 , 68448 , 68608 , 69216 , 69760 , 73728 , 74752 , 77824 , 118784 , 119040 , 119296 , 119552 , 119648 , 119808 , 126976 , 127024 , 127232 , 127488 , 131072 , 173824 , 194560 , 917504 , 917760 , 983040 , 1048576 } ;

Fix:
chars [ ( i ++ ) ] = ( ( char ) ( _TestUtil . nextInt ( random , 128 , 2047 ) ) ) ;