code: private void updateHeavyREq1(final T item, final double weight, final boolean mark) {
      assert m_ == 0;
      assert r_ == 1;
      assert (r_ + h_) == k_;
  
      push(item, weight, mark);  // new item into H
      popMinToMRegion();   // pop lightest back into M
  
      // Any set of two items is downsample-able to one item,
      // so the two lightest items are a valid starting point for the following
      final int mSlot = k_ - 1; // array is k+1, 1 in R, so slot before is M
      growCandidateSet(weights_.get(mSlot) + totalWtR_, 2);
    }
docs: /* The analysis of this case is similar to that of the general heavy case.
  The one small technical difference is that since R < 2, we must grab an M item
  to have a valid starting point for continue_by_growing_candidate_set ()