code: private long grow(PrintStream out, List<ItemSet> list, TotalSupportTree ttree, HeaderTableItem header, int[] itemset, int[] localItemSupport, int[] prefixItemset) {
          long n = 1;
          int support = header.count;
          int item = header.id;
          itemset = insert(itemset, item);
  
          collect(out, list, ttree, itemset, support);
          
          if (header.node.next == null) {
              FPTree.Node node = header.node;
              n += grow(out, list, ttree, node.parent, itemset, support);
          } else {
              // Count singles in linked list
              if (getLocalItemSupport(header.node, localItemSupport)) {
                  // Create local FP tree
                  FPTree fptree = getLocalFPTree(header.node, localItemSupport, prefixItemset);
                  // Mine new FP-tree
                  n += grow(out, list, ttree, fptree, itemset, localItemSupport, prefixItemset);
              }
          }
  
          return n;
      }
docs: Mines FP-tree with respect to a single element in the header table.
  @param header the header table item of interest.
  @param itemset the item set represented by the current FP-tree.