code: private void updateHeavyGeneral(final T item, final double weight, final boolean mark) {
      assert m_ == 0;
      assert r_ >= 2;
      assert (r_ + h_) == k_;
  
      // put into H, although may come back out momentarily
      push(item, weight, mark);
  
      growCandidateSet(totalWtR_, r_);
    }
docs: /* In the "heavy" case the new item has weight > old_tau, so would
  appear to the left of items in R in a hypothetical reverse-sorted list and
  might or might not be light enough be part of this round's downsampling.
  [After first splitting off the R=1 case] we greatly simplify the code by
  putting the new item into the H heap whether it needs to be there or not.
  In other words, it might go into the heap and then come right back out,
  but that should be okay because pseudo_heavy items cannot predominate
  in long streams unless (max wt) / (min wt) > o(exp(N))