private void processMessages(final List<FormattedMqttMessage> messages) {
    final SearchMatcher matcher = getSearchMatcher();

    final int firstIndex = store.getMessages().size() - 1;

    for (int i = firstIndex; i >= 0; i--) {
      processMessage(store.getMessages().get(i), matcher);

      if (firstIndex == i && !matcher.isValid()) {
        break;
      }
    }
  }
  private boolean processMessage(final FormattedMqttMessage message, final SearchMatcher matcher) {
    seachedCount++;

    boolean found = matcher.matches(message);

    if (found) {
      messageFound(message);
      return true;
    }

    return false;
  }