code: protected Boolean doRun() throws Exception{
      Point<Object>	evals;
      Evaluation 		eval;
      Classifier 		classifier;
      Performance		performance;
      boolean		completed;
  
      // setup
      try {
        evals = m_Generator.evaluate(m_Values);
        classifier = (Classifier) m_Generator.setup((Serializable) m_Owner.getClassifier(), evals);
      }
      catch (Exception e) {
        m_Exception = e;
        System.err.println("Failed to configure classifier!");
        e.printStackTrace();
        return false;
      }
  
      // evaluate
      try {
        eval = new Evaluation(m_Train);
        eval.setDiscardPredictions(canDiscardPredictions());
        if (m_Test == null) {
          if (m_Folds >= 2) {
            eval.crossValidateModel(classifier, m_Train, m_Folds, new Random(m_Owner.getSeed()));
          }
          else {
            classifier.buildClassifier(m_Train);
            eval.evaluateModel(classifier, m_Train);
          }
        }
        else {
          classifier.buildClassifier(m_Train);
          eval.evaluateModel(classifier, m_Test);
        }
        completed = true;
      }
      catch (Exception e) {
        eval = null;
        m_Exception = e;
        System.err.println("Encountered exception while evaluating classifier, skipping!");
        System.err.println("- Classifier: " + m_Owner.getCommandline(classifier));
        e.printStackTrace();
        completed = false;
      }
  
      // store performance
      performance = new Performance(
        m_Values,
        m_Owner.getFactory().newWrapper(eval),
        m_Evaluation,
        m_ClassLabel,
        (Classifier) m_Generator.setup((Serializable) m_Owner.getClassifier(), evals));
      m_Owner.getAlgorithm().addPerformance(performance, m_Folds);
  
      // log
      m_Owner.log(performance + ": cached=false");
  
      return completed;
    }
docs: Performs the evaluation.