for (i = 0;  i < y.ival;  i++) words[i] = x.words[i] & y.words[i]; for ( ; i < len;  i++) words[i] = x.words[i]; return BigInteger.make(words, len);
words[0] = x.words[0] & y; while (--len > 0) words[len] = x.words[len]; return BigInteger.make(words, x.ival);
  public BigInteger and(BigInteger y)  {    if (y.words == null)      return and(this, y.ival);    else if (words == null)      return and(y, ival);    BigInteger x = this;    if (ival < y.ival)      {        BigInteger temp = this;  x = y;  y = temp;      }    int i;    int len = y.isNegative() ? x.ival : y.ival;    int[] words = new int[len];    for (i = 0;  i < y.ival;  i++)      words[i] = x.words[i] & y.words[i];    for ( ; i < len;  i++)      words[i] = x.words[i];    return BigInteger.make(words, len);  }