AllocationStats minus(AllocationStats baseline) {
    for (Entry<Allocation> entry : baseline.allocations.entrySet()) {
      int superCount = allocations.count(entry.getElement());
      if (superCount < entry.getCount()) {
        throw new IllegalStateException(
            String.format("Your benchmark appears to have non-deterministic allocation behavior. "
                + "Observed %d instance(s) of %s in the baseline but only %d in the actual "
                + "measurement", 
                entry.getCount(),
                entry.getElement(), 
                superCount));
      }
    }
    try {
      return new AllocationStats(allocationCount - baseline.allocationCount,
            allocationSize - baseline.allocationSize,
            reps - baseline.reps,
            Multisets.difference(allocations, baseline.allocations));
    } catch (IllegalArgumentException e) {
      throw new IllegalStateException(String.format(
          "Your benchmark appears to have non-deterministic allocation behavior. The difference "
          + "between the baseline %s and the measurement %s is invalid. Consider enabling "
          + "instrument.allocation.options.trackAllocations to get a more specific error message.", 
          baseline, this), e);
    }
  }
AllocationStats minus ( AllocationStats baseline ) { for ( Entry < Allocation > entry : baseline . allocations . entrySet ( ) ) { int superCount = allocations . count ( entry . getElement ( ) ) ; if ( superCount < entry . getCount ( ) ) { throw new IllegalStateException ( String . format ( "Your benchmark appears to have non-deterministic allocation behavior. " + "Observed %d instance(s) of %s in the baseline but only %d in the actual " + "measurement" , entry . getCount ( ) , entry . getElement ( ) , superCount ) ) ; } } try { return new AllocationStats ( allocationCount - baseline . allocationCount , allocationSize - baseline . allocationSize , reps - baseline . reps , Multisets . difference ( allocations , baseline . allocations ) ) ; } catch ( IllegalArgumentException e ) { throw new IllegalStateException ( String . format ( "Your benchmark appears to have non-deterministic allocation behavior. The difference " + "between the baseline %s and the measurement %s is invalid. Consider enabling " + "instrument.allocation.options.trackAllocations to get a more specific error message." , baseline , this ) , e ) ; } }
Computes and returns the difference between this measurement and the given
{@code baseline} measurement. The {@code baseline} measurement must have a lower weight
(fewer reps) than this measurement.