code: public boolean removeSearchListener(SearchListener<? super SolutionType> listener){
          // acquire status lock
          synchronized(statusLock){
              // assert idle
              assertIdle("Cannot remove search listener.");
              // remove listener
              if (searchListeners.remove(listener)){
                  // log
                  LOGGER.debug("{}: removed search listener {}", this, listener);
                  return true;
              } else {
                  return false;
              }
          }
      }
docs: Remove the given search listener. If the search listener had not been added, <code>false</code> is returned.
  Note that this method may only be called when the search is idle.
  
  @param listener search listener to be removed
  @return <code>true</code> if the listener was present and has now been removed
  @throws SearchException if the search is not idle