code: public ByteSize convertTo(ByteSizeUnit unit){
          BigDecimal bytes = this.value.multiply(this.unit.getFactor()).setScale(0, RoundingMode.CEILING);
          return new ByteSize(bytes.divide(unit.getFactor()), unit);
      }
docs: Creates a new {@link ByteSize} representing the same byte size but in a different unit.
  
  Scale of the value (number of decimal points) is handled automatically but if a non-terminating decimal expansion
  occurs, an {@link ArithmeticException} is thrown.
  
  @param unit the unit for the new {@link ByteSize}.
  
  @throws ArithmeticException if a non-terminating decimal expansion occurs during calculation.
  
  @return a new {@link ByteSize} instance representing the same byte size as this but using the specified unit.