return this;
int i = 0; int nBits2 = 32 - nBits; int highBits = mag[0] >>> nBits2;  if (highBits != 0) { newMag = new int[magLen + nInts + 1]; newMag[i++] = highBits; } else { newMag = new int[magLen + nInts]; }  int m = mag[0]; for (int j = 0; j < magLen - 1; j++) { int next = mag[j + 1];  newMag[i++] = (m << nBits) | (next >>> nBits2); m = next; }  newMag[i] = mag[magLen - 1] << nBits;
    public BigInteger shiftLeft(int n)    {        if (sign == 0 || magnitude.length == 0)        {            return ZERO;        }        if (n == 0)        {            return this;        }        if (n < 0)        {            return shiftRight( -n);        }        return new BigInteger(sign, shiftLeft(magnitude, n));    }