@Override
    public int capacity(final int actualLength,
                        final int currentCapacity) {
      if (actualLength < 0) {
        throw new IllegalArgumentException("actualLength(=" + actualLength + " should be >=0");
      }
      if (currentCapacity < actualLength) {
        throw new IllegalArgumentException("currentCapacity(=" + currentCapacity + ") should be >= actualLength(=" + actualLength + ")");
      }
      final double capacityWithReserve = Math.ceil(actualLength * (1.0 + percentOnTheTop / 100.0));
      return (int)MathUtil.clamp(capacityWithReserve, minCapacity, maxCapacity);
    }
@Override
    public int capacity(final int actualLength,
                        final int currentCapacity)