instNew.setClassIndex(instanceInfo.classIndex());
  public boolean setInputFormat(Instances instanceInfo) throws Exception {    Attribute 	att;    Attribute 	attNew;    Vector 	allLabels;    Enumeration enm;    int 	i;    FastVector	values;    FastVector	atts;    Instances	instNew;    super.setInputFormat(instanceInfo);        m_AttIndex.setUpper(instanceInfo.numAttributes() - 1);    att = instanceInfo.attribute(m_AttIndex.getIndex());    if (!att.isNominal())      throw new UnsupportedAttributeTypeException("Chosen attribute not nominal.");        // merge labels    allLabels = new Vector();    enm = att.enumerateValues();    while (enm.hasMoreElements())      allLabels.add(enm.nextElement());    for (i = 0; i < m_Labels.size(); i++) {      if (!allLabels.contains(m_Labels.get(i)))	allLabels.add(m_Labels.get(i));    }        // generate index array    if (getSort())      Collections.sort(allLabels);    m_SortedIndices = new int[att.numValues()];    enm             = att.enumerateValues();    i               = 0;    while (enm.hasMoreElements()) {      m_SortedIndices[i] = allLabels.indexOf(enm.nextElement());      i++;    }        // generate new header    values = new FastVector();    for (i = 0; i < allLabels.size(); i++)      values.addElement(allLabels.get(i));    attNew = new Attribute(att.name(), values);    atts = new FastVector();    for (i = 0; i < instanceInfo.numAttributes(); i++) {      if (i == m_AttIndex.getIndex())	atts.addElement(attNew);      else	atts.addElement(instanceInfo.attribute(i));    }        instNew = new Instances(instanceInfo.relationName(), atts, 0);        // set new format    setOutputFormat(instNew);        return true;  }