protected void search(boolean persistent, boolean async) {
    try {
      synchronized (this) {
        if (current_search == null) {

          current_search = new Searcher(persistent, async);

        } else {

          if (!current_search.wakeup()) {

            current_search = new Searcher(persistent, async);
          }
        }
      }
    } catch (Throwable e) {

      Debug.out(e);
    }
  }