Buggy code:
@ Override public void onSelectingCellsWithDrag ( int col , int row ) { } @ Override public void onFinishedSelectingCellsWithDrag ( int col1 , int col2 , int row1 , int row2 ) { } @ Override public void onCellDoubleClick ( int column , int row , String value ) { } @ Override public void onCellInputBlur ( final String inputValue ) { } @ Override public void onCellInputFocus ( ) { } @ Override public void onCellInputCancel ( ) { } @ Override public void onCellInputEnter ( String value , boolean shift ) { } @ Override public void onCellInputTab ( String value , boolean shift ) { } @ Override public void onCellInputValueChange ( String value ) { } @ Override public void onSheetKeyPress ( NativeEvent event , String enteredCharacter ) { } private void checkEditableAndNotify ( ) { } @ Override public void onAddressEntered ( String value ) { } @ Override public void onAddressFieldEsc ( ) { } @ Override public void onSheetTabSelected ( int sheetIndex ) { } @ Override public void onFirstTabIndexChange ( int firstVisibleTab ) { } @ Override public void onSheetRename ( int sheetIndex , String newName ) { } @ Override public void onNewSheetCreated ( ) { } @ Override public void onSheetRenameCancel ( ) { } @ Override public int [ ] getRowHeightsPX ( ) { } @ Override public MergedRegion getMergedRegion ( int column , int row ) { } @ Override public MergedRegion getMergedRegionStartingFrom ( int column , int row ) { } @ Override public void onSelectionIncreasePainted ( int c1 , int c2 , int r1 , int r2 ) { } @ Override public void onSelectionDecreasePainted ( int col1 , int col2 , int colEdgeIndex , int row1 , int row2 , int rowEdgeIndex ) { } @ Override public MergedRegionContainer getMergedRegionContainer ( ) { } @ Override public void onFormulaFieldFocus ( String value ) { } @ Override public void onFormulaFieldBlur ( final String value ) { } @ Override public void onFormulaEnter ( String value ) { } @ Override public void onFormulaTab ( String value ) { } @ Override public void onFormulaEsc ( ) { } @ Override public void onFormulaValueChange ( String value ) { } @ Override public void onRowsResized ( Map < Integer , Float > newSizes ) { } @ Override public void onColumnsResized ( Map < Integer , Integer > newSizes ) { } @ Override public void onRedoPress ( ) { } @ Override public void onUndoPress ( ) { } private void cellEditingDone ( String value ) { } private void doDeferredCellValueCommit ( final String value ) { } protected String createRangeSelectionString ( int col1 , int col2 , int row1 , int row2 ) { } protected String createCellAddress ( int column , int row ) { } public void setRowBufferSize ( int rowBufferSize ) { } public void setColumnBufferSize ( int columnBufferSize ) { } public void setRows ( int rows ) { } public void setCols ( int cols ) { } public void setRowH ( float [ ] rowH ) { } public void setColW ( int [ ] colW ) { } public void setDefRowH ( float defRowH ) { } public void setDefColW ( int defColW ) { } public void setVerticalScrollPositions ( int [ ] verticalScrollPositions ) { } public void setHorizontalScrollPositions ( int [ ] horizontalScrollPositions ) { } public void setVerticalSplitPosition ( int verticalSplitPosition ) { } public void setHorizontalSplitPosition ( int horizontalSplitPosition ) { } public void setCellStyleToCSSStyle ( HashMap < Integer , String > cellStyleToCSSStyle ) { } public void setShiftedCellBorderStyles ( ArrayList < String > shiftedCellBorderStyles ) { } public void setHyperlinksTooltips ( HashMap < String , String > cellLinksMap ) { } public void setSheetProtected ( boolean sheetProtected ) { } public void setWorkbookProtected ( boolean workbookProtected ) { } public void setHiddenColumnIndexes ( ArrayList < Integer > hiddenColumnIndexes ) { } public void setHiddenRowIndexes ( ArrayList < Integer > hiddenRowIndexes ) { } public void setCellComments ( HashMap < String , String > cellComments ) { } @ Override public Map < Integer , String > getCellStyleToCSSStyle ( ) { } @ Override public float getRowHeight ( int row ) { } @ Override public int getColWidth ( int col ) { <START_BUG> if ( ( colW . length ) >= col ) { <END_BUG> return colW [ ( col - 1 ) ] ; } else { return defColW ; } } @ Override public int getColWidthActual ( int col ) { } @ Override public final String getColHeader ( int col ) { } public final int getColHeaderIndex ( String header ) { } @ Override public String getRowHeader ( int row ) { } @ Override public int getDefinedRows ( ) { } @ Override public int getDefinedCols ( ) { } @ Override public float [ ] getRowHeights ( ) { } @ Override public int [ ] getColWidths ( ) { } @ Override public float getDefaultRowHeight ( ) { } @ Override public int getDefaultColumnWidth ( ) { } @ Override public int getRowBufferSize ( ) { } @ Override public int getColumnBufferSize ( ) { } @ Override public int getMaximumCols ( ) { } @ Override public int getMaximumRows ( ) { } @ Override public int getActiveSheetIndex ( ) { } @ Override public int getNumberOfSheets ( ) { } @ Override public boolean isColumnHidden ( int columnIndex ) { } @ Override public boolean isRowHidden ( int rowIndex ) { } @ Override public boolean canResize ( ) { } public void setDisplayGridlines ( boolean displayGridlines ) { } public void setDisplayRowColHeadings ( boolean displayRowColHeadings ) { } public void refreshOverlayPositions ( ) { } public void updateBottomRightCellValues ( ArrayList < CellData > cellData ) { } public void updateTopLeftCellValues ( ArrayList < CellData > cellData ) { } public void updateTopRightCellValues ( ArrayList < CellData > cellData ) { }

Fix:
if ( ( col > 0 ) && ( ( colW . length ) >= col ) ) {