(Utils.grOrEq(m_minSupport, m_lowerBoundMinSupport)));
(Utils.grOrEq(m_minSupport, m_lowerBoundMinSupport)) && (necSupport >= 1));
  public void buildAssociations(Instances instances) throws Exception {    double[] confidences, supports;    int[] indices;    FastVector[] sortedRuleSet;    if (instances.checkForStringAttributes()) {      throw new Exception("Can't handle string attributes!");    }    // Decrease minimum support until desired number of rules found.    m_cycles = 0;    m_minSupport = 1.0;    do {      // Reserve space for variables      m_Ls = new FastVector();      m_hashtables = new FastVector();      m_allTheRules = new FastVector[3];      m_allTheRules[0] = new FastVector();      m_allTheRules[1] = new FastVector();      m_allTheRules[2] = new FastVector();      sortedRuleSet = new FastVector[3];      sortedRuleSet[0] = new FastVector();      sortedRuleSet[1] = new FastVector();      sortedRuleSet[2] = new FastVector();      // Find large itemsets and rules      findLargeItemSets(instances);      if (m_significanceLevel != -1) 	findRulesBruteForce();      else	findRulesQuickly();            // Sort rules according to their support      supports = new double[m_allTheRules[2].size()];      for (int i = 0; i < m_allTheRules[2].size(); i++) 	supports[i] = (double)((ItemSet)m_allTheRules[1].elementAt(i)).support();      indices = Utils.sort(supports);      for (int i = 0; i < m_allTheRules[2].size(); i++) {	sortedRuleSet[0].addElement(m_allTheRules[0].elementAt(indices[i]));	sortedRuleSet[1].addElement(m_allTheRules[1].elementAt(indices[i]));	sortedRuleSet[2].addElement(m_allTheRules[2].elementAt(indices[i]));      }      // Sort rules according to their confidence      m_allTheRules[0].removeAllElements();      m_allTheRules[1].removeAllElements();      m_allTheRules[2].removeAllElements();      confidences = new double[sortedRuleSet[2].size()];      for (int i = 0; i < sortedRuleSet[2].size(); i++) 	confidences[i] = ((Double)sortedRuleSet[2].elementAt(i)).doubleValue();      indices = Utils.sort(confidences);      for (int i = sortedRuleSet[0].size() - 1; 	   (i >= (sortedRuleSet[0].size() - m_numRules)) && (i >= 0); i--) {	m_allTheRules[0].addElement(sortedRuleSet[0].elementAt(indices[i]));	m_allTheRules[1].addElement(sortedRuleSet[1].elementAt(indices[i]));	m_allTheRules[2].addElement(sortedRuleSet[2].elementAt(indices[i]));      }      m_minSupport -= m_delta;      m_cycles++;    } while ((m_allTheRules[0].size() < m_numRules) && 	     (Utils.grOrEq(m_minSupport, m_lowerBoundMinSupport)));    m_minSupport += m_delta;  }