code: public static PrecisionScaleRoundedOperator of(int scale, MathContext mathContext) {
  
  		requireNonNull(mathContext);
  
  		if(RoundingMode.UNNECESSARY.equals(mathContext.getRoundingMode())) {
  		   throw new IllegalArgumentException("To create the ScaleRoundedOperator you cannot use the RoundingMode.UNNECESSARY on MathContext");
  		}
  
  		if(mathContext.getPrecision() <= 0) {
  			throw new IllegalArgumentException("To create the ScaleRoundedOperator you cannot use the zero precision on MathContext");
  		}
  		return new PrecisionScaleRoundedOperator(scale, mathContext);
  	}
docs: Creates the rounded Operator from scale and roundingMode
  @param mathContext the math context, not null.
  @return the {@link MonetaryOperator} using the scale and {@link RoundingMode} used in parameter
  @throws NullPointerException when the {@link MathContext} is null
  @throws IllegalArgumentException if {@link MathContext#getPrecision()} is lesser than zero
  @throws IllegalArgumentException if {@link MathContext#getRoundingMode()} is {@link RoundingMode#UNNECESSARY}
  @see RoundingMode