m_instances = new IndividualInstances(instances, m_parts);
m_instances = new IndividualInstances(new Instances(instances), m_parts);
  public void buildAssociations(Instances instances) throws Exception {    Frame valuesFrame = null; /* Frame to display the current values. */    /* Initialization of the search. */    if (m_parts == null) {      m_instances = instances;    } else {      m_instances = new IndividualInstances(instances, m_parts);    }        m_results = new SimpleLinkedList();    m_hypotheses = 0;    m_explored = 0;    m_status = NORMAL;    if (m_classIndex == -1)      m_instances.setClassIndex(m_instances.numAttributes()-1);         else if (m_classIndex < m_instances.numAttributes() && m_classIndex >= 0)      m_instances.setClassIndex(m_classIndex);    else      throw new Exception("Invalid class index.");        // can associator handle the data?    getCapabilities().testWithFail(m_instances);        /* Initialization of the window for current values. */    if (m_printValues == WINDOW) {      m_valuesText = new TextField(37);      m_valuesText.setEditable(false);      m_valuesText.setFont(new Font("Monospaced", Font.PLAIN, 12));          Label valuesLabel = new Label("Best and worst current values:");      Button stop = new Button("Stop search");      stop.addActionListener(new ActionListener() {	  public void actionPerformed(ActionEvent e) {	    /* Signal the interruption to the search. */	    m_status = STOP;	  }	});      valuesFrame = new Frame("Tertius status");      valuesFrame.setResizable(false);      valuesFrame.add(m_valuesText, BorderLayout.CENTER);      valuesFrame.add(stop, BorderLayout.SOUTH);      valuesFrame.add(valuesLabel, BorderLayout.NORTH);      valuesFrame.pack();      valuesFrame.setVisible(true);    } else if (m_printValues == OUT) {      System.out.println("Best and worst current values:");    }          Date start = new Date();    /* Build the predicates and launch the search. */    m_predicates = buildPredicates();    beginSearch();        Date end = new Date();    if (m_printValues == WINDOW) {      valuesFrame.dispose();    }    m_time = new Date(end.getTime() - start.getTime());  }