code: public Rejected acquirePermits(long number, long nanoTime) {
          for (int i = 0; i < backPressureList.size(); ++i) {
              BackPressure<Rejected> bp = backPressureList.get(i);
              Rejected rejected = bp.acquirePermit(number, nanoTime);
              if (rejected != null) {
                  rejectedCounts.write(rejected, number, nanoTime);
  
                  for (int j = 0; j < i; ++j) {
                      backPressureList.get(j).releasePermit(number, nanoTime);
                  }
                  return rejected;
              }
          }
          return null;
      }
docs: Acquire permits for task execution. If the acquisition is rejected then a reason
  will be returned. If the acquisition is successful, null will be returned.
  
  @param number   of permits to acquire
  @param nanoTime currentInterval nano time
  @return the rejected reason