== HLINE && !i.isMissingValue(y)) {
== HLINE && !Instance.isMissingValue(y)) {
    public double[] calcClassType(Instance i) throws Exception {      //note that it will be the same calcs for both numeric and nominal      //attrib types.      //note the weightings for returning stuff will need to be modified       //to work properly but will do for now.      double x = 0, y = 0;      if (m_attrib1 >= 0) {	x = i.value(m_attrib1);      }      if (m_attrib2 >= 0) {	y = i.value(m_attrib2);      }      double[] rt;      if (m_training.classAttribute().isNominal()) {	rt = new double[m_training.numClasses()];      }      else {	rt = new double[1];      }            FastVector tmp;      if (m_classObject != null) {	//then use the classifier.	if (m_training.classAttribute().isNominal()) {	  rt[(int)m_classObject.classifyInstance(i)] = 1;	}	else {	  if (m_filter != null) {	    m_filter.input(i);	    rt[0] = m_classObject.classifyInstance(m_filter.output());	  }	  else {	    rt[0] = m_classObject.classifyInstance(i);	  }	}	//System.out.println("j48");	return rt;      }      else if (((Double)((FastVector)m_ranges.elementAt(0)).		elementAt(0)).intValue() == LEAF) {	//System.out.println("leaf");	//then this is a leaf	//rt = new double[m_training.numClasses()];		if (m_training.classAttribute().isNumeric()) {	 	  setLinear();	  m_filter.input(i);	  rt[0] = m_classObject.classifyInstance(m_filter.output());	  return rt;	}		int totaler = 0;	tmp = (FastVector)m_ranges.elementAt(0);	for (int noa = 0; noa < m_training.numClasses();noa++) {	  rt[noa] = ((Double)tmp.elementAt(noa + 1)).doubleValue();	  totaler += rt[noa];	}	for (int noa = 0; noa < m_training.numClasses(); noa++) {	  rt[noa] = rt[noa] / totaler;	}	return rt;      }                  for (int noa = 0; noa < m_ranges.size(); noa++) {		tmp = (FastVector)m_ranges.elementAt(noa);		if (((Double)tmp.elementAt(0)).intValue() 	    == VLINE && !i.isMissingValue(x)) {	  	}	else if (((Double)tmp.elementAt(0)).intValue() 		 == HLINE && !i.isMissingValue(y)) {	  	}	else if (i.isMissingValue(x) || i.isMissingValue(y)) {	  //System.out.println("miss");	  //then go down both branches using their weights	  rt = m_set1.calcClassType(i);	  double[] tem = m_set2.calcClassType(i);	  if (m_training.classAttribute().isNominal()) {	    for (int nob = 0; nob < m_training.numClasses(); nob++) {	      rt[nob] *= m_set1.m_weight;	      rt[nob] += tem[nob] * m_set2.m_weight;	    }	  }	  else {	    rt[0] *= m_set1.m_weight;	    rt[0] += tem[0] * m_set2.m_weight;	  }	  return rt;	}	else if (((Double)tmp.elementAt(0)).intValue() == RECTANGLE) {	  //System.out.println("RECT");	  if (x >= ((Double)tmp.elementAt(1)).doubleValue() && 	      x <= ((Double)tmp.elementAt(3)).doubleValue() && 	      y <= ((Double)tmp.elementAt(2)).doubleValue() && 	      y >= ((Double)tmp.elementAt(4)).doubleValue()) {	    //then falls inside the rectangle	    //System.out.println("true");	    rt = m_set1.calcClassType(i);	    return rt;	  }	  	}	else if (((Double)tmp.elementAt(0)).intValue() == POLYGON) {	  if (inPoly(tmp, x, y)) {	    rt = m_set1.calcClassType(i);	    return rt;	  }	}	else if (((Double)tmp.elementAt(0)).intValue() == POLYLINE) {	  if (inPolyline(tmp, x, y)) {	    rt = m_set1.calcClassType(i);	    return rt;	  }	}      }      //is outside the split      if (m_set2 != null) {	rt = m_set2.calcClassType(i);      }      return rt;    }