Buggy code:
public abstract class Scrollable extends Control { ScrollBar horizontalBar ; ScrollBar verticalBar ; Scrollable ( ) { } public Scrollable ( Composite parent , int style ) { } int callWindowProc ( int hwnd , int msg , int wParam , int lParam ) { } public Rectangle computeTrim ( int x , int y , int width , int height ) { } ScrollBar createScrollBar ( int type ) { } void createWidget ( ) { } void destroyScrollBar ( int type ) { } public Rectangle getClientArea ( ) { } public ScrollBar getHorizontalBar ( ) { } public ScrollBar getVerticalBar ( ) { } void releaseChildren ( boolean destroy ) { } int scrolledHandle ( ) { } int widgetExtStyle ( ) { } int widgetStyle ( ) { } TCHAR windowClass ( ) { } int windowProc ( ) { } LRESULT WM_HSCROLL ( int wParam , int lParam ) { } LRESULT WM_MOUSEWHEEL ( int wParam , int lParam ) { int scrollRemainder = display . scrollRemainder ; LRESULT result = super . WM_MOUSEWHEEL ( wParam , lParam ) ; if ( result != null ) return result ; if ( ( ( state ) & ( CANVAS ) ) != 0 ) { if ( ( wParam & ( ( OS . MK_SHIFT ) | ( OS . MK_CONTROL ) ) ) != 0 ) return result ; boolean vertical = ( ( verticalBar ) != null ) && ( verticalBar . getEnabled ( ) ) ; boolean horizontal = ( ( horizontalBar ) != null ) && ( horizontalBar . getEnabled ( ) ) ; int msg = ( vertical ) ? OS . WM_VSCROLL : horizontal ? OS . WM_HSCROLL : 0 ; if ( msg == 0 ) return result ; int [ ] linesToScroll = new int [ 1 ] ; OS . SystemParametersInfo ( SPI_GETWHEELSCROLLLINES , 0 , linesToScroll , 0 ) ; int delta = OS . GET_WHEEL_DELTA_WPARAM ( wParam ) ; boolean pageScroll = ( linesToScroll [ 0 ] ) == ( OS . WHEEL_PAGESCROLL ) ; <START_BUG> if ( ( ! ( OS . IsWinCE ) ) && ( ( OS . WIN32_VERSION ) >= ( OS . VERSION ( 6 , 0 ) ) ) ) { <END_BUG> ScrollBar bar = ( vertical ) ? verticalBar : horizontalBar ; SCROLLINFO info = new SCROLLINFO ( ) ; info . cbSize = SCROLLINFO . sizeof ; info . fMask = OS . SIF_POS ; OS . GetScrollInfo ( handle , bar . scrollBarType ( ) , info ) ; if ( vertical && ( ! pageScroll ) ) delta *= linesToScroll [ 0 ] ; int increment = ( pageScroll ) ? bar . getPageIncrement ( ) : bar . getIncrement ( ) ; info . nPos -= ( increment * delta ) // ( OS . WHEEL_DELTA ) ; OS . SetScrollInfo ( handle , bar . scrollBarType ( ) , info , true ) ; OS . SendMessage ( handle , msg , SB_THUMBPOSITION , 0 ) ; } else { int code = 0 ; if ( pageScroll ) { code = ( delta < 0 ) ? OS . SB_PAGEDOWN : OS . SB_PAGEUP ; } else { code = ( delta < 0 ) ? OS . SB_LINEDOWN : OS . SB_LINEUP ; if ( msg == ( OS . WM_VSCROLL ) ) delta *= linesToScroll [ 0 ] ; } if ( ( delta ^ scrollRemainder ) >= 0 ) delta += scrollRemainder ; int count = ( Math . abs ( delta ) ) // ( OS . WHEEL_DELTA ) ; for ( int i = 0 ; i < count ; i ++ ) { OS . SendMessage ( handle , msg , code , 0 ) ; } } return LRESULT . ZERO ; } int vPosition = ( ( verticalBar ) == null ) ? 0 : verticalBar . getSelection ( ) ; int hPosition = ( ( horizontalBar ) == null ) ? 0 : horizontalBar . getSelection ( ) ; int code = callWindowProc ( handle , WM_MOUSEWHEEL , wParam , lParam ) ; if ( ( verticalBar ) != null ) { int position = verticalBar . getSelection ( ) ; if ( position != vPosition ) { Event event = new Event ( ) ; event . detail = ( position < vPosition ) ? SWT . PAGE_UP : SWT . PAGE_DOWN ; verticalBar . sendEvent ( Selection , event ) ; } } if ( ( horizontalBar ) != null ) { int position = horizontalBar . getSelection ( ) ; if ( position != hPosition ) { Event event = new Event ( ) ; event . detail = ( position < hPosition ) ? SWT . PAGE_UP : SWT . PAGE_DOWN ; horizontalBar . sendEvent ( Selection , event ) ; } } return new LRESULT ( code ) ; } LRESULT WM_SIZE ( int wParam , int lParam ) { } LRESULT WM_VSCROLL ( int wParam , int lParam ) { } LRESULT wmNCPaint ( int hwnd , int wParam , int lParam ) { } LRESULT wmScroll ( ScrollBar bar , boolean update , int hwnd , int msg , int wParam , int lParam ) { } }

Fix:
if ( ( ! ( OS . IsWinCE ) ) && ( ( OS . WIN32_VERSION ) >= ( OS . VERSION ( 5 , 1 ) ) ) ) {