void (boolean findSelected) { if (findSelected) { if (mySelectionManager.removeCurrentSelection()) { myCursor = firstOccurrenceAtOrAfterCaret(); } else { myCursor = null; } notifyCursorMoved(); } else { if (myFindModel == null) { myPendingSearch = Direction.UP; return; } boolean processFromTheBeginning = false; if (myNotFoundState) { myNotFoundState = false; processFromTheBeginning = true; } FindResult next = null; if (!myFindModel.isGlobal()) { if (myCursor != null) { next = prevOccurrence(myCursor); } } else { next = firstOccurrenceBeforeCaret(); } if (next == null) { if (processFromTheBeginning) { if (hasMatches()) { next = getOccurrences().get(getOccurrences().size() - 1); } } else { setNotFoundState(false); } } if (next != null) { moveCursorTo(next, false, true); } } push(); }