code: private static int multAndCarryBy10(int[] src, int srcLen, int[] dst) {
          long carry = 0;
          for (int i = 0; i < srcLen; i++) {
              long product = (src[i] & LONG_MASK) * 10L + carry;
              dst[i] = (int) product;
              carry = product >>> 32;
          }
          return (int) carry;
      }
docs: /*@
  @ requires src.length >= srcLen && dst.length >= srcLen;
  @ assignable dst[0 .. srcLen - 1];
  @ ensures 0 <= \result && \result < 10;
  @ ensures AP(dst, srcLen) + (\result << (srcLen*32)) == \old(AP(src, srcLen) * 10);
  @