long updateTimestamp = System.currentTimeMillis();
searchResult.startUpdating(updateTimestamp);
Project project = dataModel.getProject();
FindManager findManager = FindManager.getInstance(project);
for (Object r : dataModel.getRows()) {
searchResult.checkTimestamp(updateTimestamp);
DataModelRow row = (DataModelRow) r;
for (Object c : row.getCells()) {
searchResult.checkTimestamp(updateTimestamp);
DataModelCell cell = (DataModelCell) c;
String userValue = cell.getFormattedUserValue();
if (userValue != null) {
int findOffset = 0;
while (true) {
FindResult findResult = findManager.findString(userValue, findOffset, findModel);
searchResult.checkTimestamp(updateTimestamp);
if (findResult.isStringFound()) {
searchResult.addMatch(cell, findResult.getStartOffset(), findResult.getEndOffset());
findOffset = findResult.getEndOffset();
} else {