Buggy code:
public abstract class AbstractActionTable < T > extends AbstractActionPanel < T > implements ActionTable < T > { public interface RowVisitor < T > { void visit ( TableRowElement row , T item ) { } } private static final CommonApplicationConstants constants = AssetProvider . getConstants ( ) ; @ UiField @ WithElementId public ButtonBase prevPageButton ; @ UiField @ WithElementId public ButtonBase nextPageButton ; @ UiField public ScrollPanel tableContainer ; @ UiField public SimplePanel tableHeaderContainer ; private final OrderedMultiSelectionModel < T > selectionModel ; @ WithElementId ( "content" ) public final ActionCellTable < T > table ; protected final ActionCellTable < T > tableHeader ; protected final boolean showDefaultHeader ; private boolean multiSelectionDisabled ; private final int [ ] mousePosition = new int [ 2 ] ; private HandlerRegistration scrollHandlerRegistration ; private HandlerRegistration selectionModelScrollHandlerRegistration ; private int tableContainerHorizontalScrollPosition = 0 ; private boolean doAutoSelect ; private int scrollOffset = 0 ; private AbstractActionTable . RowVisitor < T > rowVisitor ; public AbstractActionTable ( final SearchableTableModelProvider < T , ? > dataProvider , Resources resources , Resources headerResources , EventBus eventBus , ClientStorage clientStorage ) { } public void setRowVisitor ( AbstractActionTable . RowVisitor < T > rowVisitor ) { } @ Override public void onLoad ( ) { } private void autoSelectFirst ( ) { } private void addScrollSelectionModelChangeListener ( ) { } private void addScrollListener ( ) { } void addModelSearchStringChangeListener ( final SearchableListModel < ? , ? > model ) { } protected void updateTableControls ( ) { } public void showPagingButtons ( ) { } public void showSelectionCountTooltip ( ) { } @ Override protected SearchableTableModelProvider < T , ? > getDataProvider ( ) { } @ Override protected void initWidget ( Widget widget ) { } void initTable ( ) { } void initSortHandler ( ) { } void pushColumnSort ( ColumnSortInfo columnSortInfo ) { } void clearColumnSort ( ) { } void enforceScrollPosition ( ) { } void updateTableHeaderPosition ( ) { } @ Override public void resetScrollPosition ( ) { } @ Override protected void onContextMenu ( ContextMenuEvent event ) { } private T getValueFromElement ( Element target ) { TableCellElement tableCell = findNearestParentCell ( target ) ; if ( tableCell != null ) { Element trElem = tableCell . getParentElement ( ) ; TableRowElement tr = TableRowElement . as ( trElem ) ; int row = tr . getSectionRowIndex ( ) ; <START_BUG> return table . getVisibleItem ( row ) ; <END_BUG> } else { return null ; } } private TableCellElement findNearestParentCell ( Element elem ) { } public void setWidth ( String width , boolean isFixedLayout ) { } @ UiHandler ( "prevPageButton" ) public void handlePrevPageButtonClick ( ClickEvent event ) { } @ UiHandler ( "nextPageButton" ) public void handleNextPageButtonClick ( ClickEvent event ) { } public void setColumnWidth ( Column < T , ? > column , String width ) { } public void addColumn ( Column < T , ? > column , String headerText ) { } public void addColumn ( Column < T , ? > column , String headerText , String width ) { } public void addColumnWithHtmlHeader ( Column < T , ? > column , SafeHtml headerHtml ) { } public void addColumnWithHtmlHeader ( Column < T , ? > column , SafeHtml headerHtml , String width ) { } public void addColumn ( Column < T , ? > column , SafeHtmlHeader header ) { } public void addColumn ( Column < T , ? > column , SafeHtmlHeader header , String width ) { } void removeColumn ( Column < T , ? > column ) { } public void ensureColumnPresent ( Column < T , ? > column , String headerText , boolean present ) { } public void ensureColumnPresent ( Column < T , ? > column , String headerText , boolean present , String width ) { } public void ensureColumnPresent ( Column < T , ? > column , SafeHtml headerHtml , boolean present , String width ) { } public void ensureColumnPresent ( Column < T , ? > column , SafeHtmlHeader header , boolean present , String width ) { } public void enableColumnResizing ( ) { } @ Override public OrderedMultiSelectionModel < T > getSelectionModel ( ) { } public void setTableSelectionModel ( SelectionModel < T > selectionModel , CellPreviewEvent . Handler < T > selectionEventManager ) { } public boolean isMultiSelectionDisabled ( ) { } public void setMultiSelectionDisabled ( boolean multiSelectionDisabled ) { } @ Override public List < T > getSelectedItems ( ) { } @ Override public void setLoadingState ( LoadingState state ) { } public void setExtraRowStyles ( RowStyles < T > rowStyles ) { } public String getContentTableElementId ( ) { } boolean isTableHeaderVisible ( ) { } public String getColumnWidth ( Column < T , ? > column ) { } private void updateScrollPosition ( ) { } public void setVisibleRange ( int start , int length ) { } }

Fix:
return ( table . getVisibleItemCount ( ) ) > 0 ? table . getVisibleItem ( row ) : null ;