code: public SearchResult search(Instances data) throws Exception {
      SearchResult	result;
      SearchResult 	best;
  
      try {
        log("\n"
  	+ getClass().getName() + "\n"
  	+ getClass().getName().replaceAll(".", "=") + "\n"
  	+ "Options: " + Utils.joinOptions(getOptions()) + "\n");
  
        log("\n---> check");
        check(data);
  
        log("\n---> preSearch");
        preSearch(data);
  
        log("\n---> doSearch");
        best = doSearch(data);
  
        log("\n---> postSearch");
        result = postSearch(data, best);
      }
      catch (Exception e) {
        throw e;
      }
      finally {
        cleanUpSearch();
      }
  
      return result;
    }
docs: Performs the search and returns the best setup.
  
  @param data	the dataset to use
  @return		the best classifier setup
  @throws Exception	if search fails