int (boolean directionForward, long currentPageNumber, int caretPageOffset, JBList<SearchResult> listResult) { ListModel<SearchResult> model = listResult.getModel(); int index; SearchResult searchResult; if (model.getSize() == -1) { return -1; } if (listResult.getSelectedIndex() != -1) { index = listResult.getSelectedIndex(); if (directionForward) { index++; } else { index--; } } else { index = 0; while (true) { if (index >= model.getSize()) { if (directionForward) { return -1; } else { return model.getSize() - 1; } } else { searchResult = model.getElementAt(index); if (currentPageNumber > searchResult.startPosition.pageNumber || currentPageNumber == searchResult.startPosition.pageNumber && caretPageOffset >= searchResult.startPosition.symbolOffsetInPage) { index++; } else { break; } } } if (!directionForward) { index--; } } if (index < 0 || index >= model.getSize()) { return -1; } else { return index; } }