st.nextToken();
  public double classifyInstance(Instance instance) throws Exception {        int[] labels = new int[instance.numClasses()];    double[] prob_estimates = null;        // FracPete: the following block is NOT tested!    if (m_predict_probability) {      if (    (m_SVMType == SVMTYPE_EPSILON_SVR)           || (m_SVMType == SVMTYPE_NU_SVR) ) {                double prob = ((Double) invokeMethod(            Class.forName(CLASS_SVM).newInstance(),            "svm_get_svr_probability",            new Class[]{Class.forName(CLASS_SVMMODEL)},            new Object[]{m_Model})).doubleValue();        System.out.print(            "Prob. model for test data: target value = predicted value + z,\n"            + "z: Laplace distribution e^(-|z|/sigma)/(2sigma),sigma="            + prob + "\n");      }       else {        invokeMethod(            Class.forName(CLASS_SVM).newInstance(),            "svm_get_labels",            new Class[]{              Class.forName(CLASS_SVMMODEL),               Array.newInstance(Integer.TYPE, instance.numClasses()).getClass()},            new Object[]{              m_Model,               labels});        prob_estimates = new double[instance.numClasses()];      }    }        if (m_Filter != null) {      m_Filter.input(instance);      m_Filter.batchFinished();      instance = m_Filter.output();    }        String line = instanceToSparse(instance);        StringTokenizer st = new StringTokenizer(line, " \t\n\r\f:");        int m = st.countTokens() / 2;    Object x = Array.newInstance(Class.forName(CLASS_SVMNODE), m);    for (int j = 0; j < m; j++) {      Array.set(x, j, Class.forName(CLASS_SVMNODE).newInstance());      setField(Array.get(x, j), "index", new Integer(st.nextToken()));      setField(Array.get(x, j), "value", new Double(st.nextToken()));    }        double v;    if (    m_predict_probability         && (    (m_SVMType == SVMTYPE_C_SVC)               || (m_SVMType == SVMTYPE_NU_SVC) ) ) {      v = ((Double) invokeMethod(          Class.forName(CLASS_SVM).newInstance(),          "svm_predict_probability",          new Class[]{            Class.forName(CLASS_SVMMODEL),             Array.newInstance(Class.forName(CLASS_SVMNODE), Array.getLength(x)).getClass(),            Array.newInstance(Double.TYPE, prob_estimates.length).getClass()},          new Object[]{            m_Model,             x,            prob_estimates})).doubleValue();    }     else {      v = ((Double) invokeMethod(          Class.forName(CLASS_SVM).newInstance(),          "svm_predict",          new Class[]{            Class.forName(CLASS_SVMMODEL),             Array.newInstance(Class.forName(CLASS_SVMNODE), Array.getLength(x)).getClass()},          new Object[]{            m_Model,             x})).doubleValue();    }    // transform frist class label into Weka format    if (v == -1)      v = 0;        return v;  }