if (value >= minFixNum && value <= maxFixNum) return smallFixNums[(int)value - minFixNum]; int i = (int) value; if ((long)i == value) return new BigInteger(i); BigInteger result = alloc(2); result.ival = 2; result.words[0] = i; result.words[1] = (int) (value >> 32); return result;
if (words == null) return valueOf(len); len = BigInteger.wordsNeeded(words, len); if (len <= 1) return len == 0 ? ZERO : valueOf(words[0]); BigInteger num = new BigInteger(); num.words = words; num.ival = len; return num;
  private static BigInteger make(long value)  {    if (value >= minFixNum && value <= maxFixNum)      return smallFixNums[(int)value - minFixNum];    int i = (int) value;    if ((long)i == value)      return new BigInteger(i);    BigInteger result = alloc(2);    result.ival = 2;    result.words[0] = i;    result.words[1] = (int) (value >> 32);    return result;  }