code: void mul(int y, MutableBigInteger z) {
          if (y == 1) {
              z.copyValue(this);
              return;
          }
  
          if (y == 0) {
              z.clear();
              return;
          }
  
          // Perform the multiplication word by word
          long ylong = y & LONG_MASK;
          int[] zval = (z.value.length < intLen+1 ? new int[intLen + 1]
                                                : z.value);
          long carry = 0;
          for (int i = intLen-1; i >= 0; i--) {
              long product = ylong * (value[i+offset] & LONG_MASK) + carry;
              zval[i+1] = (int)product;
              carry = product >>> 32;
          }
  
          if (carry == 0) {
              z.offset = 1;
              z.intLen = intLen;
          } else {
              z.offset = 0;
              z.intLen = intLen + 1;
              zval[0] = (int)carry;
          }
          z.value = zval;
      }
docs: Multiply the contents of this MutableBigInteger by the word y. The
  result is placed into z.