code: private long grow(PrintStream out, List<ItemSet> list, TotalSupportTree ttree, FPTree fptree, int[] itemset) {
          long n = 0;
          int[] prefixItemset = new int[T0.maxItemSetSize];
          int[] localItemSupport = new int[T0.numItems];
          
          // Loop through header table from end to start, item by item
          for (int i = fptree.headerTable.length; i-- > 0;) {
              n += grow(out, list, ttree, fptree.headerTable[i], itemset, localItemSupport, prefixItemset);
          }
  
          return n;
      }
docs: Mines frequent item sets. Start with the bottom of the header table and
  work upwards. For each available FP tree node:
  <OL>
  <LI> Count the support.
  <LI> Build up item set sofar.
  <LI> Add to supported sets.
  <LI> Build a new FP tree: (i) create a new local root, (ii) create a
  new local header table and (iii) populate with ancestors.
  <LI> If new local FP tree is not empty repeat mining operation.
  </OL>
  Otherwise end.
  @param itemset the current item sets as generated so far (null at start).