code: public final void set(BigInteger source, int maximumDigits) {
          String stringDigits = source.toString();
  
          count = decimalAt = stringDigits.length();
          didRound = false;
          
          // Don't copy trailing zeros
          while (count > 1 && stringDigits.charAt(count - 1) == '0') --count;
  
          int offset = 0;
          if (stringDigits.charAt(0) == '-') {
              ++offset;
              --count;
              --decimalAt;
          }
  
          ensureCapacity(count, 0);
          for (int i = 0; i < count; ++i) {
              digits[i] = (byte) stringDigits.charAt(i + offset);
          }
  
          if (maximumDigits > 0) round(maximumDigits);
      }
docs: Set the digit list to a representation of the given BigInteger value.
  [bnf]
  @param source Value to be converted
  @param maximumDigits The most digits which should be converted.
  If maximumDigits is lower than the number of significant digits
  in source, the representation will be rounded.  Ignored if <= 0.