Buggy code:
public void draw ( GC gc , int x , int y , int selectionStart , int selectionEnd , Color selectionForeground , Color selectionBackground , int flags ) { } void drawLines ( boolean advance , int graphics , int x , int y , TextLayout . StyleItem run , int color , boolean selection , RECT clipRect , int alpha ) { } int [ ] computePolyline ( int left , int top , int right , int bottom ) { } void freeRuns ( ) { } public int getAlignment ( ) { } public int getAscent ( ) { } public Rectangle getBounds ( ) { } public Rectangle getBounds ( int start , int end ) { } public int getDescent ( ) { } public Font getFont ( ) { } public int getIndent ( ) { } public boolean getJustify ( ) { } int getItemFont ( TextLayout . StyleItem item ) { } public int getLevel ( int offset ) { } public Rectangle getLineBounds ( int lineIndex ) { } public int getLineCount ( ) { } int getLineIndent ( int lineIndex ) { } public int getLineIndex ( int offset ) { } public FontMetrics getLineMetrics ( int lineIndex ) { } public int [ ] getLineOffsets ( ) { } public Point getLocation ( int offset , boolean trailing ) { } public int getNextOffset ( int offset , int movement ) { } int _getOffset ( int offset , int movement , boolean forward ) { } public int getOffset ( Point point , int [ ] trailing ) { } public int getOffset ( int x , int y , int [ ] trailing ) { } public int getOrientation ( ) { } public int getPreviousOffset ( int offset , int movement ) { } public int [ ] getRanges ( ) { } public int [ ] getSegments ( ) { } String getSegmentsText ( ) { } public int getSpacing ( ) { } public TextStyle getStyle ( int offset ) { } public TextStyle [ ] getStyles ( ) { } public int [ ] getTabs ( ) { } public String getText ( ) { } public int getWidth ( ) { } public boolean isDisposed ( ) { } TextLayout . StyleItem [ ] itemize ( ) { } TextLayout . StyleItem [ ] merge ( int items , int itemCount ) { int count = 0 ; int start = 0 ; int end = segmentsText . length ( ) ; int itemIndex = 0 ; int styleIndex = 0 ; TextLayout . StyleItem [ ] runs = new TextLayout . StyleItem [ itemCount + ( styles . length ) ] ; SCRIPT_ITEM scriptItem = new SCRIPT_ITEM ( ) ; boolean linkBefore = false ; while ( start < end ) { TextLayout . StyleItem item = new TextLayout . StyleItem ( ) ; item . start = start ; item . style = styles [ styleIndex ] . style ; runs [ ( count ++ ) ] = item ; OS . MoveMemory ( scriptItem , ( items + ( itemIndex * ( SCRIPT_ITEM . sizeof ) ) ) , sizeof ) ; item . analysis = scriptItem . a ; if ( linkBefore ) { item . analysis . fLinkBefore = true ; linkBefore = false ; } scriptItem . a = new SCRIPT_ANALYSIS ( ) ; OS . MoveMemory ( scriptItem , ( items + ( ( itemIndex + 1 ) * ( SCRIPT_ITEM . sizeof ) ) ) , sizeof ) ; int itemLimit = scriptItem . iCharPos ; int styleLimit = translateOffset ( styles [ ( styleIndex + 1 ) ] . start ) ; if ( styleLimit <= itemLimit ) { styleIndex ++ ; start = styleLimit ; if ( ( ( start < itemLimit ) && ( 0 < start ) ) && ( start < end ) ) { char pChar = segmentsText . charAt ( ( start - 1 ) ) ; char tChar = segmentsText . charAt ( start ) ; <START_BUG> if ( ( ! ( Compatibility . isWhitespace ( pChar ) ) ) && ( ! ( Compatibility . isWhitespace ( tChar ) ) ) ) { <END_BUG> item . analysis . fLinkAfter = true ; linkBefore = true ; } } } if ( itemLimit <= styleLimit ) { itemIndex ++ ; start = itemLimit ; } item . length = start - ( item . start ) ; } TextLayout . StyleItem item = new TextLayout . StyleItem ( ) ; item . start = end ; OS . MoveMemory ( scriptItem , ( items + ( itemCount * ( SCRIPT_ITEM . sizeof ) ) ) , sizeof ) ; item . analysis = scriptItem . a ; runs [ ( count ++ ) ] = item ; if ( ( runs . length ) != count ) { TextLayout . StyleItem [ ] result = new TextLayout . StyleItem [ count ] ; System . arraycopy ( runs , 0 , result , 0 , count ) ; return result ; } return runs ; } TextLayout . StyleItem [ ] reorder ( TextLayout . StyleItem [ ] runs , boolean terminate ) { } public void setAlignment ( int alignment ) { } public void setAscent ( int ascent ) { } public void setDescent ( int descent ) { } public void setFont ( Font font ) { } public void setIndent ( int indent ) { } public void setJustify ( boolean justify ) { } public void setOrientation ( int orientation ) { } public void setSegments ( int [ ] segments ) { } public void setSpacing ( int spacing ) { } public void setStyle ( TextStyle style , int start , int end ) { }

Fix:
if ( ( Compatibility . isLetter ( pChar ) ) && ( Compatibility . isLetter ( tChar ) ) ) {